1、初始化一个为 0 的浮点型变量,做为累加的初始值,这个就是我们的流量累加器;
2、可以使用定时中断,S7-200 smart定时中断可以通过 SMB34/SMB35实现。在定时中断程序里采样横河电磁流量计模拟量信号,即或得到瞬时流量;
3、将采集到的瞬时流量除以时间单位的个数;
这个时间单位可以想办法做成 1S,比如将 SMB34 设为 250MS,每中断一次给中断次数加1,当加到4的整数倍时做这一步工作,得到一个这一时间单位中的流量值。将这个值与累加值相加。
4、在定时中断程序里如果用浮点数做流量累加,要注意当累加值与流量计采样值相差很大的时候会产生累加错误。因为浮点数相加的时候按照指数对齐,这时小数点后只保留小数点 6 位,当 2 个浮点数相差很大时,相加后的数据就会出现不能累加的情况。
这时可以这么想,在中断程序中判断当累积值每加到 1 万时,将 1 万做为一个计数单位,将其个数累计在其它的 VD 区;然后清空累加器的值,再重新累计。
2、可以使用定时中断,S7-200 smart定时中断可以通过 SMB34/SMB35实现。在定时中断程序里采样横河电磁流量计模拟量信号,即或得到瞬时流量;
3、将采集到的瞬时流量除以时间单位的个数;
这个时间单位可以想办法做成 1S,比如将 SMB34 设为 250MS,每中断一次给中断次数加1,当加到4的整数倍时做这一步工作,得到一个这一时间单位中的流量值。将这个值与累加值相加。
4、在定时中断程序里如果用浮点数做流量累加,要注意当累加值与流量计采样值相差很大的时候会产生累加错误。因为浮点数相加的时候按照指数对齐,这时小数点后只保留小数点 6 位,当 2 个浮点数相差很大时,相加后的数据就会出现不能累加的情况。
这时可以这么想,在中断程序中判断当累积值每加到 1 万时,将 1 万做为一个计数单位,将其个数累计在其它的 VD 区;然后清空累加器的值,再重新累计。