多谢,我程序" B( t+ X ]: N& D
Methode1 Trigger调用 Trigger定义1小时出发一次
2 ~% o- |% W8 Y7 \3 J5 o3 r(old, new : boolean )* f m7 E& `, W* n# P4 E
is& d" F+ n: T3 {/ \6 B& L
do; j: s' F! |! Q& ?# k( e. F
if new = true then " q( |+ v( j! I7 D) V& b3 D |
Tabelle1[1,1]:= time_to_num(y)/3600;
" N H0 }. g3 D m:= 0; z' |+ b3 u1 K2 W% U5 Q, A
n:=0;
& V4 S- Q7 c' C2 E y:=0;
) i" Y. A# I0 s g* ]8 w( X) V end;
9 Y! z3 A* z6 U" B+ s8 p- N8 {. t) R& S end; Z, }% M7 H! p, R- O! c; w: d
methode2 Singleproc 输入控制调用+ t2 ?/ C- z2 t/ h/ ]
is1 S; [$ I5 ?' M* ^! Q
do
- G7 x7 @4 `- h/ W+ o" ] n:=Ereignisverwalter.zeit;2 n- \* o7 Q' U% W f/ Q
end;; E! {. ]* Y: Q. y
methode3 singleproc输出控制调用
( P( |8 Q' r- pis# a" M$ o* J) K4 E: @
do
) i6 y( l8 K) K0 F1 ^ m:= Ereignisverwalter.zeit;
# t3 ~/ n; e! Z$ J1 e if m/=0 then
; ^+ ?3 ?- u$ C/ s' c+ O( G y:=y+(m-n);
% W |2 @; x6 q. D q end;
) K8 I1 K& v: l0 ^ n2 f6 o) Z$ b
end;
0 X1 G. @; s! u3 Tm为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,1 N4 Y" H k; p X: X
m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。) C6 b7 c2 s1 m j
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。: z9 F) V: O0 u d5 T, |
请问如何解决这个问题 |