多谢,我程序; c8 N. ]; P2 w4 [! u! m
Methode1 Trigger调用 Trigger定义1小时出发一次
' [: _/ y5 T( }7 i0 X' q(old, new : boolean )
+ ^3 O6 K7 q, Z- W! I8 m2 his
7 G0 G$ R! `4 D1 V3 k W do$ `; f a8 ~& _
if new = true then 4 \0 z4 x9 I. m6 o( n
Tabelle1[1,1]:= time_to_num(y)/3600; r) ] P7 z$ k# u! v6 l2 G
m:= 0;( j( r* M0 ^9 L4 d; A% {. O
n:=0;! Q6 S6 t4 k q' S- q4 s: u
y:=0;4 |( [9 @/ f) h& B& O9 U
end;
4 v+ f: f7 c% H& g6 T# r T end;
! f+ @3 q8 X# b& y( rmethode2 Singleproc 输入控制调用% j1 n/ X1 Z& E. y5 `# e" C
is* ?: _8 {8 m d7 K. p9 y. v& @2 S
do
# P2 j, a! X P5 U: }- h! r n:=Ereignisverwalter.zeit;- O, M2 w( }( s; a
end;
1 \% J ^+ {: j/ Q) m9 D Xmethode3 singleproc输出控制调用
* [) ~* H6 X& n9 {is
: L* b* p( M0 u5 Cdo4 u5 s: \* {1 s
m:= Ereignisverwalter.zeit;% S2 L* H3 P7 W( Q0 t
if m/=0 then ' l: T1 j% w* H" z( p5 ?9 _' c: X2 m# u
y:=y+(m-n);
( s% ^6 k* O8 U# P$ U" l& S end;+ K, E4 {+ k, o& t3 o% d. U
4 r7 d6 e0 E% B4 a! Dend;
: T# d) D+ c1 f% z om为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,4 I' z' w; @8 S8 b/ I
m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。" d9 i8 h6 ~; X. M
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。4 m% \& N, h Z( b! g8 C
请问如何解决这个问题 |