多谢,我程序; L# A$ k' Y2 d, f
Methode1 Trigger调用 Trigger定义1小时出发一次
) M! v9 [$ N3 L) `" @- N* C& I(old, new : boolean )8 ]/ k. m& X3 `0 J9 u) U {) }. c
is
8 S: e( C' D' _9 g3 O1 E3 b& j do
8 q; E. n' I- o% K& _' {: U if new = true then % W: R1 O( Y4 v/ P; w3 G' r m
Tabelle1[1,1]:= time_to_num(y)/3600;1 h0 {1 h, s/ P6 [1 ]7 J6 `4 ~- g
m:= 0;
/ t# ^( Z# D+ Z( l4 v4 B n:=0;
: o9 H! ] r6 ~2 ? y:=0;! X# d1 k, p1 a) M6 C( M0 R
end;6 ~. k* M) }5 G$ p% j. P/ L
end;
! V5 f( u& H, e: @) ^9 Pmethode2 Singleproc 输入控制调用
j: c ~7 ], w6 Eis
% t& X. `5 T1 xdo/ b8 g( _# S6 L6 h% U O* Q
n:=Ereignisverwalter.zeit;
- ?1 @$ m p5 Yend;7 n3 u1 x5 B2 A
methode3 singleproc输出控制调用! Z) }& D) t; k3 l0 s6 z
is1 N( R9 q P, l+ S L" }& T
do
+ E& m" A& r& v9 s7 u& i m:= Ereignisverwalter.zeit;
& Z& a# P% b& a) ]1 T6 e! ] if m/=0 then
2 Q. R6 |1 r1 F7 r% X5 \" v% W) i9 ^5 R y:=y+(m-n);
3 W5 Z! v# A, y' m4 o5 ]0 d end;$ P0 W* V- U. }( d+ z( l
: {4 q2 I6 A* F( Q8 cend;
* p' N( r8 Y! ^2 Zm为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,; Z" ]* v1 _6 z: Y' z2 ]. n s
m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。8 a9 o0 q- J: } z. S! \
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。0 e' w( g; _3 I9 ?9 h! I
请问如何解决这个问题 |