多谢,我程序
r* s. s! L( G4 pMethode1 Trigger调用 Trigger定义1小时出发一次
' S4 G/ q5 m8 L5 n8 r(old, new : boolean )* I* t! l4 v. ?! z
is) i7 A! w! d4 H- r) [ e% E
do# Y- }. T o5 P
if new = true then " V' N5 C5 p& s5 p$ x1 M2 T
Tabelle1[1,1]:= time_to_num(y)/3600;0 M W8 s% \, r9 j# \& E# b
m:= 0;
# o* P l3 N* S6 t5 s e; \4 M n:=0;' I& O8 D% O5 Y L
y:=0;
/ P7 e2 `+ C! ` A+ K/ ?7 B3 w end;
: W$ p5 V+ J* K8 W) H4 \: I) c. F end;
0 k1 T8 V& f* a) D$ o! Bmethode2 Singleproc 输入控制调用
& f. a) U% b: Wis
3 A$ A4 P4 n7 F7 Q' Xdo
, V" I& y% {! p0 u n:=Ereignisverwalter.zeit;
+ ?# s4 ]0 i5 M: S9 Gend;4 G5 d$ t$ t, r0 L8 @" Z
methode3 singleproc输出控制调用0 T# z1 i3 ?: { @2 z4 ~' q% g
is; F" c. m: J7 q! s1 X
do% P5 h; E" G4 l4 u- E
m:= Ereignisverwalter.zeit;
4 W' e% C* ]0 ?- ?& Y; t if m/=0 then
5 t& f8 f; |: d9 U" l y:=y+(m-n);6 ^3 C; j* J. C
end;
* j h# h/ `% u' L 1 t. H# N* D+ n2 T* h! \
end;6 I' m' ?4 V; t( N5 M
m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,
# r K5 x5 d2 [3 y/ V \) Pm-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。, c% _! p! i0 o" C% F
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。
% l; u2 X* G9 C: c7 ^, O; U请问如何解决这个问题 |