多谢,我程序- Y, q* K) ]) G) U+ G2 _3 r
Methode1 Trigger调用 Trigger定义1小时出发一次
4 Z$ F: g, U+ ]* A& i(old, new : boolean )
0 Y. d+ X+ ~% ?" d( {! `is8 @/ F1 b9 t: F8 M: o4 F
do2 e; a& H L# P5 s1 K$ ^& b
if new = true then . ?1 [3 d+ U9 { M
Tabelle1[1,1]:= time_to_num(y)/3600;8 K: B/ \; m, w- l" q
m:= 0;4 ~2 q2 o) C, V/ U7 o0 k
n:=0;3 s& Y u, R; l6 i
y:=0; p, K5 C5 w9 S2 g
end;; z' [! t$ c' h% g) @* Q/ k
end;
1 } h7 a0 Z% ?: _/ i* tmethode2 Singleproc 输入控制调用2 `: ?4 @! S) Y5 H, Q
is
- h! P+ x* B, U3 a7 K& i Odo8 G+ [- X% H8 g2 @& {4 _
n:=Ereignisverwalter.zeit;
/ {: T! X3 o3 m* Qend;/ w0 @5 }9 a$ M" [
methode3 singleproc输出控制调用
2 C' X l! j- W( G& Z5 T0 Z0 ]is
+ h H$ ?8 A' o7 P. `" c/ C; sdo- L9 ~; e B8 p) y# [6 ~: @
m:= Ereignisverwalter.zeit;$ o" `6 K9 q" T. \) |0 @- {+ S
if m/=0 then
& `/ m- R- |6 @+ Q2 S. ` y:=y+(m-n);
" Q4 h1 g9 a) b8 v0 G9 q, Q" r1 K end;
% K6 b t. m4 Z- ]' x; A
! e3 A b& n0 j- R7 F1 y* oend;" S8 z1 W2 G! o# k( y$ Z9 `) B) o" J" h
m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,( R$ }# N3 }; g$ }2 d( [
m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。0 q7 h% Z7 F3 M. ^
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。
' m9 F2 g `2 o" n+ Q8 g4 w请问如何解决这个问题 |