多谢,我程序
* B( B. p' K7 }5 e5 I3 C; c" N! iMethode1 Trigger调用 Trigger定义1小时出发一次4 I) H& i/ E' l- a& y- J" X
(old, new : boolean )) Z0 u8 \5 M5 }, D, ^& w& j" L
is
; A" _, J* b% ~6 d! C do* S; X% L/ N; P; ]! s1 c5 o
if new = true then
" s$ e! k# e, L0 R c Tabelle1[1,1]:= time_to_num(y)/3600;& A6 Q1 ?" D4 G
m:= 0;5 O. e3 Z. t# f7 ?
n:=0;
4 E' l7 D9 e6 o1 i% i y:=0;
, ?8 ? q4 c& l5 o5 D7 w end;; T8 s( K$ F' e; I4 ~
end; / N: Y3 o& E+ J5 z* | o7 N
methode2 Singleproc 输入控制调用
8 b0 g$ s, T5 p, c5 eis7 `1 e4 C* s: z9 n9 C% D8 l
do
! b# ]& F3 W' R, f n:=Ereignisverwalter.zeit;' g8 Q: _7 D5 _! w; `3 @+ F$ w
end;0 F7 M6 M+ p+ N
methode3 singleproc输出控制调用
: C) T* p1 [# P- q) ~" \is
9 ?. p! A6 j3 H1 p& _0 kdo9 ?; o: k3 y/ R! H7 `( n; x
m:= Ereignisverwalter.zeit;
! p- r* G/ w4 S) [( D5 E0 \ if m/=0 then : H) p! S" x/ |
y:=y+(m-n);/ _8 ]* c& c& T/ e- d" {) l% P
end;8 v- j3 g" q( k; H
) f" v# u6 h7 H: D2 E
end;, ]& B0 ^7 y; C O/ u- q. M" ~
m为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,- r7 b6 v; C) {; G
m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。
" Z: n9 U, d& Q) v+ c/ I可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。
$ ?. D2 H- n/ s# ? d; p请问如何解决这个问题 |