多谢,我程序
( @0 m/ m2 ~, D# t9 Q/ PMethode1 Trigger调用 Trigger定义1小时出发一次9 R, N: ^- ^3 m
(old, new : boolean )
! a& j1 j9 d, D/ qis
8 M: |9 H; f X& ~4 R do
$ }6 \, W, X* y9 D2 A: g if new = true then 1 U* W* S7 a$ b8 O
Tabelle1[1,1]:= time_to_num(y)/3600;
6 ^) J0 D1 N5 u/ T- o7 b1 I m:= 0;3 Z, I. E( A9 _; T$ d* @ L
n:=0;
1 N0 l8 R {$ j6 ] N- [7 i ^6 l' W y:=0;
3 P, x6 i/ A. S end;
' k6 t) U3 O6 K6 [' | end; # P1 Y9 U( a6 e1 W8 Z0 d
methode2 Singleproc 输入控制调用, p% B9 r( b( N0 N4 y0 A& A
is* N9 I+ k+ P1 J% y; g& X! l
do
+ Y+ L0 A3 I* k& j n:=Ereignisverwalter.zeit;4 p0 X$ P/ x. L- @
end;
- M! N Q! T6 n. V8 S# n Xmethode3 singleproc输出控制调用
7 c) g- Z1 E. X5 N# kis; n8 p. H' A/ p/ F
do
; a. B% L2 K* G" B m:= Ereignisverwalter.zeit;7 n0 X) v, Q) `
if m/=0 then
/ t7 z. Q) R" g: v( y# b7 s7 v" H y:=y+(m-n);% k3 m; S* ?) P- j# q) U8 h
end;
' `% q2 q8 G4 ^& @5 d + C+ q+ a9 H% T( b8 l# y, b4 N
end;
9 }/ e9 M4 e: g- im为物件从singleproc输出时的时钟试点,n为物件输入到singleproc是的时钟试点。m-n为singleproc的工作时间,8 v0 k* e* h& m3 G+ i4 a
m-n的值赋给y一直累加知道trigger调用将y除以3600秒得出效率,之后y赋0值,这是我的思路。
0 n9 Y8 e, i+ x. ^3 E7 ~可是有时m-n超出3600秒,我查了一下,程序好像先记录m后记录n,当机器休息完m记录的是机器休息后的时点,而n还停留在休息前,这样计算y:=y+(m-n)之后结果就比正常的大,会超出3600,出现效率108%。
/ L0 U, H, _+ i% ]5 b请问如何解决这个问题 |