摘要:Modbus是一种工业过程控制,尤其是可编程逻辑控制器(PLC)中广泛应用的通讯协议。本文就在高速公路波形防撞护栏滚压生产线中,采用带Modbus的PLC、Modbus/TCP网关及工控机组成的集散型网络控制系统中,设计Modbus/TCP网关应注意的几个关键问题做了探讨。并对这些关键问题在控制系统的软件实现,给出了相应的C程序代码。
1、概述
随着我国对交通这一基础设施的投人的加大,全国各地高速公路通车里程的逐年增加,对高速公路波形防撞护栏的需求也成逐年上升的趋势。为了达到较高的生产效率,高速公路波形防撞护栏大多采用滚压的方式进行生产,其生产过程为一典型的流水线过程控制。因此,采用可编程逻辑控制器(PIE)对高速公路波形防撞护栏滚压过程进行控制不失为一种性能价格比较优越的方式。
为将各PLC构成的控制网络同生产管理信息系统的信息网集成,采用带Modbus的PLC和Modbus/TCP网关实现了控制网和信息网的无缝集成—两种网络系统均采用TCP/IP协议。本文将就在构建整个系统中,实现Modbus/TCP网关所涉及的几个关键间题谈谈几点体会。
全文的安排如下:首先简要介绍了Modbus及Modbus/TCP协议;然后就Modbus/TCP网关实现中的两个关键问题—CRC校验算法及应答延时的计算进行了详细的讨论,并给出了用C语言实现的代码;最后对全文作出了总结。
2 Modbus、Modbus/TCP协议简介
Modbus是一种广泛应用于工业过程控制的协议。标准Modbus在物理上采用的是RS-232C兼容串行接口,它定义了连接口的针脚、电缆、信号位、传输波特率及奇偶校验等特性。
采用Modbus协议的控制器可直接或经由Modem组成控制网。控制器通讯采用使用主从式方式—即仅一个设备(主设备)能启动传输(查询)过程,其他设备(从设备)根据主设备查询提供的数据作相应响应。主设备即可和从设备进行点对点的通信,也可以广播方式和所有从设备通信。若采用前一种通信方式,从设备返回一消息作为响应。当采用广播方式查询时,从设备不作任何响应。Modbus协议传输模式有ASCII码传输和十六进制传输两种,在Modbus协议中分别称为Modbus/ASCIModbus/RTU。在由一个主设备和该主设备控制的多个从设备组成Modbus集散型控制系统(DCS)中,主设备和从设备的通讯模式必须相同。在同一模式下,还应选择相同的串口参数如波特率、校验方式等。
Modbus/TCP协议是为解决采用Modbus的设备同采用以太网的设备互联而提出的。该协议最常用的方法将具有Modbus接口的P1C,I/O模块及网关进行集成,通过网关于其他现场总线组成一个更复杂、更大的集散型控制系统。Modbus/TCP协议实际上并没多少新鲜的内容。事实上Modbus/TCP协议仅仅是Modbus/RTU在TCP/IP中的一个包而已,Modbus/TCP包和Modbus/RTU包的关系如图1所示。这也正是Modbus/TCP协议的一个优点,因为这样使得Modbus/TCP能既快速又容易的同现有的Modbus设备集成。
从图1中可以看出Modbus/TCP协议是将Modbus/RTU包中的最后两个校验字节去掉,在前面添加上Modbus/TCP包头,得到得包整个作为TCP/LP的数据包。至于数据包的校验则由TCP/IP协议完成。以上是Modbus到Modbus/TCP的打包过程。从Modbus/TCP到Modbus的解包过程则相反。