ET200S 1 SI Modbus Master 6ES7 138-4DF11-OABO 通讯问题

ET200S/CPU IM151-7  1SI Modbus Master 模块与EK220流量计通讯,读取温度压力和流量累计, 由于读取的数据地址不是连续的 于是我采用轮训的方式 做2个读取    第一次读取的温度压力数据存储在DB4 (OK)      第二次 读取的流量累计数据存放DB5  但是实际运行的结果是 第两次的数据却存储在DB4  而非DB5    轮训的程序也是按照CP341 的思路来做的   找不到是什么原因  还请各位指教。

最佳答案

1、第一次读取的温度压力数据存储在DB4 要有OPN DB4的语句,第二次 读取的流量累计数据存放DB5 必须要有OPN DB5的语句。有了相应的OPN DBx语句,轮询的程序正确,不会是 第两次的数据却存储在DB4  而非DB5 。
2、MODBUS通讯是一种轮询的方式,即一次只能读取一个站的数据。所以在触发读取数据的时候要用脉冲触发,而非长期为1去触发。
3、在读取多个从站的时候,要注意每个站的轮询,轮询程序没做好,将导致通讯超时得错误,从而无法读取数据。一般用通讯完成位触发下一次通讯:
见同类问题的答案:
http://www.ad.siemens.com.cn/service/answer/solution.aspx?Q_id=66250&cid=1028
4、参数设计的时候,奇偶校验,通讯速率得一致,站地址不能有冲突。
5、相关文档:
西门子CP341 Modbus RTU多站点轮询指南及程序实例(中文):
http://www.chinakong.com/download/listdown.asp?id=6487

提问者对于答案的评价:
谢谢各位的指导  有时间我在研究一下     目前的解决方式是利用仪表映射 将要读取的地址全部放在一起 这样一次性全部读取  不需要做2次轮训

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

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

相关推荐