Линейные (LTI) модели

Что такой объект?

Как правило, инженеры по системам управления начинают с разработки математического описания динамической системы, которой они хотят управлять. Система, которой будут управлять, называется объектом. В качестве примера объекта в этом разделе используется двигатель постоянного тока. В этом разделе разрабатываются дифференциальные уравнения, которые описывают электромеханические свойства двигателя постоянного тока с инерционной нагрузкой. Затем показано, как использовать функции Control System Toolbox™ для построения линейных моделей на основе этих уравнений.

Представления линейной модели

Можно использовать функции Control System Toolbox, чтобы создать следующие представления модели:

  • Модели пространства состояний (SS) вида

    dxdt=Ax+Buy=Cx+Du

    где A, B, C и D являются матрицами соответствующих размерностей, x является вектором состояния, а u и y являются входным и выходным векторами.

  • Передаточные функции (TF), например,

    H(s)=s+2s2+s+10

  • Модели (zpk) нулей и полюсов, например,

    H(z)=3(z+1+j)(z+1j)(z+0.2)(z+0.1)

  • Модели данных частотной характеристики (FRD), которые состоят из выборочных измерений частотной характеристики системы. Для примера можно хранить экспериментально собранные данные частотной характеристики в модели FRD.

    Примечание

    Проект моделей FRD является специализированной темой, которую эта тема не затрагивает. Смотрите Модели данных частотной характеристики (FRD) для обсуждения этой темы.

Пример SISO: Двигатель постоянного тока

Простая модель двигателя постоянного тока, приводящего в действие инерционную нагрузку, показывает угловую скорость нагрузки, ω(t), как выход и приложенное напряжение, υapp(t), как вход. Конечная цель этого примера состоит в том, чтобы контролировать угловую скорость путем изменения приложенного напряжения. Этот рисунок показывает простую модель двигателя постоянного тока.

Простая модель двигателя постоянного тока, приводящего в действие инерционную нагрузку

В этой модели идеализирована динамика самого мотора; для образца магнитное поле принято постоянным. Сопротивление схемы обозначается R и самоиндуктивностью якоря Л. Если вы незнакомы с основами моделирования двигателя постоянного тока, проконсультируйтесь с любым базовым текстом по физическому моделированию. С помощью этой простой модели и основных законов физики можно разработать дифференциальные уравнения, которые описывают поведение этой электромеханической системы. В этом примере отношения между электрическим потенциалом и механической силой являются законом индукции Фарадея и законом Ампера для силы на проводнике, движущейся через магнитное поле.

Математическое производное

Крутящий момент τ увиденная на валу мотора пропорциональна токовой i, вызванной приложенным напряжением,

τ(t)=Kmi(t)

где Km, постоянная якоря, связана с физическими свойствами двигателя, такими как напряженность магнитного поля, количество витков проволоки вокруг катушки проводника и так далее. Задняя (индуцированная) электродвижущая сила, υemf, является напряжением, пропорциональным угловой скорости ω видно на валу,

υemf(t)=Kbω(t)

где Kb, константа ЭДС, также зависит от определенных физических свойств двигателя.

Механическая часть уравнений мотора получена с помощью закона Ньютона, который утверждает, что инерционная нагрузка, в J раз превышающая производную угловой скорости, равна сумме всех крутящих моментов вокруг вала мотора. Результатом является это уравнение,

Jdwdt=τi=Kfω(t)+Kmi(t)

где Kfω является линейным приближением для вязкого трения.

Наконец, электрическая часть уравнений двигателя может быть описана как

υapp(t)υemf(t)=Ldidt+Ri(t)

или, решая приложенное напряжение и заменяя коэффициент противо-ЭДС,

υapp(t)=Ldidt+Ri(t)+Kbω(t)

Эта последовательность уравнений приводит к набору двух дифференциальных уравнений, которые описывают поведение двигателя, первого для индуцированного тока,

didt=RLi(t)KbLω(t)+1Lυapp(t)

и второй для получившейся угловой скорости,

dωdt=1JKfω(t)+1JKmi(t)

Уравнения пространства состояний для двигателя постоянного тока

Учитывая два дифференциальных уравнений, выведенных в последнем разделе, теперь можно разработать представление двигателя постоянного тока в пространстве состояний как динамической системы. Текущие i и ω угловой скорости являются двумя состояниями системы. Приложенное напряжение, υapp, является входом в систему, и скорость вращения ω является выходом.

ddt[iω]=[RLKbLKmJKfJ][iω]+[1L0]υapp(t)

Представление в пространстве состояний примера двигателя постоянного тока

y(t)=[01][iω]+[0]υapp(t)

Создание моделей SISO

После разработки набора дифференциальных уравнений, которые описывают ваш объект, можно создать модели 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

Дополнительные сведения о добавлении временных задержек к моделям см. в разделе Задержки времени в линейных системах.

Объекты LTI

Для удобства программное обеспечение 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;

См. также

| |

Похожие примеры

Подробнее о