多谢,我程序6 O1 \( A9 w! w0 _7 T ^
Methode1 Trigger调用 Trigger定义1小时出发一次% Y$ J# q9 }8 K. u% y! L
(old, new : boolean )
4 J( q- r" d, g3 w- lis" @% P2 S7 v* v7 D0 `" {
do
* s, a4 {; U8 d7 ?; \+ ~' ` if new = true then
9 c* E. e# y j: d, S) O Tabelle1[1,1]:= time_to_num(y)/3600;
' Z4 B L; d, L+ Y7 j m:= 0;
# F) Q2 S1 Z7 _ p6 ?$ t) x n:=0;
# @- K# z; C! P$ |! k y:=0;( v6 U# K2 T9 r- {
end;
* \" w8 T' \8 k, C. E. _+ g7 q9 s end;
9 ]( o& s: h& S/ Wmethode2 Singleproc 输入控制调用
+ z* X5 d" o0 g& W+ fis
$ k3 f7 U! ]6 z% Ldo4 q- P, w' f, v8 N
n:=Ereignisverwalter.zeit;
. T8 r# f) n" g; {* r, Lend;" x# n1 e1 ?/ n. i) x/ N( G& Y$ P0 Z
methode3 singleproc输出控制调用% O/ D% F9 U5 f! f
is% y8 V* h7 d7 d8 c
do+ ]# J D3 w2 K7 N0 ^
m:= Ereignisverwalter.zeit;9 i5 w0 K- B0 G) Z ]) q
if m/=0 then 1 i/ c9 G! O# O( k4 M/ q" X' ]8 H* c
y:=y+(m-n);
0 \- d% m7 w* _/ a+ Y end;6 W0 L( b: D# q+ N. h% ~8 ?
3 M; z7 i& O( Q- t8 m9 o
end;! Y3 E& _/ ^! t# e. {
m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,, p0 s3 i$ `- t* d9 }
m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。8 k" y/ m; d" L$ a' u$ g) d( O
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。/ d. @6 e, X' o2 o
请问如何解决这个问题 |