多谢,我程序+ W9 V" C( ?* K4 i! h W& X
Methode1 Trigger调用 Trigger定义1小时出发一次
+ K2 L0 q6 U0 q, O% `& j(old, new : boolean )
1 t7 R; {9 F* m3 A1 ?, Jis
, B) Y) ^+ W J9 P% I do- Q" X2 X; d: L p
if new = true then * U+ \5 ]/ d( |" ~+ S$ @& g
Tabelle1[1,1]:= time_to_num(y)/3600;7 d" U! i6 j* y6 K, U# [. w
m:= 0;( ?3 m1 v8 I% ~* I* i! m! }2 Q
n:=0;- M) }! p' w: _5 p0 }! U
y:=0;
) r5 {) C6 q' ?+ N0 I$ y/ M end;; C8 f( q% N, @
end; $ O' D$ n3 z8 M+ ?
methode2 Singleproc 输入控制调用# x8 r' I; p. N" k- S) o& R/ @6 R c
is# e# F( G( P" d8 |4 H; k
do
; y. V* O+ @* G% H( i n:=Ereignisverwalter.zeit;, S, o( z# T7 [& g R. x J
end;3 b! R# S% W( G
methode3 singleproc输出控制调用) y: |, E: C7 o; j+ ^5 o6 W K
is
4 G% c! M: U' S3 k( U' w0 xdo7 L! t" n% n; E' k( W: j
m:= Ereignisverwalter.zeit;% U3 S& A2 U: K
if m/=0 then
6 b# ]' @- a( m0 A* r" G) B y:=y+(m-n);
1 V& ?/ m( `8 M& Q6 E% ^# r7 ?" U end;
* w$ R4 S7 x7 M* ] ' m+ n! P4 p, v+ Q3 a+ o
end;
/ {6 N" Q& J+ ?8 ], Fm为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,5 t n$ n. o0 B2 e- R5 V+ D7 X
m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。
3 L) l" }1 E x+ N可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。: W" U7 F7 Y- J0 }: U9 ?
请问如何解决这个问题 |