ModbusRTU作为一种通用的协议,广泛的应用在工业控制领域中。并且通常PLC一个主站模块要挂多个从站站点,通过程序轮询的方式,来实现多站点的数据读写功能。为此我们也做了一个简单的程序封装,来满足ModbusRTU自动轮询的效果。客户仅需要通过填写DB块的表格即可,如图1所示。
其中数组中的MaxData为轮询Zui大数量,可在PLC变量中的用户变量按需修改。本程序限制单次读写的Zui大字数为32个字,如果有其他特殊需要,可以在PLC数据类型中将MB_Data里的Data_PTR数组长度按照需要更改即可。
图1 轮询DB块表格
表格中MB_Addr为从站站地址;Mode为读写模式选择,0为读取,1为写入;Data_Addr为从站寄存器起始地址;Data_Len为读写数据长度;如果数据为读取,那么将Data_PTR里对应长度的数据取出来做数据处理,就可获得从站实际数值;如果是写入,则将要写入的数据传送至Data_PTR中即可。
当表格的数据MB_Addr、Data_Addr或Data_Len为0时,自动从第一笔数据重新开始轮询。
程序代码如下图
图2 程序代码