怎么通过mudbus指令读取多圈编码器数据

程序中MBUS-MSG中的DataPtr 一般设置为&vbxxx,数据则存储到vwxxx上,但是多圈编码器的数据较大,超过了vw的37268的范围后变成了负数。请教该怎么样设置才能显示读取到的编码器实际数值呢?

问题补充:
数据存储到了VB100上且数据较大,读取VW100的话变成了负数,如果直接读取VD100的数据似乎又不是编码器真正的度数。那么vd100的数据跟vw100有怎样的关系呢,需要经过怎样的换算才得到真实的数据呢。

图片说明:

怎么通过mudbus指令读取多圈编码器数据   

最佳答案

调用多个MSG,将16位数据整合到32位数据。
count管脚选择2个字以上的数据。
补充问题回复:
这个可能需要对字节互换或者字互换获取真实的数据,有部分第三方设备的数据存放格式与西门子的可能存在差异,通过互换获得真实的实际数据。

提问者对于答案的评价:
再请教按照图片,从31025起读2个16位数,填充到VB110开始的两个空间,对应VB110-vb113,在西门子里vw110对应vb110和vb111地址,VD110对应VB110-VB113地址。这么理解正确的话是不是说应该读取vd110的地址,但是读到的数据又是不对的,是因为16位和32位的关系吗?

最佳答案作者回复:
还是需要对字节,字、双字的交换获取正确的数据。
这个在与第三方通讯应用中非常常见的变换方法。
西门子的数据组合如你描述,第三方的数据组合是如何?你看看设备使用手册,是否会有一些帮助。

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年10月30日 下午6:08
下一篇 2020年10月30日 下午6:09

相关推荐

发表回复

登录后才能评论