Uploaded by svs14111

kp ddesign

advertisement
© К. Поляков, 2020
Библиотека ddesign.sci для Scilab
Версия 1.1 от 19.02.2023
Общее описание ...........................................................................................................................2
с2d ...................................................................................................................................................3
сwiener ............................................................................................................................................4
dcgain...............................................................................................................................................5
dnorm ..............................................................................................................................................6
mindeadbeat ...................................................................................................................................7
dkalman ...........................................................................................................................................9
dwiener ..........................................................................................................................................10
factorzeta .......................................................................................................................................11
h2reg ..............................................................................................................................................12
mindeadbeat .................................................................................................................................14
separzeta .......................................................................................................................................15
sfactor ............................................................................................................................................16
sfactorzeta .....................................................................................................................................17
showstep........................................................................................................................................18
step ................................................................................................................................................20
tf.....................................................................................................................................................22
ss ....................................................................................................................................................24
z2zeta .............................................................................................................................................27
© К. Поляков, 2020
Общее описание
Библиотека ddesign.sci – это набор функций для среды Scilab (www.scilab.org) для
анализа и синтеза дискретных и цифровых систем управления. Для того чтобы
использовать функции библиотеки в своём скрипте, нужно выполнить файл
ddesign.sci, вызвав функцию exec и указав адрес файла:
exec("E:\ddesign.sci");
Можно указать и относительный адрес. Если файл ddesign.sci находится в том же каталоге,
что и скрипт с основной программой, нужно выполнить следующие команды:
path = get_absolute_file_path( "<имя файла>.sce")
chdir(path)
exec("ddesign.sci");
Здесь <имя файла> нужно заменить на название файла, в котором записан скрипт.
Сначала определяется абсолютный путь к этому файлу, затем командой chdir этот путь
устанавливается как текущий каталог. Последняя строка загружает файл библиотеки.
© К. Поляков, 2020
с2d
Dsys = c2d ( sys, T )
дискретизация непрерывной системы методом фиктивного квантования
Параметры
sys
модель непрерывной системы в формате передаточной функции или пространства
состояний
T
интервал квантования
Результаты
Dsys
дискретная модель системы в том же формате, в котором была исходная модель
Пример использования
F = syslin( "c", 1, %s*(10*%s+1) );
T = 1;
DF = c2d ( F, T )
DF =
0.0467884 + 0.0483742z
-------------------------2
0.9048374 - 1.9048374z + z
© К. Поляков, 2020
сwiener
[F,sigma,Fu,sigmaU] = cwiener( Sx, Sn )
линейный стационарный непрерывный фильтр Винера
Параметры
Sx
Sn
спектральная плотность полезного сигнала, рациональная функция от переменной 
или s
спектральная плотность шума, рациональная функция от переменной  или s
Результаты
F
оптимальный устойчивый фильтр Винера, рациональная функция от s
sigma
дисперсия ошибки фильтрации при использовании оптимального устойчивого
фильтра Винера
Fu
оптимальный неустойчивый фильтр Винера, рациональная функция от s
sigmaU
дисперсия ошибки фильтрации при использовании оптимального неустойчивого
фильтра Винера
Пример использования
Sx = syslin( "c", -4, %s^2-4 );
Sn = syslin( "c", -144, %s^2-225 );
[Copt,Dopt,Cu,Du] = cwiener ( Sx, Sn )
Copt =
1.336 + 0.0891s
----------------3.158 + s
Dopt =
0.706
Cu =
2
- 6.081 + 0.0270s
----------------2
- 9.973 + s
Du =
0.6161954
© К. Поляков, 2020
dcgain
g = dcgain ( sys )
статический коэффициент усиления системы
Параметры
sys
модель непрерывной или дискретной системы в формате передаточной функции,
«нули-полюса» или пространства состояний
Результаты
g
статический коэффициент усиления системы
Пример использования
F = syslin( "c", 1, (%s+1)*(10*%s+1) );
g1 = dcgain( F )
g1 =
1.
ssF = tf2ss( F );
g2 = dcgain( ssF )
g2 =
1.
G = syslin( "d", %z - 0.8, 10*%z - 1 );
g3 = dcgain( G )
g3 =
0.0222222
© К. Поляков, 2020
dnorm
n = dnorm ( F )
H2-норма дискретной системы
Параметры
F
дискретная модель в пространстве состояний или передаточная функция
Результаты
n
H2-норма дискретной системы = среднеквадратическое отклонение сигнала выхода
при действии на вход единичного белого шума
Пример использования
F = syslin( "d", 0.2, %z-0.5 );
N = dnorm( F )
N =
0.231
Fss = tf2ss ( F );
Nss = dnorm( Fss )
Nss =
0.231
© К. Поляков, 2020
mindeadbeat
[a0,a1,b] = ddesign2dof ( D, M )
[a0,a1,b] = ddesign2dof ( D, M, nInt )
[a0,a1,b] = ddesign2dof ( D, M, nInt, alpha )
проектирование дискретного регулятора с двумя степенями свободы по эталонной
модели
Параметры
D
дискретная модель объекта управления – рациональная функция от переменной 
M
дискретная эталонная модель – рациональная функция от переменной 
nInt
количество интеграторов, которые нужно добавить в состав регулятора (по
умолчанию 0)
alpha
сдвиг области устойчивости: если это значение задано, все корни, для которых
Re(1/) > –, относятся к неустойчивой части
Результаты
a0, a1, b
полиномы регулятора с двумя степенями свободы, функции переменной 
Пример использования
P = syslin( "c", 0.1, %s*(10*%s+1) );
T = 1;
D = ss2tf ( dscr(P,T) );
Dzeta = horner( D, 1/%z );
Wm = syslin( "c", 1, %s^2 + 1.5*%s + 1 );
WmZ = ss2tf( dscr(Wm, T) );
WmZeta = horner( WmZ, 1/%z );
[a0,a1,b] = ddesign2dof(Dzeta, WmZeta)
a0 =
239.661 - 140.924z
a1 =
61.655 + 37.082z
b =
1 + 0.967z
C0zeta = syslin( "d", a0, b )
C0 = horner( C0zeta, 1/%z )
C0zeta =
239.661 - 140.924z
------------------1 + 0.967z
C0 =
© К. Поляков, 2020
- 140.924 + 239.661z
---------------------0.967 + z
C1zeta = syslin( "d", a1, b )
C1 = horner( C1zeta, 1/%z )
C1zeta =
61.655 + 37.082z
---------------------1 + 0.967z
C1 =
37.082 + 61.655z
---------------------0.967 + z
© К. Поляков, 2020
dkalman
[L,P] = dkalman ( A, B1, C, Rw, Rksi )
линейный стационарный дискретный фильтр Калмана
Параметры
A, B1, C
матрицы модели системы в пространстве состояний
x[k+1] = A*x[k] + B*u[k] + B1*w[k]
y[k] = C*x[k] + [k]
где w[k] и [k] независимые дискретные белые шумы
Rw
ковариационная матрица возмущения w[k]
Rksi
ковариационная матрица шума измерения [k]
Результаты
L
матрица усиления стационарного дискретного фильтра Калмана
P
апостериорная ковариационная матрица ошибки – решение уравнения Риккати
Пример использования
A = [1 0;
0 1];
B1 = [1; 0.1];
C = [2 1;
1 2];
Rw = 0.1;
Rksi = [1 0
0 2];
[L,P] = dkalman( A, B1, C, Rw, Rksi )
L =
0.2064320
0.0589806
0.0206432
0.0058981
P =
0.1983010
0.0198301
0.0198301
0.0019830
© К. Поляков, 2020
dwiener
[F,sigma,Fu,sigmaU] = dwiener( Sx, Sn )
линейный стационарный дискретный фильтр Винера
Параметры
Sx
спектральная плотность полезного сигнала, рациональная функция от переменной z
Sn
спектральная плотность шума, рациональная функция от переменной z
Результаты
F
оптимальный устойчивый фильтр Винера, рациональная функция от переменной z
sigma
дисперсия ошибки фильтрации при использовании оптимального устойчивого
фильтра Винера
Fu
оптимальный неустойчивый фильтр Винера, рациональная функция от переменной
z
sigmaU
дисперсия ошибки фильтрации при использовании оптимального неустойчивого
фильтра Винера
Пример использования
Sx = syslin( "d", -0.04*%z, ..
0.8*%z^2 - 1.64*%z + 0.8 );
Sn = syslin( "d", -0.36*%z, ..
0.2*%z^2 - 1.04*%z + 0.2 );
[Copt,Dopt,Cu,Du] = dwiener ( Sx, Sn )
Copt =
- 0.0353992 + 0.1769962z
---------------------- 0.6938023 + z
Dopt =
0.0739848
Cu =
2
0.0270270 - 0.1405405z + 0.0270270z
----------------------------------2
1 - 2.1351351z + z
Du =
0.0650791
© К. Поляков, 2020
factorzeta
[ps,pu] = factorzeta ( p, alpha )
факторизация полинома от переменной 
Параметры
p
полином от любой переменной или последовательность коэффициентов
alpha
параметр сдвига области неустойчивости: если это значение задано, все корни, для
которых Re(1/) > –, относятся к неустойчивой части
Результаты
ps
устойчивый сомножитель (полином или последовательность коэффициентов
полинома), все его корни находятся вне единичного круга (при  = 0)
pu
неустойчивый сомножитель (полином или последовательность коэффициентов
полинома) , все его корни находятся внутри единичного круга (при  = 0)
Пример использования
p = (%z +
[ps,pu] =
ps =
1.9 +
pu =
– 0.5
1.9)*(%z – 0.5)
factorzeta( p )
z
+ z
alpha = 0
[ps,pu] = factorzeta( p, alpha )
ps =
1
pu =
2
- 0.95 + 1.4z + z
p = [-0.2 -1.9 1]
[ps,pu] = factorzeta( p )
ps =
- 2.
1.
pu =
0.1
1.
© К. Поляков, 2020
h2reg
[K, H2norm,W] = h2reg ( sys, o2, i2, options )
синтез H2-оптимального регулятора для непрерывной или дискретной стандартной
системы
Параметры
sys
модель стандартной системы в форме передаточной функции или пространства
состояний
o2
количество выходов второго блока (количество измеряемых сигналов); по
умолчанию o2=1
i2
количество входов второго блока (количество сигналов управления); по умолчанию
i2=1
options
опции – структура, которая может включать следующие поля:
options.tol – допустимая относительная ошибка (по умолчанию 10–4)
options.method – метод синтеза:
'sa' – формулы М. Сафонова и Р. Чанга (строго правильный регулятор)
'ch' – формулы Б. Чена и Б. Фрэнсиса (правильный регулятор), только для
дискретных систем
по умолчанию для дискретных систем выбирается метод 'ch', а для
непрерывных возможен только метод 'sa'
Результаты
K
H2-оптимальный регулятор – модель в пространстве состояний
H2norm
H2-норма передаточной функции оптимальной замкнутой системы
W
модель оптимальной замкнутой системы в пространстве состояний
Пример использования
P = syslin( 'c', 0.1, 10*%s^2+%s );
Fw = syslin( 'c', 0.5, 1 )
rho = 1
sys = [-P*Fw 0 -P
0 0 rho
-P*Fw -Fm -P];
[Copt,H2norm,Wss] = h2reg ( sys );
Copt = ss2tf( Copt )
disp( H2norm, "H2norm = ")
W = ss2tf( Wss )
Copt =
0.05 + 0.428s
------------------------2
© К. Поляков, 2020
0.0770 + 0.405s + s
H2norm =
0.0449
W =
column 1
2
- 0.000385 - 0.00202s - 0.005s
---------------------------------------2
3
4
0.0005 + 0.0120s + 0.117s + 0.505s + s
- 0.00025 - 0.00214s
---------------------------------------2
3
4
0.0005 + 0.0120s + 0.117s + 0.505s + s
column 2
0.00005 + 0.0004281s
---------------------------------------2
3
4
0.0005 + 0.0120s + 0.117s + 0.505s + s
2
3
- 0.0005s - 0.00928s - 0.0428s
---------------------------------------2
3
4
0.0005 + 0.0120s + 0.117s + 0.505s + s
Fx = syslin( 'd', 0.2, %z-0.8 );
Fn = syslin( 'd', 0.6, %z-0.2 );
sys = [-Fx 0 1;
Fx Fn 0];
[Copt,H2norm,W] = h2reg ( sys )
Copt = ss2tf( Copt )
W = ss2tf( W )
Copt =
- 0.0354 + 0.177z
--------------- 0.694 + z
H2norm =
0.272
W =
- 0.164
0.106
------------- ------------- 0.694 + z
- 0.694 + z
© К. Поляков, 2020
mindeadbeat
[C,E] = mindeadbeat ( D, R )
[C,E] = mindeadbeat ( D, R, alpha )
проектирование дискретного регулятора с минимальным временем переходного
процесса
Параметры
D
дискретная модель объекта управления – рациональная функция от переменной 
R
изображение входного сигнала – рациональная функция от переменной 
alpha
сдвиг области устойчивости: если это значение задано, все корни, для которых
Re(1/) > –, относятся к неустойчивой части
Результаты
С
E
передаточная функция регулятора от переменной 
изображение сигнала ошибки от переменной 
Пример использования
P = syslin( "c", 0.1, %s*(10*%s+1) );
T = 1;
D = ss2tf ( dscr(P,T) );
Dzeta = horner( D, 1/%z );
R = syslin( "d", %z, %z-1 );
Rzeta = horner( R, 1/%z );
[Czeta,Ezeta] = mindeadbeat(Dzeta, Rzeta)
C = horner( Czeta, 1/%z )
Czeta =
- 1 + 0.9048374z
---------------------- 0.0048374 - 0.0046788z
Ezeta =
1
C =
0.9048374 - z
--------------------- 0.0046788 - 0.0048374z
© К. Поляков, 2020
separzeta
[Fs,Fu] = separzeta ( S )
правильная сепарация рациональной функции от переменной 
Параметры
S
скалярная рациональная функция от переменной 
Результаты
Fs
устойчивая рациональная функция, все её полюса находятся вне единичного круга
Fu
строго правильная неустойчивая рациональная функция, все её полюса находятся
внутри единичного круга, степенно числителя строго меньше степени знаменателя
Пример использования
n = %z^2 + 0.5*%z - 0.1
d = (%z + 1.9)*(%z - 0.5)
S = syslin( "d", n, d )
[Fs,Fu] = separzeta( S )
Fs =
0.8333333 + z
------------1.9 + z
Fu =
0.1666667
--------- 0.5 + z
© К. Поляков, 2020
sfactor
Fs = sfactor ( S )
спектральная факторизация спектральной плотности от переменной s или z
Параметры
S
скалярная спектральная плотность, для непрерывных ситсем должно выполняться
равенство S(s) = S(–s), для дискретных – S(z) = S(z–1)
Результаты
Fs
устойчивая рациональная функция, для непрерывных систем все её полюса
находятся в левой полуплоскости, для дискретных – вне единичного круга
Пример использования
Sn = syslin( "c", -144, %s^2-225 );
Fs = sfactor ( S )
Fs =
12
-----15 + s
S = syslin( "d", -0.36*%z, ..
0.2*%z^2 - 1.04*%z + 0.2 );
Fs = sfactor ( S )
Fs =
0.6z
------ 0.2 + z
© К. Поляков, 2020
sfactorzeta
Fs = sfactorzeta ( S )
спектральная факторизация спектральной плотности от переменной 
Параметры
S
скалярная спектральная плотность от переменной , такая что S() = S(–1)
Результаты
Fs
устойчивая рациональная функция, все её полюса находятся вне единичного круга
Пример использования
S = syslin( "d", -0.36*%z, ..
0.2*%z^2 - 1.04*%z + 0.2 );
Fs = sfactorzeta ( S )
Fs =
0.6
------1 - 0.2z
© К. Поляков, 2020
showstep
[y,t] = showstep ( sys, Tfinal )
показать переходную характеристику непрерывной или дискретной системы
Параметры
sys
модель линейной стационарной системы в пространстве состояний или
передаточная функция
Tfinal
время моделирования; если не задано, то вычисляется автоматически
Результаты
y
значения выхода системы
t
значения соответствующих моментов времени
Пример использования
F = syslin( "c", 1, %s+1 );
showstep( F );
D = syslin( "d", 0.5, 0.5, 1, 0 );
showstep( D );
D = syslin( "d", 0.5, 0.5, 1, 0 );
showstep( D, 5 );
© К. Поляков, 2020
© К. Поляков, 2020
step
[y,t] = step ( sys, Tfinal )
вычисление переходной характеристики непрерывной или дискретной системы
Параметры
sys
модель линейной стационарной системы в пространстве состояний или
передаточная функция
Tfinal
время моделирования; если не задано, то вычисляется автоматически
Результаты
y
значения выхода системы
t
значения соответствующих моментов времени
Пример использования
F = syslin( "c", 1, %s+1 );
[y, t] = step( F )
y =
0.
0.0588061
0.1141540
...
0.9973664
0.9975212
t =
0.
0.0606061
0.1212121
...
5.9393939
6.
D = syslin( "d", 0.5, 0.5, 1, 0 );
[yd, td] = step( D )
y =
0.
0.5
0.75
...
0.9995117
0.9997559
t =
0.
© К. Поляков, 2020
1.
2.
...
11.
12.
D = syslin( "d", 0.5, 0.5, 1, 0 );
[yd, td] = step( D, 5 )
y =
0.
0.5
0.75
0.875
0.9375
0.96875
t =
0.
1.
2.
3.
4.
5.
© К. Поляков, 2020
tf
sys = tf ( S )
sys = tf ( n, d )
sys = tf ( n, d, type )
построение модели в форме передаточной функции
Параметры
S
модель непрерывной или дискретной системы в пространства состояний
n
числитель передаточной функции
d
знаменатель передаточной функции
type
тип модели: "c" для непрерывных систем и "d" для дискретных систем; если тип не
указан, предполагается, что type = "c"
Результаты
sys
модель системы в форме передаточной функции
Пример использования
A = [-1 0;1 -2];
S = syslin( "c", A, [1;0], [1 1], 0 );
T = tf( S )
T =
3 + s
--------2
2 + 3s + s
F = tf( %s+1, %s*(10*%s + 1) )
F =
1 + s
------2
s + 10s
G = tf( %z, %z*(10*%z + 1) )
G =
z
------2
z + 10z
Xs = tf( [1 0], [10 1 0] )
Xs =
s
-------
© К. Поляков, 2020
2
s + 10s
Xd = tf( [1 0], [10 1 0], "d" )
Xd =
z
------2
z + 10z
© К. Поляков, 2020
ss
sys = ss ( T )
sys = ss ( A, B, C, D )
sys = ss ( A, B, C, D, type )
построение модели в пространстве состояний
Параметры
T
модель непрерывной или дискретной системы в виде передаточной функции
A, B, C, D
матрицы модели в пространстве состояний
type
тип модели: "c" для непрерывных систем и "d" для дискретных систем; если тип не
указан, предполагается, что type = "c"
Результаты
sys
модель системы в пространстве состояний
Пример использования
A = [-1 0;1 -2];
Sc = ss( A, [1;0], [1 1], 0 );
ssprint( Sc )
.
|-1
0 |
| 1 |
x = | 1 -2 |x + | 0 |u
y = | 1
1 |x
Sd = ss( A, [1;0], [1 1], 0, "d" );
ssprint( Sd )
+
|-1
0 |
| 1 |
x = | 1 -2 |x + | 0 |u
y = | 1
1 |x
F = syslin( "c", 1, %s*(%s+1)
SF = ss( F );
ssprint( SF )
.
| 0
1 |
);
| 0 |
x = | 0 -1 |x + | 1 |u
y = | 1
0 |x
D = syslin( "c", %z+0.2, %z*(%z-0.8)
SD = ss( D );
);
© К. Поляков, 2020
ssprint( SD )
.
| 0.962 -0.192 |
|-1.074 |
x = | 0.808 -0.162 |x + | 0.215 |u
y = |-0.931
0 |x
© К. Поляков, 2020
dioph
[x,y,err] = dioph ( a, b, c )
решение диофантова полиномиального уравнения
a*x + b*y = c
Параметры
a, b, b
полиномы от одной переменной
Результаты
x, y
полиномы, такие что a*x + b*y = c
полином x имеет наименьшую возможную степень ( deg(b))
err
ошибка: норма полинома a*x + b*y – c
Пример использования
A = [-1 0;1 -2];
Sc = ss( A, [1;0], [1 1], 0 );
ssprint( Sc )
.
|-1
0 |
| 1 |
© К. Поляков, 2020
z2zeta
sysz = z2zeta ( sys )
замена переменной в передаточной функции z   = z–1
Параметры
sys
модель дискретной системы в формате передаточной функции или константа
Результаты
sysz
модель дискретной системы в формате передаточной функции, в которой
выполнена замена переменной z   = z–1; знаменатель передаточной функции
приведённый (его старший коэффициент равен 1)
Пример использования
exec("ddesign.sci");
F = syslin( "d", %z - 0.8, 3*%z - 1 )
Fzeta = z2zeta ( F )
Fzeta =
- 10 + 8z
------- 30 + z
Download