多谢,我程序+ z- n4 G, Q( P
Methode1 Trigger调用 Trigger定义1小时出发一次; A F. h9 \1 j$ {- |- L
(old, new : boolean )
# [% j: V" K5 ^2 Jis
! u: M& @0 @ t" [( N- C3 W do& c$ {$ {) h w9 S# }' r7 o, U
if new = true then % D; q) U" y; _4 l8 ] {
Tabelle1[1,1]:= time_to_num(y)/3600;
" T) W# m# S8 P/ r, Q2 L& s6 Q m:= 0;
( k* O$ R' `/ G$ [6 C5 h n:=0;) ^9 X1 Z; B+ U; {& U6 Z& j
y:=0;
9 L2 c) K5 @) z2 R end;
- L( V# j; W* i1 n [ end;
0 w: N+ t0 D( J1 Nmethode2 Singleproc 输入控制调用
1 q6 k3 X5 P0 G9 Xis
& U8 U# G+ m- z4 X/ a0 U& b4 Gdo
8 J, N3 r1 o! F# T8 l7 H9 ] n:=Ereignisverwalter.zeit;
1 J; s }, D& J) \+ B- m/ Oend;1 E$ U; R6 H& l/ [$ m! o
methode3 singleproc输出控制调用
* G! p4 u* W3 F, Eis
B% Z% e. B5 i0 M2 B# V( odo
5 Y9 P& Q# e. V) |4 `" l m:= Ereignisverwalter.zeit;! t3 Q& n* \" ?1 Y- G+ f0 z# b) L
if m/=0 then ( s% w$ f+ F7 U0 `! p5 [- A. `/ {
y:=y+(m-n);9 C3 {& _+ M4 ?8 y1 x6 A
end;
9 U# Z8 M' Y( U8 [" Y! \1 x
R2 F. D+ e( G5 t9 J/ M" Tend;
' c& b4 T) G2 u1 I5 H: g7 Bm为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,
! I4 D1 g" o2 ~: K V+ J# x8 ^m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。# Z* D. c- @8 ^
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。
9 |- A6 n# N3 C" C请问如何解决这个问题 |