多谢,我程序
' _, b' r# |8 U) r' rMethode1 Trigger调用 Trigger定义1小时出发一次# h+ J$ v2 h3 G& y0 a% D; z
(old, new : boolean )
) y, X1 o/ u" J' K4 f% ?. His
& o) Z& Q* i, b# z" _$ V R$ a& F do
6 G, u0 V- ~3 j& [! }" s8 G if new = true then
: `8 w; p/ D: b* E; t8 H Tabelle1[1,1]:= time_to_num(y)/3600;* `1 h: B# P* A/ }
m:= 0;
2 S. L5 ^3 E8 O7 T5 m n:=0;
2 C6 _( Q3 m& \0 g( v& W$ C" r y:=0;6 f% Q! G; p; b( S$ U* P1 @! t
end;
0 a2 x6 n+ f0 \% J5 J end;
% v* C* \/ |% U) t) _8 {methode2 Singleproc 输入控制调用
5 Y8 {! z2 p; e$ j* F3 His) a( x& P7 v4 x7 M
do/ y& J' c2 h1 L& ]2 f, X8 e, a
n:=Ereignisverwalter.zeit;
; B: H4 _- A% N; ~2 _ l5 v lend;3 m2 w3 v+ E- r( A+ L
methode3 singleproc输出控制调用
1 f; A9 c& Q4 Y: His8 i, i& ?0 x# {! G' b
do4 M% U1 S3 x B. u0 X6 @
m:= Ereignisverwalter.zeit;
) O9 G( E ^. d if m/=0 then
- Q& W( a& m5 I/ O y:=y+(m-n);
# Q4 h3 J2 u0 S$ e+ ^ v1 Y end;
3 b) ]' L2 J7 S% G! j: [2 K 4 a3 S, x4 f* e3 Q, p+ ~
end;( Q$ N. @9 z3 L: Q
m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,' \. `, f. z4 u, T- {
m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。
9 Q5 d1 w9 l3 `0 @" h可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。6 Q- X9 X5 b; m
请问如何解决这个问题 |