找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
1、首先保持寄存器最小的寻址单位是字,即40001 就是一个字,它对应的是你定义的保持寄存器的 VW1000。
2、VW1000 是两个字节,即 VB1000、VB1001 组成,而西门子的存储方式是高位低存,低位高存,意思是组成 VW1000 的16个 2 进制位的高 8 位存储在低地址的存储单元 VB1000 中,低 8 位存储在高地址的存储单元 VB1001 中;
3、有了上面的存储格式,你程序中的网络1,将 99 传送到了 VB1000,将 99 转换成二进制则 99(十进制) = 2#0110 0011,将这一串8位的二进制码填到 VW1000 中的 VB1000,VB1001都是0,则 VW1000就是 2#0110 0011 0000 0000,再将这一串16位的二进制码转转换成十进制就是 2#0110 0011 0000 0000=25344(十进制)
而 VW1000 就是MODBUS RTU 的保持寄存器 40001,所以用modscan32读40001,看到的数据就是 25344
4、从《S7-200 SMART 数据寻址》了解存储格式
https://www.ad.siemens.com.cn/productportal/Prods/s7-200-smart-portal/200SmartTop/programming/Data_addressing.html
从下面了解一下存储器的地址对应关系
https://www.ad.siemens.com.cn/productportal/Prods/s7-200-smart-portal/200SmartTop/communication/serial_port/modbus/Slave/Slave.htm
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
找答案微信小程序
提问
搜索
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!