1 引言
目前组态王与单片机的通信多是通过动态数据交换或自己开发通讯驱动程序的方式进行的[1]。动态数据交换(DDE)是Windows平台上一个完整的通讯协议,通过DDE使应用程序之间彼此能交换数据和发送指令。但使用DDE会带来一些额外的开销,如会降低系统实时性、增加系统的不可靠性,特别在多参数传送时不太稳定,易出现数据丢失现象。而自己开发通讯驱动程序又有一定的难度,且开发周期较长。最近,在为九江石化燃运输煤皮带监控系统的设计中,基于 MSP430单片机的智能仪表作为下位机,研华公司的工控机作为上位机,采用ADAM-5000的协议,实现了数据的实时采集、处理和显示。
2 系统结构
燃运皮带监控系统整体结构如图1所示。现场的各种传感器将测得的电压、电流、速度信号通过自制的智能仪表传送给上位机,在组态界面上实时显示和监控皮带的运行状况;外部状态输入是通过智能仪表检测电机接触器辅助触点的状态,当信号是闭合状态时系统的报警保护才起作用,否则当检测到是开路信号时,采样值超出范围不报警,继电器不动作;故障输出是指电机一旦过流或皮带堵煤、皮带停转、柱销断裂等故障时候,智能仪表发出脉冲信号送给PLC传送至1-15#牵引电机接触器和报警指示灯,从而切断对应的接触器,停止相应的电机,同时发出相应的声光报警信号
3 通信实现
3.1 通信接口
本系统采用RS485串行通信标准。RS485采用差分传输方式,可以有效地提高抗共模干扰能力,最高传输速率可达10Mb/s,最远传输距离可达 1200m,支持与数据通信设备多连接。RS485由于传输速率高,传输距离远,已成为工控系统串行通信的普遍形式。当采用RS485实现上位机与下位机串行通信时,由于上位机通常只提供RS232串行接口,因此需要使用RS232/RS485通信接口进行转接,在本文开发的监控系统中采用了多串口卡来实现转换的。
3.2 MSP串行通信的特点
MSP430F149有两个串行通信模块:USART0和USART1[2]。它的通信功能很强,模块在发送和接收每一字节数据时都可以触发中断,从而使CPU退出低功耗模式。发送和接收中断由两个独立的中断控制位控制。与传统的串行通信相比,MSP430单片机用低时钟频率实现高速通信的方法是:除了分频因子外,还有一个分频因子调整寄存器,它用分频因子加调整的方法可以实现每一字节内各位有不同的分频因子,从而保证每位数据的中心三个时钟状态都处于有效的数据范围内,在低时钟频率时实现高通信波特率。从机地址位多机模式的通信格式为:起始位+数据位+地址/数据位+停止位。从机通过地址/数据位判别收到的是数据帧还是地址帧,当收到的数据是地址的时候,将收到的字节与本机地址进行对比,如果相等,则表明主机将与本机进行通信,复位寄存器 U0RCTL的URXWIE位。此后收到数据后将触发接收中断,在中断程序中将收到的数据存入接收缓冲区。如果收到的地址与本机地址不符,则说明主机以后发送的数据不是针对本机的,置位寄存器U0RCTL的URXWIE位,此后接收到数据字节将不会触发中断。
3.3 通信协议
ADAM5000/485系列采用EIA RS485通讯协议,该协议遵循命令/响应的通讯方式[3]。通讯过程中主局保持主动权,主局通过对子局的呼叫建立通讯连接。并通过向子局发送命令帧来控制数据传送的方向及内容,子局只能响应主局对自己的呼叫和根据帧的内容进行相应的数据传输。ADAM模块的 RS485口与计算机通讯的方式为串行异步半双工方式,支持ASCII码传输方式。ADAM-5000系列中AI模块的帧格式如表1所示。
命令帧的第一个字节为起始符,有$和#两种形式。以$开头的可获取版本信息、校正AI模块等;以#开头的用来读取ADAM-5017通道值,是我们要用到的命令形式;地址范围是00-FF;槽号i取值范围为0-7;其它,在定界符为$时,有9种形式,这里不再介绍。在定界符为#时,有2种形式,一种为空,命令内容为读取i号槽模块全部通道值;另一种为通道值j,命令内容为读取i号槽模块第j号通道值。ADAM-5000的响应帧格式如表2所示。对于定界符为#的命令帧,有两种响应帧格式。
起始符为>,表示模块收到的命令有效,其后为到的命令有效,其后为全部通道值或某一通道值,随命令帧格式而定;起始符为?,表示5017收到的命令无效,其后地址与收到命令帧的地址相同。
燃运输煤皮带监控系统中选用1位起始位,8位数据位,1位结束位,0位奇偶校验位,波特率为9600bps。如组态王要获取ADAM-5000地址为 01的5017(第1槽)的数据,在串口调试工具中发送#01S1(cr),自制智能仪表首先对串口调试工具发送的命令进行判断,如果接收的命令符合 ADAM5000/485指令集(如为#01S1(cr)),则按照指令集的响应格式返回(如:>+1.4567,+1.4852,+1.6661,+1.6321,+1.6459,+2.989,+1.7768,+1.1623(cr) ) [3][4]。
3.4 组态王的通信配置
组态王6.51是在上位机上建立工业控制对象人机接口的一种智能软件包,它以Windows NT4.0(sp6)/Windows 2000 /Windows XP简体中文版操作系统作为其操作平台,充分利用了Windows图形功能完备,界面一致性好,易学易用的特点[5]。组态王把每一台与之通讯的设备看作是外部设备,目前能连接PLC、智能仪表、智能模块、板卡、变频器等几百种外部设备,为实现和外部设备的通讯,组态王内置了大量设备的驱动作为组态王与外部设备的通讯接口。在运行期间,组态王就可通过驱动接口和外部设备交换数据,包括采集数据和发送数据指令。
本系统插接多串口卡使用了COM3和COM4口,其中COM3口挂接1#-7#仪表,COM4口挂接8#-15#仪表,共采集、传输、显示105 个I/O参数。在组态王的工程浏览器中点击设备\COM3, 在右面窗口中双击新建,出现设备配置向导,设置智能模块\亚当5000系列 \Adam5017\串行,一直点击下一步,逻辑设备命名为一号仪表AD模块5017,选择COM3口,配置设备地址为0011(组态王的设备地址设置格式为四位的整数,前三位为ADAM-5000的网络地址,第四位为I/O模块所在的槽号(范围为0-7),如:地址设置为0011,其中001是 ADAM-5000的网络地址,1是第2个槽号),设置好通信参数,即完成了设备的通信配置,同理可完成其它14个设备的配置。COM3、COM4的通讯参数设置为9600/8/1/无校验。此外还要对各I/O变量进行各参数的设置,如图2所示。
3.5 通信软件设计
为了保证数据的可靠传输,仪表的通信部分采用了研华公司多通道A/D亚当模块ADAM-5017的协议,避免了开发上位机与仪表之间的驱动程序,大大缩短了系统开发的时间。一旦有字符发送或者接收MSP430单片机就产生中断,用中断方式完成通信。MSP430单片机读写程序流程如图3所示。
4 结束语
本文采用ADAM-5000模块协议,实现了组态王6.51与多MSP430单片机的串行通讯。特别在采集、显示参数较多的情况下,采用此方法数据传输可靠。目前,设计的九江石化燃运输煤皮带监控系统已投入使用,运行状况良好。
本文作者创新点:仪表的通信程序遵循研华公司多通道A/D亚当模块ADAM-5017的协议编写,避免了开发上位机与仪表之间的驱动程序,大大缩短了系统开发的时间。
参考文献:
[1] 蔚俊兰,丁振荣.组态王6.5与单片机的通信方法[J].工业控制计算机,2004,17(10),58-59.
[2] 张晞,王德银,张晨.MSP430系列单片机使用C语言程序设计[M].北京,人民邮电出版社,2005.
[3] ADAM-5000 Series RS-485 Based Data Acquisition and Control System User’s Manual.
[4] 吕鹏刚,何承波,刘开培等.基于亚当模块的火电厂自动加药系统[J].微计算机信息2001,17(11):19-20.
[5] 北京亚控科技发展有限公司. 组态王6.51使用手册.2005。