登录
首页 PLC论坛 PLC论坛
回帖 发帖
正文

主题:请教,通讯出来的数据处理。两个16位数据怎样合并为一个32位数据

点击:3692 回复:16

附件 微信图片_20230204205713.jpg
附件 微信图片_20230204205747.jpg
附件 微信图片_20230204205822.jpg
如题,通讯的是位移传感器,测量的最长距离为12MM。通讯出来的当前值如果是10000的话表示1mm,如果用一个16位数据(当前测量值低16位),最多只能用到3.27mm。目前要作两个16位的整数处理,合并出一个32位整数,才能完全用到位移传感器的测量范围。 这样的数据如何作处理?请指教。谢谢
23-02-04 21:22
三菱PLC我的做法是先把读出来的数据转成位,然后再用位来合成,假设读出来的数据放在D10-D13,把D10传给K2M8,D11传给K2M0,然后再把K4M0传给D20。这样两个8位就拼成一个16位了。同样方法D12与D13最后合成D21。然后用32位指令时,D20与D21自然就在一起了。
23-02-04 22:00
嗯……通讯出来是两个16位数据。是不是要先转化为二进制数,再取反,最后加1,得出一个32位数据??
23-02-05 09:40

引用 黄昏放牛 在 2023/2/5 9:40:12 发言【内容省略】

不需要转换,你的PLC型号是?
23-02-05 20:16
信捷XD系列
23-02-05 20:47

引用 黄昏放牛 在 2023/2/5 20:47:58 发言【内容省略】

看你这个测量的设备应该是MODBUS协议的,信捷XD也支持MODBUS,手册上应该有对应写读取地址的,这样的话直接读取对应地址就好了。
23-02-06 07:38
是的,通讯已建立好了。数据都读取出来了,测量值的高16位在D1001,低16位在D1002.详看图2与图3(自由监控里截的图)。
23-02-06 09:36

引用 黄昏放牛 在 2023/2/6 9:36:35 发言【内容省略】

你这个就是高低位的问题,重新排列一下,假设最后放在D10里面,PLC32位占用的是D11 D10两个寄存器,
D10是低位,D11是高位,而读出来的D1001是高位,D1002是低位,刚好相反。
我以往的做法是,用16位指令传送一下,把D1001传给D11,D1002传给D10,
然后32位指令时用D10就可以了。
23-02-06 11:04
附件 微信截图_20230206110316.jpg
已解决。原来如此简单,只需要高低16位调换,再合并。
感谢  YXBK 版主  的热心回复。
23-02-06 11:04
哈哈……感谢。我刚做出来,你的回复就来了
23-02-06 11:21

上一页下一页

工控新闻

更多新闻资讯