多谢,我程序
/ H. {$ p6 R! F# Y3 X" F% j# O+ ^Methode1 Trigger调用 Trigger定义1小时出发一次
b; v/ k0 U3 g m9 |7 t* K" r(old, new : boolean )
0 ?" D* m2 A7 |is
1 h! v& i2 W+ O+ y ~$ |7 _: u do
0 a2 E( b6 m# z5 H; ~& D& D4 F9 A% N( \ if new = true then
* f9 \- ]$ t$ ? J Tabelle1[1,1]:= time_to_num(y)/3600;
8 u4 |% q/ u0 Y3 Y4 x' g# w4 n- o m:= 0;
* k4 @! ~* K$ D$ K% v n:=0;
2 O* x: P G1 F2 Z; O# D% t! |- ] y:=0;% X% Q6 a' I0 f( C
end;
9 w7 \" e H; f$ c4 i end; - q# E% V7 i- K& a
methode2 Singleproc 输入控制调用% N3 h, H: [) v0 X5 n/ E6 p
is
, p: I w* s5 H* \do" m9 L8 z: l% X& V$ \/ N; v
n:=Ereignisverwalter.zeit;
9 Z- o7 l3 w/ x5 K3 Z. c! |- ^7 ?8 `+ Tend;+ P0 d0 C( o6 m1 F$ @. T6 m
methode3 singleproc输出控制调用
7 r6 M$ {: I$ w: z; ?is
/ ?+ _* |# t( D; Ado
0 T, e3 f6 F4 o$ v1 X: S m:= Ereignisverwalter.zeit;' a4 }* a; i# L; a5 L
if m/=0 then + f) y, L9 H& Y
y:=y+(m-n);- `; F0 S; a9 _7 W4 }( l
end;4 V7 K! a/ t' `/ y4 K0 j. l. N6 d
7 A5 {9 ]( ^2 n% x
end;$ U" Q& Z. k8 _* r. J' G# n. h6 i
m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,2 C2 S/ J, _0 a+ W7 d
m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。# z7 t0 Y$ I% d2 V
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。
3 q. k8 y% Z- v2 Z5 |4 l1 x& \请问如何解决这个问题 |