多谢,我程序
; {% p5 G' `8 X$ R6 TMethode1 Trigger调用 Trigger定义1小时出发一次
5 ?" ?3 {0 `9 e(old, new : boolean )
8 h. x7 j4 `, x4 uis
& ~- H/ J0 Q9 V8 s( W/ M0 q" M do( }7 |( _5 @- [. L, W8 G+ {
if new = true then $ I( i1 k7 _2 m3 A/ O+ \& [
Tabelle1[1,1]:= time_to_num(y)/3600;
& D( v% \% @+ V4 s( V3 N9 K! m m:= 0;
4 N6 e0 T: }& C: r4 b- o n:=0;
5 |0 w0 Z3 g8 H y:=0;
[& V! f- V+ [5 ? end;
0 Q5 D( K/ i/ ~+ D4 L! P4 {4 I' w end;
) e6 Z9 T& Y! H( v0 pmethode2 Singleproc 输入控制调用
% _& X4 z4 F8 Fis
% _8 P: ? } ^- k0 ]# X0 c* }do3 x6 z9 N) w( G
n:=Ereignisverwalter.zeit;* O+ Z" r& m$ ^4 w8 ]1 j
end;& G5 V; U& k! m4 ^) w. Y1 E7 M0 h
methode3 singleproc输出控制调用4 }. i/ m3 L/ O. N+ R( o
is# }" d8 J- f' _ B& ~/ c1 O
do! Q7 I, m6 @2 W" s7 O; A) B) m
m:= Ereignisverwalter.zeit;8 \, r6 J- |' G! m
if m/=0 then ! r v r& l8 @- y1 Q
y:=y+(m-n);' w( w5 `, G7 m4 U8 k6 L
end;- s& B3 D. w$ s$ i+ U& j# {
o* I2 n! N- K3 [
end;! [0 ?: n9 V2 W4 ^! `
m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,
* Y7 s9 Q+ t# T9 dm-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。" @1 R& P0 x' Y/ Y/ k
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。0 j2 u3 x7 e7 V
请问如何解决这个问题 |