多谢,我程序
% c7 M3 p& Q) M- J9 ]" CMethode1 Trigger调用 Trigger定义1小时出发一次# u5 {/ E, S3 t& S7 p
(old, new : boolean )9 l7 @9 d5 X2 c2 y4 u
is! B4 e6 E+ b, D: K! [7 }6 y* ]1 U
do
4 }+ Y; u' Y, z1 ^2 E e2 g if new = true then
) }; `% K& ^3 y8 n Tabelle1[1,1]:= time_to_num(y)/3600;
5 R7 W3 p$ O$ k' ? m:= 0;& C! ]: Z% D# j; q/ j
n:=0;
. U* J5 }. Q7 {0 e" M y:=0;0 h0 Q2 v8 _. s4 x
end;
( G' u; ~7 W5 C! t% a end;
- r- u0 b3 P" c+ [8 E$ k% n- Gmethode2 Singleproc 输入控制调用
5 c. s" ^! _9 M# U7 k( \2 d3 Z* Kis% l' u: U f: [0 [7 F) ?5 y
do% \8 {. @/ m3 m1 u
n:=Ereignisverwalter.zeit;( Y- z8 ^9 q5 t7 T3 m h
end;; |% q R. [. p2 `. t( }
methode3 singleproc输出控制调用
5 G9 E# ?9 ^. g' l7 yis
' W- q$ g$ S" {/ `% Y; w" Udo
9 L' F' r4 X; f5 q m:= Ereignisverwalter.zeit;5 X4 u# {; t% R+ [1 |
if m/=0 then
- w8 t# z* k+ T5 ?* g1 O5 B, t+ } y:=y+(m-n);
H! C# ^9 z: y& u2 }0 ` end;, B) c) g0 j, z! f) O
( d' E+ K6 S9 t0 `, l
end;6 t7 L% \9 N, @5 x6 _9 {2 D) [
m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间, i( u F1 E4 R9 S. x) Z; Q' t
m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。+ }% w6 c: B6 B* h+ y
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。
( Q/ V9 w8 x* T2 ^: p+ E2 v请问如何解决这个问题 |