多谢,我程序
! t# H. e9 k6 W* F. Y' S# iMethode1 Trigger调用 Trigger定义1小时出发一次! I& H4 L5 u/ x0 D+ M
(old, new : boolean )9 N) Z4 ~4 _4 k/ y0 a& k
is
' \2 C6 j' }9 Y% h5 K do
+ w! B: g& {7 W6 _$ Q0 ?# J if new = true then # H( g" { v8 }4 ]
Tabelle1[1,1]:= time_to_num(y)/3600;
7 l: O$ r+ u. P' x. z m:= 0;8 O1 I$ N( w2 i
n:=0;" \! {6 R9 e1 E% L3 [
y:=0;
. h' b9 T1 G/ f, G6 ` [- I! y1 q4 } end;
7 _2 K4 V# e9 |- I6 j: l4 p end; 5 \1 o0 @. s7 t0 Z2 h
methode2 Singleproc 输入控制调用3 y+ k/ H' y4 k: ?
is
( o. |2 h3 ?) |/ G8 g3 J. @5 Jdo$ p- Q2 c2 j5 K& \
n:=Ereignisverwalter.zeit;
- p# H6 o, g9 N* G+ ?9 J; rend;
# y+ b4 S: M1 u' ?: l% fmethode3 singleproc输出控制调用
# O' D- q* ], y, nis- v S2 s0 Y7 j) ^( w5 @: O
do
2 c1 U7 u, y+ h' O m:= Ereignisverwalter.zeit;
) f+ ^3 h- x; Z5 ~ if m/=0 then
7 f5 h. Z% C1 ^* n y:=y+(m-n);
6 L/ u' H1 o. H, B0 d3 B3 G7 E end;$ M4 z# {1 n0 t s$ [1 Z4 ~- J- S% j
" r$ U2 {6 d. a
end;! v: r- x5 X+ k; r
m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,
* X0 S% Q% _- E( d/ I0 km-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。
9 S0 }9 ` ]* T! A; _可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。* J$ }0 \4 w6 h7 C7 ~, P
请问如何解决这个问题 |