多谢,我程序2 j% c8 G7 x" ~3 w
Methode1 Trigger调用 Trigger定义1小时出发一次
# u, q, x1 T6 {6 e(old, new : boolean )
0 [7 r* L3 A: Q: ]' Cis5 Y" C) M7 F. V7 X0 z8 _5 `
do
# Y6 r1 Z5 R7 U( C, U* ] v if new = true then
0 \9 q$ m& A2 m2 {# \" _8 z Tabelle1[1,1]:= time_to_num(y)/3600;( E5 u& b0 ]0 B5 M% M/ D
m:= 0;; c7 ~7 l' I- K! q% n8 N
n:=0;: k. L$ U, |; M4 k) G; z
y:=0;
1 ^2 J) b2 a. V8 v# F end;
/ y% h$ M9 K3 S! _ end; $ r* x% n) M S/ Y+ U8 d5 w
methode2 Singleproc 输入控制调用
3 d" G- W5 z8 h4 r, b" q9 I3 {- W/ v4 sis
1 `( P2 R/ a7 i( u. Ydo& ~8 a2 R' l+ V4 o0 s9 F @
n:=Ereignisverwalter.zeit;& _2 V& X& }2 u9 c: f* T) g' [
end;! f! v$ Q5 j$ S# ^' U! J2 J
methode3 singleproc输出控制调用
$ Z# Y5 K0 h! _! u1 |; |is( S( N L8 p$ V' `, W
do6 K j; ~8 Q1 Z9 Q) `1 n8 U
m:= Ereignisverwalter.zeit;% {9 o- A, x6 o' \- u$ D$ w( y; @
if m/=0 then 8 Y) f! P1 l' ?9 ]1 e9 L
y:=y+(m-n);0 F7 Q0 e+ o& `# F
end;5 h; B7 O/ y0 x
3 S' K1 I" H, }0 f" ]( n
end;
2 C4 g$ L7 q' C3 hm为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,# K# F5 }' ]$ Q5 A+ U9 S
m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。
& x+ c. K7 |6 I" D V可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。
+ x% D( `% @+ P7 E: |+ {; }请问如何解决这个问题 |