多谢,我程序
7 N$ B9 q8 P' x" O9 ?" u% ]Methode1 Trigger调用 Trigger定义1小时出发一次$ Y, {6 @4 s9 g, u7 x* i
(old, new : boolean )
* _# @6 b) z7 {1 H7 [is
5 s. l# B' N7 b$ C" J* X do
; z( x. ^) x% b& @5 P7 g' z if new = true then 6 M9 ^3 z& Z& Z3 D5 O; x2 N1 v
Tabelle1[1,1]:= time_to_num(y)/3600;
7 I& `! {7 \0 p' s7 D. U m:= 0;
# w% L1 u+ f" z& b n:=0;/ l* J l; D1 H+ u* ]
y:=0;
# c! s% X1 ]* u. O/ b; @, D end;
4 Y" _# q1 r1 Q6 v. t! c; _ end;
' Q( b2 \2 \5 q7 X Tmethode2 Singleproc 输入控制调用
# d" Q% s8 A, M$ r0 H% M2 eis4 o. x& B1 s0 K; v& G
do
) H; d# z E5 B9 q+ O; l1 o4 O n:=Ereignisverwalter.zeit;
3 J7 q# m2 x1 A% R/ @end;, a0 Q- ?+ Z; @8 Z* U. Y* i" @
methode3 singleproc输出控制调用+ ], [* {+ b7 k3 m
is
- w" N8 C& C$ w( _0 e, fdo8 i& W1 f4 \5 Z
m:= Ereignisverwalter.zeit;
* p" f- A4 r: s$ D$ L( v+ S if m/=0 then
# I- @: Q! I, X# H7 y y:=y+(m-n);- S. y+ j: j/ E+ K: l
end;
2 K9 _; Z) |! z8 F- i " c, P9 m- k6 C8 L, h8 l
end;
: B1 q8 ]4 R% o6 U& d8 B) @m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,# z9 G/ _$ Y2 ~0 V
m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。! i, Q* c4 l E& j5 v
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。
9 i4 B5 l+ W3 l请问如何解决这个问题 |