多谢,我程序& z' Y" P. J+ C6 Q6 |) K5 _& F! E
Methode1 Trigger调用 Trigger定义1小时出发一次: g5 g+ N9 r0 M* F. U
(old, new : boolean )
( o4 \" h* N0 J5 ^2 ?* O: Ris. k, _ U4 f: x1 i
do
; x B) V& u# R! K! p0 [ if new = true then 1 V9 K, t* }+ T9 J }; f7 K
Tabelle1[1,1]:= time_to_num(y)/3600;! \9 ]4 D& u# g$ b1 Z- r" |
m:= 0;3 `. J7 X0 o3 p
n:=0;( i# h- @1 h: f( p
y:=0;. `( T# K7 Z0 `. F& I
end;
. o! w2 I% D5 O+ V" B/ T end; # g7 Z0 g' N1 d/ x$ g
methode2 Singleproc 输入控制调用: H3 q* x; c0 ^/ @
is
. ]: c6 C" m( }/ {1 J' vdo
/ U6 u# p, e$ j0 }2 ` n:=Ereignisverwalter.zeit;$ [6 g" Z% K% ?6 S* F* `4 ?4 F" \$ l
end;6 ~/ _/ m p" |) i. o1 m) ^
methode3 singleproc输出控制调用5 _' x5 t; V7 g+ x
is
# S4 m! \/ f& E' r8 x' A6 Jdo4 l& Y6 D' f `. i Z9 W: p) t7 P
m:= Ereignisverwalter.zeit;
& J3 |3 I0 _& M if m/=0 then . f, B+ Q% V2 G2 f$ ~
y:=y+(m-n);
+ ?/ l( b: G) |& m$ L end;
P9 J3 y+ L5 P- `
6 I# f$ T$ K" ?8 \end;
. x) j6 U; w8 im为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,5 |+ K6 i. E1 q
m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。+ A5 ^4 Q! V7 U/ w) D. [* |- h
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。8 \- Z5 w$ Y# H% L
请问如何解决这个问题 |