电工技术基础_电工基础知识_电工之家-电工学习网

欢迎来到电工学习网!

S7-200计秒时钟脉冲的个数,累计到9321小时为啥就不再累计了?

2017-09-15 22:31分类:PLC基础知识 阅读:

  请教个疑问:S7-200程序中,我用一个sm0.5(1秒时钟脉冲)的脉冲上升沿对VD1000进行浮点数加1.0循环累积,然后再对VD1000除以3600.0,即可得出设备作业的小时数时刻。如今的疑问是当设备作业时刻累积到9321时就不再累积了,程序中发现VD1000的数据不再增加了。3600*9321=33555600,浮点数方案为+1.175495E-38至+3.402823E+38,阐明没有逾越此方案,这是啥要素呢?
当对VD1000加100.0循环累积时,VD1000的数据又会增加了!
答:这个疑问能够给出准确的数学阐明。
浮点数的精度与它的尾数有关,其尾数为二进制小数1.m,m为23位的小数。所以浮点数的精度为24位二进制有用位数。2的24次方为16777216。
楼主用浮点数能计的最大的数是3600*9321=33555600,该数除以2为16777800,与2的24次方16777216十分挨近。在33555600邻近加1.0加不上去,不是由于浮点数不能标明更大的数,而是在做加法的时分,两个数的指数应当一样,1.0和33555600.0比照太小了,比33555600.0的尾数最低位(也是浮点数的最低位)的值的一半还小,所以相加的时分1.0的值被四舍五入疏忽掉了,往后的累加值都不会增大。
处理的办法:
改为双整数的加法,双整数的有用位数为32位,计小时数够用了。

上一篇:西门子S7-200PLC通讯连不上疑问处理办法

下一篇:WinCC Flexible 2008 SP4创立的项目怎样移植到博途软件中

相关推荐

电工推荐

    电工技术基础_电工基础知识_电工之家-电工学习网
返回顶部