扩展IO模块为4个艾莫迅RTU简易版,16输入,16输出。物理连接为RS485,A B两根线。
下面为H3Umodbus配置,关键是协议选择为:MODBUS主站配置。协议配置:和从站保持一致
通过下图的程序及配置,已经可以获得扩展模块的各个模块输入点信号:
从站1的16点输入映射M1200-M1215 ,对应通信缓存区是D180。
从站2的16点输入映射M1220-M1235 ,对应通信缓存区是D182。
从站3的16点输入映射M1240-M1255 ,对应通信缓存区是D184。
从站4的16点输入映射M1260-M1275 ,对应通信缓存区是D186。
下图是读取从站4的线圈(只在程序第2行,和读输入点一样,用一行mov指令就OK了,内部是自动循环通信的)和写从站4的线圈(写的程序原理,以从站4的第1个输出点映射M1060为例,当M1060状态改变,并且通信缓存区的地址D160也跟着改变,才触发通信M160)
从站4的16点读输出映射M1160-M1175 ,对应通信缓存区是D194。
从站4的16点写输出映射M1060-M1075 ,对应通信缓存区是D160。
通过以上方法即可完成扩展模块IO点的映射使用,下图是写单个线圈,作为参考:
实际验证,程序最后两行 RST M100可以省略。
从站1的第1个输出点映射M1000 ,对应通信缓存区是D100,触发为M100 。
从站1的第2个输出点映射M1001 ,对应通信缓存区是D101,触发为M101 。
.........