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

主题:如何转换台达PLC通过RS通讯读取数据的高低位?

点击:7086 回复:4

前两天来的一台计量泵数字控制器,因为没有485的通讯线,一直扔在那里没搞。
昨天公司买来的线,然后说星期一客户来试机。我了个大去!
今天搞了一天了,终于能把数据读上来了。但是这个数字控制器发送的数据是高位在前的。
比如说有个数据“总量”,表示的是水泵排水的总水量。这是一个占4个字节的参数。
读上来以后,存在两个D寄存器里,D14和D15。
我在串口助手上检测到的数据是16#0000 000A,转成10#是10,表示0.1L的水。
在PLC中D14中16#0000 ,D15中16#0A00。如果直接用的话,32位D14中16#应是0A00 0000,这个里面的低8位和高8位都是反的。我记得好像是乘以一个数,能够改变高低位,但是我今天的脑子不够用了,来求助各位。
明天要加班了,头昏脑涨中。
最后修改:2019/4/13 16:02:19
19-04-13 15:59
两个字交换指令XCH:
附件 Snap1.jpg
一个字高低字节交换指令:
附件 Snap2.jpg
Good Luck~
19-04-13 16:43
高低字节互换指令我试过了。这个指令换完了高低位以后还是保存在原来的寄存器里。下次读取参数写入PLC的时候会覆盖掉。造成上位机的数据来回跳。看来还得研究一下时序,把转换的时机把握好,转换完了接着传走……
头疼,昨天晚上没睡好,现在好想死……
19-04-13 17:06

引用 ddt250 在 2019/4/13 17:06:57 发言【内容省略】

第一步:D14,D15使用XCH指令,此时D14中的数据是0A00  D15的数据是0000
第二步:D14采用SWAP指令,数据就是000A了。
要保留数据,避免被覆盖,那么MOV指令存放就完了。
Good Luck~
19-04-13 17:13
附件 1.jpg
附件 2.jpg
附件 3.jpg
附件 4.jpg
串口助手检测的发送数据6F 03 21 00 00 14 47 77
检测到的接受数据6F 03 00 14 00 00 00 00 00 00 00 0A 00 0C 35 00 00 00 00 64 00 00 0F A0 E0 8E
还是无法转换
最后修改:2019/4/14 8:58:45
19-04-14 08:46

工控新闻

更多新闻资讯