多谢,我程序2 _: J4 _2 V) Y/ D: x: u2 l
Methode1 Trigger调用 Trigger定义1小时出发一次; n' d8 F0 E: \# g/ ^( d& \3 Y
(old, new : boolean )1 J6 [. g4 f/ v- l8 g# ^
is
, R, T0 g0 G; d2 T) P: l1 ^1 U do- X$ U3 o% W0 J9 I6 S% G
if new = true then
8 }7 H6 y I1 ^, m D ]8 h. @ Tabelle1[1,1]:= time_to_num(y)/3600;) D( K/ q5 z6 K* G
m:= 0;/ H+ Q- e0 o4 s1 S" d3 w
n:=0;
; V+ ]9 R# a' G9 k+ a4 v y:=0;+ {2 Y1 s* C# `! Y" N
end;: c: f: U% @+ m! O
end;
- B4 l: c/ f. Q5 A' x2 |9 h; nmethode2 Singleproc 输入控制调用% H( R( [" S- ]% j! E; t+ d1 }
is
0 f1 }6 ]) `7 l* V" K7 }2 bdo
) U7 |& i5 B( i+ H. f/ `# x( d n:=Ereignisverwalter.zeit;2 S5 U1 ^2 X9 I9 T% d2 s, E
end;
! ^( Q G$ X; Qmethode3 singleproc输出控制调用
) L9 V+ q! j7 G& ^: |3 Dis
1 q& ?6 `! l4 ado
+ ?( {& \4 x3 m, C% H& T m:= Ereignisverwalter.zeit;- U7 x/ o _2 f3 e, S, u
if m/=0 then : ]2 I) F5 ]+ J5 [7 l' _) \
y:=y+(m-n); [; Z2 B, T2 ?% E
end;
/ F, r$ L0 X, w
/ W ^+ p) W* {6 Oend;7 G+ i% a0 y9 S4 J4 A
m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,1 \' a7 h% c" V, i" h
m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。4 r9 W% ^% D# F) d+ x8 g" j
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。: P; F% d* B- A6 K* i
请问如何解决这个问题 |