基于西门子S7-1200 Modbus通信协议的应用

2022-11-25 10:08周博遥
通信电源技术 2022年13期
关键词:通信协议调度控制器

周博遥

(九江赛晶科技股份有限公司,江西 九江 332000)

0 引 言

随着近年来信息技术的不断发展,用户需要采集越来越多现场设备的各种数据。采集方式逐渐由以前单纯的数字量输入/输出(Input/Output,I/O)及模拟量输出模式逐渐转变成直接与远方采集设备进行通信处理。

现场仪表设备支持的通信协议众多,但人们使用及支持最广泛的是Modbus通信协议。由于Modbus协议是完全公开透明的,所需的软硬件非常简单,使其成为了一种通用的工业标准。许多工业设备包括可编程逻辑控制器(Programmable Logic Controller,PLC)、分布式控制系统(Distributed Control System,DCS)、智能仪表等,普遍采用Modbus协议作为通信标准。

本文以西门子S7-1200 PLC与九江赛晶科技股份有限公司自研的JM810数控器进行Modbus通信为例,对整个通信过程进行探讨。

1 S7-1200 PLC实现Modbus通信方式所需的硬件配置

S7-1200 PLC是西门子公司推出的新一代PLC,旨在替换老旧的S7-200和部分S7-300型号。S7-1200设计紧凑、组态灵活且具有功能强大的指令集,使其成为能够控制各种应用的完美方案。S7-1200的主模块携带RJ45接口,支持PROFINET、Modbus-TCP、传输控制协议/网际协议(Transmission Control Protocol/Internet Protocol,TCP/IP)协议,而现场设备大多采用基于RS485的Modbus协议,需要外加1块通信模块[1]。

S7-1200为了便于应用RS485通信接口,需要外接扩展模块。有2种类型的通信模块可供选择,分别是CM1241 RS485通信模块和CB1241 RS485通信信号板[2]。CM1241 RS485为通信扩展模块,是属于附加在PLC主模块左边的扩展模块,紧挨着中央处理器(Central Processing Unit,CPU)主模块装在卡轨上,通过模块右边的插针与CPU左边插针进行连接。CB1241 RS485为信号通信板,是直接插在CPU的小板上。

CB1241 RS485模块属于通信信号板,挂在主CPU模块上,只支持RS485通信协议。CM1241 RS485可支持RS485和RS422这2种通信协议[3]。虽然使用RS485时2种通信模块并无任何差异,但是在实际应用过程中更倾向于选择CM1241外接扩展模块进行通信。本文探讨的基于RS485通信方式的硬件环境均采用CM1241模块进行通信。

2 通信方案及软件设计

2.1 系统通信网络方案

现场通信网络结构如图1所示。以公司自制数控器为例,应用基于RS485的4个Modbus协议模块并联运行进行通信。

图1 现场网络结构图

2.2 S7-1200控制器与JM810数控器通信的设计

S7-1200控制器通过CM1241 RS485模块进行通信时,需要调用Modbus_Comm_Load功能块对该模块进行初始化。

该功能块只需要调用1次。正常进行初始化操作后,DONE为1,ERROR位为0。其中:PORT对应CM1241 RS485对应的硬件标识符(S7-1200可以携带多个通信扩展模块);RESP_TO为通信从站响应时间,超过该时间则报通信超时。该功能块的其他更多设置选项在背景数据库Modbus_Comm_Load_DB背景数据块中进行设置,其中MB_DB为后面Modbus通信功能块的背景数据块。

通信初始化成功后,正式进行Modbus通信。PLC一般处于主站读取从站数据的状态,因此通常调用Modbus_Master功能块进行通信。若PLC作为从站,则调用Modbus_Slave功能块进行通信。

EN管脚为功能块的启动开关,推荐在需要使用时再进行接通。其中,REQ为脉冲触发,推荐使用上升沿触发。每次触发过程会将数据送到CM1241 RS485模块进行数据发送,若在数据发送过程中再次触发,则不予响应。如果不采用脉冲触发,则很大几率会导致该功能块一直处于BUSY而造成网络堵塞。MB_ADDR为Modbus协议的通信地址。MODE则将读写模式分为0、1、2、80、81以及104。

最常用的是功能码03和功能码05,分别对应MODE的0和1。

DATA_ADDR为Modbus寄存器地址,DATA_LEN表示从DATA_ADDR开始访问多少个字节,DATA_PTR为指向DB区的指针。如果MODE为0,则将读取的内容存入该DB区域。如果MODE为1,则将DB区的数据写入DATA_ADDR的地址中。

如果写入或读取完成,则DONE引脚会输出1并保持1个扫描周期。如果错误,则ERROR位为1,且STATUS显示出错误代码,并保持1个扫描周期。

因为DONE和ERROR位状态及错误代码只保存一个周期,所以必须及时保存错误代码,以免下一个扫描周期将错误代码更新或清零而无法捕获错误代码。

2.3 S7-1200控制器与从站通信的调度问题

第2.2节描述了读1个控制器的通信过程,如果需要读第2个控制器,则涉及通信调度问题。Modbus为半双工通信,在发送过程中无法接收,在接收时无法发送,所以处理好通信调度是一个重要内容。公司编程时主要考虑时间调度和以完成位进行调度2种调度方式。

