多谢,我程序# U7 p4 e+ p v6 c: x& U$ c
Methode1 Trigger调用 Trigger定义1小时出发一次
0 s0 ~, V$ f+ `8 ~(old, new : boolean )
/ [( O g+ K% Q* e" [3 X8 ]is5 v1 q: E4 u2 `/ V# r% w
do+ B$ C1 w8 `& _9 T
if new = true then 4 Z0 o- R1 C' s
Tabelle1[1,1]:= time_to_num(y)/3600;
5 v( ~! ^# z) u8 n' m& @ m:= 0;3 t3 t8 @6 h! E* G4 t5 \% `# J4 |
n:=0;
o* n! ?8 B; r' r% X y:=0;
6 k/ l6 P5 A) Z* j8 D' t4 A, N end;: W9 x3 _9 X$ t, y4 _1 k; q% t( x9 W
end; 7 @- ]8 @3 x0 F& G- v
methode2 Singleproc 输入控制调用& t. P! s9 h( _5 c3 t: M' z# |3 Q
is5 S: U! d# w' O7 y" `
do& K( X7 K3 k5 s: C7 [5 Y3 K9 w
n:=Ereignisverwalter.zeit;
. V F+ A) ]5 z, `7 ?1 xend;( I9 b7 g( f) Y8 n/ i J1 R
methode3 singleproc输出控制调用
$ ~- u* q9 Y. ?is4 j) |8 N" L5 S; b
do; D s9 @- ?: {3 j* K
m:= Ereignisverwalter.zeit;+ E5 e8 K1 U' Q3 P) ^* s8 s
if m/=0 then
4 H- l) @7 I; {, f y:=y+(m-n);
, ^; ]/ y# N4 X end;
8 D3 p; X# H: L9 P2 t! W; q" [ 3 S" J+ L; e. Z1 A5 @
end;! D6 o+ L1 |5 ^
m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,: r* x( d# g# ~
m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。8 B. v- ~. U0 u1 Q" w( i, T
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。
, Z$ w! d6 `0 [请问如何解决这个问题 |