多谢,我程序& P# W' h- ?7 v; w, V4 V
Methode1 Trigger调用 Trigger定义1小时出发一次+ u2 Z, z8 A5 u# A. ]6 H5 V
(old, new : boolean )
* q7 M* o' z* @is$ R( U+ Q9 j! e2 Q
do% ]2 p4 Q$ p; X9 o
if new = true then 0 [6 U; f/ U. i. b5 M* ^' ]
Tabelle1[1,1]:= time_to_num(y)/3600;
2 E( g, a9 F" t& L/ Z$ I7 [; D m:= 0;
0 z) I k; l& f9 U# w& C. R. S n:=0;
- e1 F: q0 p8 E- m) i y:=0;
6 d. e ?7 H3 K2 h6 q. U/ J end;- y$ N7 C+ |( M8 e; L
end; : j, \0 G" Q' u5 i; r+ n: {1 j/ b. f
methode2 Singleproc 输入控制调用
2 C. z' a" e" b9 S. T" _is
1 @! Z$ J& E# tdo
3 F3 i5 ~8 r+ E0 W" z n:=Ereignisverwalter.zeit;$ G- d3 l6 X6 A1 l
end;
( V3 ]8 v6 p1 u' ~( amethode3 singleproc输出控制调用
3 P& f2 a' w/ d, L Q' t( K2 Zis
L3 }, p7 I# D: y* r) gdo; z" c. m4 s, l
m:= Ereignisverwalter.zeit;9 `, J6 [* R8 ]2 o+ z
if m/=0 then 1 S) J6 h$ J! ~' V: @+ w; ]
y:=y+(m-n);
) E8 b1 r& U6 v8 |2 b6 z end;
5 O0 k1 V3 `! h: {# e0 s" f ^+ g) j2 ^' U0 W2 F' W6 K
end;7 @8 q3 y6 h, J5 I3 z; j3 `& P* [, U
m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,: d% R, ?3 d8 M9 L8 c/ f
m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。' z; _0 D5 ~6 Q/ A6 a/ s
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。
- t2 X: I0 |4 X/ M1 x$ D请问如何解决这个问题 |