多谢,我程序
1 N( d) j6 u+ |Methode1 Trigger调用 Trigger定义1小时出发一次4 p; {$ t4 Z3 q# q: O2 p
(old, new : boolean )
$ H5 _! M* u* dis1 l' h9 X7 e' t7 {7 o, s
do
& U- G( ?; L+ A- [) } if new = true then
# p9 b3 o" q* \5 T; r Tabelle1[1,1]:= time_to_num(y)/3600;, {& b7 l v( X" W; `+ I1 ]( `
m:= 0;
- E3 }; ^ O0 L' R n:=0;7 B5 O& L- ^. q: h/ S0 X
y:=0; o& J* C; @5 u$ F1 Z% N* B: I
end;
; ?9 e4 t }! K end; 4 y6 |) a% w0 y& Q6 {$ v) N8 X! D e
methode2 Singleproc 输入控制调用3 ^8 O, Q4 K0 m9 {1 I3 f* _4 ^# h2 |
is2 {/ H0 c. m; E4 y
do5 z- r8 y8 I& n3 N7 E2 }7 j! N+ k
n:=Ereignisverwalter.zeit;
E2 ?: p* r) t( @6 Rend;" O' y3 c' E; C( \8 ^% t
methode3 singleproc输出控制调用
8 z1 M7 e6 F( U# O* U9 p/ Sis3 y0 w5 F- { }
do
, ^; {2 u% I! k) c: s9 ?+ ] m:= Ereignisverwalter.zeit;
0 A$ {0 H1 F0 {; ] if m/=0 then " i" y, p! k: T
y:=y+(m-n);
# W0 K1 J9 j/ @8 K" A( X end;" z! x3 L) f% y. r9 Z2 b
+ Y9 J/ `" L* @' j7 w! V1 {' l9 J
end;
& j9 `- R/ p0 d, sm为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,/ h& }6 M/ q0 M) v# v; A
m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。- {& ?) a4 q9 p, }! O
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。
$ I' f! H8 w& R* I' X# s6 }请问如何解决这个问题 |