Для решения проблем теории управлении в Octave существует пакет control, который, однако, не входит в базовый состав программы. Теоретически, данный пакет должен устанавливаться из рабочего окна с помощью команды (для третьей версии пакета)
pkg install control-3.0.0.tar.gz
однако в Ubuntu мне удалось его поставить только через
apt-get install octave-control
Перед началом использования пакета не забудьте его загрузить:
pkg load control
Чтобы создать модель передаточой функции, можно воспользоваться tf(). При этом есть несколько возможностей. Можно определить символьную переменную и использовать её в арифметическом выражении.
s = tf('s')
a = 1/(1+s)
Функция также позволяет задать числитель и знаменатель передаточной функции в виде коэффициентов полиномов.
b = tf([1],[2 1 1])
Если система имеет несколько входов и выходов, то и числитель, и знаменатель будут списками, где элемент {i,j} означает числитель (или знаменатель) функции от i-го входа к j-му выходу. Для дискретной системы следует определить переменную z и время выборки:
z = tf('z', 0.1)
H = 0.05/(z-0.7)
Для работы в пространстве состояний имеется функция
ss(a,b[,c[,d]])
которая строит модель на основе матриц a,b,c,d. Если подать на вход ss() объект, полученный через tf(), то можно сконвертировать передаточную функцию в матрицы a,b,c,d. Обратное также справедливо.
Для доступа к переменным объектов есть специальные методы.
[a,b,c,d,tsam] = ssdata(sys) - доступ к матрицам и времени семплирования
[num, den, tsam] = tfdata(sys) - доступ к числителю, знаменателю и времени семплирования
get(sys, property) - получить требуемое значение
set(sys, property, value) - установить требуемое значение
Для соединения элементов в случае одного входа и выхода (SISO) можно воспользоваться арифметическими операциями.
a * b - последовательное соединение элементов
a + b - параллельное соединение элементов
Обратную связь устанавливает следующая команда:
feedback(sys) - единичная отрицательная обратная связь
feedback(sys1,sys2) - система sys2 в цепи обратной связи
feedback(sys1,sys2,'+') - положительная обратная связь
Для более сложных соединений элементов существуют специальные функции, такие как append(), connect(), series() и т.п.
Построить характеристики системы позволяют следующие методы.
zpmap(sys) - карта нулей и полюсов (также есть отдельно функции zero() и pole() соответственно)
impulse(sys) - импульсная переходная функция
step(sys) - реакция на функцию Хэвисайда
bode(sys) - диаграмма Боде
nyquist(sys) - диаграмма Найквиста
rlocus(sys) - корневой годограф
При необходимости, перечисленные функции могут не только построить графики, но и вернуть рассчитанные данные в виде таблицы.
С точки зрения устойчивости также могут быть полезны:
isstable(sys) - проверка устойчивости
[g, phi] = margin(sys) - запас устойчивости по амплитуде и фазе
И напоследок, пример графика, который может построить Octave для заданной динамической системы (в данном случае это диаграмма Боде для системы b).
Комментариев нет:
Отправить комментарий