多谢,我程序
+ R) G+ M4 I- dMethode1 Trigger调用 Trigger定义1小时出发一次
' C v- }' H( S5 b3 V) p(old, new : boolean )
2 I' M ? ?& g8 N/ i+ n5 f: bis2 @1 f. b6 n" B# c
do
. ?8 R7 A: @$ _7 Q9 y% u( b if new = true then , |$ K" T* `6 x5 i, \5 o8 v
Tabelle1[1,1]:= time_to_num(y)/3600;1 R' V7 M1 d- h# k
m:= 0;
1 @$ D M) b Y n:=0;
& L# E) B# j- T' A* ~8 C y:=0;
( b7 i- _/ v" Z, X' d end;# X7 o) |" a- u# V
end;
" m) V0 s( ]" {methode2 Singleproc 输入控制调用: _& l E& g: i
is; u' l+ H( p" A+ z
do- I8 y# z* ], ^4 q: v/ J
n:=Ereignisverwalter.zeit;
. N7 D* E/ I' Tend;
6 S$ r1 h) y6 a b2 X. Vmethode3 singleproc输出控制调用
4 z* k; O2 R! X( P+ P: S) q( uis0 a. y% `0 @6 G, X S$ n! f+ e) q: G* y
do
9 n3 U- z/ g2 c$ h* b2 s6 ^ m:= Ereignisverwalter.zeit;
2 q+ `; ?2 J, D0 \% ~3 Z: S if m/=0 then
- p- p8 k) U7 u2 u9 x# Q# q y:=y+(m-n);; S& b. x( x! n, T
end;* e% M/ D( L: c' V
* }6 `* y( Y/ P& w3 ^! K( V
end;
8 v8 o$ c! ~( d) s. vm为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,
/ G6 v; y' ?+ |4 K k- lm-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。
% p' [" V2 w% L8 l7 q o1 y: w可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。) c& B. o, P. o! i2 W4 K1 X
请问如何解决这个问题 |