登录
首页
PLC论坛
台达PLC
回帖
发帖
正文
主题:【话题】求大神指点,台达PLC16进制数转浮点数不对!(20201217)
点击:4329 回复:19
楼主
编辑
引用
管理
ynylwwz
求大神指点,我的台达PLC的寄存器D156是读取仪表内部数据得到的ASCll码转换成16进制得到的数据,我想把这个16进制数缩小10倍,我用FLT和DFLT指令来转浮点数后出来了的数据都不是我想要数据,求大神帮忙;谢谢!
最后修改:
2020/12/18 9:00:52
20-12-16 15:59
1楼
编辑
引用
管理
YXBK
你想要的数据是什么?
H2553十进制是9555,你看看D164的十进制是不是955.5。
20-12-16 16:39
2楼
编辑
引用
管理
蜀中之首
看到你最后的除法指令用到K10,是不是错了
首先声明三菱用的少
20-12-16 16:58
3楼
编辑
引用
管理
ynylwwz
是的,但是我想要的是D160里面的数值也是2553,请问这样处理
20-12-16 17:01
4楼
编辑
引用
管理
ynylwwz
D156是16进制的H2553,仪表显示的数值255.3
20-12-16 17:05
5楼
编辑
引用
管理
蜀中之首
首先要确定,仪表读的数D156=2553,是16进制还是10进制
如果是16进,那么程序没错H2553浮点后是H46154C00,F9555.000 在你提供的表上有显示
如果是10进,就要先转成bin,在浮点,再除K10,就可以得到你需要的F255.3000
我认为仪表上显示的255.3是10进制
你是不是要在组态或触摸屏显示?
如果这样没必要在PLC里做这个工作,直接在屏的软件上做
前边说到K10,是因为不熟悉台达,包括三菱,对浮点运算要不要注意进制。
欧姆龙的必须注意进制,而且必须先将常数转成浮点。
20-12-16 20:14
6楼
编辑
引用
管理
YXBK
引用
ynylwwz
在 2020/12/16 17:05:21 发言
【内容省略】
我的感觉你这个仪表应该是无协议通讯的,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。
20-12-17 07:42
7楼
编辑
引用
管理
蜀中之首
“也就是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
这个显示是不是很像楼主提供的
用欧姆龙软件模拟,2553得9555.000
2553bin后为09F9,再FLT得2553.000
按10进运算
按16进运算,注意D64内容=446EE000
所以我认为这个2553是BCD
20-12-17 10:16
8楼
编辑
引用
管理
ynylwwz
非常感谢你的帮助,我按照你的方法试了,果然成功了!
20-12-17 11:41
9楼
编辑
引用
管理
ynylwwz
谢谢你的帮助,按照你的方法试了,PLC读取回来的数据还是ASCLL码,一样需要转换的,不能直接乘!
20-12-17 11:44
上一页
下一页
工控新闻
人形机器人进军职场,福兮祸兮?
SICK亮相德国SPS自动化展,与客户携手共创价值
Arm Tech Symposia 年度技术大会顺利收官,继续构建面向未来的 AI 计算平台
西克 | Ranger3高速彩色3D相机——Ranger3-80
罗克韦尔自动化发布年度《智能制造现状报告:生命科学版》
坚固可靠新选择,ABB推出Modular Way系列金属按钮指示装置
BIS-6690P-B10:适用于高效处理和泛在连接的桌面型工控机
全球视野 算领未来,施耐德电气助力数据中心把握智算机遇
更多新闻资讯