4.1 ( < ). - . , 2.2. 0 = 0,001 .
. , 4 , ,
, , , .
(4.3) :
num=[0.00236 0.059 1];
den=[0.000155 0.0389 0];
fs=1000;
[numd, dend]=bilinear(num, den, fs)
numd =
13.6988 -27.0536 13.3606
dend =
1.0000 -1.7770 0.7770
. . 4.6.
. 4.6.
[1].
:
- :
- :
num=[13.6988 -27.0536 13.3606];
den=[1.0000 -1.7770 0.7770];
[A, B, C, D]=tf2ss(num, den)
A =
1.7770 -0.7770
1.0000 0
B =
C =
-2.7108 2.7166
D =
13.6988
; ; ; .
4.2. . . (). . CoDeSys. vz 2 = 1.
. Simulink (. 4.7).
. 4.7.
Discrete State-Space, Discrete. . 4.8.
. 4.8. Discrete State-Space
Zero-Order Hold , u . Switch , ∆ u Ω . Pulse Generator 0.
Zero-Order Hold Sample time 0 (. 4.9).
|
|
. 4.9. Zero-Order Hold
Pulse Generator Period 0 (. 4.10).
. 4.10. Pulse Generator
Step , Step1 . . 4.11 . 0,5 .
Ω(t), /
t, c
. 4.11.
Ω(t), /
t, c
. 4.12.
Step , Step 1 . . 4.12.
. . 4.11 Ωmax = 166 / Ω = 157 /.
.
0,055 .
.
. 4.12 , ΔΩ 0,5 . , . .
W (s) :
num1=[0.00236 0.059 1];
den1=[0.000155 0.0389 0];
sys1=tf(num1, den1);
num2=[22];
den2=[0.004 1];
sys2=tf(num2, den2);
num3=[0.863];
den3=[0.00236 0.059 1];
sys3=tf(num3, den3);
num4=[0.064];
den4=[0.008 1];
sys4=tf(num4, den4);
sys5=sys1*sys2*sys3*sys4
sys5 =
0.002868 s^2 + 0.07169 s + 1.215
--------------------------------------------------------------------------------------
1.171e-11 s^6 + 7.62e-09 s^5 + 1.656e-06 s^4 + 0.0001316 s^3 + +0.002917 s^2 + 0.0389 s
z W (z):
num=[0.002868 0.07169 1.215];
den=[1.171e-11 7.62e-09 1.656e-06 0.0001316 0.002917 0.0389 0];
fs=1000;
[numd, dend]=bilinear(num, den, fs)
numd =
1.0e-04 *
0.113794412337498 0.230445490219111 -0.105176807885243
-0.449273886999890 -0.119222096426341 0.219209259388897 0.110985354633275
dend =
1.000000000000000 -5.412175658119320 12.177351665884430
-14.579027775916543 9.794918887321495 -3.501280381059882 0.520213261889818
υ- (4.9)
.
syms a b;
a=(1+b)/(1-b);
simplify(((0.113794412337498*a^6+0.230445490219111*a^5-0.105176807885243*a^4-0.449273886999890*a^3-0.119222096426341*a^2+0.219209259388897*a+0.110985354633275)*1.0e-04)/(1.000000000000000*a^6-5.412175658119320*a^5+12.177351665884430*a^4-14.579027775916543*a^3+9.794918887321495*a^2-3.501280381059882*a+0.520213261889818))
|
|
ans =
(1840027*b^6 - 479978*b^5 - 5999915*b^4 - 2879852*b^3 + +259125983100239917*b^2 + 3238623038240070*b + +27444045040019)/(40000*(423202965422690413*b^6 + +137694560056400434*b^5 + 14962086053372643*b^4 + +594508008642556*b^3 + 6588829259875*b^2 + 43933057586*b - 19))
:
num=[1840027 -479978 -5999915 -2879852 259125983100239917 3238623038240070 27444045040019];
den=[40000*423202965422690413 40000*137694560056400434 40000*14962086053372643 40000*594508008642556 40000*6588829259875 40000*43933057586 -40000*19];
bode(num, den)
. 4.13.
. 4.13.
W (b), υ- . υ- , , , , -, .., .
, . 360 360. . 4.13 360 - W (s) (. 3.12).
- () :
num=[1840027 -479978 -5999915 -2879852 259125983100239917 3238623038240070 27444045040019];
den=[40000*423202965422690413 40000*137694560056400434 40000*14962086053372643 40000*594508008642556 40000*6588829259875 40000*43933057586 -40000*19];
nyquist(num, den)
. 4.14.
w, c .
.
w = 0,015 / (At frequency) (. . 4.14), (Phase Margin).
,
.
. 4.14. -
wπ , .
.
, . wπ = 0,056 /, (. . 4.16).
, , .
154 CoDeSys, , (). , CoDeSys (. 4.15). ( ) ( ).
PROGRAM PLC_PRG
VAR_INPUT
in:REAL;
END_VAR
VAR_OUTPUT
out:REAL;
END_VAR
VAR
x1: REAL:=0; x2: REAL:=0; x12: REAL:=0;
x22: REAL:=0; Urs: REAL:=0; dU:REAL:=0;
|
|
END_VAR
dU:=in;
x1:=1.7770*x12-0.7770*x22+dU;
x2:=x12;
Urs:=-2.7108*x12+2.7166*x22+13.6988*dU;
out:=Urs;
x12:=x1;
x22:=x2;
. 4.15.
CoDeSys
, . 4.15 (REAL ), , .
( dU:=in). . (Urs) ( out:=Urs) . , .
, . 4.16.
. 4.16.
CoDeSys
- , t = 0 (, ), , ( ). -
1. .
2. - .
3. .
4. .
5. Z- υ- MatLab.
6. .
7. CoDeSys.
1. .
2. .
3. .
4. .
5. .
6. .
7. - .
8. .
9. Simulink.
10. MatLab.
5