2.然后我们要明白我们的目的,读写数据,数据存储在什么地方?怎么读取和写入?硬件组态方面还需要怎么进一步组态?读取完数据之后怎么处理?
上图显示的是加气机设备MODBUS协议的一小部分,以LNG出口温度为例,对每个数据进行解释,0x0035、0x0036指的是寄存器号,2指的是寄存器数目,int 32指的是数据类型,0.001指的是单位,R指的是只读,综合上述,我们知道了LNG出口温度这个数据存储在40000+53(16进制35转换)-1=40052开始的两个字中,PLC读取数据之后需要除以1000以得到正确数值
接下来需要对硬件组态进行进一步组态,双击总线桥,添加一个read 2 words模块,并设置好起始地址及其他必要设置,组态完成后如下图
从上图中我们便可以看出,将起始地址设置为52,PLC的I地址设置为256-259,便将MODBUS寄存器40052开始的两个字与PLC的PID256对应了起来,第一行的8DI的I地址为2,意味着IB2是总线桥的状态位,QB2是总线桥的控制位:具体含义见下图
这样,我们程序中给定一个启动MODBUS扫描信号,便可以读到LNG出口温度的数据了,读取的数据存储在PID256中,对PID256进行除以1000操作,便可以得到实际出口温度,同时,控制字状态字及其他温度压力等数据都可以通过这样的添加模块方式来进行读写。
通过这个项目,我对MODBUS协议有了一定的了解,我觉得关键在于组态和地址映射,测试时候可以使用MODBUS SIM和MODBUS SCAN软件进行测试,MODBUS Poll和MODBUS Slave也是可以的,使用软件测试完成后,有事半功倍的效果。并且在这次测试完成后,我又完成了S7-200与S7-200 SMART的MODBUS通讯测试,还有使用CP343-1通过第三方连接MODBUS设备的测试,,发现再神秘的东西,只要我们用心去了解它,去剖析它,问题都是变得简单,好事多磨,知识也是这样,它也害怕多磨!
全站搜索