
- •Бібліотека блоків Simulink Subsystem – підсистеми.
- •2. Керована рівнем сигналу підсистема Enabled Subsystem
- •3. Керована фронтом сигналу підсистема Triggered Subsystem
- •4. Керована рівнем і фронтом сигналу підсистема Enabled and Triggered Subsystem
- •5. Керована s-функцією підсистема Function-call subsystem
- •6. Блок умовного оператора If
- •7. Блок перемикача Switch Case
- •8. Керована за умовою підсистема Action Subsystem
- •10. Керована підсистема While Iterator Subsystem
- •11. Конфигурируемая підсистема Configurable Subsystem
4. Керована рівнем і фронтом сигналу підсистема Enabled and Triggered Subsystem
Підсистема Enabled and Triggered Subsystem (надалі ET-підсистема) включається фронтом сигналу, що надходить на T-вхід системи при наявності позитивного сигналу на E-вході системи. Так само як і Triggered Subsystem ця підсистема виконує обчислення тільки на тім кроці моделювання, де відбулася зміна керуючого сигналу на T-вході. Параметр States when enabling блоку Enable не робить впливу на роботу ET-підсистеми.
Обоє керуючих сигналу можуть бути векторними. Приклад ET-підсистеми даний на Рис. 6.
Рис. 6 Модель, що використовує ET-підсистему
5. Керована s-функцією підсистема Function-call subsystem
Function-call subsystem (надалі FC-підсистема) є T-підсистемою, призначеної для використання разом з S-функцією написаної мовою C. Використовуючи спеціальні засоби, можна забезпечити виконання підсистеми під час виконання S-функції. На час виконання FC-підсистеми робота S-функції зупиняється, а по закінченні виконання FC-підсистеми робота S-функції відновляється. Таким чином, FC-підсистема забезпечує створення S-функцій, що запускають підсистеми складені з Simulink-блоків. Механізм створення таких S-функцій описаний у документації Simulink, присвяченої створенню S-функцій.
Для роботи з FC-підсистемою можна використовувати також Function-Call Generator і засобу пакета событийного моделювання Stateflow.
6. Блок умовного оператора If
Призначення:
Забезпечує формування керуючих сигналів для підсистем If Action
Subsystem. Блок є аналогом оператора if-else мови програмування C.
Параметри:
Number of inputs – Кількість входів.
If expression – Умовне вираження. Умовне вираження може містити в собі наступні знаки: <. <=, ==, ~=, >, >=, &, |, [ ], а також унарный мінус. Якщо записане умовне вираження щире, то на вихідному If-порту блоку формується керуючий сигнал.
Elseif expressions – Одне чи список альтернативних умовних виражень розділених комами, що обчислюються, якщо умовне вираження If expression ложно. Кожному умовному вираженню, записаному в списку Elseif expressions відповідає вихідний Elseif-порт на який формується керуючий сигнал, якщо відповідне умовне вираження щире. При цьому алгоритм обчислення альтернативних умовних виражень такий, що якщо одне з альтернативних умовних виражень виявиться щирим, те наступні в списку вираження не перевіряються. Альтернативне умовне вираження може містити в собі ті ж знаки, що і вираження If expression.
Show else condition (прапорець) – Показати Else-порт. На Else-порту формується керуючий сигнал, якщо умовне вираження і всі альтернативні умовні вираження помилкові.
На піктограмі блоку відображаються умовні вираження, записані в його параметрах. Додавання кожного нового альтернативного умовного вираження приводить до появи нового Elseif вихідного порту.
Якщо вхідні сигнали блоку є скалярами, то для їхнього позначення у вираженнях використовується запис виду u1, u2 ,u3 і т.д. Якщо вхідні сигнали векторні, то для позначення елементів вектора використовуються вираження виду u1(1), u1(2), u2(1), u2(2) і т.д.
На Рис. 7 показаний приклад використання блоку If разом з підсистемами If Action Subsystem. У прикладі перша підсистема пропускає через себе вхідний сигнал якщо вхідний сигал блоку If більше 1, друга – якщо вхідний сигнал менше –1 (мінус один), і третя – якщо вхідний сигнал лежить в інтервалі від -1 до +1.
З-код, що відповідає алгоритму роботи блоку If у приведеному прикладі виглядає в такий спосіб:
if (u1 > 1) { If Action Subsystem 1; } elseif (u1 < -1){ If Action Subsystem 2; } else { If Action Subsystem 3; }
Рис. 7 Використання блоку If разом з підсистемами If Action Subsystem