多谢,我程序% Z' L( f! E5 D4 W7 _* z- ^
Methode1 Trigger调用 Trigger定义1小时出发一次
$ G0 r* s- g. H* a% i# G(old, new : boolean ). m0 N8 `+ Z/ w& B7 }* T6 g
is0 s2 \! }1 I" \2 }7 {3 Q: Z) e
do
! v' _/ `( n# U* {6 q6 N/ G if new = true then & |" K0 j! `" G
Tabelle1[1,1]:= time_to_num(y)/3600;
! h$ E3 x! n/ {8 L: d m:= 0;, I. a3 u- v8 \* K5 p, f9 l- ^+ U
n:=0;' v/ I D' H4 {# {3 ]; T( M' p
y:=0;
, z4 v f) Y, b' J end;
6 y( d( r# V: N) h. C2 `* L end; 4 e4 C; s) z( p; N- w. n
methode2 Singleproc 输入控制调用; z6 O1 Q; r* X- g3 E
is3 J7 Y! f0 S8 G
do
4 V0 @) e) o7 W4 x n:=Ereignisverwalter.zeit;& [7 S4 C. m! q% D' P( c7 B3 f
end;
* S+ a- |8 O: M3 e& a: mmethode3 singleproc输出控制调用5 Z5 z; {4 t( B. P$ {* p( h6 J; D
is
4 T; X7 z+ U, Jdo
6 p( z O% W) k" z/ c+ Y' v m:= Ereignisverwalter.zeit;
0 [( W# j! s9 {, z8 l6 X! \3 e7 O if m/=0 then 4 ]. Y% `6 N3 }. l) r7 n* |% g+ n) H
y:=y+(m-n);
+ A: g" p6 |7 ~+ n8 w8 J end;$ I- I7 H) X/ L' ]1 d" ]7 G" Z
% F. I( o) X8 }4 q0 ^0 W" _+ S# m
end; ?1 _6 d2 i: z* u
m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,
( J4 R! S" _/ sm-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。" y& z" t" A1 v' e$ T& I
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。
' m& }* I3 }: e请问如何解决这个问题 |