多谢,我程序- C. x0 f" R( Y( f0 z
Methode1 Trigger调用 Trigger定义1小时出发一次* g1 x: l6 G1 m+ U7 d2 C. J6 f* O
(old, new : boolean )
1 p( f2 a! D8 g- q, ]6 P8 tis8 N2 K( B4 b& P, `
do5 q2 y3 X' h$ o( e
if new = true then
1 }. N) D4 z& p; {. l0 e d Tabelle1[1,1]:= time_to_num(y)/3600;
' s6 O( n" d$ q; l* T0 q5 t m:= 0;% F% N9 b2 Z0 \$ w2 j* G$ T+ B; c
n:=0;, ]1 U2 ?3 u9 s* y; u
y:=0;- X- Q1 l, W0 S9 F0 j0 F
end;3 D, g* ~* f& M2 ]
end; & F# t- x! E6 N0 x* W# P: \
methode2 Singleproc 输入控制调用
9 l# j, ?- v* z6 h, gis
8 Q% T2 ^: C1 f2 d* P' Q$ a4 bdo6 H3 ?4 ^: x( f" Z2 ~$ I
n:=Ereignisverwalter.zeit;
" i+ ^$ |3 L6 n8 k- V3 f( e4 f9 B* |& [end;
! q6 `& s; V+ Vmethode3 singleproc输出控制调用+ m L" G8 y' }" L) ]5 t( J
is
& P) K: v. \2 N; b7 f, |" z6 `do! e4 r& s3 h0 S+ k* |/ s" [
m:= Ereignisverwalter.zeit;
+ C- @: i$ F& i* b8 C" V% [/ K) | if m/=0 then
7 k. ?+ ^% J$ n5 `# h4 h0 O y:=y+(m-n);
8 h* B0 L0 J9 f! s) n end;
& y0 i$ V; A) H* e, [+ _
% y: C7 F0 @0 L( W' I% iend;
% q, |8 q+ n( Jm为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,7 [$ f3 }- W; t8 n" H+ I* K6 w" n
m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。, _1 W9 E/ W3 u0 i: d7 h7 l3 A
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。- N0 p& @: t: A+ a
请问如何解决这个问题 |