多谢,我程序
! h$ q7 o; I& W% [- \Methode1 Trigger调用 Trigger定义1小时出发一次8 D$ p6 }% ^- {, N. v j7 L/ Y
(old, new : boolean )
$ ]2 z G- q/ ?# dis$ j, b0 ~8 O; x
do
4 }$ o ^: z' W if new = true then
9 a$ d' t% R6 S2 J' J F Tabelle1[1,1]:= time_to_num(y)/3600;% }7 R$ g: @' i/ V1 a
m:= 0;' f6 x: o2 D4 E% r1 Q, |1 C5 \( M& {
n:=0;
: ~5 ?4 h3 @: E- i$ b+ i8 F1 m+ ?, j y:=0;
5 d1 {+ d% D. p1 p3 } end;
0 Y" H( U! e0 q8 W end;
8 F; L$ ~5 O* r1 b" Amethode2 Singleproc 输入控制调用! F+ Y; i* c- t+ s, u2 o
is
. f# r7 t4 x- j' z% B: E6 xdo
# N/ T& ]. u& R. ]# w) S n:=Ereignisverwalter.zeit;; p: ^6 I; s* W7 ^1 ~9 Z
end;9 T j/ w$ A" b
methode3 singleproc输出控制调用! d% p& w \5 O4 d; w' `
is# g) P9 ?8 M9 }+ u
do; p- M0 k! r! }- l. ?. z/ Y# z
m:= Ereignisverwalter.zeit;: \" B7 z8 [1 F
if m/=0 then * G) N7 e- \% _+ \
y:=y+(m-n);
. y8 V2 {' ^; ]7 @! m i, Y$ x end; X d$ r, E8 L2 C( J: w+ s2 [
) ^9 G7 z" @- C0 |0 G% q1 V
end;/ E: u3 V# P- u9 `3 o% n/ U
m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,
2 S; c+ {1 [2 h5 y- E+ N! mm-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。3 O) @: W% w( q& Y: s! }$ x) h+ r c) J
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。
& y% F4 p+ `6 M" }请问如何解决这个问题 |