多谢,我程序% [/ `- _& `& D! ]9 y$ O2 P0 C
Methode1 Trigger调用 Trigger定义1小时出发一次
- v1 s- ~5 F+ ?1 s; P(old, new : boolean ). j( Y M* v8 _* J
is
. Q0 X: V( [- S0 }9 _' N& R do2 ?% N- o) [ A( v' O$ M
if new = true then , G8 V" e. V1 _: v& ~
Tabelle1[1,1]:= time_to_num(y)/3600;
' a' B) e4 k2 ^4 S8 g C m:= 0;
5 ?; X/ T/ t- L n:=0;( Q8 x' V/ i4 B* f
y:=0;/ V5 B0 P* J5 q6 T$ R+ O, U7 d9 E# q
end; h6 z6 ?- `. T+ t+ G: l2 G9 u3 N
end; 3 v( z# `" ^/ A
methode2 Singleproc 输入控制调用% g4 y; p, m% P( g* p I
is( O5 u- t6 A; t Y" b. c8 D
do
. {* t2 ]' v- V& _! w5 b n:=Ereignisverwalter.zeit;
" T- n) h& l( _2 C+ y; Tend;
1 y X3 D; j7 }* Wmethode3 singleproc输出控制调用7 T* K9 Y4 b2 i& c9 V
is% x6 z& t* Z# O1 j# q
do' }7 V P) w" Z& D' K5 W0 r
m:= Ereignisverwalter.zeit;
- J) G' ?- d4 ]) i# S: @7 |% [ if m/=0 then ; O) U3 O& v; @
y:=y+(m-n);) V- Z$ |8 ~# d! @* O0 p
end;
1 a; l5 t2 k( c5 ^- D ) y( n1 U% ?' p& {
end;
7 R7 p, [# l0 z, M& j/ j, |m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,
- G$ F! C% \. Bm-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。
. Y2 z. R8 b5 K" d2 u' f1 V# k可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。7 r- Z/ N7 A: F0 @ P9 {" c5 {
请问如何解决这个问题 |