摘要:给出了基于485 总线, 由控制中心PC 机和多个单片机控制系统组成的电动装置性能检测系统中的实时通信系统, 重点介绍了利用VB 实现PC 机与多个单片机控制系统实时通讯程序设计方法, 实现了PC 机对多个远程单元的实时控制与管理。
关键词:Visual Basic 串行通讯 电动装置性能检测系统 远程控制
在许多实时监测系统中, 经常需要接收距离较远的测控点数据, 如何快速可靠的实现数据的远程传输是这些监测系统必须解决的问题。在监测现场, 为了降低系统的成本, 往往采用单片机系统作为数据采集和记录单元。在中央控制中心, 常常利用PC 机来完成人机会话及与监测现场的通信。
本文介绍一套用于电动装置出厂性能检测系统的实用的主从式(Master/ Slave) 远程实时通讯系统。检测系统的下位机是以32 位的ARM 单片机(L PC2214) 为CPU , 两片CPLD ( XC95108) 扩展I/ O 口对外围器件如加载电机、卸载电机、光电编码器和AD 转换器进行控制的单片机系统, 并有键盘进行数据输入和液晶屏显示各功能接口, 以及打印机打印测试合格产品的性能参数记录。上位机的管理平台则基于Visual Basic 610 。此系统通过对产品的性能参数进行检测, 严格避免不合格产品出厂, 提高产品质量, 增强了产品的市场竞争力。
通讯系统以生产现场的双绞线为通讯媒介, 上位机利用VB 610 的通讯控件MSComm 实现了与下位机的远程实时通讯, 下位机应用于生产车间现场, 取得了满意效果。
2.1 结构组成
网络系统由控制中心和多个远程单元RTU(Remote Terminal Unite) 组成(图1) 。控制中心由上位机和RS232/ 485 转换器组成, 各远程单元是以ARM单片机为核心的电动装置性能检测系统(图2) 。
2.2 工作原理
控制中心作为系统的数据终端设备DTE (Da2ta Terminal Equipment) , 负责实现对远程电动装置性能检测系统的检测数据进行判别、存储等。PC机通过485 通讯电缆与远程电动装置性能检测系统相连, 其传输速率为9 600 bps , 端口数据传输速率可根据系统需要设为1 200 bps~19 200 bps〔1〕。
各远程电动装置性能检测系统通过光电编码器和AD 转换器对现场设备的性能参数进行数据采集, 采用MAX1480 芯片与PC 机进行数据传输,并通过2 片CPLD 实现数据输入和输出开关量, 从而实现对现场设备的控制和参数测量。电动装置性能检测系统还有复位、故障报警及芯片正常工作检测等系统。<BR> 通讯系统以控制中心PC 机和远程单片机控制系统通过485 通讯电缆以同频异步半双工方式进行数据信息传输, PC 机通过串口发送令牌到远程单元, 远程单元收到自己的令牌后发送数据到PC机, PC 机收到数据后回送正确信息。从而实现控制中心对远程设备的控制和数据采集。
3.1 通讯协议
(1) 一桢数据由1 位起始位, 8 位数据位、1位校验位、1 位停止位共11 位组成。
(2) 波特率为9 600 bps。电动装置测试系统的单片机的串口选用UART0 进行数据的发送和接收, 为了得到准确的波特率, ARM 单片机采用振荡频率为111059 2 MHz 的晶振。PC 机串口波特率通过VB 通讯控件MSComm 的Setting 属性设置, 为保证数据传输的准确性, 两者的波特率必须一致。
(3) 系统采用异步通讯方式, 上位机通过令牌传递总线(token - passing bus) 方式与远程单元进行通讯〔2〕。PC 机发送的信息为固定4 个字节。第1 个字节和第2 个字节分别为起始标志符和远程单元的具体地址号, 第3 个字节表示发送的是令牌还是命令, 第4 个字节为结束标志符。
(4) 远程单元接收到令牌后, 对照令牌的地址号与本单元地址进行判断, 得知令牌是本单元的, 此时总线处于接收数据状态。此单元开始发送信息, 发送的信息共158 个字节。第1 个字节和第2 个字节分别表示起始标志符和命令符, 第3 个字节表示数据个数, 第4 个到第157 个字节表示采集的测试数据, 第158 个字节表示结束标志符。如果地址不符, 则将令牌转发到下一单元〔3〕。其通讯方式如图3 所示。
3.2 远程单片机控制系统的串行通讯程序设计
远程ARM 单片机采用中断方式进行数据接收, 基于软件ADS112 编程与上位机进行通讯, 上位机通讯子程序流程图以及下位机中断子程序流程图分别如图4 和图5 所示。
控制中心上位PC 机始终在循环发送令牌, 当远程单元接收到与本机地址相同的令牌时, 置接受数据标志, 接收到自己的令牌后, 远程单元开始上传数据到上位PC 机, 与此同时PC 机停止发送令牌并处于接收数据状态, 等到接收数据完毕并检验数据合格后发送确认命令到此远程单元, 如果没收到数据或数据不合格发送错误标志到此远程单元。如果收到的令牌与本机地址不同时, 程序返回中断入口处, 继续执行其它操作。这样可保证远程单元把数据准确地发送到上位机PC 机。
3.3 上位PC 机串行通讯程序设计方法
上位机利用VB 610 进行编程, 用VB 610 开发串行通讯程序普遍采用两种方法: 一种是利用Windows 的API 函数; 另一种是采用VB 的通讯控件MSComm。利用API 函数编写串行通讯程序较为复杂, 需要调用许多繁琐的API 函数, 而VB610 的MSComm 通讯控件提供了标准的事件处理函数、事件和方法, 用户不必了解通信过程中的底层操作和API 函数〔4〕, 从而比较容易、高效的实现了串口通信。
控件提供了两种功能完善的串口数据接收和发送功能: 一种是查询法, 通过Com2mEvent 的值来轮询(polling) 事件和通讯状态,可以使用定时器和DO .Loop 程序来实现; 另一种是事件驱动法( Event - driven) , 利用MSComm 控件OnComm 事件来捕获串口通讯错误或事件, 并在OnComm 事件中编写程序进行相应的处理〔5〕。本软件系统采用了定时器来发送令牌以及接收远程单片机的回执信息, 使PC 机作出更快的反应。
软件采用定时器Timer1 控件来实现令牌的循环发送。其中设置定时器响应一次的时间为10ms( Timer11Internal = 10) 。
3.4 下位机ARM2210 系列单片机串行通讯程序设计方法
下位机利用软件ADS112 进行编程, 此软件是专为ARM 单片机开发的一种软件, 其语言类似于C 语言, 有很好的应用性。
该系统应用在对远程设备的在线监测, 其通讯网络部分运行平稳, 数据传输误码率低, 传输速度符合要求, 效率高, 操作简单, 组网方便, 满足生产现场的数据检测和控制要求。该系统可广泛应用于高精度的工业测控和数据采集等领域中。
(1)JanAxelson. 串行端口大全〔M〕. 北京: 中国电力出版社,2001
(2)阳宪惠. 现场总线技术及其应用〔M〕. 北京: 清华大学出版社,
(3)李朝青. PC 机及单片机数据通信技术〔M〕. 北京: 航空航天大学出版社, 2000.
(4)项举伟等. 利用Windows API 函数构造C6 类实现串行通讯〔J〕. 测试技术, 2000
(5)范逸之. Visual Basic 与RS232 串行通讯控制〔M〕. 北京:中国青年出版社, 2000.