多谢,我程序3 A' Z7 Y3 b, ?9 i5 N) V
Methode1 Trigger调用 Trigger定义1小时出发一次
; F) p1 E& Z% ^ u" S) j(old, new : boolean )
' [, v, h8 H. p. k$ c5 s: yis) I# ^4 d, |- M( ^- V
do8 w) D W# S& f0 G+ [2 r
if new = true then
3 O g/ x9 }) d, L Tabelle1[1,1]:= time_to_num(y)/3600;0 Q' v* ^( X* m0 I; @' k/ h
m:= 0;
2 C, b! `3 }& v7 R+ Q n:=0;+ J9 }8 H$ N8 F
y:=0;
. t& i- j8 F+ @( j# n) g end;
2 D" G: h! n2 w; B4 s& M end;
; _/ m' z7 N" r6 d5 _: rmethode2 Singleproc 输入控制调用
+ I4 V1 o- y% A( o; @/ Wis4 q) J$ b+ T8 |0 T* G7 r3 r. e
do
1 y! N8 C9 r2 s- Y! p n:=Ereignisverwalter.zeit;2 W+ D. v" @$ w& {% a7 n
end; T p3 K+ `8 A1 n1 Q& F
methode3 singleproc输出控制调用
6 k. f8 t. y5 i7 Q: Bis4 d' {" S; B1 b1 H
do! E; I+ D$ w5 k5 R* o4 e8 Q
m:= Ereignisverwalter.zeit;
, J# b- {; u* U6 q( Z3 q6 N if m/=0 then 9 ~( P0 F! o' u/ \0 v5 T
y:=y+(m-n);
( O ^4 ? T; @7 i$ c6 ?8 I. J# {: s end;
+ t% {* H9 H {& S3 P9 m 8 T' h! n9 L: @
end;
. U1 c3 P9 P. M' f" |9 ]m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,
2 d6 A2 [( E9 q4 e# |6 t q) Wm-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。' ^7 p+ ~2 B+ W
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。
! m# B/ E# x( _' D5 H3 @请问如何解决这个问题 |