找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
读写单个仪表的多个参数是否需要每个参数的读写都编写一条 MSG 指令,然后一直轮询?
多仪表读写,轮询的方式是必须的。
单个仪表的多个参数如果类型及存储空间连续,并且不超过仪表允许一次性读写的个数限制,则可以用一个 MSG 主站指令来读写。这样可以减少 MSG 主站指令的个数。
单个如果类型一样,存储空间又不连续,在不超过仪表允许一次性读写的个数限制时,则可以用一个 MSG 主站指令来读写。这样可以减少 MSG 主站指令的个数,只是要浪费一些通讯的效率,这要根据实际评估。
轮询的方式即使通讯正常也是会产生延时的。
1、减少掉站重试的次数
MBUS_MSG 指令被激活时将发送 Modbus 请求报文帧,如果在Timeout 参数定义的时间间隔内主站未接收到从站应答,Modbus RTU 主站协议库默认的情况下还会再发送 2 次 Modbus 请求报文帧;在最后一次请求报文帧发送后,经过 Timeout 参数定义的时间间隔后还未收到应答时, MBUS_MSG 指令的 Done 完成位才被设置为 1 。将 mModbusRetries 变量的数值由 2 改为 0 ,即可取消 Modbus 请求报文帧的重试次数。mModbusRetries 变量的绝对地址可通过查询Modbus RTU 主站协议库的符号表获取。
2、采用质量可靠的器件、规范布通讯线、系统的接地、EMC 防护做好,尽可能提高通讯波特率。
3、按最上的方法减少MSG 主站指令的个数。
http://www.ad.siemens.com.cn/productportal/Prods/s7-200-smart-portal/200SmartTop/SmartSMS/020.html
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
找答案微信小程序
提问
搜索
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!