S7-300的modbus编程问题

现在打算使用S7-300PLC的CP341模块通过Modbus RTU连接多个研华的ADAM远程IO模块,对多个(根据现场不同,数量从30到240不等)研华的ADAM模块的数据进行读取(模拟量4~20mA输入和数字量输入)和写入(数字量输出)。由于之前从来没有用过Modbus方式通信,因此有几个问题:
1、使用Step7编程时,对ADAM模块的相关数据的读取和写入,是对应其触点、线圈还是保持寄存器?
2、使用Step7编程时,对ADAM模块的相关数据的读取和写入必须使用P_SND_RK、P_RCV_RK程序块么?直接对ADAM模块对应的PQW和PIW操作可以么?
3、由于存在多个ADAM模块,即多个Modbus从站,因此编程时需要考虑Modbus主站轮询读取通信么?
也就是参考西门子 《CP341 Modbus RTU多站点轮询》一文进行编程还是不需要考虑轮询问题,直接类似DP编程那样,直接对多个DP从站进行读写数据即可。

问题补充:
我在论坛也提了相同的问题,有2个大侠回答了我,答案和两位是一样的,但是:
1、论坛的一个大侠说: 这样的方案不好,通讯时间长,速度慢,建议更改方案。
2、另外一个大侠说:如果不需要定时与从站交换信息,只要能保证前后两次通信之间有足够的时间,不用轮询也可以。
对于前者还有什么好办法呢?由于PLC距离远程IO比较远(至少数百米),modbus TCP肯定不行(需要光纤+光电交换机,成本很高);DP也不行,远程的DP IO也不便宜吧(带各16个DI、DO,4个AI的S7-200比三个研华的ADAM贵不少吧);每个远程IO配一个串口服务器?成本也不少(MOXA级别的要600左右),因此还有什么好办法?
后者我的理解是在需要的时候触发读取或者写入指令?是不是这样?

最佳答案

1.保持寄存器。2不可以对应的PQW和PIW操作。3要轮询通信。  不要用DP的思想去套modbus,不一样,后者比前者麻烦点。

提问者对于答案的评价:
3Q

专家置评

已阅,最佳答案正确。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc237607.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月1日 下午5:24
下一篇 2018年12月1日 下午5:24

相关推荐