多谢,我程序1 u3 g& a, a! w2 s4 Z. e
Methode1 Trigger调用 Trigger定义1小时出发一次4 p$ e2 K2 }- h6 X0 X
(old, new : boolean )
0 M d$ q& U+ o& @' b( N. P9 p! {is2 B+ B" U0 ?2 f) H$ g
do
~5 c2 a P3 }: f$ O# t# y if new = true then
0 w1 f/ s1 Y0 x4 z- s Tabelle1[1,1]:= time_to_num(y)/3600;, T4 U9 d# d# X
m:= 0;
8 K5 S1 F8 p* H! M3 w' K& o% }6 _ n:=0;# w7 L$ e) F% Z; f, K0 F( z# k
y:=0;
5 ~; C3 A6 R6 k+ U* e end;
" E5 s5 l. R* Y) B! o end; # Q9 a" C5 Z! q3 U. l- s
methode2 Singleproc 输入控制调用
+ u: _. V) i2 o, D: w- Sis
1 {: t9 D/ v0 F( ]/ ldo
1 n( O5 Q+ h9 H3 X n:=Ereignisverwalter.zeit;% ?6 ~3 b/ a3 v# G/ k. H0 d. \
end;
% L1 V, Q' y* H zmethode3 singleproc输出控制调用- _" p7 W7 m; ~! P b0 i
is
/ w# x) x$ H& {2 \# ldo" G I/ b! ^- {1 j9 d$ b
m:= Ereignisverwalter.zeit;
% M- c; d7 _8 V* p; j if m/=0 then
5 S% E" Z/ h. Q4 ` o y:=y+(m-n);
- X) T2 H. t9 G) h! h- t end;8 d' n7 x8 ~$ l0 x
% Y4 l: E: J2 T
end;9 ^2 l1 S/ x6 C2 V* P( C! h
m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,! n; ^$ o: E* I2 S4 n* q9 r
m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。
7 y) p3 w5 g$ u; \# B可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。+ m: S5 Z5 N* p
请问如何解决这个问题 |