Пример 1.
s |
Step |
Integrator |
Scope |

Рис. Модель включает источник ступенчатого воздействия, сумматор, интегратор, охваченный отрицательной обратной связью и осциллограф для наблюдения за реакцией системы.
Построение зависимости выхода от входа стандартного блока библиотеки Simulink.
1. Запустите Matlab
2. Настройте Matlab на свой рабочий каталог, например, tmp_Simulink.
3.Откройте новое окно (файл модели) для построения модели.
4.Командой меню >File>SaveAs переименуйте файл модели untitled, например, в
Example_1 (Title_1).
>
5..Клавишей окна модели откройте библиотекуSimulink.
6.Перенесите из библиотеки Simulink в окно модели следующиеблоки.
Примечание: нужный блок в библиотеке можно найти, введя имя блока в окне поиска, например,
7.Соедините блоки как показано ниже.
8.Откройте блок Scope
9.Запустите модель. Наблюдайте результат моделирования в окне Scope.
10.Командой блока Scope разместите графики во всей зоне окна.
11.Командой блока Scope зафиксируйте размеры окна для будущих графиков.
12.Открыв окно с параметрами реле, установите требуемые параметры, например, как показано ниже.
13.Задайте параметры выходного сигнала блока развертки (блок RepeatingSequence) так, чтобы он перекрывал точки переключения реле (-0.5 и0.5). Постройте графики модели (командой).
14.Для уменьшения искажений входного сигнала (пик желтого сигнала отображается полкой) замените (в окне меню модели >Simulation>Configurationparameters>Solver) переменный шаг моделирования “по умолчанию” на постоянный:
.
Запустите модель и наблюдайте изменения на графиках сигнала реле.
Графики показывают, что исчезло искажение пика входного сигнала, но теперь сместились точки переключения реле.
15.Для уменьшения искажений в точках переключения реле замените шаг моделирования
(в окне меню модели >Simulation>Conf.Parameters>Solver), например, на
16.Постройте графики реле с новыми значениями параметров моделирования.
Задание 1. Построение модели скачущего мяча.
На заданной высоте, например, 1м, отпускают шар весом 100 г., который летит до поверхности и отскакивает от нее на высоту ~80% от начальной точки. Необходимо построить модель полета и отскоков мяча и определить основные параметры модели.
Составим список отношений, которые, влияют на поведение мяча.
· Сила гравитации равна произведению массы тела на ускорение свободного падения
· Ускорение тела равно отношению сил, действующих на тело, к массе тела
· Изменение скорости равно интегралу от ускорения.
· Изменение расстояния равно интегралу от скорости.
1. В новом окне составьте модель полета мяча, состоящую из блоков, реализующих исходные отношения. Для ускорения моделирования «кликнуть» по полю один или 2 раза (в зависимости от года Matlab), подождать и набирать название блока и, потом, нужную характеристику. Второй вход (постоянная константа) интегратора образуется, если открыть описание блока (двойной клик) и установить в External reset – любой вместо none. Постоянная в интеграторе: Initial conditional sorce – external.
1. Выберите следующие параметры моделирования (меню модели >Simulation>Configuration Parameters (Ctrl+E) >Solver), «колесико» или Modeling/Settings – в зависимости от версии (года) Matlab:
2. Запустите модель. Постройте график, рассмотрите полет мяча.
График свободного полета мяча. Полет до поверхности с высоты одного метра под действием гравитации занимает 0.45 секунд. Возможно движение вниз от точки «0» до уровня
-100 за 4,5 ед. времени (Matlab2016>).
Далее необходимо включить в модель описание отскока от земли или от уровня -100.
Добавим в список новое отношение:
Сила сжатия тела равна произведению сжатия тела на коэффициент упругости. Отношение начинает действовать, когда мяч достиг поверхности, при этом высота меняет знак.
*) Согласно закону сохранения энергии, кинетическая энергия мяча равна его потенциальной энергии в начале движения: mv2/2=mgh. Если скорость отскока примем как 80 процентов от скорости непосредственно перед ударом об пол, потенциальная энергия мяча в конце движения равна кинетической энергии после удара: m(0,8v)*2/2=mgh1, откуда получаем 0,64mv*2/2=0,64mgh=mgh1,h1=0,64h - высота подъёма мяча после удара.
4. Дополните модель функциями, описывающими отскок. Если мяч сжимаемый, то при касании появляется сила упругости, которая изменяет ускорение. В простейшем случае Fупр = -kdy, где dy - смещение по y. Эта сила сначала уменьшит скорость по y до 0, потом возвратит к первоначальной величине с обратным знаком. Подберите коэффициент упругости, который соответствует 100% отскоку мяча.
Настройте блок реле (Relay) так, что бы при касании земли блок включался, а при отскоке выключался, предположив, что момент появления силы «отскока» и ее исчезновения не совпадает. Для удобства используйте второй вход Scope, на котором можно увидеть время действия силы отскока. Второй вход Scope образуется: «Колесико» в меню Scope/ Параметры /Количество осей – по требованию.
Дополнительный вход Product – двойной клик/ Number of inputs.
![]() | Relay имеет разрывную передаточную функцию с гистерезисом (или без него), подобную передаточной функции триггера Шмитта. Если сигнал на входе меньше некоторого порога, то на выходе получается сигнал одного уровня (обычно низкого), а если порог превышен, то сигнал на выходе становится другого уровня (обычно высокого). При спаде достигается другой порог и сигнал на выходе также скачком меняется. |
В момент (-99.8) включается реле, которое обеспечивает промежуток работы силы упругости, направленной против движения. Выключается это реле в момент отрыва от поверхности при другом пороге. Блок Bias дополнительно контролирует смещение шара относительно опоры. *) В предложенном примере реализована модель, в которой несжимаемый шар ударяется о сжимаемую (резиновую) поверхность.
Видно, что смоделированный полет не затухает, что не соответствует реальным скачкам мяча. Процесс не теряет энергию. Добавим в список новое отношение:
Сила трения мяча о воздух пропорциональна квадрату скорости мяча.
Сопротивление воздуха F = C x((pV^2)*S)/2, где Cx - коэффициент лобового сопротивления. Для шара примерно 0.5, p - плотность среды. Для воздуха - 1.3кг/m^3. S - площадь сечения шара. pi*r2, V – полная скорость относительно воздуха.
3. Дополните модель блоками описывающими трение мяча о воздух и проверьте работу доработанной модели. Подберите коэффициент лобового сопротивления, при котором мяч взлетает на 80% исходной высоты. Вид сумматора и наличие третьего входа настраивается двойным кликом по нему.
Этот полет мяча примерно соответствует условиям задачи. Справа показана сила (Scope1), определяющая отскок. В дальнейшем параметры модели можно уточнять.
4. Выделите оконтуриванием блоки модели, не включая блоки Scope, постоянные, дополнительный выход и создайте подсистему командой ПКМ CreateSubsystem (Ctrl-G). Должен получиться следующий блок подсистемы (Subsystem) с портом для вывода информации о контакте мяча с поверхностью. Можно проверить работоспособность подсистемы для уверенности в отсутствии ошибок.
Subsystem, по существу, это алгоритм расчета движения прыгающего шарика.
Рис. Блок подсистема - разработанный алгоритм вычисления движения шара.
Внутренняя часть подсистемы – строение алгоритма. Можно изменить название подсистемы и портов и цветовую окраску портов.Subsystem -> двойной клик ЛКМ ->Rebound;
Цифровая модель устройства. Имитировать падение шарика будем цифровым устройством – процессором или ПЛИС. Для автоматической генерации кода модели и моделирования вычислений на микроконтроллере (МК) необходимо перейти от непрерывной модели к дискретной. Для этого заменим интеграторы на дискретные и подберем такое модельное (sample time) время, при котором выходные графики останутся примерно одинаковыми с аналоговой моделью.
Block Parameters Discrete-Time Integrator: sample time = 0.0001
* Необходимо придерживаться своей модели в плане выбора постоянных величин. Модель в тексте соответствует старому Matlab (2012).
Кликаем на «колесико» и устанавливаем шаг, одинаковый и интеграторами:
Если на интервале 5 сек шаг составит 1/10000, то результат можно считать приемлемым.
Например, при шаге 1/1000 различие заметно на глаз: за счет потери точности сила отскока увеличилась и затухание стало меньше. Если далее загрублять шаг, то шарик начинает прыгать с нарастанием.
Отсюда можно предположить, что решатель должен рассчитывать не менее 2000 точек в секунду для поддержания, например, режима реального времени. Естественно, что процессор x64 выполнит это условие с большим запасом, а вот для детской игрушки – Arduino Uno это задание может быть и не выполнимым.
*) Высокоуровневая программа на языке С ничего не знает о режиме реального времени, поскольку работает с модельным временем, а конкретный процессор оперирует машинным временем, в котором функционирует аппаратная часть системы моделирования.
Микропроцессорная плата Arduino безусловно просчитает все заданные точки процесса, но может затратить на это и более 5 сек реального времени. Это приемлемо при визуализации процесса, но не позволит управлять детской игрушкой в режиме реального времени. Поэтому, в дальнейшем, после написания или автоматической генерации кода С для платы Arduino, нужно определить, сколько времени тратит процессор для расчета одной точки и принять меры (программные или аппаратные) для уменьшения этого времени.