多谢,我程序
r1 d2 e, T1 d a. p2 v. uMethode1 Trigger调用 Trigger定义1小时出发一次
+ p0 q8 c: Y( Q3 h(old, new : boolean )
# m3 W! f1 Q. _& B6 A7 i+ K2 X- Z0 j* ]is
! G, Q+ ?! f8 S' m$ I4 p do
; n0 m. G7 G4 v4 O& u9 ^ if new = true then
6 x2 l% a& ~2 k+ d8 W8 u' W. w+ L) { Tabelle1[1,1]:= time_to_num(y)/3600;0 a8 d' A( p+ {7 D: t1 T( d' m/ \# q
m:= 0;
/ Z% S' E( B, {% Z: R: | n:=0;- {% R& U' Z- Y
y:=0;( v% b/ m$ F* @, Q1 ~( ~
end;
1 ]. t) [" {$ }2 t3 E end;
! i% x& E% O6 N6 L1 A& J, imethode2 Singleproc 输入控制调用* w! S/ J9 q0 k
is
0 e. _* T! ], Z; r1 n, Ydo
, s1 d8 }4 M: X* n& U7 `" r$ D n:=Ereignisverwalter.zeit;7 y* g! e) T- h' S4 K
end;; i9 W( H4 z3 z1 Z0 }
methode3 singleproc输出控制调用, j; X: b+ K- U0 f) l
is
: |# Y" R! B: wdo
3 }- O2 e% U N: P m:= Ereignisverwalter.zeit;8 U5 G6 J: O0 } F$ q$ }3 e# }
if m/=0 then 8 Z- P( b% I# @% V# E: ]
y:=y+(m-n);
' M& }& Z7 R+ L' { end;* U0 w; x- R! T9 q4 ~0 R
! m5 M4 B4 p/ D$ N+ G: b" C4 m% M; f" Oend;
' ~, N3 V$ N9 G3 am为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,
' G8 j5 @& C# ^) J+ Z; `3 Um-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。
* h2 x6 k z& ^) j+ v可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。
) x/ { U9 \( ?0 I Q0 i) X# \ y3 P请问如何解决这个问题 |