找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
问题
取消精华
首页精华问答
取消推荐
高端用户推荐
申请置评
已申请置评
修改
修改标签
添加标签
官方认证
取消官方认证
修改标签
添加标签
转移分类
删除
{{itemCategory}}
收藏({{answerDetail.Q_FavoriteCounts}})
手机扫码追踪该问题,
觉得实用,立即去分享!
点击复制链接
专家建议
取消最佳答案
修改
从你第三张图DB块的的定义,就可以看出:你没有理解Modbus RTU指令。
我们选择了Modbus RTU指令,就是依靠指令来完成数据自动打包发送,而不是我们自己来打包(这就是自由口了)。Modbus RTU库指令本质上是由西门子公司提供的标准化了的自由口通信功能块。
在我们使用主站指令Modbus_Master ,如你的图1,(在此之前必须要使用Modbus_Comm_Load对端口进行初始化):填写参数MB_ADDR=1时,就把站地址为数据包准备好了。同理,MODE=0,DATA_ADDR=40002(不是40001)、DATA_LEN=6(不是你图中的17,正确的是6,读取6个字即12个字节正确)则表示读取对方第2个保持型寄存器开始的6个字内容。这样库指令会把功能码03:读保持寄存器,寄存器首地址:00 02,保持型字寄存器数量00、06加入数据包。指令则会依据这些数据计算CRC校验,得到校验码0864H,先传递低字节64H,然后低字节08H。
整个过程是自动的。不是你准备数据存在你的Send_Data区
参考:S7-1200 Modbus RTU 通信
http://www.ad.siemens.com.cn/productportal/prods/s7-1200_plc_easy_plus/smartsms/016.html
Modbus协议中文版(GB)
https://wenku.baidu.com/view/f0850044ef06eff9aef8941ea76e58fafab045e7.html
等您来回答
换一换
{{item.CoinValue}}西币
{{item.VisitNum}}人想问
本版相关问题
换一换
专家置评
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!

官方商城-正品备件
DIOMIS