多谢,我程序
4 }3 X+ C& v" ]& Q: ]+ p( `Methode1 Trigger调用 Trigger定义1小时出发一次
! N* R8 w4 V: H6 Y(old, new : boolean ), |' R# N4 M" u
is# e' T' }; @" B$ P
do/ d. d8 C8 q3 o7 B Z8 I! \0 C) s
if new = true then
8 f y" {+ o% i Tabelle1[1,1]:= time_to_num(y)/3600;( P& B4 w9 h9 Z
m:= 0;
: z$ [9 Y( \0 w9 S* I n:=0;, j- H1 s6 \7 b
y:=0;) t7 L& h. \3 ]( J7 F! `
end;: T/ R9 l6 R8 u- |; X+ @/ W5 v g
end; ( g: ^( P" _5 i. s' g r& u6 m
methode2 Singleproc 输入控制调用; k h7 e0 B( R. |
is7 e" t6 v: r- Q$ c/ f
do+ x4 X; `. U# D/ a) K0 D% T6 J
n:=Ereignisverwalter.zeit;4 p9 `. J n+ J+ |
end;$ T2 b1 P! ~. ^6 U
methode3 singleproc输出控制调用
) u. s7 W2 e. S1 Nis
7 R+ R6 K" K9 Ydo) K! J, F/ n$ ]; j& ]1 ]6 ^
m:= Ereignisverwalter.zeit;
! ^0 j3 u5 p/ ^; W2 _8 k8 F if m/=0 then , }" d7 g5 K8 k7 q
y:=y+(m-n);/ G$ z8 _! y; E+ ?- d6 o! S
end;$ |. o& R/ f* W# h0 x8 C; k
7 d- V% [8 k% C, a" I9 f3 `4 [
end;; }0 O: F' C# n: i
m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,
/ I) [! \0 \% mm-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。0 A" y4 Q. ` |; W5 j
可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。6 w) Q" J$ _* j# D' F* S' x( R
请问如何解决这个问题 |