多谢,我程序7 G9 F9 \4 q2 Y5 m8 h
Methode1 Trigger调用 Trigger定义1小时出发一次
$ S$ G+ ^, B$ u8 W/ k(old, new : boolean )) z1 K8 s. B) Y8 @
is, m+ R* r. d3 ]8 U7 [9 N8 M
do
1 d: o1 n: Z' U if new = true then
, n8 B ]; z: C) H; p Tabelle1[1,1]:= time_to_num(y)/3600;9 C; G+ ~! u! V: z5 E9 Z
m:= 0;
% n" ]0 o4 @: \ b, o n:=0;
- g% A5 |6 @) s. [' H y:=0;. t5 l6 G, P2 y; J. _2 Z ] I
end;6 ^$ r# g6 Q* d5 }
end; ( y5 u5 Z; l* b0 o7 q; _" a9 K7 M
methode2 Singleproc 输入控制调用
7 b0 L% c- o( O0 V4 ?* J' F, sis
4 A# p4 M8 Z9 pdo' v+ | w& z% G4 w/ h
n:=Ereignisverwalter.zeit;' D; P% V# H6 j: _/ g7 l
end;8 t- _9 v5 t4 H- X2 ]% u
methode3 singleproc输出控制调用
9 a6 k, x6 p. ^) n- J4 ^+ ^' s9 bis
' n" b v# Q. S# Z+ [2 L" _do
1 c8 L) ]/ L& z$ p6 ~3 U- f& T m:= Ereignisverwalter.zeit;
- T' T& U6 \# s if m/=0 then
3 W/ g0 X" @$ o5 ]/ S& X) k9 x6 ` y:=y+(m-n);
8 R, d/ n5 i' j6 n, D& i end;0 B+ I2 l2 I; f# q4 M3 r3 ~& V
3 n( G) A5 Y( Q2 W$ U7 y4 F$ cend; _( o. {* ^& R2 J
m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,! [5 i# I! f. {$ }. r' F6 B* P$ }2 P( Y
m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。
8 u% G) d+ t8 W3 n# G可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。
, E% }4 ?- Y' z k# r% N" R( U* ?请问如何解决这个问题 |