多谢,我程序7 Y& S: {" l7 I4 K0 L3 B
Methode1 Trigger调用 Trigger定义1小时出发一次
# z6 ~0 _4 [9 e( z# |(old, new : boolean )
& @3 N4 f- w0 ]7 G3 tis- R9 \& t. A% {5 u+ N6 C
do& J) y2 f; P! Q! M4 h9 L
if new = true then
: R, m* v7 ^5 o% n* x Tabelle1[1,1]:= time_to_num(y)/3600;& m8 V/ F: [, S2 i5 A" R, ~/ E
m:= 0;
% m0 |- n5 {* j; F) ~. k5 v" x$ N n:=0;3 G( D. ]+ H+ {( ?! H& I
y:=0;/ q1 m a* s$ H0 K4 A
end;
. \+ A( B$ z: @ end;
0 r, D. b# e+ C. A* T- \$ Gmethode2 Singleproc 输入控制调用
0 q" t K9 M/ z. U: F6 cis
; \& G3 m& f: fdo
9 N/ E& z/ g( u1 i n:=Ereignisverwalter.zeit;& G+ e# `# X3 u; k/ v6 @
end;
: Q$ H+ L T; u3 r6 @methode3 singleproc输出控制调用
$ n3 C V, R5 D& y2 uis
6 b- j2 U/ ]: p# g0 d8 a- ^do
) c. x8 Y; Q0 _, W m:= Ereignisverwalter.zeit;4 P% V' q _# p. [, c
if m/=0 then ; p4 A1 a" X) S/ q+ \
y:=y+(m-n);
3 w! V) ?8 u- G% B. v( M6 \ end;
$ T$ \& [' w* B% Y9 P
1 C9 i6 y3 n7 r# z% F0 b! Iend;
# c% {+ [$ p' p; Wm为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,
0 P/ ~+ [: K* {! T9 Y Hm-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。
% b3 R$ H5 k( f% ~可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。( Y: S7 N9 w! R$ I2 w& j% L9 y
请问如何解决这个问题 |