多谢,我程序3 F. }! Y6 z" s. N, h
Methode1 Trigger调用 Trigger定义1小时出发一次1 o, F1 ^. _% V4 }
(old, new : boolean )
# f4 Q: j1 ]: z& @# ?( O7 K3 _& u! |is
% y" n- l! \! D0 V# l' C3 C do( w1 \* G' A( C' O
if new = true then
( L: D/ S9 S+ y Tabelle1[1,1]:= time_to_num(y)/3600;
% v* F5 K8 L, l: S% C m:= 0;
z" P4 u& J5 m ]* x8 a+ k n:=0;9 |9 `7 B5 w9 [% A$ H# @
y:=0;/ E( a( f {9 b: W* b" b
end;9 P- \6 z9 n# m g$ t" W+ q+ h
end; $ u2 e9 e6 ] h7 c5 t: j
methode2 Singleproc 输入控制调用& b1 X& `: K( [/ T z( v: N
is
4 ^' ~6 q! @2 U, b* ddo. D5 F4 {, U; J
n:=Ereignisverwalter.zeit; e2 j6 T* s5 d, c
end;
$ {; Z8 i6 q( A j6 {* } A( ymethode3 singleproc输出控制调用& W; x+ h8 k$ Z" u) `) h
is
2 Z' @$ r8 |/ ^: \; @. @ \do* [$ b' C2 u9 v6 \% j3 b
m:= Ereignisverwalter.zeit;/ J$ D! _7 C: F3 H: ?& m
if m/=0 then
) K5 O8 p) d1 n `& S y:=y+(m-n);
/ @" w$ L+ m) q- |2 O4 Z* a2 _ end;( I+ l- r. w! r' z9 o
: V$ i$ B5 a a3 ^6 ?0 Cend;
) r% I1 b! Z% Q# c6 s/ d7 q9 j, n0 L- Km为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,+ A' A. v2 H0 G5 t7 H+ L
m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。6 \5 j9 M6 D5 {; N& Q8 E
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。
9 n. Q" G# p" `/ o4 B: ]( |请问如何解决这个问题 |