多谢,我程序
' M' l" m6 |* W# S; n4 C3 _9 F7 aMethode1 Trigger调用 Trigger定义1小时出发一次
/ \$ \' s8 p* A, p5 K(old, new : boolean )
q4 }- U6 W, v9 o2 b* k, F0 fis
8 R9 z, r1 d1 a: Z2 `- ^ do; q$ X7 u% b8 D( [
if new = true then
! j$ c& s- X9 y4 h( b9 R* l Tabelle1[1,1]:= time_to_num(y)/3600;
+ q& V3 n2 V6 S- M# |( ^6 W, M4 `4 Q m:= 0;$ E5 ~7 e/ \( z+ h5 ^1 } W
n:=0;
% }2 H7 ]' Z7 g: B) U% M9 k- L y:=0;- h+ o1 l6 L- C. C1 b6 _8 z
end;& d% q( ]3 G& A1 k3 e* y
end;
: z$ M# r# d' Umethode2 Singleproc 输入控制调用, s o0 F) f5 T; p$ `% U
is
( o" W$ I1 m3 ^" I' O& f Xdo% F* `# f6 C$ y/ j8 J7 }
n:=Ereignisverwalter.zeit;0 r! V$ u7 h, J5 S. k2 R/ n
end;
; J, k% @2 M' ^: L3 }6 ^methode3 singleproc输出控制调用7 k8 c& w0 g' {, @ f
is
8 c; v( M5 x6 ldo
& k2 Y, ?9 {# h+ g' Z m:= Ereignisverwalter.zeit;
# B, b8 ~& @/ S7 ]' A$ r) x if m/=0 then
* s* G1 N% ^% B* j: R" E* z y:=y+(m-n);0 ~6 l* n5 m6 q/ m; z# M
end;
% B6 {# I1 L: R ; D" T. z' z1 }- O, B# G3 U* c
end;9 d) b: h: ~: c
m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,
1 d. y' _9 g- r5 rm-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。9 t, a( D m1 z
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。% j+ r3 t% u4 f2 E* z
请问如何解决这个问题 |