多谢,我程序' J# M, ^: u( ]4 d J' ^
Methode1 Trigger调用 Trigger定义1小时出发一次; j- j% I5 J6 Q: A, \
(old, new : boolean )( N/ u' Z: A% t$ E
is: M8 f$ r2 i, @ ]! \ Y+ T
do
% ^1 p* v8 j) W7 ^# {9 U if new = true then
0 I) c) g' t( j& v: p; R% Q1 A Tabelle1[1,1]:= time_to_num(y)/3600;
- q: z" S$ o! l8 a3 |, `# D3 T4 m m:= 0;- J1 O0 ~) @7 j4 i/ m8 ]6 N
n:=0;4 A2 A3 _" O. Z: ~7 z
y:=0;7 l- l- m& y9 T b9 K4 n/ D+ b
end;* M; B' U' q. x& Y" G
end;
+ l8 \, D4 R& r8 H- kmethode2 Singleproc 输入控制调用; J6 X5 S- U4 o3 Z8 B8 O
is
0 _$ R# E6 e# ?" Cdo! Y+ b) v9 X5 B5 Y! F
n:=Ereignisverwalter.zeit;7 r" h( `6 A$ { [
end;
% P# j& X* B H5 l3 a" Z% cmethode3 singleproc输出控制调用9 P, F5 J* q% `
is4 Z) q% y) A% B
do
% m4 X) O2 p4 _/ y* ]5 w; a m:= Ereignisverwalter.zeit;/ r0 f$ |" U; ^3 ^: @9 G
if m/=0 then
( g; A- d' X6 S3 @: @ y:=y+(m-n);
9 x5 J) T( l- b. \ end;7 S2 a. z3 }+ x) {2 k
1 [6 |$ ]6 R: v( X8 f& k* @
end;
8 u e8 [* E9 X! Q4 }, O: E( om为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,
8 c6 I) M; y6 w' z, Bm-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。! p0 b3 l; ~( C) Q- m& d
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。% Y X* {2 ]0 I0 p) M( W/ q
请问如何解决这个问题 |