提高PLC程序中Modbus通信效率的方法

2014-04-29 06:41梅奕
电子世界 2014年21期

【摘要】针对PLC程序设计中Modbus通信存在数据丢失和通信效率低的问题,提出了一种兼顾重要数据和通信效率的优化方法,包括划分数据优先级和定时中断控制发送周期两个部分,实践表明,此方法有利于保证重要数据的实时性和提高通信带宽利用率。

【关键词】PLC;Modbus;数据丢失;通信效率;定时中断

引言

PLC是一种专为在工业环境应用而设计的数字运算电子系统,它将计算机技术、自动控制技术和通讯技术融为一体,成为实现单机、车间、工厂自动化的核心设备,具有可靠性高、抗干扰能力强、组合灵活、编程简单、维修方便等诸多优点[1]。随着控制技术的不断发展,控制系统的规模也在逐步扩大,通讯技术成为大规模控制系统的一个支撑。在大规模控制系统或分散式控制系统中,多个主机之间或者主机与分机之间有大量数据进行通信[2]。

在PLC的通信中,Modbus协议是一种常用的通信协议。Modbus最早由Modicon公司提出,由于其简单、可靠,被广大现场技术人员广泛接受。当前市场中多数PLC产品都支持Modbus协议。Modbus协议是主从式协议,通信由主站发起,从站根据主站的命令进行数据应答,从站不能发起通信。Modbus的这种特点决定了其通信实时性低于CAN等多主协议,但其单次通信数据量大的特点在一定程度上可以弥补这一不足。在实际操作中,如果主站是PLC,其通信的数据和发起通信的时间是由控制程序决定的,是随机的,在控制程序的循环运行中,在某些时刻可能通信数据量大,而在其他时刻可能没有数据,这会造成带宽资源利用不均匀,在数据量大的时候通信拥挤,导致数据丢失和通信不稳定。为了解决这一问题,本文提出了一种在PLC程序设计中提高Modbus通信效率的优化方法。

1.Modbus协议简介

Modbus通信协议具有开放性好、易实现、扩展性好、可靠性高等优点, 因而具有广阔的应用前景,被越来越多的设备厂商所支持。不同厂商生产的控制设备可以连成Modbus工业网络,由Modbus通信的主站对 现场设备和仪表进行远程监控,实现非常好的监控效果和系统性能[3]。

Modbus没有规定物理层,它只规定了可以被通信节点识别的数据结构。Modbus规定了数据的结构、命令和应答的形式,数据通信采用主从方式,主站可以向特定的从站发起读写命令,也可以向所有从站发起广播命令。在同一个通信网络中,所有通信节点(包括主站和从站)都必须设置相同的通信参数,包括波特率、数据位、停止位和校验位,而字符超时、回复超时等保护参数每个通信节点可以不尽相同。

Modbus通信模式分为ASCII和RTU两种,两者的不同主要在于数据格式,两者的数据格式分别如表1和表2所示。

表1

位置 起始位 设备地址 功能码 数据 LRC校验 结束符

字符

个数 1 2 3 n 2 2

表2

位置 起始位 设备地址 功能码 数据 CRC校验 结束符

位数 静止时段 8bit 8bit N*8bit 2*8bit 静止时段

Modbus功能码可以是1-255范围内任何整数值,有些功能码适用于所有的通信设备,有些则只适用于特定的控制器,还有一些用于功能的扩展。

2.PLC程序中Modbus通信存在的问题

(1)数据丢失

数据丢失,也就是通常说的丢帧现象。PLC程序按照循环扫描方式执行,对于同一个Modbus物理通信接口,在同一个扫描周期内只能执行一个Modbus命令,即便控制程序在同一个扫描周期发起了多个Modbus命令,也只有一个被执行,当然,这也与每个PLC厂家的通信处理机制有关,有的厂家提供了比较大的通信缓存,但如果通信帧数超出了缓存的范围,也会丢帧。PLC特定的开发方式是造成这种问题的主要原因,PLC程序的编写调试属于在PLC编程软件平台下的二次开发,不像单片机可以进行底层代码级的开发,因此,用户只能利用PLC编程软件提供的操作命令对Modbus进行操作,而无法监视通信底层的状态,在很大程度上存在不确定性。必须建立适用于PLC程序的Modbus通信策略,以保证Modbus通信的确定性。

(2)带宽利用率低

在PLC程序扫描周期长、Modbus通信数据量大、通信速率高的情况下,这种情况尤为突出。以扫描周期为40ms,通信速率为115.2kbps(串口数据无校验),每次通信读取60个字,采用RTU模式为例来说明。由于读取数据的命令数据相对少,主要数据量在于从站的回复数据,因此只计算回复的数据来说明问题,以表2中的数据格式进行估算。总数据量为:8+8+120*8+2*8=992bit,除以通信速率得到所用时间为8.6ms。在这种情况下,带宽利用情况如图1所示。从图1中可以看出,由于扫描周期长、而每个扫描周期只能处理一个Modbus命令,导致Modbus总线看似空闲,实际上有大量重要数据没有被及时发送出来。

图1 通信带宽利用情况

综上,如果不对PLC程序中的Modbus通信优化处理,会对通信的稳定性和通信效率造成大的影响。

3.提高PLC程序Modbus通信效率的方法

针对PLC程序设计中存在的Modbus通信不确定和带宽利用率低等问题,本文提出一种程序优化方法,分为两个部分。

(1)划分数据优先级

Modbus通信可能包含多帧数据,根据实际需求,每个帧用途各不相同,有读取设备信息的,有控制设备启停的,有控制设备急停的,用户可以根据用途的不同,区分各个数据帧的发送优先级。以表3为例,从安全第一的角度考虑,读取设备状态的数据优先级最低,控制设备启停的数据优先级中等,控制设备急停的数据优先级最高,在程序设计中,应保证高优先级的数据优先发送。

表3

数据含义 优先级

读取设备状态 低

控制设备启停 中

控制设备急停 高

(2)利用中断控制发送周期。

实际应用中,总共需要发送的数据帧可能会有几十个甚至更多,每个数据帧都要分配一个优先级,在一个扫描周期中,即便是最高优先级的数据发送成功了,但次高优先级的数据就可能出现延迟发送的情况,同样会影响系统的实时性。因此,控制数据发送周期是必要的。采用PLC中的定时中断功能,定时按照优先级的高低发送数据,定时中断不受扫描周期的影响。例如,在40ms的扫描周期下,采用10ms的定时中断,每个扫描周期可以发送4帧数据,相比较优化之前,大大提高了通信效率。

4.结语

针对PLC程序设计中Modbus通信存在数据丢失和通信效率低的问题,本文提出了一种优化方法,首先对数据帧划分优先级,保证重要数据优先发送,其次采用定时中断控制数据发送周期,保证通信效率。此方法已在实际应用中得到验证,对于PLC编程有一定的参考意义。

参考文献

[1]邓高寿,潘宏侠.PLC在工业自动化控制领域中的应用及发展[J].机械管理开发,2006(3):99-100.

[2]邓志君,梁松峰. 基于RS485接口Modbus协议的PLC与多机通讯[J].单片机开发与应用,2010,26(3-2):107-108.

[3]何志勇,张茂青,钱伟清.PLC主站对Modbus网络的监控方法[J].计算机网络与通信,2007,29(2):26-28.

作者简介:梅奕(1973—),女,江苏常州人,硕士,助理实验师,主要研究方向:电气自动化技术。