多谢,我程序
( B# R; ^3 D% w6 h: b# P6 _ @/ aMethode1 Trigger调用 Trigger定义1小时出发一次
9 Q- B, I% F d, C/ U4 K(old, new : boolean )( H6 f" L2 Z5 S/ B) M
is
! C. ?$ S+ @9 l do
- t5 ]7 z0 V# e5 L; ~ Z5 r7 c if new = true then - j2 T; O8 }. C% y: a
Tabelle1[1,1]:= time_to_num(y)/3600;" K4 q% a, @% }( ?6 m
m:= 0;
% c; ^9 |2 s8 R% L" C8 f8 N n:=0;; z& l) }7 x7 C
y:=0;
( M2 H [! Z( V5 P, O6 l8 N end;* z, f( I4 k% n) W, k0 B
end;
5 @$ I$ E, P) |# A7 T. wmethode2 Singleproc 输入控制调用
1 c4 X1 m( B5 Q/ @1 e; C! ois
+ j- ], J$ F$ Q5 Bdo
) T# n5 b1 E! [9 B( o n:=Ereignisverwalter.zeit;
k# k O7 ^3 A4 L" }/ iend;
8 _) _; _8 F; }8 }* \6 r* \+ G; L2 emethode3 singleproc输出控制调用
" ]# L P9 D) K# T1 H1 Yis6 P$ K& ^; @1 ?% J; c7 V' |
do
$ N! ]/ L+ d9 T m:= Ereignisverwalter.zeit;+ j6 o: C: \- \5 d
if m/=0 then
9 V5 a$ k* a, D9 F! `7 b; c: Y- D y:=y+(m-n);' P5 s% F6 ]8 `5 V" A: A5 m
end;
* [/ g: X% t/ I- E ' w: V5 e2 b. U2 r5 P' }
end;
6 ]$ z2 i0 f/ W% f2 l* y. E0 a2 ?m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,
' H" d, G4 m g* q* nm-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。0 }( A9 ]7 ^1 Y9 U1 l# C% \
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。9 }7 v- v! m9 ~# u* {
请问如何解决这个问题 |