Вы моделируете каждый компонент в структуре системы, чтобы представлять физическое или функциональное поведение того компонента. Вы проверяете основное поведение компонента путем симуляции их использующий тестовые данные.
Большая картина всей системы полезна при моделировании отдельных компонентов. Начните, загрузив образец модели. В командной строке MATLAB, введите:
open_system('system_layout.slx')
Simulink® модель компонента основана на нескольких отправных точках:
Явное математическое отношение между выходом и входом физического компонента — можно вычислить выходные параметры компонента от входных параметров, прямо или косвенно, посредством алгебраических расчетов и интегрирования дифференциальных уравнений. Например, расчет уровня воды в баке, учитывая уровень притока является явным отношением. Каждый блок Simulink выполняется на основе определения расчетов от его входных параметров до его выходных параметров.
Неявное математическое отношение между переменными модели физического компонента — поскольку переменные являются взаимозависимыми, присваивая вход и выход к компоненту, не является прямым. Например, напряжение в +
конец двигателя соединяется в схеме и напряжении в -
конец имеет неявное отношение. Чтобы смоделировать такое отношение в Simulink, можно или использовать физические инструменты моделирования, такие как Simscape™ или смоделировать эти переменные как часть большего компонента, который позволяет определение ввода/вывода. Иногда, более близкий контроль моделирования целей и определений компонента помогает задать отношения ввода/вывода.
Данные получили из фактической системы — Вы измерили данные о вводе/выводе из фактического компонента, но полностью заданное математическое отношение не существует. Много устройств не смоделировали компоненты, которые соответствуют этому описанию. Например, тепло, рассеянное телевидением. Можно использовать System Identification Toolbox™, чтобы задать отношение ввода/вывода для такой системы.
Явное функциональное определение — Вы задаете выходные параметры функционального компонента от входных параметров до алгебраических и логических расчетов. Например, переключающаяся логика термостата. Можно смоделировать самые функциональные отношения как блоки Simulink и подсистемы.
Этот учебные модели физические и функциональные компоненты с явными отношениями ввода/вывода. В этом примере вы будете:
Используйте системные уравнения, чтобы создать модель Simulink.
Добавьте и соедините блоки Simulink в Редакторе Simulink. Блоки представляют коэффициенты и переменные из уравнений.
Создайте модель для каждого компонента отдельно. Самый эффективный способ создать модель системы состоит в том, чтобы сначала рассмотреть компоненты независимо.
Начните построением простых моделей с помощью аппроксимации системы. Идентифицируйте предположения, которые могут влиять на точность вашей модели. Итеративно добавляйте деталь, пока уровень сложности не удовлетворит требованиям точности моделирования.
Опишите отношения между компонентами, например, данными, энергией и передачей силы. Используйте системные уравнения, чтобы создать графическую модель системы в Simulink.
Некоторые вопросы спросить, прежде чем вы начнете моделировать компонент:
Каковы константы для каждого компонента? Что не изменяют значения, если вы не изменяете их?
Каковы переменные для каждого компонента? Что значения изменяют в зависимости от времени?
Сколько переменных состояния компонент имеет?
Выведите уравнения для каждого компонента используя научные принципы. Много системных уравнений попадают в три категории:
Для непрерывных систем дифференциальные уравнения описывают скорость изменения переменных уравнениями, определенными для всех значений времени. Например, дифференциальное уравнение первого порядка дает скорость автомобиля:
Для дискретных систем разностные уравнения описывают скорость изменения переменных, но уравнения определены только в конкретные моменты времени. Например, управляющий сигнал от дискретного пропорционально-производного диспетчера:
Уравнения без производных являются алгебраическими уравнениями. Например, алгебраическое уравнение дает общий ток в параллельной схеме с двумя компонентами:
Колеса и Линейное Движение. Существует две силы, которые действуют на колесо:
Сила, приложенная двигателем — сила F, действующая в направлении изменения скорости и являющаяся входом к подсистемам колеса.
Сила сопротивления — сила действия Fdrag против направления скорости изменяются, и функция скорости.
Ускорение пропорционально сумме этих сил:
Где kdrag является коэффициентом сопротивления, и m является массой робота. Каждое колесо несет половину этой массы.
Создайте модель колеса:
В system_layout
модель, дважды кликните подсистему Right Wheel, чтобы отобразить пустую подсистему.
Скорость модели и ускорение. Добавьте блок Integrator. Оставьте начальный набор условия 0
. Вход этого блока является ускорением, Vdot и выход являются скоростью V.
Смоделируйте силу сопротивления. Добавьте блок MATLAB Function из библиотеки User-Defined Functions. Блок MATLAB Function обеспечивает быстрый способ реализовать математические выражения в вашей модели. Чтобы отредактировать функцию, дважды кликните блок, чтобы открыть редактор функции MATLAB.
Задайте аргументы для блока MATLAB function. В редакторе блока MATLAB Function нажмите кнопку Edit Data. Нажмите k_drag, установите Scope на Parameter и нажмите Apply.
Вычтите силу сопротивления из моторной силы с блоком Subtract. Завершите уравнение ускорения силы с блоком Gain параметром 1/(m/2)
.
Чтобы инвертировать направление блока MATLAB Function, щелкните правой кнопкой по блоку и выберите Rotate & Flip > Flip Block. Соедините блоки.
Движущие силы этих двух колес являются тем же самым. Сделайте копию подсистемы Правого колеса, которую вы только смоделировали, и вставьте ее в Левую подсистему Колеса.
Просмотрите верхний уровень модели. Нажмите кнопку Navigate Up To Parent .
Вращательное Движение. Когда эти два колеса поворачиваются в противоположных направлениях, они перемещаются в круг радиуса r, вызывая вращательное движение робота. Когда поворот колес в том же направлении, нет никакого вращения. Предположение, что скорости колеса всегда равны в величине, это практично, чтобы смоделировать вращательное движение как зависящее от различия двух скоростей колеса VR и VL:
Создайте модель динамики вращения:
В верхнем уровне system_layout
модель, дважды кликните подсистему Вращения, чтобы отобразить пустую подсистему. Удалите связь между Inport и блоками Outport.
Угловая скорость модели и угол. Добавьте блок Integrator. Оставьте начальный набор условия 0
. Выход этого блока является углом, theta и вход являются угловой скоростью theta_dot.
Вычислите угловую скорость из тангенциальной скорости. Добавьте Gain параметром 1/(2*r)
.
Соедините блоки.
Просмотрите верхний уровень модели. Нажмите кнопку Navigate Up To Parent .
Опишите функцию от входа функции к ее выходу. Это описание может включать алгебраические уравнения и логические построения, которые можно использовать, чтобы создать графическую модель системы в Simulink.
Координатное Преобразование. Скорость робота в координатах X и Y, VX и VY, связана с линейной скоростью VN и угол theta:
Создайте координатную модель преобразования:
В верхнем уровне system_layout
модель, дважды кликните Координатную подсистему Преобразования, чтобы отобразить пустую подсистему.
Тригонометрические функции модели. Добавьте блок SinCos из библиотеки Math Operations.
Умножение модели. Добавьте два блока Product из библиотеки Math Operations.
Соедините блоки.
Просмотрите верхний уровень модели. Нажмите кнопку Navigate Up To Parent .
Источник для значений параметра модели может быть:
Записанные технические требования, такие как стандартные таблицы свойства или таблицы данных производителя
Прямые измерения в существующей системе
Оценки с помощью системного ввода/вывода
Эта модель использует эти параметры:
Параметр | Символ | Значение |
---|---|---|
Масса | m | 2,5 кг |
Сопротивление качению | k_drag | 30 Ns2/m |
Радиус робота | r | 0,15 м |
Simulink использует рабочую область MATLAB®, чтобы оценить параметры. Установите эти параметры в окне команды MATLAB:
m = 2.5; k_drag = 30; r = 0.15;
Валидируйте компоненты путем подачи входного сигнала и наблюдения выходного сигнала. Даже такая простая валидация может указать на мгновенные способы улучшить модель. Этот пример подтверждает эти поведения:
Когда сила прикладывается постоянно к колесу, скоростные увеличения, пока она не достигает установившейся скорости.
Когда колеса поворачиваются в противоположных направлениях, увеличениях угла поворота на постоянном уровне.
Создайте и запустите тестовую модель для компонента колеса:
Создайте новую модель. Во вкладке Simulation нажмите New . Скопируйте блок Right Wheel в новую модель.
Создайте тестовое воздействие. Добавьте блок Step из библиотеки Sources и соедините ее с входом блока Right Wheel. Оставьте набор параметра времени шага 1
.
Добавьте средство просмотра в выход. Щелкните правой кнопкой по выходному порту блока Right Wheel и выберите Create & Connect Viewer > Simulink > Scope.
Запустите симуляцию. Во вкладке Simulation нажмите Run .
Результат симуляции предоставляет общее ожидаемое поведение. Нет никакого движения, пока сила не прикладывается во время шага. Когда сила прикладывается, скорость начинает увеличиваться и затем устанавливается постоянной, когда приложенная сила и сила сопротивления достигают равновесия. В дополнение к валидации эта симуляция также дает информацию о максимальной скорости колеса для данной силы.
Создайте и запустите тестовую модель для модели вращения:
Создайте новую модель. Кликните и скопируйте блок Rotation в новую модель.
Создайте тестовое воздействие в новой модели. Добавьте блок Step из библиотеки Sources. Оставьте набор параметра времени шага 1
. Соедините его с входом блока Rotation. Этот вход представляет различие скоростей колеса, когда колеса вращаются в противоположных направлениях.
Добавьте средство просмотра в выход. Щелкните правой кнопкой по выходному порту блока Rotation и выберите Create & Connect Viewer > Simulink > Scope.
Запустите симуляцию. Во вкладке Simulation нажмите Run .
Эта симуляция показывает, что угол увеличивается постоянно, когда колеса поворачиваются с той же скоростью в противоположных направлениях. Можно сделать некоторые улучшения модели, чтобы облегчить интерпретировать угол выход, например:
Можно преобразовать выход в радианах до степеней. Добавьте блок Gain с усилением 180/pi
.
Можно отобразить степени выход в циклах 360 градусов. Добавьте блок Math Function с функциональным mod
.
Тригонометрические функции MATLAB берут входные параметры в радианах.
После того, как вы валидируете отдельные компоненты, можно выполнить схожую валидацию на полной модели. Этот пример подтверждает следующее поведение:
Когда та же сила прикладывается к обоим колесам в том же направлении, перемещениям робота в линии.
Когда та же сила прикладывается к обоим колесам в противоположных направлениях, робот вращается на месте.
В system_layout
модель, дважды кликните Входную подсистему, чтобы отобразить пустую подсистему.
Создайте тестовое воздействие путем добавления блока Step. Оставьте набор параметра времени шага 1
. Соедините его с обоими блоками Outport.
В верхнем уровне модели соедините оба выходных сигнала с тем же средством просмотра осциллографа:
Запустите модель.
В этом рисунке желтая линия является направлением X, и синяя линия является направлением Y. Поскольку угол является нулем и не изменяется, транспортное средство перемещается только в направление X, как ожидалось.
Дважды кликните Входную подсистему и добавьте Gain параметром -1
между источником и вторым выходом. Это инвертирует направление для левого колеса.
Добавьте осциллограф в угол выход.
Запустите модель.
Первое представление показывает, что нет никакого движения в плоскости X-Y. Второе представление показывает, что существует устойчивое вращение.
Можно использовать эту итоговую модель, чтобы ответить на многие вопросы о модели путем изменения входа. Некоторые примеры:
Что происходит, когда начальный угол не является нулем?
Сколько времени занимает для движения остановиться, когда сила опускается до нуля?
Что происходит, когда робот более тяжел?
Что происходит, когда робот перемещается в более сглаженную поверхность, то есть, когда коэффициент сопротивления ниже?