多谢,我程序4 f/ d/ i$ K8 }
Methode1 Trigger调用 Trigger定义1小时出发一次
, ], @6 Z# a4 ^6 |- C(old, new : boolean )
) }9 x9 S! _1 X" O, eis
2 Q6 L7 @, b @4 Y do( [6 O+ m0 E8 S/ w* C, f
if new = true then
" a( d! S i6 C0 Q/ c+ J Tabelle1[1,1]:= time_to_num(y)/3600;
4 ]& s& M% x' K& {4 O$ B M+ b m:= 0;
, Q1 K- w* l* B: j$ y n:=0;
) y. G6 F$ j9 g' u& ~ y:=0;
/ p& G/ b# L, J- W9 u8 F! r end;; L- Q3 {- ~1 i2 x; c+ Q
end; 2 F1 E% S/ n9 {/ j% D) X* z
methode2 Singleproc 输入控制调用
# E7 J' b* Q* {3 _4 s$ }2 Tis- }: |: s; I: G6 \# A$ ~* u
do
( i, n, a) F1 z" e4 e n:=Ereignisverwalter.zeit;
1 f! X i5 \, m5 f" s, F @$ rend;* N' `* ^' G& ~1 Q. }1 Z
methode3 singleproc输出控制调用
, v( K4 _6 [% A: r ^4 _% k1 kis
) i. H/ M8 }1 M$ }do* ]; _. _5 z- g$ d' z
m:= Ereignisverwalter.zeit;
% ?% Y: {5 o+ }7 A: ?) S if m/=0 then
# Q: F2 X% A8 A- U7 b D( M y:=y+(m-n);- C+ X1 F7 o# M! O9 F
end;
g( K5 t& l+ L: b! ~ @7 n - }: F- O9 q- u/ Y9 e3 W; g
end;7 U- T7 U. W* {
m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,
9 C$ L% r/ c- p" a1 Em-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。, G* K9 G; w/ b3 L9 N
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。/ b6 `1 F9 Z' {( g& c
请问如何解决这个问题 |