恭喜,你发布的帖子
发布于 2020-05-25 13:04:59
5楼
这是浮点数本身的问题。300中的浮点数是单精度浮点数,有效位数也就十进制的7位,如果两个数相差大于10e7倍,再相加的时候,你会发现结果和大数一样,相加并没有效果。
如果你用1200/1500,可以用LREAL做累积,在没有LREAL类型的PLC中,只能自己做进位了
比如你定义三个dint,分别是total,total_10e4,total_10e8,分别代表不同的数量级,total_10e4代表以万为单位,total_10e8代表以亿为单位,ana表示当前模拟量值,用下面的算法来做
total = total + ana
if total > 10000 then
total = total - 10000
total_10e4 = total_10e4 + 1
if total_10e4 > 10000 then
total_10e4 = total_10e4 - 10000
total_10e8 = total_10e8 + 1
然后再把这三个数转换成real乘上相应的数量级后相加输出
请填写推广理由:
分享
只看
楼主