多谢,我程序
+ A/ H/ d+ w% UMethode1 Trigger调用 Trigger定义1小时出发一次
# ?- t, w5 ^+ {- N) }$ b3 M9 ](old, new : boolean )
v3 c$ `. F, j8 V% m" f6 gis- C* Z* W7 g: U* f3 T% h
do
3 ~- m- O1 E x1 f. ?# I9 k/ M# Y* W if new = true then 9 b: N; {, N. G* A8 I% m
Tabelle1[1,1]:= time_to_num(y)/3600;
. Y% `, `- Z, Z+ O9 ~% Q m:= 0;! J$ q) z0 H, X5 b: x2 {0 W: z0 A W; E
n:=0;
1 q1 L# m M: v: p7 N, W y:=0;# G* C; ?# H+ r
end;
2 M$ k# N% r+ g) v end;
, _( ~% ]" V% j9 Cmethode2 Singleproc 输入控制调用: t n. w" M+ c9 [5 {( A1 p
is
6 S/ Y+ }0 }; [do) `3 Z" e5 P4 t$ G) F* @' t/ {
n:=Ereignisverwalter.zeit;
* r+ y. \1 _; Y+ Cend;# J, ?- {( P& p
methode3 singleproc输出控制调用
8 @) \/ f) v3 ?5 P2 x/ n; T& @is
% Z; x" w7 m/ ` T3 ~3 Xdo& t6 b. y! t7 I. h
m:= Ereignisverwalter.zeit;
: q/ t* L7 V8 u. A: T if m/=0 then
: }& u+ X- K2 d y:=y+(m-n);3 C1 Q" l$ X3 h' Y7 P K2 q8 [
end;, B) q @+ \$ ~% ]! ^, S9 v& K
* z7 F$ Q. c* L1 L0 R6 `
end;
! j8 K; f- Z* ~m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,7 X- G% l" a- @5 i1 G' I' o
m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。
4 M3 X1 T3 E! C8 d Y) e# o可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。
' q z* E, S4 U, O/ ]) {5 f请问如何解决这个问题 |