多谢,我程序
) ^2 |6 d3 M3 }" L. ~# PMethode1 Trigger调用 Trigger定义1小时出发一次
" m; v) b W! H(old, new : boolean )
& t; z& ~# m" qis4 ` A: ^$ ^; R X" e& p+ z
do; f. {) t. l. z7 [8 K/ K, u, }) g) v* s
if new = true then
: ?" Q6 B/ u4 n& n0 M Tabelle1[1,1]:= time_to_num(y)/3600;5 o: m4 J" r6 K) M3 L% u
m:= 0;4 y+ `! A6 T- L6 B2 h( E
n:=0;0 B- I; d5 W$ n( Q. o7 ?, v6 Y
y:=0;
+ L: {$ m! i8 _* H end; j/ E$ i R6 {/ x
end; : d- Y+ X/ C! C& @
methode2 Singleproc 输入控制调用1 @1 _1 i0 }* K: |5 s0 }1 k& i
is# [6 q, M, I, v4 i' k c
do/ K3 U# ~0 z, g
n:=Ereignisverwalter.zeit;/ V) a9 D+ S6 v& R+ f- G# ^; K E
end;
* `# p. g5 d" W& E. h0 wmethode3 singleproc输出控制调用
' z: w( U9 M# V1 M2 A3 eis5 }' Q/ j. I; ^/ R4 e- g& ?7 C0 y6 I
do6 p b& o3 [+ e- J
m:= Ereignisverwalter.zeit;
9 t0 h& A L4 g9 m( r if m/=0 then
6 d) f+ g: T% i, V* V, k y:=y+(m-n);
0 e: J) X, O |3 ^- T& M F/ Q end; N, O$ K) D8 D% }5 A' p" U
4 J. G$ T. @; k' tend;7 |8 r( D2 f" A
m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,! Q$ O. r* f+ ]3 V6 j2 n2 J- E
m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。. j( g! \' R) B$ P; K9 p6 g) r
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。
3 p) N4 S; r" h% ^+ r4 o( b5 {请问如何解决这个问题 |