多谢,我程序
% d& i1 A# \! SMethode1 Trigger调用 Trigger定义1小时出发一次4 I* g- S5 Y7 Y. `- N2 t
(old, new : boolean )
9 C3 w# J. q. j* d) w* wis
8 P7 X/ J y5 Z0 C: S& l do3 R2 O0 X6 @/ [; T6 [
if new = true then : [" c/ P9 Y$ \5 d: v( T( ?
Tabelle1[1,1]:= time_to_num(y)/3600;8 _: y: Q& ?, ~1 |
m:= 0;
! R) h. O1 V3 _6 ^/ Q& ]2 B, K5 c& B n:=0;; A3 d0 n8 H% C9 r9 K
y:=0;+ e8 h3 Z9 z2 `4 ]3 N
end;
& K/ ~ ?: d9 O6 F end;
?% y+ O6 ?) O( x$ Y; imethode2 Singleproc 输入控制调用
* l0 C* Q/ W+ ^2 [* \6 Ois2 n4 Z8 ^. ^( w. ^7 @5 R
do
2 V+ |4 K% h& d7 G+ \ n:=Ereignisverwalter.zeit;
, ^: _5 ~( M7 a" P' Nend;
, j/ r6 J0 a3 `, [9 i' Mmethode3 singleproc输出控制调用
" L g$ K% T- H6 y( Nis8 @. P7 Q, p: d9 i; `8 b/ f; R+ R
do
' |- \8 @. Q* m. U- \% a: @ m:= Ereignisverwalter.zeit;
- r. I$ R/ i- R' Z& g1 R if m/=0 then 1 M, s7 n5 F4 c' t" x
y:=y+(m-n);( ~9 t" E8 W' x' S4 |7 N" {
end;, q$ t0 ~' n2 j+ p& ~
1 B, k# R1 W$ ?( f
end;: G" s/ C9 d4 z2 U6 C' Q- U' `
m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,
8 ?5 x6 w; y J1 ?4 K! C- t$ Gm-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。
+ C5 h) p- E6 L' S/ A可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。8 i1 B* u( V2 U* k( z' ^; N6 _
请问如何解决这个问题 |