时间调度是指以1个固定的时间周期对1次通信过程进行调度,如超过此时间,则放弃该次通信过程,启动下一个站点的通信。该种调度方式编程简单,但通信效率并不高。每次通信过程需要等到该固定的时间周期结束。为了保证所有的正常通信过程都能在固定时间周期内完成,固定的时间周期设置不会太小,一定程度上造成通信控制器在等待该固定周期结束才启动下一个站点通信,造成了资源浪费。现阶段,该方式主要适用于站点对时间响应并不敏感的场景。

以完成位进行调度的这种调度方式是指利用上次通信完成位来触发下一次通信的过程。该种调度方式效率高,完成后可立刻进行下一次通信处理。与时间调度方式相比,节省了等待时间,缩短了站点的响应时间,但编程较为复杂。

因为使用上一个设备的完成位进行下一次通信的触发,所以编程过程中需要考虑各种异常处理方式,如从站断线、从站地址冲突等通信错误,以确保下一次通信的正常进行[4]。

2.4 Modbus通信的讨论

2.4.1 Modbus协议应用的优缺点

Modbus协议作为一种开放式协议,数据报文和实现均较为简单,使其成为现场总线领域普及最广的协议。但是,因为该协议过于简单,所以在应用过程中存在很多局限性。

作为一种半双工通信协议,Modbus协议无法同时进行读写。当处于多站点通信环境时,只能一个个轮询采集,且读写操作无法同时进行。当同时需要对多个设备进行写入、读取操作时,合理的安排读写顺序显得尤为重要。此外,Modbus协议对主从站有明显区分。需要注意,一个设备只能作为主站或从站,无法既为A设备的主站又为B设备的从站。这些缺点使得应用Modbus协议进行通信时需要开展大量的优化处理工作。

2.4.2 站点通信的读写优化

在用户现场,不少设备并不只是简单需要监测设备数据信息,还需要进行设备操作和控制。这类设备不仅需要进行设备数据的读取,还需要进行设备数据的写入。

实际上,大多数设备的读取需求是监测现场数据,这就要求必须尽快采集设备数据并及时显示出来。在每个轮询周期里,必须要读设备数据。但是,远方控制设备的需求并不是时刻都有,每个周期如果都进行重复的写操作(控制设备为对从站的写操作),会浪费轮训时间,此时可以采用选择一个数据区域缓存下发数据。当用户需要操作或者控制设备时,用户在操作后需要将这一次数据存入缓存。每次读取完成后,需要检查下发数据。如果与缓存数据一致,证明用户并无在此周期进行新的下发操作,则需要重新写入;如果与缓存数据对比不一致,则将写的操作插入到轮询队列中。

2.4.3 站点掉线时的处理方法

Modbus协议基于主从模式,所有从站设备均以轮询方式工作。在单个设备通信故障或者掉线时,必须等待超时时间才能够进行下一个设备的通信工作。以完成标志位进行触发时效率较高,但是仍然无法避免这个问题。单个设备掉线时,该超时时间尚可接受,但多个从站点同时掉线,1个周期内的轮询总时间就会大幅增加。针对这种情况,一般采取两种处理方式。

方案1:增加几个CM1241 RS485模块,利用多模块并联开展工作。该方案将Modbus一个主站对多个从站的逐个轮询模式变成多个主站对多个从站的轮询模式。如果多加1个CM1241 RS485模块,则整个轮询时间减半。该方案能够显著缩短正常运行时和发生掉线故障时的轮询时间,具有编程实现简单、可靠性高、轮询时间短等优点。此外,该方案存在增加一个扩展模块便需要增加硬件成本和系统通信线路布设较为复杂等缺点[5]。

方案2:程序内部进行判断处理,增加正常轮询队列和慢轮询队列。如果正常轮询时发现某设备连续3次通信超时,则将该设备剔除正常轮询队列,并将其添加至慢轮询队列。整个轮询顺序为正常轮询队列轮询多次后轮询一次慢轮询队列,找出其中由故障转为正常的设备后,将其添加至正常轮询队列,并再次进行正常轮询过程。轮询机制的流程如图2所示。

图2 轮询机制流程

3 结 论

简单分析S7-1200控制器与JM810数控器的通信后可知,Modbus协议具有实现简单、硬件便宜、通用性强、使用方便以及容易开发和实现等优点,同时存在通信实时性不高、通信响应不可靠、无法同时读写以及从站之间无法相互通信等缺点。因此,在通信设计时考虑相关问题,以期更好地促进工业现场总线及协议的完善与发展。

猜你喜欢
通信协议调度控制器
工商业IC卡控制器改造为物联网控制器实践
基于增益调度与光滑切换的倾转旋翼机最优控制
《调度集中系统(CTC)/列车调度指挥系统(TDCS)维护手册》正式出版
基于强化学习的时间触发通信调度方法
基于动态窗口的虚拟信道通用调度算法
车载网络通信协议标准化问题研究
电动汽车充电接口及通信协议新国标发布
基于PID控制器和模糊逻辑控制器的D6114柴油机速度控制
模糊PID控制器设计及MATLAB仿真
Freescale公司的可编程电磁阀控制器MC33816