多谢,我程序; H) C, }+ Z; o9 T U) g0 t
Methode1 Trigger调用 Trigger定义1小时出发一次 s/ U# p8 }& [; y K
(old, new : boolean )
u# ~6 l6 G! t/ f, m, k7 f& ois
2 L/ o! ~' T# f. x5 U# d8 B do
! T) \/ a1 e% L0 y+ o1 w if new = true then ) u$ M$ X8 z) N: E
Tabelle1[1,1]:= time_to_num(y)/3600;
' O7 k6 C1 I1 o5 I m:= 0;5 K+ C# T( ^1 D0 l
n:=0; s7 g; J) d5 x2 {* k ]
y:=0;8 Y% | J e! }' n P
end;
7 S2 A# G. H( ]6 v& V end;
# T4 n. Y! J% r xmethode2 Singleproc 输入控制调用
* g1 a) |( X: mis
2 ], ^* b+ e. _6 Cdo0 s1 R) V( Q% m! T
n:=Ereignisverwalter.zeit;, @$ N: e% a1 M d% M% `' B6 I
end;
, Z. H1 Y6 g2 o- q) H) r% Smethode3 singleproc输出控制调用( H' h+ n5 o* u v% A4 S+ q/ K5 N
is/ n8 R( ]- U" i
do
- M1 R2 ^5 z: E8 w2 a0 ~) R m:= Ereignisverwalter.zeit;
6 h ]( G9 Y" |% x" N if m/=0 then
6 T3 S2 h: e- Y# Z y:=y+(m-n);
4 N' S5 e, Y$ l2 g( n% ^; j0 V6 R& { end;3 \0 ^5 E( y z; o, O
3 y' H8 m! E$ |6 rend;% B" S7 a$ i/ x) l
m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,
" t1 l4 V/ l8 e3 f5 V1 D7 im-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。
1 D- r p. h: d; v5 @" m可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。% @# m, a, w# O4 D7 a# l. p% o' i$ [
请问如何解决这个问题 |