通信和分布式控制系统协议,现已逐渐发展成为流行的开放性工业标准之一,并受到组态王、FIX等通用工业组态软件支持。本文所述的下位机系统是采用80c196kc单片机开发的在线气体分析仪器。该分析仪器可连续自动检测工业生产过程或试验装置混合气体中一氧化碳、二氧化碳、甲烷等气体的含量,广泛应用于化肥、化工、冶金、石油等工业领域。
由于该系统提供了RS485串行通信方式,所以很容易实现Modbus通讯。通过单片机编程,与其通信的上位组态软件无需再开发任何驱动程序。
2Modbus协议简介Modbus网络属于一种主从网络,允许一个主机和一个或多个从机通信。通信采用命令/应答方式,每种命令帧对应着一种应答帧。命令帧由主机发出,当从机收到发给自己的命令帧后,就发出相应的应答帧进行响应。网络中的每个从机都有一个**的地址,主机发出的命令中含有要求访问的从机地址,只有具有该地址的从机才会对该命令作出响应。
输模式。在RTU模,1字节的信息作为一个8位字符被发送,而在ASC模则作为两个ASC字符被发送,因此相同波特率,RTU模式比ASC模式可以传送更多的数据,字符的密度也更高。
本文采用RTU模式,其典型的消息帧如表1所示。
表1RTU消息帧格式起始位设备地址功能码数据校验结束符N个在*后一个传输字符之后,有一个至少3.5个字符的停顿时间,标志消息的结束,一个新的消息可在此停顿后开始传送。整个消息帧必须作为连续流传输。如果在帧完成之前有超过1.5个字符的停顿时间,接收设备将刷新不完整的消息,并假定下一个字节是一个新消息的地址域。同样,如果一个新消息在小于3.5个字符时间内接着前一个消息开始传送,接收设备将认为它是前一个消息的延续,从而导致错误,因为*后的CRC校验值是不正确的。
3硬件连接在线分析仪器的主要功能是为计算机控制系统提供实时的分析结果,该仪器提供两种基本的输出方式:一是模拟量趋势输出,可对4个检测量的分析结果进行实时传输;二是RS485串行通信方式,可实现对上位机的数据传输,其波特率、传输格式可以通过界面设置,每台分析仪器均可设置ID,实现一对多、多对多的通信。
在RS485通讯电路中采用了集成芯片MAX485,因此是一种半双工传送方式,用80c1961215口控制接收器输出允许和驱动器输出允许。用光耦进行隔离,增强了电路的抗干扰性能。
总线组成Modbus网络,因此我们利用仪器提供的RS485串行通信方式实现Modbus串行通信,再通过RS485/RS232转换器接至PC机。通信连接示意图见。
通信连接示意图根据Modbus网络允许一个主机和一个或多个从机通信的特点,可以将多台分析仪器连接到网上,实现对多台仪器的监控,其连接图见。增加终端电阻可以减少反射干扰,一般在通讯速度快的情况下,*大连接距离为1200m.多台分析仪器连接程序设计Modbus通信程序用C语言编写,可用伟福仿真器进行编译调试,调试完成后,用Superpro编程器将程序写到ROM中。根据Modbus标准协议,主机向从机发送的帧结构为:从站地址-功能码-起始寄存器地址高字节-低字节-请求寄存器个数高字节-低字节-CRC校验码低字节-高字节。请求帧的长度固定为8个字节,在程序中由此判断请求帧是否发送结束。从机对主机应答的帧结构为:从站地址-功能码-应答的字节数-应答内容-CRC校验码低字节-高字节。在程序中,要将发送的消息封装成标准的Modbus帧格式再发送。
系统中只允许存在一台主机,从机号码可以在1~247之间。0号地址为公共广播命令地址,所有从机均能识别。当Modbus协议用于高级网络时,不允许用广播或其他方式代替,如Modbus+使用令牌循环,自动更新共享数据库。Modbus支持的常用功能码见表2.功能码功能名称功能码功能名称读取线圈状态预置单个寄存器读取输入状态读取异常状态读取保存寄存器回送诊断校验读取输入寄存器强置多线圈强置单个线圈预置多线圈定义从机地址为1,且只接受功能码03,读取保持寄存器的值,读取分析仪器中各组分的含量。单片机主程序流程图见。
主程序流程图数据接收采用中断方式;uchCRCLo=auchCRCLo;5仿真测试具作为Modbussever对从机进行测试,也可直接用组态王进行仿真。按将线路连接好,在组态王的设备窗口中新建设备,选择PLC莫迪康Modbus(RTU)串口,选择COM1作为通信口,设置COM1的波特率、奇偶校验、数据位及停止位,与从机中的设置必须一致。通过设备测试采集数据,如所示。其中组态王寄存器名4对应Modbus功能码3添加寄存器并设定类型,按下读取按钮即可采集数据。经测试,在确保连接传输无误时,即可生成监控画面。
6结论Modbus协议不仅可以用于PLC,还可以用于仪器仪表等设备。本文通过编程将Modbus运用到80c196单片机中,从而使得分析仪器可以与PLC及其他智能仪表等设备一起连接到Modbus网络中,实现一个主机对多个从机的远程实时监控。