多谢,我程序. O7 B" S( J7 }4 N# C# S
Methode1 Trigger调用 Trigger定义1小时出发一次' u! a7 E2 d: o
(old, new : boolean )
& W8 J% |, M& Z5 @; u- V( Cis) N, x$ u7 j/ }; h0 v8 u
do
: B5 f9 N8 Y. _- A$ v* o1 \# F7 ] if new = true then ! j. y% j$ A' L4 ?* @
Tabelle1[1,1]:= time_to_num(y)/3600;( ^; f+ g" o Z. w, T4 w) J- Q3 |) u
m:= 0; Z1 I. U. ]& F0 E
n:=0;* e" ]# _- y) u, d; y
y:=0;
8 C0 t1 J3 B/ T# y b+ K end;5 r9 u1 a( i% o
end;
. Q4 S% A A" E5 J" R) a) `# t* a" fmethode2 Singleproc 输入控制调用
. j! ]5 j( v0 h, T- Uis, S% d, `/ [# i
do
5 w& n6 v5 n; h# G# ]* [0 } n:=Ereignisverwalter.zeit;
# W' G& `) a9 a" k' ~. M8 Rend;
- X4 `1 i1 \: M4 n( omethode3 singleproc输出控制调用+ R( z4 c8 p0 u' ?
is/ F+ U$ u ^: |& T
do
R8 j8 }2 U! @$ Y5 R% N m:= Ereignisverwalter.zeit;5 t, M J f( M. l' g( K3 A+ d1 a* h
if m/=0 then : _; }, `" U- l
y:=y+(m-n);; m }3 `' W0 ?6 I; U: C, g3 o# {2 V
end;
- Q }; P, _; B3 R# e. l ' R. ~: F; Q6 k1 O
end;& q" _7 ~% C; w' l: _; i4 x e
m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,* h. N0 N, e+ R* B { _
m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。* }' a" H+ k( `* a4 m; S! V
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。/ b1 [) W# G8 t0 e7 r) L( t; N
请问如何解决这个问题 |