多谢,我程序: E( f! x# g: P* G3 |. [7 X0 W7 Q
Methode1 Trigger调用 Trigger定义1小时出发一次2 u& N: r; r+ j3 r" D
(old, new : boolean )) m9 a$ k a W! Q- B
is
) K+ U' z3 b% G" p) Q( Z- W2 e do
1 H5 g' v" x5 o" r( V' @6 T if new = true then 8 e9 K% q0 N; d5 {/ n
Tabelle1[1,1]:= time_to_num(y)/3600;
/ I T- Q# I9 \6 {- G% N m:= 0;
: B$ v# ~& X. |; e0 _ n:=0; X3 g1 Q; ~& I d# k* D: b+ E
y:=0;. |) p, k: g" M; e2 T
end;9 a5 k w) I4 z/ q- @. A
end;
+ v8 g( f: x$ p8 E+ V, C9 Emethode2 Singleproc 输入控制调用
- I* f1 f/ q: U+ x N7 Zis
8 F4 B0 K" ^( d7 _: r' |do% P4 ]0 ]. t3 g6 A
n:=Ereignisverwalter.zeit;/ P# s: w/ d* x
end;6 I( }( O+ d. N# L5 H* {! p
methode3 singleproc输出控制调用7 L+ Y5 \- t( ] |8 ]
is9 |) g. {2 M9 a! M; c# T' o
do" k& ~! Y' o: m# z" M4 E6 T
m:= Ereignisverwalter.zeit;
, ~3 Z" M" T. |7 B if m/=0 then
( j/ i8 N( R5 I: l% B7 `' ^ y:=y+(m-n);
8 u3 b. {$ s* N$ a7 l# E8 z) u% U/ s end;, k% n" K4 o2 w
: t$ g8 [1 i* D) b" M7 J0 H* Fend;0 K4 `" b. D( c! \# A; N$ D
m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,1 q4 i/ [( w4 G" N4 f; l- D; I0 ]
m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。2 y8 G1 X+ g3 P8 U5 w
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。
- D" Y( A9 ~5 ] \! W请问如何解决这个问题 |