您现在所在的是:

三菱Mitsubishi

回帖:7个,阅读:6316 [上一页] [1] [下一页]
1762
laolui
文章数:222
年度积分:50
历史总积分:1762
注册时间:2005/2/16
发站内信
发表于:2011/8/21 19:18:12
#0楼
我用一台国产的PLC,只有加减乘除的运算功能,没有浮点运算功能,现 与一台电力仪表通讯,得到的是用十进制表示的浮点数据,如A相电压是43760000用浮点数据转换软件换算出来是246V,怎样用PLC的加减乘除运算功能把实数计算出来呢??
43014
YXBK 版主
文章数:19755
年度积分:393
历史总积分:43014
注册时间:2007/4/14
发站内信
2015论坛优秀版主
2015春节活动
2013论坛优秀版主
2012论坛优秀版主
发表于:2011/8/21 21:43:26
#1楼
43760000,实际是多少,PLC的型号呢
大家一起学习
1762
laolui
文章数:222
年度积分:50
历史总积分:1762
注册时间:2005/2/16
发站内信
发表于:2011/8/22 0:30:57
#2楼
实际值是246.0000
85730
ZCMY 版主
文章数:47487
年度积分:249
历史总积分:85730
注册时间:2004/3/16
发站内信
2018论坛贡献奖
2018春节活动(三)
2017论坛优秀版主
2017国庆活动(三)
2016论坛优秀版主
2015论坛优秀版主
2014论坛优秀版主
2014相约国庆
2013论坛优秀版主
2012论坛优秀版主
2011论坛贡献奖
2010年论坛优秀版主
发表于:2011/8/22 8:39:57
#3楼
呵呵;PLC没有浮点运算就麻烦了;
19510
pqsh 版主
文章数:7447
年度积分:126
历史总积分:19510
注册时间:2006/8/22
发站内信
2018论坛解答高手
发表于:2011/8/22 9:51:02
#4楼
简单的话这样处理吧:
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位)的简单办法,适用于知道大致数值范围的情况.
如果我忘了我
请帮忙记得我
pqsh@163,326199298@v&q同号
11927
yk_wangyu
文章数:1391
年度积分:50
历史总积分:11927
注册时间:2005/8/24
发站内信
发表于:2011/8/22 10:57:56
#5楼
转这类浮点数值似乎挺麻烦,最好还是换个有浮点功能的PLC.
                 I believe i can fly
19383
PLC-hmi
文章数:7448
年度积分:101
历史总积分:19383
注册时间:2010/8/19
发站内信
2018论坛热心网友
发表于:2011/8/22 13:24:42
#6楼
现在好点的plc都可以处理浮点的,不如换个方便
匿名用户
文章数:N/A
年度积分:0
历史总积分:0
注册时间:2011/7/30
发站内信
发表于:2011/8/22 13:36:38
#7楼
该用户被锁定,回复内容不予显示!

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

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

78.0005