多谢,我程序4 M( [* ]% B% ?# J: x6 V
Methode1 Trigger调用 Trigger定义1小时出发一次: Z. c* `9 h2 A# M& s
(old, new : boolean )/ B$ a( w3 d, M ~3 R2 j: S. ~! G
is# o- \/ p/ b* q8 A
do
: x1 ]9 o( ^9 ^. W" z3 a if new = true then
( ]/ P0 U; q1 { a2 r Tabelle1[1,1]:= time_to_num(y)/3600;
+ M# `8 ]) e8 N* t; D' _ m:= 0;
" p9 v6 r8 M3 a4 o4 Z1 Q/ t n:=0;
1 e3 d7 }2 T$ ]& F y:=0;( f9 F' Z+ o/ j3 Y8 `
end;* Y# K1 N% |( v# g, c9 g
end; 4 }+ f4 c1 ^$ N
methode2 Singleproc 输入控制调用
3 |* b" C, ~/ `, cis
% u( f. X+ S* mdo( k1 u9 G3 T4 F
n:=Ereignisverwalter.zeit;. N8 K1 N( x- Y$ A2 ]' H
end;4 K% B a q1 X9 A [% o
methode3 singleproc输出控制调用
) L% c, ^! U0 E" Uis
' j8 C& O% w- T& K Xdo* X+ \% p) l& I6 @' W% V5 h0 g) E
m:= Ereignisverwalter.zeit;
7 j+ ?6 W) \4 q) Q: z1 ? if m/=0 then 9 j- [4 a% e M, U; x
y:=y+(m-n);
$ |5 I: {4 t' x! z end;
3 { h& w, X: S- v, x7 Q$ j& W e4 s : b9 O, V' b$ t! y
end;
( U6 f3 _- A" M D+ o* \m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,
8 }" b. O4 V; ~m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。: z/ m) W$ v9 m1 u6 p/ Y/ U1 y& f- n1 n
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。
+ V" B2 r2 N/ p! D请问如何解决这个问题 |