多谢,我程序: A; r0 D5 p; u2 t4 a2 g/ _( L, W; E
Methode1 Trigger调用 Trigger定义1小时出发一次
( L1 b9 I& n; z, R# v& s(old, new : boolean )4 B' c/ `% b& G/ ] k' l
is
0 C3 Q8 u3 e6 \9 E do
1 h4 l& i8 n% J, [$ Z- ]* m if new = true then
4 U+ r6 i; r3 r w Tabelle1[1,1]:= time_to_num(y)/3600;" i x: @ c8 S) z
m:= 0;
" j9 p- m) u! S- {, G6 ^* r+ G, r/ R n:=0;2 e& j- l: j8 L! c- D1 G
y:=0; x8 }- \6 J& l/ F! {4 f
end;1 z9 _+ u1 H& v. v4 ^$ a# \
end; * ]! `% b w% o& D- |# E" X1 T9 `
methode2 Singleproc 输入控制调用
2 U' \7 d1 L" Mis0 Z: @- X( K, E: T- p/ s% c. h, C
do
" I- C# H, J Q p6 g9 c. r n:=Ereignisverwalter.zeit;. o% W, n& d$ \3 P7 S R
end;
' A' [. i Z. `$ F; O7 p- T) U dmethode3 singleproc输出控制调用
. F" f) I) m* a- vis
4 l. B$ t& @# D( W0 m O, ndo8 P8 Q, n) s1 p' A2 s0 U
m:= Ereignisverwalter.zeit;
$ X# S$ d/ q- M6 m- w% [9 z: Y if m/=0 then
^. s& }6 I: n" @ j8 u y:=y+(m-n); H# [* v+ x8 D$ S! V Q8 R! I' M
end;: S. a' D, X+ v. F; x* r( {
+ n7 ~5 ` F$ I
end;# K6 N, D$ n7 c/ {; L/ F
m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,
- _7 j/ e8 u- h- A8 Um-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。
& Z# M8 i/ q3 w3 n) M# |可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。4 z- u; @# O* T: U( r" w0 T5 P4 h
请问如何解决这个问题 |