多谢,我程序
# k. L, L8 Q3 z j; v1 Q6 \; ~Methode1 Trigger调用 Trigger定义1小时出发一次
, g/ m, E1 s J1 w& t/ F2 m(old, new : boolean )
5 t7 ^+ E$ X* _! Pis
4 @) R# j8 p3 w do
) \% n! U; y# O& W if new = true then
9 n( y; z# f$ L! g/ D Tabelle1[1,1]:= time_to_num(y)/3600;5 g- C5 X9 D9 \
m:= 0;
9 B) S4 _% x& Q8 A n:=0;. E( \( a7 [9 S! r
y:=0;
4 O4 r' i# d, H: v$ q ^- B end;5 X( q" g9 b! m8 Q( V1 b
end;
% v$ O1 b6 n. G) l" Z. O: u* ymethode2 Singleproc 输入控制调用
5 q5 R! ?* J$ q# B5 E2 z' [% jis; t# X9 a6 b; ]- x0 n/ A! l
do
' ]) }9 [ @+ e7 m n:=Ereignisverwalter.zeit;
$ c2 I4 A8 a- m: P) } Nend;
$ {" B/ m- x+ h! @) p& u& j/ Qmethode3 singleproc输出控制调用7 I$ B4 R0 g/ x# `
is/ I- f2 S) n+ S: f3 k- ~# c
do6 C% L8 { a* C$ G+ E. g
m:= Ereignisverwalter.zeit;% x) Y, ?3 X$ x9 b+ m% N" O# Q
if m/=0 then 1 {! P$ J3 s. l F. ~
y:=y+(m-n);( t! U1 T3 G/ f/ k- B- w/ q8 s* y
end;
. ^( ?$ l1 f ]/ x( I 4 a- {5 a2 @* }" O& A! _8 i8 }
end;* j( ?( O+ ^! ? _& ?* K1 c
m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,# Z- n e$ V. E9 s o
m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。3 h2 C1 E4 O4 x7 Q1 c& @8 o- o
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。3 a, S6 R5 V5 m3 v
请问如何解决这个问题 |