您现在所在的是:

台达论坛

回帖:14个,阅读:4275 [上一页] [1] [2] [下一页]
8391
fujifa
文章数:2943
年度积分:77
历史总积分:8391
品牌积分(台达):2
注册时间:2014/2/10
发站内信
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
发表于:2015/11/11 15:23:24
#10楼
以下是引用3054567792015/11/11 11:35:06的发言:
 4     0     E    C    C    C    C    D
0100   0000  1110 1100 1100 1100 1100 1101
我现在找到的规律就是把40EC的最高1位去掉,然后变成100 0000 111=7*1=7,这是整数位数,小数位数比较麻烦0 1100=0.03125*12=0.375,CCCD是小数的后面数据,忽略。
现在就是把高位那位去掉,不知道怎么去!!!

最高位31位那是符号位,0代表正数
然后100 0000 1 (23~30位)为整数部分,他代表的是一个偏移量,转换为10进制就是129,减去127就是2.

110 1100 1100 1100 1101 代表小数位:
从左到右分别是2的-1次方.....2的-23次方,现在就是0.5+0.25+0.0625+....

然后将上面的小数部分+1.0,就得到了1.8125(当然不够准确,因为后面我没有算下去)
然后将1.8125去乘以上面算下来的偏移量,2的2次方就是4.


算法就是:
首先通过与操作,将23~30位的数据取出,然后右移23位,减去127,结果保留备用。

然后通过与操作指令,将0~22位的数据取出。

使用循环指令,计算小数部分的和

将小数部分+1.0构成最终的值,然后乘以2的偏差值次方(偏差就是上面第一步算出的)

最后使用与指令来提取符号位,判断正负,如果是负的,将上面算的乘以-1.0就可以了。

如果使用ST语言编程的话,大概在20行左右的程序。
精通富士POD,富士PLC的编程
有问题可以直接电邮:FUJIFA@yeah.net
24574
mjinbao
文章数:13934
年度积分:50
历史总积分:24574
品牌积分(台达):26
注册时间:2013/1/12
发站内信
2018春节活动(三)
2017春节活动(三)
2016国庆活动(三)
发表于:2015/11/14 13:40:53
#11楼
看到说“40ECCCCD”,以为是已经合成了呢;
看了一下台达PLC手册,DTM指令可实现两个8位数据合成为一个16位数据。
2851
305456779
文章数:624
年度积分:50
历史总积分:2851
品牌积分(台达):0
注册时间:2012/2/29
发站内信
发表于:2015/11/17 9:09:41
#12楼
回复 #10楼 fujifa
最近比较忙,请看下我现在写的,只适用于台达的!
2851
305456779
文章数:624
年度积分:50
历史总积分:2851
品牌积分(台达):0
注册时间:2012/2/29
发站内信
发表于:2015/11/17 9:10:39
#13楼
附件 1.jpg
附件 2.jpg
附件 3.jpg
附件 4.jpg
2851
305456779
文章数:624
年度积分:50
历史总积分:2851
品牌积分(台达):0
注册时间:2012/2/29
发站内信
发表于:2015/11/17 9:11:43
#14楼
还有地方可以优化的,只是时间赶没再优化,写到哪算哪

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

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

62.4004