您现在所在的是:

台达论坛

回帖:19个,阅读:4327 [上一页] [1] [2] [下一页]
555
ynylwwz
文章数:57
年度积分:50
历史总积分:555
品牌积分(台达):13
注册时间:2018/5/25
发站内信
发表于:2020/12/16 15:59:08
#0楼
求大神指点,我的台达PLC的寄存器D156是读取仪表内部数据得到的ASCll码转换成16进制得到的数据,我想把这个16进制数缩小10倍,我用FLT和DFLT指令来转浮点数后出来了的数据都不是我想要数据,求大神帮忙;谢谢!
附件 11.jpg

附件 22.jpg
[此贴子已经被jint于2020/12/18 9:00:52编辑过]
42315
YXBK 版主
文章数:19441
年度积分:2729
历史总积分:42315
品牌积分(台达):205
注册时间:2007/4/14
发站内信
2015论坛优秀版主
2015春节活动
2013论坛优秀版主
2012论坛优秀版主
发表于:2020/12/16 16:39:17
#1楼
你想要的数据是什么?

H2553十进制是9555,你看看D164的十进制是不是955.5。
大家一起学习
7968
蜀中之首
文章数:5230
年度积分:50
历史总积分:7968
品牌积分(台达):76
注册时间:2018/5/27
发站内信
发表于:2020/12/16 16:58:45
#2楼
看到你最后的除法指令用到K10,是不是错了
首先声明三菱用的少
555
ynylwwz
文章数:57
年度积分:50
历史总积分:555
品牌积分(台达):13
注册时间:2018/5/25
发站内信
发表于:2020/12/16 17:01:52
#3楼
回复 #1楼 YXBK
是的,但是我想要的是D160里面的数值也是2553,请问这样处理
555
ynylwwz
文章数:57
年度积分:50
历史总积分:555
品牌积分(台达):13
注册时间:2018/5/25
发站内信
发表于:2020/12/16 17:05:21
#4楼
回复 #1楼 YXBK
D156是16进制的H2553,仪表显示的数值255.3
7968
蜀中之首
文章数:5230
年度积分:50
历史总积分:7968
品牌积分(台达):76
注册时间:2018/5/27
发站内信
发表于:2020/12/16 20:14:58
#5楼
首先要确定,仪表读的数D156=2553,是16进制还是10进制
如果是16进,那么程序没错H2553浮点后是H46154C00,F9555.000 在你提供的表上有显示
如果是10进,就要先转成bin,在浮点,再除K10,就可以得到你需要的F255.3000

我认为仪表上显示的255.3是10进制

你是不是要在组态或触摸屏显示?
如果这样没必要在PLC里做这个工作,直接在屏的软件上做

前边说到K10,是因为不熟悉台达,包括三菱,对浮点运算要不要注意进制。
欧姆龙的必须注意进制,而且必须先将常数转成浮点。
42315
YXBK 版主
文章数:19441
年度积分:2729
历史总积分:42315
品牌积分(台达):205
注册时间:2007/4/14
发站内信
2015论坛优秀版主
2015春节活动
2013论坛优秀版主
2012论坛优秀版主
发表于:2020/12/17 7:42:38
#6楼
以下是引用ynylwwz2020/12/16 17:05:21的发言:
D156是16进制的H2553,仪表显示的数值255.3


我的感觉你这个仪表应该是无协议通讯的,PLC用了RS指令,如果是这样的话PLC读回来的数据应该用HEX指令把ASCII码转成HEX并且M1161=On,M1161=On表示是8位模式,然后再进行计算。

比如仪表上的显示是255.3,PLC读取出来的ASCII码是 2 5 5 . 3,占用了5个寄存器,假设是D11-D15

用HEX指令转换后变成十六进制的 2 5 5 3,假设是D21-D24 ,“.”不用转换

然后再相乘相加,就是用D21*1000+D22*100+D23*10+D24

也就是2*1000+5*100+5*10+3=2553,再把2553转成浮点,再除以10就等于255.3。
+5
大家一起学习
7968
蜀中之首
文章数:5230
年度积分:50
历史总积分:7968
品牌积分(台达):76
注册时间:2018/5/27
发站内信
发表于:2020/12/17 10:16:16
#7楼
回复 #6楼 YXBK
“也就是2*1000+5*100+5*10+3=2553,再把2553转成浮点,再除以10就等于255.3。”

台达软件未能模拟
这个2553FLT后可能得到的还是9555.000
(参见楼主提供的图片中,D156,D160,D164=446EE000)

用三菱软件模拟过,将2553选为10进得2553.000
选16进得9555.000

附件 image.jpg
附件 image.jpg
附件 image.jpg
这个显示是不是很像楼主提供的

用欧姆龙软件模拟,2553得9555.000
2553bin后为09F9,再FLT得2553.000

附件 image.jpg
按10进运算

附件 image.jpg
按16进运算,注意D64内容=446EE000

所以我认为这个2553是BCD
+15
555
ynylwwz
文章数:57
年度积分:50
历史总积分:555
品牌积分(台达):13
注册时间:2018/5/25
发站内信
发表于:2020/12/17 11:41:19
#8楼
回复 #7楼 蜀中之首
非常感谢你的帮助,我按照你的方法试了,果然成功了!表情表情
555
ynylwwz
文章数:57
年度积分:50
历史总积分:555
品牌积分(台达):13
注册时间:2018/5/25
发站内信
发表于:2020/12/17 11:44:11
#9楼
回复 #6楼 YXBK
谢谢你的帮助,按照你的方法试了,PLC读取回来的数据还是ASCLL码,一样需要转换的,不能直接乘!表情

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

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

62.4004