多谢,我程序
1 Y. T' H! K' EMethode1 Trigger调用 Trigger定义1小时出发一次: w3 t; P j8 ]. ]/ g# b
(old, new : boolean )
: k7 w3 g' x5 |! ?: nis7 B [! X4 O n# o+ K
do' q% M- @3 F+ j4 i3 C
if new = true then
- a3 Z8 f: k9 t6 R* U! ^ Tabelle1[1,1]:= time_to_num(y)/3600;
1 [0 A; d' `2 [5 V& R, W m:= 0;5 T' A9 S4 y+ C) Q/ _/ z1 E
n:=0;( U# J# o% w' H
y:=0;
" h8 |' c+ O3 k2 M- r k; E$ h end;' H4 u- g: t( I$ f$ Z1 U. p& X
end;
% G& I" P$ w' v* l1 zmethode2 Singleproc 输入控制调用: S9 L3 L) k8 f* y( _6 G/ I- f
is
: ^4 M) c6 Y! r2 Ndo
8 B0 L+ x% U1 M4 h9 G1 L. B+ Q n:=Ereignisverwalter.zeit;$ n( Q' a3 b6 K, l* U" ]/ F
end;
: w% H1 ^6 e" ?4 [ e9 S: Y* zmethode3 singleproc输出控制调用& Q( j7 C4 [1 Y
is
8 v5 f# \) H; j5 @9 _do
, v7 X) P0 U/ _1 q m:= Ereignisverwalter.zeit;
4 Q, w! n# m7 u* u if m/=0 then 5 s9 w p; h* O. i
y:=y+(m-n);
8 X; \2 z' V4 z N5 a; x/ T- v4 V end;- b: d% L6 J+ p6 a, m
4 W2 V* H2 @, R/ C4 [end;
1 t6 @. `7 x$ tm为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,$ n1 R# j* c# y2 ?5 D8 ?
m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。6 }# ]+ `0 ^: C+ |
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。
, `& r3 a b9 Z5 {) D' D6 h# h请问如何解决这个问题 |