多谢,我程序
6 a; B5 Y- \+ a* g$ g% @. q2 F9 rMethode1 Trigger调用 Trigger定义1小时出发一次
' d" |. h1 ?1 m* M, M* P# y4 o(old, new : boolean )" Q- b4 K) z$ l2 C
is
3 K, Q, E, G! z7 }0 x# M, d& k do
/ ]' W4 s5 c u4 ?+ P2 ? if new = true then
7 a; ?; d! z- b; V' G Tabelle1[1,1]:= time_to_num(y)/3600;$ o. G& W4 J2 {% T5 V
m:= 0;
& q' L9 w& n5 P8 ]7 ` n:=0;
0 Q3 F! Z# A4 i! V y:=0;
/ s4 J, }5 ?& I* N end;. L0 K* k$ F5 G# S1 B
end;
, y3 d$ `/ [) o& \# emethode2 Singleproc 输入控制调用9 d; {4 E' b: G+ f! L- q
is4 r& |) p( O0 s# S" N' P
do F: C+ e+ H0 B6 d; h9 r$ K$ j; g
n:=Ereignisverwalter.zeit;
' K6 m; z" F. \+ `+ K, R6 rend;# U! `7 {- ?! e, f% z( _$ ?" a
methode3 singleproc输出控制调用" Y) d1 X2 Y1 j1 g+ o: b) s/ d
is
! d4 k6 m1 \) C* u4 ]: h: Xdo" F; n) a0 p! D) s: J& g8 B; A
m:= Ereignisverwalter.zeit;: u: t! D; ^, B$ K
if m/=0 then
. |( w# M+ W9 n7 V0 M y:=y+(m-n);' p" e& ?5 _; Q2 B; x$ T1 r1 g
end;+ I4 ~* T: c3 @% \! ]8 B+ j9 X* F
. ?) B; f/ i" E$ e
end;
% h; s+ |. O' A9 F: E* u7 Qm为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,+ z. @; V B- j, b+ b. R* Y, N
m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。8 f* u+ T& L; @8 |$ C4 V4 \$ S
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。2 L9 z$ T$ u% O7 z) v/ u1 ^$ Y4 k
请问如何解决这个问题 |