多谢,我程序: W8 p+ `4 Q u- K$ W, O
Methode1 Trigger调用 Trigger定义1小时出发一次; S9 o% B- G: }6 z9 Y
(old, new : boolean )
B N% X4 S3 b- p/ iis% W; O d. Y1 V B
do$ b7 w* N G* W
if new = true then
/ d D; `9 S9 F) p8 t" W Tabelle1[1,1]:= time_to_num(y)/3600;
F- `7 F( |1 q$ z2 ?' g m:= 0;# _* G U. D6 k! K. J
n:=0;
" R, ~- v, o+ y7 d1 A$ x y:=0;
( }" }- A6 T) C6 p; a( U* U end;
R1 u s% f2 w# ]; l" k end;
. a4 Q( j* q9 g) L* v# N% r' k t; Umethode2 Singleproc 输入控制调用
6 l6 Z) c7 J2 t1 kis Q/ Q- c- @4 x4 m. M
do6 }# \9 F4 \8 M( m# P
n:=Ereignisverwalter.zeit;
# n& H1 p, J* ^5 D7 m6 vend;+ {0 Y0 x7 Q9 A! p
methode3 singleproc输出控制调用& o0 W4 d: Z/ |
is; x$ S6 C6 E( {; t6 E
do* k% W+ ]) a) u8 ^: E+ G% k. ^
m:= Ereignisverwalter.zeit;9 X; |8 B0 d8 @6 k3 E
if m/=0 then
, I1 d* [' z6 I1 E9 y y:=y+(m-n);4 k+ \- d/ S7 f) n7 f2 ]. k
end;) O3 {8 H' {- d# S' \1 x
% s2 P. e" u/ S' p" h, g8 b% o# T
end;8 a Q7 B2 E& V4 S. ~
m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,
/ `) p3 x, Z$ ]; S# K8 w& V! ^m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。/ m, n w4 S) P$ M* p/ q
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。2 E1 D! D7 J% ]. G W' o
请问如何解决这个问题 |