多谢,我程序; I% ? n' H2 h3 Q. Y9 }
Methode1 Trigger调用 Trigger定义1小时出发一次
: B9 X5 o J$ `/ H/ C' e6 d(old, new : boolean )
& c2 @: w! ?) n6 i) Dis
7 e5 V6 O9 L" { do8 l0 G4 K9 {, |7 N' R
if new = true then 7 s# S% n6 n& h2 C9 u0 {
Tabelle1[1,1]:= time_to_num(y)/3600;1 f: _. q6 ~# I* C9 x/ ?
m:= 0;, W+ k% L6 J! e0 I" p6 F: B% \: w
n:=0;
' j* M: T8 `+ @: o* z( J7 B% P+ p y:=0;
" m& |# Q; k5 z end;: p5 |" m0 m* c: Q! w% M; y! m
end;
. f& m5 x. ?0 ^. @methode2 Singleproc 输入控制调用
: {" [4 b3 G* ?: D/ tis) O7 W; c8 y: I! Z4 D. ~7 Z- U
do
6 X! d8 h8 ]) x. ?: ~" a n:=Ereignisverwalter.zeit;; y w4 e; ]- d5 ~* k, c7 E1 ?
end;
- @( K7 a9 L& ^& z7 K3 nmethode3 singleproc输出控制调用$ _% B4 R# M" K4 L. g
is& P: q, w8 T X( A; B# U
do
3 l5 W6 T) T$ y( [! c8 g7 L# j- ~( ~ m:= Ereignisverwalter.zeit;' J7 P) T' [/ @% f! M2 w5 Z* J" E
if m/=0 then " Q t2 |2 T2 A
y:=y+(m-n);5 J3 c( K4 T8 Z k6 W. Q7 }
end;
& | p- d9 V+ A4 f' | B+ i, a' A! o! X& Z0 |( T' l$ _3 ^
end;
" u/ u7 c: Y# B1 a, fm为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,
3 P: Q" e* K9 j6 ^m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。
6 m3 x& F5 j: `: h; Z8 O可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。4 A# [/ r1 I/ n0 i! b- N" l# o
请问如何解决这个问题 |