多谢,我程序
8 n0 U5 W: u( i$ ~0 D# WMethode1 Trigger调用 Trigger定义1小时出发一次
* Z" z4 Q$ g& q(old, new : boolean )* ^8 }! e: A# Y, R, O& [
is# ^8 j, i5 ~, B
do7 Z+ e$ s8 x$ L* ^
if new = true then ) d& [4 x' v( ?) E
Tabelle1[1,1]:= time_to_num(y)/3600;
& o# ^; d: X8 h+ S; f; ^: U m:= 0;
/ x1 A/ W$ H6 ` n:=0;( r. H# b' @' H* J6 F; `
y:=0;
% f5 O2 A+ r+ i% X( C end;+ B0 u$ `, ]: L; {8 T) f- D3 @0 }
end;
8 | Q3 j k" umethode2 Singleproc 输入控制调用
/ k4 m; ]2 s# H8 U, `is
& F0 v) G J7 y* q' o5 C$ b' Ndo
1 q0 p; V% V8 I n:=Ereignisverwalter.zeit;4 t1 h" \4 g, A! l7 ]2 U' T
end;
4 X, u0 T' l6 q0 _methode3 singleproc输出控制调用
8 l$ a+ M1 x: Y! j& I" a' ]* h# R* |$ kis
& O9 `: X9 B+ R" zdo
9 k1 H0 {; H$ ~6 i! M6 K0 p6 l m:= Ereignisverwalter.zeit; y: _6 c" L4 U1 I! c" i6 z3 l
if m/=0 then
- A; |. S$ g/ g7 W y:=y+(m-n);% q g* N) S( m9 J6 O
end;
/ D3 B" a5 H% _8 }2 Z
+ k7 d5 n4 Z! R1 bend;1 w. }9 R" a7 H$ o Z' P9 e
m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,
0 e( G9 k3 Z+ i% @4 p# n4 Q/ ]m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。& Y* T7 N1 n1 w v& c9 c3 T
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。9 H+ [( y5 B! G% S0 f
请问如何解决这个问题 |