多谢,我程序, E& Q% G& P2 R* ]
Methode1 Trigger调用 Trigger定义1小时出发一次
% B% M- I0 f% W/ F(old, new : boolean )# x3 T! j) a" {9 u+ F5 e
is' Y" }# s) O1 s6 a
do" k+ j& ?. V* J4 B f, r
if new = true then 3 p+ `3 M6 ]( w5 _
Tabelle1[1,1]:= time_to_num(y)/3600;
! V* B' k' @5 q# H( D7 `- M- n m:= 0;
2 r1 }, y/ B1 M# @5 m3 E6 b" Z n:=0;
9 k" F7 `6 @: S2 o$ c6 T y:=0;
" V+ b+ e R1 m( |9 F end;
^8 \0 c( p% n( K' j: } end;
, ]6 ?8 D s6 j9 Fmethode2 Singleproc 输入控制调用/ H1 R! b( ]4 h
is
8 ]7 C% ]& i9 N( w4 l1 ]( Mdo# D- H; B6 y' H; @6 ?" r
n:=Ereignisverwalter.zeit;8 t8 W' }+ S7 {7 I
end;
9 ]) v; \# c: ]" t2 e; q7 Rmethode3 singleproc输出控制调用
0 y D; n! S) q4 l5 zis. x; \- j, K9 _! a9 u9 i O
do, L7 B8 v- B5 a
m:= Ereignisverwalter.zeit;
8 u' Q( \" X, N& q5 M if m/=0 then
b. Z/ M# n2 T y:=y+(m-n);4 J% T, V8 _/ b+ b/ I8 g
end;
4 w0 B3 E# v" l: d1 E 9 m3 y* O) X5 J
end;7 E! M L! x u7 h
m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,
! J3 ?" ~, g6 M. l, K; Z' om-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。% R0 a% z; s! K& q9 \7 s2 s
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。0 e( H! B& B5 y/ e6 M: \; ]
请问如何解决这个问题 |