ModBus RTU通信的工程实践和思考

2019-04-10 07:01叶虎郭道萌刘运大张洪刚
科技资讯 2019年35期
关键词:物理层通信协议

叶虎 郭道萌 刘运大 张洪刚

摘  要:ModBus协议是应用层报文传输协议,它定义了一个与通信层无关的协议数据单元(PDU),即PDU=功能码+数据域。沙特扎瓦尔电厂的主控系统DCS T3000和生活污水处理系统分别由Siemens AG和METITO供货调试,由于双方的技术人员不熟悉Modbus RTU通信,该系统的通信调试一直未成功,并且各方均坚持问题出在对方。多次联调失败后,西门子和Metito均已放弃。最后,经过该公司技术人员的研究处理,成功完成该通信系统投用。

关键词:光转串口  远程终端单元RTU  物理层  通信协议

中图分类号:TN915                文献标识码:A 文章编号:1672-3791(2019)12(b)-0013-02

1  ModBus协议

ModBus协议能够应用在不同类型的总线或网络。对应不同的总线或网络,ModBus协议引入一些附加域映射成应用数据单元(ADU),即ADU=附加域+PDU。

目前,ModBus有下列3种通信方式:(1)以太网,對应的通信模式是ModBus TCP。(2)异步串行传输(各种介质如有线、光纤、无线等),对应的通信模式是ModBus RTU或 ModBus ASCII。ModBus的ASCII、RTU协议规定了消息、数据的结构、命令和应答的方式,数据通信采用Maser/Slave方式。(3)高速令牌传递网络,对应的通信模式是ModBus PLUS。

此系统就采用了ModBus RTU通信模式。

检查T3000通信模块与通道间的硬件配置,发现以下几个问题。

(1)DCS T3000 ModBus通信模块参数已配置,但显示通信中断。

(2)RS232和RS485光转串口模块、CP341通信模块的发送/接收(TD/RD)LED指示灯均异常(不闪烁)。

(3)主备PLC的CP341通信参数的奇偶校验与DCS均不一致,从机地址有冲突均是1(应为4)。

根据以上问题,查阅RS232和RS485说明书,它们均适用于光纤点对点连接的ModBus RTU通信。并且RS485需根据所需的波特率设置拨码开关,同时参考CP341的说明书,RS485与CP341搭配使用时,其接口类型需在CP341的传输协议内设置,这里,需要注意的是:CP341用于MODBUS协议通信时需有Dongle的支持。在使用前先将Dongl安装在CP341模块的背面的Dongle插槽中,并安装驱动程序。

此时检查发现,生活污水的CP341和RS85、RS232的发送/接收LED指示灯出现规律闪烁,并且T3000的ModBus通信模块显示已链接,但无数据传输笔者对ModBus通信的通俗理解是“通过网络,一个控制器使用已确认的公共消息结构和格式,向被访问设备发送请求,然后接收响应,包括侦测错误和记录,从而实现通信”。简单地理解是主机发送访问请求或指令,从机执行,然后反馈给主机。

经检查从机PLC侧发现:

(1)CP341的传输协议已经定义了FC3指向的数据块DB100。

(2)DB100数据块是空的。

(3)DB100数据块没有被任何函数引用,也没有找到用于从机PLC内数据传输的程序块。

针对以上情况,结合生活污水处理系统的PLC源程序、信号点表、IO接线图,重新编写了数据传输程序和DB100数据块程序。

(1)数据传输函数示例。

CALL  "RTD"

IN :=DB40.DBD10                            //液位数值,实数

OUT:="modbusData".a00GRK10CL001           //转换后的整数

备注:RTD功能块实现的功能是将REAL格式的数据转换为WORD格式。

(2)RTD的数据类型转换程序如下。

SET

SAVE

=     L      0.1

L     #IN

RND

JO    I007

PUSH

AD    DW#16#FFFF8000

JZ    I008

XOD   DW#16#FFFF8000

JZ    I008

I007: CLR

=     L      0.1

I008: TAK

CLR

A     L      0.1

SAVE

T     #OUT

SAVE

BE

对于液位报警,阀门和电机状态的传输依然采用Word,将状态的位直接赋值到DB100 WORD对应的位上,例如:

A     DB80.DBX   28.2      //液位报警的状态

=     DB100.DBX   16.0

A     I      0.0            //电机和阀门的状态

=     DB100.DBX   16.6

经反复研究发现:T3000 AI08逻辑块的最大的访问起始地址N+8-1必须小于等于DB100已定义的最大数据段地址,否则相应的T3000逻辑块会报错。

根据该发现,重新修改DB100数据块程序。该通信正常工作,信号点核对也顺利完成,问题被解决。

2  結论

该通信问题的解决,充分体现了SEPCOIII作为国际EPC总承包商的技术管理能力和一线技术人员勇于挑战不服输的工作作风。同时,也为今后的类似系统的通信工程的技术管理积累了一定的经验和值得借鉴的范例。对于采用CP341和RS485异步串行传输的Modbus RTU通信系统。在采购合同中要明确供货责任和细节,应加强以下几方面的管理。

(1)主系统和分系统设计分包商需共同确定类似表1的通信参数。

(2)主分系统分包商共同确认接口类型。

(3)分系统分包商在设计阶段提交信号点表给主控系统分包商整理。

(4)分系统分包商除提交信号点表外,还需提交接线图、PLC程序的PDF逻辑图。

(5)主控系统分包商负责按照分系统分包商提供的信号点表和系统画面组态主控系统,并对可能存在的问题及时提出合理技术要求和建议。

参考文献

[1] 吕国芳,唐海龙,李进,等.基于ModbusRTU的串口调试软件的实现[J].计算机技术与发展,2009,19(9):236-238.

[2] 谢启,顾启民,涂水林,等.基于LabVIEW的ModbusRTU通信协议的实现[J].煤矿机械,2006,27(12):95-97.

[3] 冯向科,邓莹.基于MODBUS RTU通信协议下的CRC算法实现[J].电脑知识与技术,2006(8):43.

猜你喜欢
物理层通信协议
际华高分子材料高科产业园能源管理系统设计
一种新的窄带电力线载波通信物理层模型
利用Modbus协议实现垂直螺旋卸车机取料器自动调速方法
企业能耗数据采集软件的设计与开发
奖状训练器飞行管理系统研究
一种应用于5G基于LDPC码的物理层包编码
卫星通信物理层安全技术探析
基于智能布线的前沿技术及其网络应用
LTE下行物理链路层的仿真研究
基于R8C的汽车OBD通用故障诊断仪设计