多谢,我程序
" Q. H2 j4 {9 l3 s+ r4 f3 `4 OMethode1 Trigger调用 Trigger定义1小时出发一次
0 r6 Y' p/ W' Y3 I! D8 O1 i(old, new : boolean )
# M3 w7 @; A* H A3 ~) Vis& b0 c0 z7 ]/ }, x: b; {
do
3 z1 W: P5 A! {" |2 A4 k# q7 p) E if new = true then : I& t7 L; l) f
Tabelle1[1,1]:= time_to_num(y)/3600;' M }, e5 C& `9 @* ?
m:= 0;
( k$ @. e# v( g+ x+ i, Q n:=0;
. i, B$ n9 Z2 e7 K# y& w1 {8 R, x y:=0;5 ?- J$ C: f5 C
end;, w) {0 @7 Z4 k/ b+ ^6 V
end; / q# R" ~4 Y: e& | o1 M
methode2 Singleproc 输入控制调用6 O+ J; f4 W( d; L
is
! x$ ?% O2 v- M; h/ N) S* Gdo W! w8 y8 J/ c( X
n:=Ereignisverwalter.zeit;
/ x# _2 i! O/ |( pend;( ?7 C) W, m6 B
methode3 singleproc输出控制调用3 V3 J' t' p4 z! Z, d1 \1 w
is9 O4 C9 g8 T0 ]9 I
do
4 n6 G) p" `" C: f0 C0 A( D5 e( a m:= Ereignisverwalter.zeit;
x0 y/ K, q- |# H! c4 J; ^# y3 z C if m/=0 then
1 U; o% j R! t1 e: t y:=y+(m-n);
0 V% r% p9 A' p6 M6 ^/ j' u' U end;+ Z7 M( B( u% ^
9 E1 T" y8 T' ^3 R" u) y3 m. D* |6 l
end;6 W1 z" d+ Y |+ ^: V
m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,
1 N1 i. g# l0 S7 r& }: A7 F1 Um-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。0 C/ l6 ?; ^5 z$ S. V# n/ E
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。
! P( S) }( }9 y2 }# h* J请问如何解决这个问题 |