多谢,我程序
9 d" @" H' U7 SMethode1 Trigger调用 Trigger定义1小时出发一次
i0 e' Y) J* P3 k(old, new : boolean )6 |0 Q! p! P1 t2 \/ [9 g' v
is
/ g8 Q1 e9 |$ u; ?3 m" F do0 i; h. M( f0 t+ S8 n/ O W
if new = true then
$ C a# x6 ?1 v) Y( _& b Tabelle1[1,1]:= time_to_num(y)/3600;
, a3 i6 _5 A; c, P$ A6 P6 K# S m:= 0;1 t! F0 k' X3 q9 P! C# ]* R
n:=0;
3 C; D1 \1 \" v9 \' e5 E y:=0;& j6 G7 u& J* n8 M0 ~
end;5 D. A2 t" a3 u/ R- [
end; ) Q& b( i( W, r N( s( [' A
methode2 Singleproc 输入控制调用& {, @* x- l6 o, I8 M
is3 [2 k; u! t# ^* G
do' J( t) y9 J/ B/ f1 Z8 b2 ]
n:=Ereignisverwalter.zeit;
+ p. `. Z& f- Pend;
6 b7 `: z" a" t3 Y Umethode3 singleproc输出控制调用
! i" B& J* ^+ T# `is
4 o X. c' V! h. V; V: k$ _4 gdo
, S: W. k% H0 P) ~8 t, W# H: D m:= Ereignisverwalter.zeit;" Y3 @. ~+ d/ _/ t6 c
if m/=0 then
: c, T- ^3 B4 C+ a y:=y+(m-n);
- }* b' ]- }/ q& R9 t! f ? end;4 P: d% }, l+ q
- |) r# H6 z: E4 U
end;
; s8 @9 J* u- Mm为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,
* o7 x9 L% o4 h& N* s8 `m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。! a8 D+ a* E4 ^4 D
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。
( c+ J8 J7 }: h5 x% C0 k请问如何解决这个问题 |