自动化网-工控人家园官网

当前位置: 主页 > 工控品牌 > 西门子 >

S7-200系列计秒时钟脉冲的个数,累计到9321小时为

时间:2015-12-11 11:12来源:未知 作者:admin 点击:
S7-200计秒时钟脉冲的个数,累计到9321小时为什么就不再累计了?西门子S7-300PID赋值软件中的(内部)与(IO)的区别
 请教个问题: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-300PID赋值软件中的(内部)与(IO)的区别

内部 就是自己将外部的模拟量等信号转换成实际物理量后,直接传送到PV_IN 里面,PID功能块再将PV_IN 传送给PV作为PID功能块计算的过程值。
 
使用外部 IO ,就需要将PV_PERON 置为1 这样PID 功能块根据 PV_PER(比如模拟量通道读取的PIW 值)以及 CRP_IN ,PV_FAC , PV_OFF 根据公式  PV_NORM = (output of CPR_IN) * PV_FAC + PV_OFF 算出的值传送给PV。
 
区别就是 使用内部值,需要自己将外部的模拟量转换成实际物理量,使用外部就有PID 内部集成的线性化程序来执行这一过程。
具体 可以参见PID 功能块图

(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容