多谢,我程序& H3 J, s9 Q p0 m# @
Methode1 Trigger调用 Trigger定义1小时出发一次
5 n& D# k: W" B" q8 \5 y) |5 _9 ?(old, new : boolean ); f3 z7 I) t q/ B, _# S
is) S/ G# g& J3 d- b2 A5 R% o) s" a+ v
do# u/ t; G7 n. D1 R$ b9 `
if new = true then * t' x1 z! W! @( L$ Q m9 w
Tabelle1[1,1]:= time_to_num(y)/3600;2 O4 A r/ S% `( ]
m:= 0; F% f, S; W: B6 y. x+ c6 G
n:=0;6 B+ Q# s- z6 R- }- P; g6 l
y:=0;6 c& c: w6 S; ]/ H
end;
; O" g+ M# O( q8 q% t; o) k end;
$ a. F/ P0 Z) W! t# D0 Mmethode2 Singleproc 输入控制调用
a3 X [! b% Q' J+ P4 y) r- G, }is2 o6 {, `- ]' U8 j+ o0 o
do l \' q0 X3 Q. w' s
n:=Ereignisverwalter.zeit;" O5 _% i/ e1 ~/ W
end;
9 P s: g% r8 M# ?methode3 singleproc输出控制调用# B- y0 v* f$ m# M. X2 S D# z, t
is
& r7 @! D; N9 s2 I4 d- Ddo+ s2 R* U' P9 i* ~! m; P! j
m:= Ereignisverwalter.zeit;
- a" K6 G) E" ?6 r6 f3 W if m/=0 then
) O+ }. B2 A! n3 k' K! B9 t6 X+ _ y:=y+(m-n);8 {5 j+ m/ i& ?0 f1 N
end;
1 c5 ?" y& Y% V
1 o7 R: T7 ]4 ~. l* lend;
( V6 g1 d! `& r' a0 xm为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,
2 A2 N" C3 y5 {6 em-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。
4 r! O, j: v+ ?9 d: I- U1 y可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。
) @( w' Y; Y: _/ t请问如何解决这个问题 |