您现在所在的是:

PLC论坛

回帖:4个,阅读:6682 [上一页] [1] [下一页]
4551
ddt250
文章数:892
年度积分:536
历史总积分:4551
注册时间:2016/12/26
发站内信
发表于:2019/4/13 15:59:40
#0楼
前两天来的一台计量泵数字控制器,因为没有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编辑过]
37246
cvlsam 版主
文章数:12401
年度积分:1598
历史总积分:37246
注册时间:2001/12/22
发站内信
2018论坛贡献奖
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011论坛贡献奖
2011国庆活动
2010论坛杰出贡献奖
发表于:2019/4/13 16:43:40
#1楼
两个字交换指令XCH:
附件 Snap1.jpg
一个字高低字节交换指令:



附件 Snap2.jpg

Good Luck~
4551
ddt250
文章数:892
年度积分:536
历史总积分:4551
注册时间:2016/12/26
发站内信
发表于:2019/4/13 17:06:57
#2楼
回复 #1楼 cvlsam
高低字节互换指令我试过了。这个指令换完了高低位以后还是保存在原来的寄存器里。下次读取参数写入PLC的时候会覆盖掉。造成上位机的数据来回跳。看来还得研究一下时序,把转换的时机把握好,转换完了接着传走……

头疼,昨天晚上没睡好,现在好想死……
37246
cvlsam 版主
文章数:12401
年度积分:1598
历史总积分:37246
注册时间:2001/12/22
发站内信
2018论坛贡献奖
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011论坛贡献奖
2011国庆活动
2010论坛杰出贡献奖
发表于:2019/4/13 17:13:16
#3楼
以下是引用ddt2502019/4/13 17:06:57的发言:
高低字节互换指令我试过了。这个指令换完了高低位以后还是保存在原来的寄存器里。下次读取参数写入PLC的时候会覆盖掉。造成上位机的数据来回跳。看来还得研究一下时序,把转换的时机把握好,转换完了接着传走……

头疼,昨天晚上没睡好,现在好想死……

第一步:D14,D15使用XCH指令,此时D14中的数据是0A00  D15的数据是0000
第二步:D14采用SWAP指令,数据就是000A了。
要保留数据,避免被覆盖,那么MOV指令存放就完了。

Good Luck~
4551
ddt250
文章数:892
年度积分:536
历史总积分:4551
注册时间:2016/12/26
发站内信
发表于:2019/4/14 8:46:42
#4楼
附件 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编辑过]

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

46.8003