多谢,我程序9 A0 p& f9 H1 A P) n" O6 D+ G3 R
Methode1 Trigger调用 Trigger定义1小时出发一次
4 N/ k" Q5 T8 N- T(old, new : boolean )
$ v4 n1 Y4 X/ l! Q4 }' ^is# q8 Q& t' x$ }: r: L
do0 N( [. T* A, E+ @6 K' [* Q/ L p
if new = true then - g2 u+ q" ?6 S
Tabelle1[1,1]:= time_to_num(y)/3600;8 L+ t/ _- B! b3 L0 R8 |
m:= 0;
5 P" E: n% {. B- V. z1 n n:=0;
8 V+ Z, k2 M: W! J+ }6 ]: v& `) } y:=0;
~( B) r% p. E end;
+ r/ e* Z2 l2 o end;
0 A& o5 f7 Q. C6 c+ _methode2 Singleproc 输入控制调用: h& L$ i- Z3 Y% X, Z5 i6 J; y: S
is
$ R9 O/ w3 |( A odo
: H- ~4 A" ~4 b9 z! b: x. J n:=Ereignisverwalter.zeit;: w( z* z, a, K
end;7 Q3 W0 H% j; s, v3 d( K
methode3 singleproc输出控制调用
2 H- X, J' N* m. G8 |* G- p6 Z Ois
$ c8 }7 B( w$ D6 Q, h( D8 Edo7 e+ w/ j+ q$ A1 O* M
m:= Ereignisverwalter.zeit;4 P5 n ?" l. W/ k
if m/=0 then & Y3 b7 v+ j6 T# `6 k# p
y:=y+(m-n);
* X: S# h4 b: ~6 U end;- o% Z: L' a1 N+ [: ^1 O/ I
% \8 c8 v! u2 Q" H9 U
end;
( F5 J* S7 y& A. T* y; j! W6 A! @m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,
- G0 v. u5 V# e8 i' pm-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。+ l8 d" E b5 S
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。
5 c5 p9 x* M A i0 y请问如何解决这个问题 |