论文部分内容阅读
【摘 要】在同一个RS485总线上如果有多台设备,每台设备需要采集多个不同的量,那么每个量的单次刷新时间会受到很大的影响。特别是在做控制时,控制命令下发后其控制结果的返回一般需要检测DI的变化,但是如果链路上数量较多,其刷新会有较大延迟,但是控制系统需要及时的返回动作结果以进行下一步相关动作,因此这个矛盾就更加突出。通过MODBUS通讯规约的深入研究,结合现场实际情况,我们对主站端和客户端做了部分改进,并且在现场得到了良好的应用,现就其实现方法做一下简单的说明。
【关键词】MODBUS 控制
随着科技的不断进步,工业控制领域向的集成度、时时性和可靠性越来越高。目前工业控制设备与控制系统的连接主要有以太网、Profibus总线、DevisNET总线、RS485总线等。RS485总线由于其价格低廉,接线方便等优势,被广泛运用于现场数据量较小的设备上;同时Modbus规约作为一种简单、易用的设备通讯语言,在工业控制领域也得到广泛的运用。因此在工业现场出现了大量的支持RS485带Modbus规约的设备,这些设备在现场运用过程中能快速的连接和调试,深受现场工程师和用户的好评。
一、Modbus总线的工作方式
Modbus总线采用问答式交换数据,总线上设置一个主机和多个从机,理论上最多可以253个从机(地址00和FF保留)。工作时主机下发查询或写入报文,其报文中包含从机地址信息,从机收到报文后检查报文中的地址是否为本机地址,如果是本机地址,则执行相对应的操作然后回复与之对应的报文,如果不是本机地址,则将报文丢弃。
在Modbus报文中其地址为一个字节,因此单个总线上从机最多为253个,但是鉴于通讯数度和通讯通道电气负载的影响,一般建议每条总线不超过32个从机。
二、Modbus总线通讯的效率
根据Modbus协议的规定,主机对从机数据的读取可以是单个BIT位的读取(功能码01,02),也可以是单个寄存器的读取(功能码03,04)。根据它的特性,在产品的实际研发中,通常将设备模拟量输入用于单个寄存器的读取,开关量输入使用单个BIT位的读取。这样每次完全访问一个设备至少需要两条报文,如果在地址不连续的状态下,其报文数量可能还会更多。
以上海致维的L7低压马达保护为例,其开关量使用02功能码,放在0010H~001bH中;模拟量使用03功能码放在0097H~00b1H,电度放在0004H~0009H里面。其地址不连续,功能码也不一样,要将其数据全部读取至少需要下发3条报文,返回3条报文,经过实际测试在9600波特率的情况下整个过程大概在360ms左右,即主机每下发一条报文至从机返回结束大概时间为120ms左右。
三、Modbus总线在现场碰到的问题及改进
(一)实际运用中的问题
在浙江医药有限公司昌海项目中,每个生产车间都配备了上海致维的低压马达保护,单个车间配置最多的达到260台。在设计时在每个车间配置了一台带16个RS485通讯口的通讯管理机用于采集马达保护数据转发到DCS和电力监控系统。在调试过程中发现数据刷新平均时间在6S左右,有的甚至超过了30S,这个刷新频率对于工业控制系统和电力监控系统都是无法接受的。
(二)问题分析
1. 转发数据时采用TCP/IP的以太网Modbus和IEC104规约,由于这两个的传输介质是以太网,其通讯基本没有延迟,因此数据刷新慢的问题不是由数据转发造成的。
2. 车间的马达保护260台、16个串口的情况下,每条RS485的链路上大约有16台马达保护,根据我们之前的测试,可以算出正常情况下数据的刷新频率为:16×3×120=5760ms,这个时间和我们现场实际测试的时间大致相同。造成这个问题的原因主要有两个:一个是链路上的设备数量多;另一个原因是由于功能码不一致和寄存器地址的不连续。
3. 调试过程中还发现,在低压系统中,由于有些设备是备用,马达保护由于没有辅助电源而处于关机状态,主机在下发查询指令后由于马达保护都处于关机状态,所以没有任何数据返回,主机就会延时1S,由此造成通讯延时非常严重。比如链路上只有1台设备正常工作,其余处于备用状态,那么这一台设备的刷新频率为:1×3×120+15×3×1000=45360ms。因此我们在现场调试时发现有设备的刷新频率在30S左右。
(三)改进方案
1. 增加马达保护Modbus通讯点表自定义
在马达保护中开辟出一个新的地址段0200H~0300H用于自定义,该地址段使用03功能码进行读取,将需要使用的模拟量数据以整个寄存器的方式映射到该地址段里面;将开关量以位的方式映射到该地址段中,自定义地址段中每个寄存器可以映射16个开关量位置,上位机采集后再做相应解析即可。
2. 增加通讯降级处理
所谓的通讯降级,是指判断某从机离线(从机断电或故障)后,降低对从机的访问频率,以减少通讯等待的时间,提高正常设备的访问数度。比如,判断某设备离线后,降低为5分钟查询一次,如果查询到该设备正常后,将该设备访问频率重新调整为正常频率。这样有效避免了因为设备离线造成的通讯延迟而影响数据刷新频率。这样可以大大减小由于设备离线造成的通讯延迟。
(四)现场运用效果
在完成以上改进方案后,项目现场实测数据刷新频率在2s左右,较以前有很大的提高,而且没有出现过之前需要好几十秒才刷新的情况。如果将链路上的设备关掉15台,只保留一台的极端情况下,其长时间刷新频率在200ms左右,由于每隔5分钟要查询一次不在线设备偶尔会在3s左右,但是大多数时间其刷新频率反而有了提高。
【关键词】MODBUS 控制
随着科技的不断进步,工业控制领域向的集成度、时时性和可靠性越来越高。目前工业控制设备与控制系统的连接主要有以太网、Profibus总线、DevisNET总线、RS485总线等。RS485总线由于其价格低廉,接线方便等优势,被广泛运用于现场数据量较小的设备上;同时Modbus规约作为一种简单、易用的设备通讯语言,在工业控制领域也得到广泛的运用。因此在工业现场出现了大量的支持RS485带Modbus规约的设备,这些设备在现场运用过程中能快速的连接和调试,深受现场工程师和用户的好评。
一、Modbus总线的工作方式
Modbus总线采用问答式交换数据,总线上设置一个主机和多个从机,理论上最多可以253个从机(地址00和FF保留)。工作时主机下发查询或写入报文,其报文中包含从机地址信息,从机收到报文后检查报文中的地址是否为本机地址,如果是本机地址,则执行相对应的操作然后回复与之对应的报文,如果不是本机地址,则将报文丢弃。
在Modbus报文中其地址为一个字节,因此单个总线上从机最多为253个,但是鉴于通讯数度和通讯通道电气负载的影响,一般建议每条总线不超过32个从机。
二、Modbus总线通讯的效率
根据Modbus协议的规定,主机对从机数据的读取可以是单个BIT位的读取(功能码01,02),也可以是单个寄存器的读取(功能码03,04)。根据它的特性,在产品的实际研发中,通常将设备模拟量输入用于单个寄存器的读取,开关量输入使用单个BIT位的读取。这样每次完全访问一个设备至少需要两条报文,如果在地址不连续的状态下,其报文数量可能还会更多。
以上海致维的L7低压马达保护为例,其开关量使用02功能码,放在0010H~001bH中;模拟量使用03功能码放在0097H~00b1H,电度放在0004H~0009H里面。其地址不连续,功能码也不一样,要将其数据全部读取至少需要下发3条报文,返回3条报文,经过实际测试在9600波特率的情况下整个过程大概在360ms左右,即主机每下发一条报文至从机返回结束大概时间为120ms左右。
三、Modbus总线在现场碰到的问题及改进
(一)实际运用中的问题
在浙江医药有限公司昌海项目中,每个生产车间都配备了上海致维的低压马达保护,单个车间配置最多的达到260台。在设计时在每个车间配置了一台带16个RS485通讯口的通讯管理机用于采集马达保护数据转发到DCS和电力监控系统。在调试过程中发现数据刷新平均时间在6S左右,有的甚至超过了30S,这个刷新频率对于工业控制系统和电力监控系统都是无法接受的。
(二)问题分析
1. 转发数据时采用TCP/IP的以太网Modbus和IEC104规约,由于这两个的传输介质是以太网,其通讯基本没有延迟,因此数据刷新慢的问题不是由数据转发造成的。
2. 车间的马达保护260台、16个串口的情况下,每条RS485的链路上大约有16台马达保护,根据我们之前的测试,可以算出正常情况下数据的刷新频率为:16×3×120=5760ms,这个时间和我们现场实际测试的时间大致相同。造成这个问题的原因主要有两个:一个是链路上的设备数量多;另一个原因是由于功能码不一致和寄存器地址的不连续。
3. 调试过程中还发现,在低压系统中,由于有些设备是备用,马达保护由于没有辅助电源而处于关机状态,主机在下发查询指令后由于马达保护都处于关机状态,所以没有任何数据返回,主机就会延时1S,由此造成通讯延时非常严重。比如链路上只有1台设备正常工作,其余处于备用状态,那么这一台设备的刷新频率为:1×3×120+15×3×1000=45360ms。因此我们在现场调试时发现有设备的刷新频率在30S左右。
(三)改进方案
1. 增加马达保护Modbus通讯点表自定义
在马达保护中开辟出一个新的地址段0200H~0300H用于自定义,该地址段使用03功能码进行读取,将需要使用的模拟量数据以整个寄存器的方式映射到该地址段里面;将开关量以位的方式映射到该地址段中,自定义地址段中每个寄存器可以映射16个开关量位置,上位机采集后再做相应解析即可。
2. 增加通讯降级处理
所谓的通讯降级,是指判断某从机离线(从机断电或故障)后,降低对从机的访问频率,以减少通讯等待的时间,提高正常设备的访问数度。比如,判断某设备离线后,降低为5分钟查询一次,如果查询到该设备正常后,将该设备访问频率重新调整为正常频率。这样有效避免了因为设备离线造成的通讯延迟而影响数据刷新频率。这样可以大大减小由于设备离线造成的通讯延迟。
(四)现场运用效果
在完成以上改进方案后,项目现场实测数据刷新频率在2s左右,较以前有很大的提高,而且没有出现过之前需要好几十秒才刷新的情况。如果将链路上的设备关掉15台,只保留一台的极端情况下,其长时间刷新频率在200ms左右,由于每隔5分钟要查询一次不在线设备偶尔会在3s左右,但是大多数时间其刷新频率反而有了提高。