找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
手机扫码追踪该问题,
觉得实用,立即去分享!
点击复制链接
不建议你采用定时器来触发MSG指令,虽然你通讯成功了。
因为串口RS-485通讯是异步通讯,通讯是否完成不取决于定时器的时间到达,而是取决于done为是否由0变1的那个周期。
报警6#就说明了问题,同一个周期只能是一个MSG指令有效,2个以上就报警6#。
也正是你不合适的触发模式,造成你拔掉通讯电缆,报警显示没有区别的原因所在,因为你的触发不取决于指令完成与否,而是定时器的时间到达,定时器时间到达无论是否完成MSG指令均下移到下一个MSG指令。
另外,定时器刷新机制是异步的,同样一个定时器被cpu刷新的几率是不同的,也是造成报警的另一个原因。参考官方的轮询例子程序试试。
Modbus RTU通信:
http://www.ad.siemens.com.cn/productportal/prods/s7-200-smart-portal/200smarttop/smartsms/020.html
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
找答案微信小程序
提问
搜索
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!