| 作者 | 主题 |
|---|---|
|
沉默是金 游士 经验值:258 发帖数:155 精华帖:5 |
楼主
主题:流量累积例子
我用FB做的带数据块的流量累积功能块。采样累积在毫秒单位内ms_v,满一秒转入是s_v,同时将ms、ms_v清零,满一分钟累积量转入m_v,t同时将s、s_v清零,满一一小时累积量转入h_v,同时将min、m_v清零。这样大概可以持续累积20小时,如果不能满足长时间累计,可以将24小时的累积值(实际单位)累积入天,清空小时量。每一时刻的累积量是ms_v+s_v+m_v+h_v。Rest为零累积量清零。
在OB35中调用即可,如OB35中断周期为100ms,流量输入单位方/H,Unilt_c就是36000,Hz就为10,unilt_v对应流量记满量程值。 In pv word 瞬时流量 In Unit_c Real 瞬时流量单位转换为采样时间流量单位 In Rest int 为零时,累加器清零 In Hz int 每秒采样次数 In unilt_v Real 流量计最大流量单位 Out ov Real 流量累积输出 In_out ms int 毫秒记数 In_out s int 秒记数 In_out min int 分钟记数 In_out h int 小时记数 In_out ms_v dint 毫秒流量累积 In_out s_v dint 秒流量累积 In_out m_v dint 分钟流量累积 In_out h_v dint 小时流量累积 In_out in_v dint 将输入瞬时流量变为长整型 流量累积功能块 毫秒流量累积 L #PV T #iv_c L #iv_c L #ms_v +D T #ms_v L #ms L 1 +I T #ms L #Hz JC ol 秒流量累积 L #ms_v L #s_v +D T #s_v L #s L 1 +I T #s L 0 T #ms T #ms_v L #s L 60 JC ol 分钟流量累积 L #m_v L #s_v +D T #m_v L #min L 1 +I T #min L 0 T #s T #s_v L #min L 60 JC ol 小时流量 L #h_v L #m_v +D T #h_v L #h L 1 +I T #h L 0 T #min T #m_v 清零 ol: L #Rest L 0 <>I JC end L 0 L 0 T #ms T #s T #min T #h T #ms_v T #s_v T #m_v T #h_v 累积量 end: L #ms_v L #s_v +D L #m_v +D L #h_v +D DTR L #Unit_c /R L #unilt_v *R L 2.764800e+004 /R T #ov 不足之处,尚请指出。
糊口饭吃
|
|
shine 至圣 经验值:19820 发帖数:8803 精华帖:39 |
楼
主题:回复:流量累积例子
OB35是中断程序,有可能在程序的任何时候执行。如果没有考虑这点,在OB35中取到的数据可能是中间数据,这样就会出错。
举个例子: OB1 L PIW256 T MW0 ITD T MD4 L MD4 DTR T MD4 OB35: L MD4 L MD20 +R T MD20 如果习惯于STL编程,当然不会写出上面那样的程序,但如果用的是LAD,就会可能会出现这种情况。 |