多谢,我程序
0 |5 _3 \7 T8 Z: c# J7 _. K; vMethode1 Trigger调用 Trigger定义1小时出发一次
6 {( R6 d' z$ z$ l, w: s K. D(old, new : boolean )
( l o9 e9 @6 \4 w: P+ y% Gis' G& q2 S$ z1 ~6 c6 m
do; p" e3 ?" E9 ~9 m( @5 L: F
if new = true then
3 G7 q, r: @$ u- Z1 K$ ` Tabelle1[1,1]:= time_to_num(y)/3600;$ v5 }4 i& w4 [' s
m:= 0;
2 C, A: ^9 {7 [& u5 I! n* @ n:=0;
/ Y% _: }. I2 l& F y:=0;
8 }, O, Z) w+ T# s! H% c( e ~! J end;* \: ~ r. i( Z% A1 B0 B7 q7 {
end;
- r- x! \" E# T7 [3 X6 |methode2 Singleproc 输入控制调用, ?5 L# y" p8 s2 j4 h
is
8 c9 a# |/ z! Qdo
. i/ h0 w8 U6 n- A: R' H# y/ @4 D n:=Ereignisverwalter.zeit;0 `8 O% K5 J6 m
end;
3 M. [# e) P/ o4 s" s3 H9 @methode3 singleproc输出控制调用
% B S: j4 J/ D1 Yis
, k5 E: X- n, q& Ldo: q: S0 M3 @0 Q' ]7 X, o& G
m:= Ereignisverwalter.zeit;
9 x' O% p' m2 R( e+ E+ Q. H! [3 k if m/=0 then
" R. D( _; _: D# c- l7 I, p y:=y+(m-n);$ L5 ~0 z: r- A7 [4 X$ t4 D
end;
+ ^2 K" M& f) m7 D! ^5 V4 j! o) m
1 s- ~! q- a u' Y* s& `# ^end;! p6 S/ u+ i# \$ n% x8 R
m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,
' |* ]& S0 e) Z9 t' _m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。& B2 L. P" s4 W
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。
( {5 i- _) ~5 Y8 e请问如何解决这个问题 |