多谢,我程序: ]# L. l, v+ i" ]: h7 i; ?! c
Methode1 Trigger调用 Trigger定义1小时出发一次
7 ~! I" A% f4 s/ O(old, new : boolean )
9 X7 ?( l- v2 T" j0 s( G7 zis
+ x( F+ e! j' @) C" Q# Y: \4 r do v3 g3 V- U1 z
if new = true then ; O! G$ x, M. L |# K, t% Y3 E
Tabelle1[1,1]:= time_to_num(y)/3600;! h+ F% Z4 B5 i5 \
m:= 0;
5 X2 _9 Y) Z( Y( ^8 _& L# S5 Q n:=0;
/ `) b h: a; L0 Y* S y:=0;
' [: y3 i( v0 M# Q* S1 p$ c end;' j; _! M8 T7 ?% ~5 A" A
end;
; L5 o7 _: m; E) t3 ?2 ^+ c! Vmethode2 Singleproc 输入控制调用5 ^8 q* j0 d t4 x( P
is
- h0 |7 ?% q% a: @( _ ?' I9 Sdo
0 ]$ }0 A; i& r% n" @: G+ V1 a n:=Ereignisverwalter.zeit;
# l' L$ Q9 t1 J% M4 d3 C; fend;
5 G) o( X* d+ `& c$ xmethode3 singleproc输出控制调用
+ G* P' x1 h9 _# D6 h, P! p& d, V' Uis9 l% Z! c- ]9 v3 a( `6 D
do* p& k3 c7 T0 X: f% K. g7 H
m:= Ereignisverwalter.zeit;
( _: c6 v6 O7 F7 C, V if m/=0 then 6 x/ G+ ~7 q9 a
y:=y+(m-n);
- i6 g7 h% f* B/ A7 j! b7 {# @ end; u: t" M" w) h
0 \3 c9 ?! i, M3 }: M" m# q' send;1 r1 P& N6 b7 `# `) E% P1 x, M; [- o
m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,6 `3 B) \1 l$ I7 d" O) ^
m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。: r4 {3 G: X6 n
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。
4 N" T% G5 j0 M8 E8 E2 h请问如何解决这个问题 |