多谢,我程序* v$ U1 v! v& d& }
Methode1 Trigger调用 Trigger定义1小时出发一次
/ ~. H. {- U/ r! ^; g; [. P(old, new : boolean )0 q# v2 W8 n2 G0 h* l: |
is) b" Z3 e/ b7 Q4 O3 W1 w
do- B2 N3 s! l; e9 s
if new = true then 2 ~; J8 ^9 W7 x0 |/ N" T; C! [' s
Tabelle1[1,1]:= time_to_num(y)/3600;
2 Q- m* }7 M* |+ [7 I m:= 0;
5 Q# s( R2 n/ `) T) o n:=0;8 @" k- U+ }& w! o8 A# m6 e4 X
y:=0;. X6 F: C: ]5 g$ ~- y
end;
/ D' V' y4 V4 |& `8 C end;
( P: L2 W& X! o! e$ Z# Dmethode2 Singleproc 输入控制调用
* c9 H8 C$ [9 G/ W7 h! S( X+ Ois
0 \- ?* z0 E1 q3 _' Bdo, K5 B: [$ a5 o' v' k
n:=Ereignisverwalter.zeit;+ F4 i3 q( K( t: ]: f% F: j7 R# e
end;
0 b1 g- x, E5 A, fmethode3 singleproc输出控制调用
! Z( q+ f" g+ k# eis. G1 E$ S3 g5 m4 N3 q" E
do
4 {* C1 ~" T$ F7 U m:= Ereignisverwalter.zeit;
/ o5 s% c& \5 a( g& f' _; ^9 Q if m/=0 then
0 s) l- C' z8 a1 g9 w y:=y+(m-n);- F0 q+ E5 \" `: v* P* S' \
end;
7 ~. Z( ?- @& {8 S
: [& [' J, M5 g( r2 O& jend;
4 \# |+ t8 w3 bm为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,
8 B* Y' G" |1 }5 g% @m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。
8 e, l% h# N+ k: J2 u7 \可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。
2 R; I! e% \& O请问如何解决这个问题 |