logo资料库

利用VB实现PC机与多单片机远程无线通讯.pdf

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
利用 VB 实现 PC 机与多单片机远程无线通讯 Realization of the Remote Wireless Communication between PC and Multi Singlechip with VB 魏志强 Wei, ZhiQiang 摘要:本文给出了一种以数传电台为通讯媒体,由控制中心 PC 机和多个 AT89C51 单片机系统组成的远程 无线通信系统,重点介绍了利用 VB 实现 PC 机与多个单片机控制系统远程无线通讯程序设计方法,实现 了 PC 机对多个远端单元的实时控制与管理。 关键词:Visual Basic、串行通讯、数传电台、单片机、远程控制 Abstract:The paper brings forward a remote wireless communication system composed of central host computer and multi singlechip and with the transceiver as its communication media, the program design method of remote wireless communication between PC and multi singlechip with VB is mainly introduced, the PC’s real-time control and management of the remote terminal units is achieved. Keywords:Visual Basic、Serial Communication、Transceiver、Singlechip、Remote Control 1 引言 随着现代电子与信息技术的不断发展,计算机与单片机控制系统之间的远程无线通讯技 术得到了广泛的应用,而数传电台目前已发展成为远程无线通信的一种重要工具,它使用灵 活、性价比高,环境适应能力强,非常适用于大范围、分散控制系统及在恶劣环境中,不适 于铺设有线网络的实时监控系统,数传电台已成功应用于电力设备监控、计算机实时监控与 数据采集(SCADA)以及实时交易数据遥测遥控等领域。同时 VB6.0 具有界面友好、编程简 便高效、数据处理及驱动底层硬件功能强等优点,成为许多用户开发 PC 机与单片机串行通 信程序的首选工具。 本文以美国 MDS OEM EL705 数传电台为通讯媒体,利用 VB6.0 的通讯控件 MSComm 实现了控制中心 PC 机与多个远端 AT89C51 单片机控制系统之间远程无线通讯,实现了控制 中心 PC 机对多个远端单元的实时控制与管理,并应用于工程设计中,通过实际应用,取得 了满意的效果。 2 系统的组成及工作原理 2.1 系统的组成 系统由控制中心和多个远端单元 RTU(Remote Terminal Unit)组成。控制中心主要由上 位机 PC 和数传电台组成,各远端单元由数传电台、AT89C51 单片机系统及现场设备组成, 各远端单元根据实际需要分布在距控制中心一定距离的范围内,控制中心及远端单元结构分 别如图 1、图 2 所示。 2.2 工作原理 控制中心作为系统的数据终端设备 DTE(Data Terminal Equipment),负责实现对远端单 片机系统的实时控制与管理,打印单片机系统工作状态信息、自检信息、记录报表信息及远 程单片机系统故障报警信息等,并可通过局域网与其它 PC 机进行信息传递。 PC 机与数传电台通过 RS232 通讯电缆相连接,电台采用连续相位频移键控(CPFSK) 调制方式,数据直接启动电台发射,空中无线传输速率为 9600bps,端口数据传输速率可根据 系统需要设置为 1200bps~19200bps。 各远端单元数传电台通过 RS232 通讯电缆与单片机系统相连接,单片机系统通过固态继 电器以离散量的形式控制现场设备。单片机系统(图 2 虚线框中部分)采用 MAX232 芯片实 现与数传电台之间信号的电平转换,并通过 2 片 8 位移位寄存器 74LS164 和 2 片 74LS373 锁 1 http://www.elecfans.com 电子发烧友 http://bbs.elecfans.com 电子技术论坛
存器,实现串行输入并行输出 16 位开关量,分别控制 16 个固态继电器的通断,从而控制 16 路现场设备。单片机系统还有复位、故障报警及高能蓄电池供电等系统。 图 1 控制中心结构示意图 图 2 远端单元结构示意图 综上所述,系统是以数传电台为通信媒体,组成点到多点的主从式远程无线通信网络系 统。控制中心 PC 机和远端单元之间通过数传电台以同频异步半双工方式进行数据信息传输, PC 机通过串口发送信息到数传电台,数传电台通过高频载波信号将控制信息发送给远端单 元,收到正确信息的远端单元向控制中心回送正确接收信息,并执行控制命令控制现场设备 的接通与关断,从而实现控制中心对各远端现场设备的实时控制与管理。 为实现最大的传输距离并防止各远端单元之间的相互干扰,系统控制中心的电台使用全 向天线,远端单元电台使用定向天线,并保证控制中心电台天线高于各远端电台天线的高度。 3 无线串行通信程序设计 3.1 通信协议 1、一帧数据位由 1 位起始位、8 位数据位、0 位校验位、1 位停止位共 10 位组成。 2、波特率为 9600bps。单片机串行口按方式 1 工作,波特率用定时器 T1 控制,为得到 准确的波特率,单片机采用振荡频率为 11.0592MHz 的晶振。PC 机串口波特率通过 VB 通讯 控件 MSComm 的 Settings 属性设置,为保证数据传送的准确性,两者的波特率必须一致。 3、PC 机发送的信息为固定 5 个字节:第 1 和第 2 字节分别为远端单元地址信息标志(以 AAH 表示)和具体地址号(本系统有 8 个远端单元,可分别编址为 01H、02H、…08H),第 3 和第 4 字节为开关量控制信息(第 3 字节数据信息控制 1 到 8 路继电器,第 4 字节控制 9 到 16 路继电器),第 5 字节为校验码(CheckSum)数据。 4、远端单片机回送的信息为固定 3 个字节:第 1 和第 2 字节为远端单元地址,第 3 字节 为回送的信息,EEH 为接收完毕确认信息,FFH 为接收出错重发信息等。 3.2 远端 AT89C51 单片机串行通讯程序设计 远端 AT89C51 单片机采用中断方式、基于 MCS-51 汇编语言与上位机进行通讯,中断子 程序流程图如图 3 所示。 控制中心上位机 PC 每次发送控制信息前必须先发送指定远端单元的地址信息,单片机 进入数据接收子程序,如果收到的地址与本机地址相同,置接收数据标志位,连续接收上位 机发送过来的控制信息。数据接收完毕,开始对控制信息进行校验码确认操作,校验正确则 回送上位机确认信息,并对两字节控制数据进行移位操作等必要处理,最后输出开关量并返 2 http://www.elecfans.com 电子发烧友 http://bbs.elecfans.com 电子技术论坛
回中断入口处;若校验错误,回送上位机重发信息。如果远端单片机收到的地址与本机地址 不同,程序也返回中断入口处,继续执行其它操作或等待接收新的信息。这样,就确保上位 机把控制信息可靠地传给指定的远端单元,各远端单元回送的信息只能被上位机接收。由于 每个数传电台时刻处于待机状态(也可以根据实际需要,使电台进入休眠状态等待),所以只 有先对远端单元地址进行确认,才能保证在某一时刻只有一个远端单元完全接收了上位机发 出的数据信息,避免了不必要的资源耗费。 图 3 单片机中断子程序流程图 3.3 上位机 PC 串行通讯程序设计方法及实现 上位机利用 VB6.0 编程,用 VB6.0 开发串行通信程序普遍采用以下两种方法:一种是利 用 Windows 的 API 函数;另一种是采用 VB6.0 的通讯控件 MSComm。利用 API 函数编写串 行通信程序较为复杂,需要调用许多繁琐的 API 函数,而 VB6.0 的 MSComm 通讯控件提供 了标准的事件处理函数、事件和方法,用户不必了解通信过程中的底层操作和 API 函数,从 而比较容易、高效地实现了串口通信。 MSComm 控件提供了两种功能完善的串口数据发送和接收功能:一种是查询法,通过检 查 CommEvent 属性的值来轮询(Polling)事件和通信状态,可以使用定时器或 DO…Loop 程 序实现;另一种是事件驱动法(Event-driven),利用 MSComm 控件的 OnComm 事件捕获串 口通信错误或事件,并在 OnComm 事件中编写程序进行相应处理,这种方法响应及时,可靠 性高,本软件系统采用了此方法来接收远端单片机的回执信息,以使 PC 机作出更快的反应。 数传电台基于透明传输,不改变系统原来的通讯程序及传输格式,编程时只需适当考虑 无线传输引起的信号时延。 软件采用定时器 Timer1 控件来实现在数据信息送出 30 秒后(Timer1.Interval = 30000), PC 机仍未收到任何回执信息时,程序自动跳出系统。 3 http://www.elecfans.com 电子发烧友 http://bbs.elecfans.com 电子技术论坛
实现同样的功能,程序代码会因不同人的编写而略有不同,并且篇幅所限,在此仅给出 在 VB 中对 MSComm 控件初始化和数据发送与接收的部分源程序,代码如下: …… 初始化 MSComm 控件程序: With Comm1 ‘控件名为 Comm1 .CommPort=1 ‘使用串行端口 1 .Settings=“9600,n,8,1” ‘设置初始化参数 .InputLen=0 ‘读取缓冲区的全部数据 .InputMode=comInputModeBinary ‘以二进制方式接收数据 .RThreshold=3 ‘接收缓冲区达到 3 个字节时产生 OnComm 事件 End with ‘其它属性值为默认即可 …… 发送数据程序: …… Dim Send As Variant ‘定义变量 Dim OutByteD(5) As Byte ‘定义发送数据数组 …… ‘获取发送数据 Send=OutByteD ‘将发送的数据赋给发送变量 Comml.Ouput=Send ‘发送数据 …… 数据接收程序: Private Sub Comm1_OnComm() Select Case Comm1.CommEvent Case comEvReceive Dim Jshuju() As Byte , i%, count% Dim Rec As Variant Rec=Comm1.Input count=UBound(Rec) ReDim Jshuju(count-1) As Byte For i=0 to count-1 Jshuju(i)=Rec(i) Next i …… ‘判断回执信息并进行相应处理,如处理指定远端单元数据接收完毕、数据接收 有误请求重发信息、显示、打印自检信息等 End Select End Sub 4 结论 通过采用上述通讯方法实现了基于数传电台的控制中心上位机对各远端单片机系统的远 程实时控制,实现了高速、实时数据的发送和接收。经过实际应用,系统工作稳定可靠,满 足了预期的控制要求。可以预见,数传电台以其使用灵活简便、全数字化无线通讯及环境适 应能力强等优点必将在信息采集、远程监控等领域得到更加广泛的应用。 4 http://www.elecfans.com 电子发烧友 http://bbs.elecfans.com 电子技术论坛
参考文献: [1]范逸之,陈立元.Visual Basic 与 RS-232 串行通信控制最新版.北京:中国青年出版社,2002 作者简介:魏志强,男,1976 年 12 月生,汉族,河北顺平县人,硕士,研究方向:计算机控制系统及应 用。电话:010-61597223-8080;E-mail:wzq761229@sohu.com。 Resume:Wei,ZhiQiang, male, born in Shunping county, Hebei province, in Dec 1976, Master, research field: computer control system.Tel: 010-61597223-8080;E-mail:wzq761229@sohu.com. (101601 北京东燕郊 281 信箱 东北电子技术研究所) 魏志强 (Northeast Research Institute of Electronic Technology, 281 mail box Yanjiao East of Beijing 101601,China) Wei,ZhiQiang 5 http://www.elecfans.com 电子发烧友 http://bbs.elecfans.com 电子技术论坛
分享到:
收藏