- •2. Библиотеки блоков Simulink
- •2.1. Источники (Sources)
- •2.2. Оконечные блоки ( Sinks)
- •2.3. Дискретные блоки (Discrete)
- •2.4. Непрерывные блоки (Continuous)
- •2.5. Нелинейные блоки (Nonlinear)
- •2.6. Математические функции (Math)
- •2.7. Непрерывные и табличные функции (Functions & Tables)
- •2.8. Сигналы и системы (Signals & Systems)
- •3. Соединение и дублирование блоков
- •4. Объединение блок-диаграмм в составные блоки
- •5. Непрерывное и дискретное время
- •6. Сигналы
3. Соединение и дублирование блоков
Для объединения блоков в систему необходимо соединить их входные и выходные порты, которые на пиктограммах блоков отмечены значком «>» (рис.2.12).
Рисунок 2.12 – Блок Constant
Допустим, в модели необходимо использовать несколько экземпляров одного блока. Конечно, можно многократно повторять процедуру перемещения одного и того же блока из библиотеки в окно создаваемой модели, однако Simulink позволяет создавать копии (дубликаты) блоков из имеющихся в окне модели. Для создания копии блока надо установить курсор на требуемый блок в окне модели, нажать на клавиатуре клавишу «Ctrl» и затем левую клавишу мыши. В результате, слева от курсора появится знак «+». Затем, удерживая клавиши в нажатом положении, переместить в нужное место курсор и отпустить нажатые клавиши.
При построении модели часто требуется не только соединять блоки между собой, но и делать ответвления от существующих соединительных линий. Проведение линии, соединяющей входной порт какого-либо блока с существующей линией, выполняется аналогично дублированию блоков, то есть при нажатой клавише «Ctrl». Разница лишь в том, что в этом случае курсор мыши устанавливается на линию, от которой проводится ответвление, и перемещается к входному порту соединяемого блока. Если же вести ответвление от блока к линии, то даже нажатие «Ctrl» не обязательно.
4. Объединение блок-диаграмм в составные блоки
Как уже говорилось ранее, блок-диаграммы Simulink могут быть объединены в составные блоки, что позволяет использовать иерархическое представление структуры модели.
Для того, чтобы выделить часть системы в составной блок, можно пойти стандартным путем: перенести из библиотеки блоков блок «Подсистема» Subsystem (как раз и представляющий собой составной блок) и, раскрыв его окно, сформировать его структуру в этом отдельном окне. Но в пакете Simulink предусмотрен и другой способ: выстроив блок-диаграмму в основном окне создаваемой модели, можно выделить ее часть (ту, что необходимо объединить в составной блок) и, пойдя в меню, выбрать пункт «Edit/Create Subsystem». В результате в основном окне автоматически образуется составной блок, в котором будет заключена та часть блок-диаграммы, что была выделена. Выделение необходимой части блок-диаграммы можно произвести, нажав левую кнопку мышки в одном из углов предполагаемой рамки (которой необходимо обвести выделяемую часть диаграммы) и, удерживая левую кнопку мышки, растянуть появившуюся рамку до необходимых размеров. После этого кнопку необходимо отпустить.
5. Непрерывное и дискретное время
В пакете Simulink различают два «времени»: непрерывное и дискретное. Увидеть различие между этими двумя способами задания времени можно на простейшем примере: взяв блок «Часы» (Clock) и блок «Дискретные часы» (Digital Clock), подадим их выходы на входы мультиплексора, а выход мультиплексора соединим с входом «осциллографа» (Scope).
Рисунок 2.13 – Модель для сравнения «непрерывного» и «дискретного» времени
Рисунок 2.14 – Сравнение сигналов «непрерывного» и «дискретного» времени на экране блока Scope
Как видно из рис.2.14, непрерывное время задается линейной функцией y = t, дискретное время представляет собой ступенчатую возрастающую функцию. В пакете Simulink дискретное время задается скалярной величиной, определяющей величину «ступеньки». Так как в данной работе основным предметом рассмотрения является гибридная система, то встает вопрос о том, каким образом происходит совмещение работы непрерывных и дискретных блоков в рамках одной модели?
В пакете Simulink с точки зрения задания времени существует несколько типов блоков:
Непрерывные блоки (такие как «Integrator», «Derivative», «Transfer Fcn» и т.д.) работают в непрерывном времени.
Блок «Константа» (Const) подддерживает на выходе заданное постоянное значение и является нейтральным.
Дискретные блоки (такие как «Zero-Order Hold», «Unit Delay», «Discrete Transfer Fcn» и т.д.) работают в дискретном времени, параметры которого задаются в диалоговом окне блоков.
Остальные блоки (такие как «Gain».) имеют неявную установку на работу в дискретном времени. Но если блок «Gain» следует за интегратором, он работает в непрерывном времени (так как интегратор является блоком с непрерывным временем), хотя если этот же самый блок «Gain» следует за блоком «Zero-Order Hold», он работает как дискретный блок, причем в том же дискретном времени, что и блок «Zero-Order Hold».
Если на входы блока подаются сигналы с различными установками дискретного времени, то блок автоматически выбирает из них дискретное время с минимальным шагом и работает именно в его режиме. Важно отметить, что блоки «Mux» и «Demux» просто группируют операторы - сигналы, проходящие через них сохраняют свою информацию о синхронизации дискретного времени.