Как правило, управляйте инженерами, начинаются путем разработки математического описания динамической системы, которой они хотят управлять. Система, которой будут управлять, называется объектом. Как пример объекта, этот раздел использует двигатель постоянного тока. Этот раздел разрабатывает дифференциальные уравнения, которые описывают электромеханические свойства двигателя постоянного тока с инерционной загрузкой. Это затем показывает вам, как использовать функции Control System Toolbox™, чтобы создать линейные модели на основе этих уравнений.
Можно использовать функции Control System Toolbox, чтобы создать следующие представления модели:
Модели в пространстве состояний (SS) формы
где A, B, C и D являются матрицами соответствующих размерностей, x является вектором состояния, и u и y являются векторами ввода и вывода.
Передаточные функции (TF), например,
Модели (zpk) нулей и полюсов, например,
Модели данных о частотной характеристике (FRD), которые состоят из произведенных измерений частотной характеристики системы. Например, можно хранить экспериментально собранные данные о частотной характеристике в модели FRD.
Проект моделей FRD является специализированной темой, которую не затрагивает эта тема. См. Модели Данных о частотной характеристике (FRD) для обсуждения этой темы.
Простая модель двигателя постоянного тока, управляющего инерционной загрузкой, показывает угловой уровень загрузки, , как выход и примененное напряжение, , как вход. Конечная цель этого примера должна управлять угловым уровнем путем варьирования приложенного напряжения. Этот рисунок показывает простую модель двигателя постоянного тока.
Простая модель двигателя постоянного тока, управляющего инерционной загрузкой
В этой модели идеализированы движущие силы самого двигателя; например, магнитное поле принято постоянным. Сопротивление схемы обозначается R и самоиндукцией арматуры L. Если вы незнакомы с основами моделирования двигателя постоянного тока, консультируйтесь с любым основным текстом по поводу физического моделирования. С этот простые и основные законы модели физики, возможно разработать дифференциальные уравнения, которые описывают поведение этой электромеханической системы. В этом примере отношения между электрической потенциальной и механической силой являются законом Фарадея индукции и законом Ампера для силы на проводнике, перемещающемся через магнитное поле.
Крутящий момент замеченный в вале двигателя пропорционально текущему i, вызванному приложенным напряжением,
где Km, постоянная арматура, связан с физическими свойствами двигателя, такими как сила магнитного поля, количество поворотов провода вокруг проводниковой обмотки, и так далее. Спина (вызвала) электродвижущую силу, , напряжение, пропорциональное угловому уровню замеченный в вале,
где Kb, постоянная эдс, также зависит от определенных физических свойств двигателя.
Механическая деталь моторных уравнений выведена с помощью закона Ньютона, который утверждает, что инерционная загрузка времена J производная углового уровня равняется сумме всех крутящих моментов о вале двигателя. Результатом является это уравнение,
где линейная аппроксимация для вязкого трения.
Наконец, электрическая часть моторных уравнений может быть описана
или, решая для приложенного напряжения и заменяя обратную эдс,
Эта последовательность уравнений приводит к набору двух дифференциальных уравнений, которые описывают поведение двигателя, первого для вызванного тока,
и второе для получившегося углового уровня,
Учитывая эти два дифференциальных уравнения, выведенные в последнем разделе, можно теперь разработать представление пространства состояний двигателя постоянного тока как динамическая система. Текущий i и угловой уровень ω являются двумя состояниями системы. Приложенное напряжение, , вход к системе и скорость вращения, ω является выход.
Представление пространства состояний примера двигателя постоянного тока
После того, как вы разрабатываете набор дифференциальных уравнений, которые описывают ваш объект, можно создать модели SISO с помощью простых команд. Следующие разделы обсуждают
Построение модели в пространстве состояний двигателя постоянного тока
Преобразование между представлениями модели
Создание передаточной функции и нулевых/полюсов/усилений моделей
Введите следующую номинальную стоимость для различных параметров двигателя постоянного тока.
R= 2.0 % Ohms L= 0.5 % Henrys Km = .015 % torque constant Kb = .015 % emf constant Kf = 0.2 % Nms J= 0.02 % kg.m^2
Учитывая эти значения, можно создать числовое представление пространства состояний с помощью ss
функция.
A = [-R/L -Kb/L; Km/J -Kf/J] B = [1/L; 0]; C = [0 1]; D = [0]; sys_dc = ss(A,B,C,D)
Эти команды возвращают следующий результат:
a = x1 x2 x1 -4 -0.03 x2 0.75 -10 b = u1 x1 2 x2 0 c = x1 x2 y1 0 1 d = u1 y1 0
Теперь, когда у вас есть представление пространства состояний двигателя постоянного тока, можно преобразовать в другие представления модели, включая передаточную функцию (TF) и нулевые/полюса/усиления модели (ZPK).
Представление Передаточной функции. Можно использовать tf
преобразовывать от представления пространства состояний до передаточной функции. Например, используйте этот код, чтобы преобразовать в представление передаточной функции двигателя постоянного тока.
sys_tf = tf(sys_dc)
Transfer function: 1.5 ------------------ s^2 + 14 s + 40.02
Нулевой/Полюс/Усиление Представление. Точно так же zpk
функция преобразует от пространства состояний или представлений передаточной функции нулевому/полюсу/усилению формату. Используйте этот код, чтобы преобразовать от представления пространства состояний до нулевого/полюса/усиления формы для двигателя постоянного тока.
sys_zpk = zpk(sys_dc) Zero/pole/gain: 1.5 ------------------- (s+4.004) (s+9.996)
Представление пространства состояний подходит лучше всего для численных расчетов. Для самой высокой точности преобразуйте в пространство состояний до объединяющихся моделей и избегайте передаточной функции и обнулите/подоприте представления шестами/получите, за исключением спецификации модели и контроля.
В примере двигателя постоянного тока подход пространства состояний производит набор матриц, который представляет модель. Если вы выбираете другой подход, можно создать соответствующие модели с помощью tf
, zpk
, ss
, или frd
.
sys = tf(num,den) % Transfer function sys = zpk(z,p,k) % Zero/pole/gain sys = ss(a,b,c,d) % State-space sys = frd(response,frequencies) % Frequency response data
Например, можно создать передаточную функцию путем определения числителя и знаменателя с этим кодом.
sys_tf = tf(1.5,[1 14 40.02]) Transfer function: 1.5 ------------------ s^2 + 14 s + 40.02
В качестве альтернативы, если вы хотите создать передаточную функцию двигателя постоянного тока непосредственно, используйте эти команды.
s = tf('s'); sys_tf = 1.5/(s^2+14*s+40.02)
Эти команды приводят к этой передаточной функции.
Transfer function: 1.5 -------------------- s^2 + 14 s + 40.02
Чтобы создать нулевой/полюс/усиление модель, используйте эту команду.
sys_zpk = zpk([],[-9.996 -4.004], 1.5)
Эта команда возвращает следующее нулевой/полюс/усиление представление.
Zero/pole/gain: 1.5 ------------------- (s+9.996) (s+4.004)
Программное обеспечение Control System Toolbox оказывает полную поддержку для систем дискретного времени. Можно создать дискретные системы таким же образом, что вы создаете аналоговые системы; единственная разница - то, что необходимо задать период шага расчета для любой модели, которую вы создаете. Например,
sys_disc = tf(1, [1 1], .01);
создает модель SISO в формате передаточной функции.
Transfer function: 1 ----- z + 1 Sample time: 0.01
Можно добавить время задержки с моделями дискретного времени путем определения входной задержки, вывести задержку или задержку ввода-вывода при создавании модели. Задержка должна быть неотрицательным целым числом, которое представляет кратное шагу расчета. Например,
sys_delay = tf(1, [1 1], 0.01,'ioDelay',5)
возвращает систему с задержкой ввода-вывода 5 с.
Transfer function: 1 z^(-5) * ----- z + 1 Sample time: 0.01
Можно добавить время задержки с линейными моделями путем определения входной задержки, вывести задержку или задержку ввода-вывода при создавании модели. Например, чтобы добавить задержку ввода-вывода с двигателем постоянного тока, используйте этот код.
sys_tfdelay = tf(1.5,[1 14 40.02],'ioDelay',0.05)
Эта команда создает передаточную функцию двигателя постоянного тока, но добавляет 0,05 вторых задержки.
Transfer function: 1.5 exp(-0.05*s) * ------------------ s^2 + 14 s + 40.02
Для получения дополнительной информации о добавляющих время задержках с моделями, смотрите Задержки Линейных систем.
Для удобства программное обеспечение Control System Toolbox использует названные объекты LTI пользовательских структур данных хранить связанные с моделью данные. Например, переменная sys_dc
созданный для примера двигателя постоянного тока называется объектом SS. Существует также TF, ZPK и объекты FRD для передаточной функции, нуля/полюса/усиления и моделей ответа данных о частоте соответственно. Четыре объекта LTI инкапсулируют данные модели и позволяют вам управлять линейными системами как одной сущностям, а не как наборы векторов или матриц.
Чтобы видеть, что содержат объекты LTI, используйте get
команда. Этот код описывает содержимое sys_dc
из примера двигателя постоянного тока.
get(sys_dc) A: [2×2 double] B: [2×1 double] C: [0 1] D: 0 E: [] Scaled: 0 StateName: {2×1 cell} StateUnit: {2×1 cell} InternalDelay: [0×1 double] InputDelay: 0 OutputDelay: 0 Ts: 0 TimeUnit: 'seconds' InputName: {''} InputUnit: {''} InputGroup: [1×1 struct] OutputName: {''} OutputUnit: {''} OutputGroup: [1×1 struct] Notes: [0×1 string] UserData: [] Name: '' SamplingGrid: [1×1 struct]
Можно управлять данными, содержавшимися в объектах LTI с помощью set
команда; смотрите Control System Toolbox онлайновые страницы с описанием для описаний set
и get
.
Другой удобный способ установить или получить свойства модели LTI состоит в том, чтобы получить доступ к ним непосредственно использующий запись через точку. Например, если вы хотите получить доступ к значению A
матрица, вместо того, чтобы использовать get
, можно ввести
sys_dc.A
в подсказке MATLAB®. Это обозначение возвращает A
матрица.
ans = -4.0000 -0.0300 0.7500 -10.0000
Точно так же, если вы хотите изменить значения A
матрица, можно сделать так непосредственно, как этот код показывает.
A_new = [-4.5 -0.05; 0.8 -12.0]; sys_dc.A = A_new;