Как правило, инженеры по системам управления начинают с разработки математического описания динамической системы, которой они хотят управлять. Система, которой будут управлять, называется объектом. В качестве примера объекта в этом разделе используется двигатель постоянного тока. В этом разделе разрабатываются дифференциальные уравнения, которые описывают электромеханические свойства двигателя постоянного тока с инерционной нагрузкой. Затем показано, как использовать функции Control System Toolbox™ для построения линейных моделей на основе этих уравнений.
Можно использовать функции Control System Toolbox, чтобы создать следующие представления модели:
Модели пространства состояний (SS) вида
где A, B, C и D являются матрицами соответствующих размерностей, x является вектором состояния, а u и y являются входным и выходным векторами.
Передаточные функции (TF), например,
Модели (zpk) нулей и полюсов, например,
Модели данных частотной характеристики (FRD), которые состоят из выборочных измерений частотной характеристики системы. Для примера можно хранить экспериментально собранные данные частотной характеристики в модели FRD.
Примечание
Проект моделей FRD является специализированной темой, которую эта тема не затрагивает. Смотрите Модели данных частотной характеристики (FRD) для обсуждения этой темы.
Простая модель двигателя постоянного тока, приводящего в действие инерционную нагрузку, показывает угловую скорость нагрузки, , как выход и приложенное напряжение, , как вход. Конечная цель этого примера состоит в том, чтобы контролировать угловую скорость путем изменения приложенного напряжения. Этот рисунок показывает простую модель двигателя постоянного тока.
Простая модель двигателя постоянного тока, приводящего в действие инерционную нагрузку
В этой модели идеализирована динамика самого мотора; для образца магнитное поле принято постоянным. Сопротивление схемы обозначается R и самоиндуктивностью якоря Л. Если вы незнакомы с основами моделирования двигателя постоянного тока, проконсультируйтесь с любым базовым текстом по физическому моделированию. С помощью этой простой модели и основных законов физики можно разработать дифференциальные уравнения, которые описывают поведение этой электромеханической системы. В этом примере отношения между электрическим потенциалом и механической силой являются законом индукции Фарадея и законом Ампера для силы на проводнике, движущейся через магнитное поле.
Крутящий момент увиденная на валу мотора пропорциональна токовой 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
команда; описание страниц с описанием см. в интерактивном set
Control System Toolbox и
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;