多谢,我程序
# H4 Z4 w# f2 J2 c3 a1 x/ o7 xMethode1 Trigger调用 Trigger定义1小时出发一次
+ r9 N w" r* ^2 Z(old, new : boolean )
+ t2 s6 V9 u* \& p# Xis
. s7 q' X" O, t4 B do: I5 R1 |# V1 Q2 @; j
if new = true then ( c# j0 a" C+ P: V
Tabelle1[1,1]:= time_to_num(y)/3600;
$ d% E% w0 L; H8 ?3 S. ^ m:= 0;
( E- }# m2 Z8 W" ?; Q n:=0;8 y( P# ]; M! `7 s3 Q* o, V0 P7 D8 f
y:=0;% a# @( o, |6 P1 c& T
end;
! {5 e1 g' z+ y4 a1 x end; - S9 O/ `- u9 b8 R( i
methode2 Singleproc 输入控制调用
) e9 Q. j4 B' f$ D+ @* Zis
" w7 o- l. z# [! E7 n' w8 {% hdo
. ]/ B/ ]8 d* }; C n:=Ereignisverwalter.zeit;
/ V4 O# N; \5 N% d' z! D* aend;
: r2 h; ]4 |! |) [5 gmethode3 singleproc输出控制调用: I* {% \! k9 f: E: v
is
" M5 o+ x/ o! hdo& F$ e: e1 k7 S$ ?! h
m:= Ereignisverwalter.zeit;
8 |' ?8 q! L- P; I) q' F if m/=0 then
8 `' l* `9 m9 P+ P+ ^5 ]9 {- K y:=y+(m-n);
! {" F9 n3 K+ w+ _7 P* a end;; c d2 z: d4 M7 \# _
, b* t, E% O: L8 L: N' E- Y' dend;$ G$ A$ Y w7 m$ S
m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,! [3 K4 Y) p) L( O) x
m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。7 r: K- f `; `; E) s$ S/ F
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。
8 q7 y* R8 J* j- u0 \& [' L1 x请问如何解决这个问题 |