多谢,我程序/ s7 w+ Q! H1 q" B H
Methode1 Trigger调用 Trigger定义1小时出发一次
' _+ |; l# z% I+ T! q2 M(old, new : boolean )
% t3 M3 ]% k" ~is
9 @2 I; Y9 Q- ~ W do, r+ z _3 j, |0 K1 G
if new = true then 0 d t5 z) s8 Z5 x }
Tabelle1[1,1]:= time_to_num(y)/3600;& L: y& J' d' Q
m:= 0;
, J+ I0 F! K% k7 d. r n:=0;
! `5 k: ]5 Z/ v! a! m; { y:=0;
5 D$ A, {1 w9 a& Q; o, g1 X9 [ end;
7 s1 x2 L( F9 @, [ end; 1 V# {8 J9 C, h! k' t% y) o. H1 M( r% q
methode2 Singleproc 输入控制调用
O! Y7 l7 Y- l! S# x1 nis& A0 H9 J- u, S9 p) u5 B( ]
do8 |: Y7 c, X& X* U, x8 U
n:=Ereignisverwalter.zeit;0 G' i2 N3 t9 S1 n5 e$ a$ A
end;
4 \& U1 S" h: K! Fmethode3 singleproc输出控制调用
: n! A) s9 B: g5 i; g# ais
1 j( G# H5 t: K9 Fdo
$ R5 H8 b' B* W# P1 q0 k m:= Ereignisverwalter.zeit;7 ~- w# D0 g5 ^% s+ G
if m/=0 then 8 c: p; H% ]0 n6 P6 s
y:=y+(m-n);/ c, B& J) f9 X4 P D7 \
end;4 d4 x6 z( v. P# ^) v+ l" r* |
W/ k. i! ^: l( q9 v0 @% |* Zend;2 F' f$ e% m$ q9 m$ q- ~: r: F C U
m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,
) [6 t. j5 X6 X" Hm-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。
0 K/ o8 H0 g6 X& e可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。
, W* R( C+ H7 K请问如何解决这个问题 |