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

主题:。。紧急求援。。用普通PLC怎样实现浮点数,怎样转为实数

点击:6349 回复:7

我用一台国产的PLC,只有加减乘除的运算功能,没有浮点运算功能,现 与一台电力仪表通讯,得到的是用十进制表示的浮点数据,如A相电压是43760000用浮点数据转换软件换算出来是246V,怎样用PLC的加减乘除运算功能把实数计算出来呢??
11-08-21 19:18
43760000,实际是多少,PLC的型号呢
11-08-21 21:43
实际值是246.0000
11-08-22 00:30
呵呵;PLC没有浮点运算就麻烦了;
11-08-22 08:39
简单的话这样处理吧:
1.不管符号(32位的最高位),小于0.0的就认为是0.
方法:a.如果有移位运算,左移一位,移出位如果是1(或判断大于0),那就是负数,按0处理.
b.如果没有移位算符,那就把这个数(或者这个数的高16位),除以80000000h(十六进制0x,或十六位32768),如果结果大于0(=1),就是负数.除以2是和移位一样的.
你的例子:4376-0000,除以8000-0000(或者高十六位4376除以8000即32768),结果是0,是正数.
但负数的情况也要考虑,因为不考虑负数,可能会误认为是很大的正数.
2.取符号位(最高位)紧接的8位,减去127,大于0的话,留用(记着E,指数的意思).当然这个数要小于0,就认为是小数,也把整个数按0考虑.
至于怎么取这8位,按以上移位或乘除2的几次方的办法.下同.
你的例子:4376-0000(0100-0011-0111-0110-后面16个0),是134(100-0011-0),减去127=7.
3.再把接着的23位里,取E位,在前面再填个二进制1.就是你要的整数了.
你的例子:E=7,取后续7位是111-0110,再前面添个1是1111-0110.这个数就是246了.
前面怎么添1,可以用加法,也可以用"或"算法.
以上是浮点(32位)转整数(16位)的简单办法,适用于知道大致数值范围的情况.
11-08-22 09:51
转这类浮点数值似乎挺麻烦,最好还是换个有浮点功能的PLC.
11-08-22 10:57
现在好点的plc都可以处理浮点的,不如换个方便
11-08-22 13:24
7楼
该帖内容不符合相关规定!
11-08-22 13:36

工控新闻

更多新闻资讯