多谢,我程序
n" u" {* U3 z. J3 KMethode1 Trigger调用 Trigger定义1小时出发一次- W1 w. j+ A1 a3 A. j( i e4 d
(old, new : boolean )0 ?9 \) ]5 i) Q0 w) ~" W- m2 {: b
is0 t/ k! I e1 A8 p7 E5 _
do
& f1 Z u- A8 N1 ^. K" ` if new = true then
4 R: ~, w; e' k6 P3 u9 l Tabelle1[1,1]:= time_to_num(y)/3600;
, |5 k( _7 j3 M7 I' M# r! x m:= 0;5 O f' T3 B- p# P
n:=0;
2 C1 s" R- i1 N% M/ d y:=0;, Z$ w9 Z1 w8 y( C L2 J
end;
/ x. D: k, k/ f' W& I0 s end; $ E) u( }: K1 e5 x; Y' b a: p6 {
methode2 Singleproc 输入控制调用
0 ^' b$ u7 I1 N0 V6 U) r6 yis) M4 E: u: F" b- l% N% U" L
do
8 w) Z1 d, Q+ d5 B8 A n:=Ereignisverwalter.zeit;2 W, |5 u9 t" W2 T |. |5 G5 ~
end;
$ m; I- S. X) D6 x0 nmethode3 singleproc输出控制调用
4 [( M) l+ X' S7 d; Gis
$ {# S& A/ i5 S ]$ xdo* B: H9 W* n2 k
m:= Ereignisverwalter.zeit;
~! A. e' ^; m7 J if m/=0 then
1 E: ~7 j1 ?$ v/ X$ P y:=y+(m-n);
. }" K- j. y3 E end;
- W) D- J# {8 S6 A, e: z6 Y8 R ; `9 w1 O) I% Y4 f
end;. ^( w/ s# G2 }+ l% D
m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,) x6 p3 h$ n1 [7 j7 o
m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。
- K, ^3 j$ r d1 R) n0 N可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。& L4 d. Z7 F3 H( X
请问如何解决这个问题 |