多谢,我程序8 }- `0 K/ L, j" A
Methode1 Trigger调用 Trigger定义1小时出发一次
+ M% h2 @+ k" \# K& U* k. g(old, new : boolean )
J$ n; l9 g$ E5 [( _! ^" eis
' _1 m- P" r) }* O" M do
# ]6 H+ {' G% g+ i! T" } if new = true then 7 h* g* u# L8 n( w3 {
Tabelle1[1,1]:= time_to_num(y)/3600;
+ [8 G0 V& F2 g m:= 0;
* @& [/ k# Z% R* {0 n n:=0;9 |8 {) P) \- L }8 R
y:=0;. x2 y: _7 o( c$ t
end;5 P; E0 L0 Z' P1 G" r
end;
; ~% ?/ [# Q& i. P* V$ omethode2 Singleproc 输入控制调用4 l% M- s' ~ U3 {: l
is
' P7 s& i! Q) ]& @0 b4 Edo
3 ?0 b2 Q' ?# y0 |( f" Q( v0 O( Y n:=Ereignisverwalter.zeit;: w: `9 t. \/ `2 W' n- ~
end;+ i3 n2 r' |3 Z" T+ |+ L
methode3 singleproc输出控制调用
) ]% _1 ^" H- O0 y8 His
. ]+ J3 ?. D# \5 \6 fdo
& N0 M* @: r; y* d m:= Ereignisverwalter.zeit;
1 P3 i% z* J& d6 R; B2 u" N C if m/=0 then 5 U3 m6 x7 _ A1 q O5 S6 L
y:=y+(m-n);
" N t+ o9 T0 S, o9 {4 \; Y end;' p5 G: R+ C2 O" A
& Y" S1 Y5 [' M/ s& I; _3 Dend;0 F# d, ^8 m1 H4 J0 h( V0 @
m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,
, [0 f& R: y6 q4 a1 Bm-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。
* _6 y6 C, h! |$ s9 \可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。
( r8 j, @2 T5 b5 [0 O请问如何解决这个问题 |