Блок переключателя Switch Case
Назначение:
Обеспечивает формирование управляющих сигналов для подсистем Case Action Subsystem. Блок является аналогом оператора Switch языка программирования C.
Параметры:
Case conditions – Список значений входных сигналов (целое число). Каждому значению соответствует отдельный выходной Case-порт. Если значение входного сигнала, поступающего на вход блока Switch Case, совпадает с каким либо значением из списка, то на соответствующем выходе блока формируется управляющий сигнал. Если входной сигнал не является целым, то его дробная часть отбрасывается. В выражении Case conditions можно использовать квадратные скобки, если необходимо вырабатывать управляющий сигнал на каком-либо порту для нескольких значений входного сигнала.
Например, выражение {1,[7,9]} задает два выходных Case порта.
На первом из них управляющий сигнал формируется, если входной сигнал блока равен 1, а на втором, – если входной сигнал равен 7 или 9. В выражении Case conditions можно использовать также диапазоны значений. Например, выражение {1:5} определяет, что для единственного выходного Case-порта выходной сигал будет вырабатываться, если входной сигнал блока равен 1, 2, 3, 4 или 5.
Show default case (флажок) – Показать default case-порт. На выходе default case-порта формируется управляющий сигнал, если входной сигнал блока не совпадает ни с одним значением, перечисленным в списке Case conditions.
На рисунке 9.9.8 показан пример использования блока Switch Case совместно с подсистемами Switch Case Action Subsystem. В примере первая подсистема пропускает через себя входной сигнал, если входной сигал блока Switch Case равен 1, вторая – если входной сигнал равен –1 (минус один), и третья – если входной сигнал не равен ни -1 ни +1.
С-код, соответствующий алгоритму работы блока Switch Case в приведенном примере выглядит следующим образом:
switch (u1) { case 1: Switch Case Action Subsystem 1; break; case -1:
Switch Case Action Subsystem 2; break; default: Switch Case Action Subsystem 3; }
Блок условного оператора 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) ит.д.
показан пример использования блока
На рисунке 9.9. 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; }
Конфигурируемая подсистема Configurable Subsystem
Блок Configurable Subsystem позволяет создавать подсистему, обеспечивающую выбор конфигурации этой подсистемы. Например, в систему управления каким-либо объектом можно поставить конфигурируемую подсистему, наполнив ее различными вариантами регуляторов, и затем, перед проведением расчета, выбирать нужный вариант регулятора.
Для реализации такого механизма конфигурирования необходимо:
Создать библиотеку (File/New/Library).
Добавить в созданную библиотеку блок Configurable Subsystem и все необходимые варианты конфигурации подсистемы. Каждый из вариантов должен представлять собой стандартный блок Simulink либо маскированную подсистему (подсистему, имеющую собственное окно установки параметров).
Открыть Configurable Subsystem и выполнить ее настройку, отметив флажками нужные варианты и выбрав отображаемые входные и выходные порты подсистемы. Пример окна диалога Configuration dialog показан на рисунке 9.9.11.
в окно модели блок Configurable
Поместить в окно модели блок Configurable Subsystem из только что созданной библиотеки.
С помощью команды контекстного меню (вызывается нажатием правой клавиши мыши на объекте) Block choice (вариант блока) выбрать нужный вариант конфигурации. При открытии конфигурируемой подсистемы в окне модели будет автоматически открываться окно параметров того блока, который выбран командой Block choice.
Пример модели, использующей конфигурируемую подсистему,
Пример модели, использующей конфигурируемую подсистему, и библиотека конфигурируемой подсистемы показаны на рисунке 9.9.12. В примере конфигурируемая подсистема состоит из апериодического и колебательного звеньев, которые могут выбираться при указании нужного варианта.
иллюстрирует процесс создания подсистемы
Рисунок 9.9. 1 иллюстрирует процесс создания подсистемы вторым способом. На рисунке 9.9.2 показан результат этого процесса. В примере использована модель управляемого функционального генератора.
Subsystem – подсистемы 3
Управляемая фронтом сигнала подсистема Triggered Subsystem
Подсистема Triggered Subsystem (в дальнейшем Tподсистема) включается фронтом (перепадом уровня) управляющего сигнала и выполняет вычисления только на том шаге моделирования, где произошло это изменение. Если входной сигнал векторный, то подсистема активизируется, если хотя бы в одном элементе изменяется уровень сигнала. Возврат T-подсистемы в исходное состояние не производится (подсистема сохраняет последнее значение до следующего запуска), поэтому параметр States when enabling выходных портов имеет значение held, и недоступен для изменения.
В T-подсистеме могут использоваться блоки, для которых модельное время является наследуемым параметром от предыдущего блока (например, Gain или Logical Operator), а также дискретные блоки, для которых параметр sample time имеет значение –1 (минус один).
Свойства T-подсистемы определяются параметрами блока Trigger, который может находиться в любом месте данной подсистемы. Его параметры перечислены ниже.
Параметры:
Trigger type – Тип триггера. Выбирается из списка:
rising – Активизация подсистемы положительным фронтом.
falling – Активизация подсистемы отрицательным фронтом.
either – Активизация подсистемы как положительным, так и отрицательным фронтом.
function-call – Активизация подсистемы определяется логикой работы заданной S-функции.
Show output port (флажок) – Показать выходной порт.
Управляемая по условию подсистема Action Subsystem
Подсистема предназначена для работы под управлением блоков If или Switch Case. В первом случае она называется If Action Subsystem, а во втором Switch Case Action Subsystem. Параметры подсистемы определяются настройками ее выходных портов, а также настройкой блока Action Port, наличие которого в подсистеме и превращает ее в Action Subsystem.
Блок имеет один параметр настройки:
States when execution is resumed – Состояние подсистемы системы при следующем возобновлении работы. Значение параметра выбирается из списка:
held – Использовать предыдущее состояние (последнее состояние когда система была активна).
reset – Использовать начальное (исходное) состояние.
Рассматриваемый параметр оказывает такое же действие на поведение подсистемы как параметр States when enabling блока Enable.
Управляемая подсистема For Iterator Subsystem
Управляемая подсистема For Iterator Subsystem представляет собой подсистему, которая выполняется неоднократно в течение одного такта моделирования. Количество повторений должно быть известно заранее и может задаваться внешним источником сигнала или с помощью параметра блока. Основные свойства подсистемы задает итерационный блок For Iterator. Блок является аналогом оператора цикла For языка программирования C. Блока For может находиться в любом месте подсистемы. Его параметры перечислены ниже.
Параметры:
States when starting – Состояние подсистемы при следующем запуске. Значение параметра выбирается из списка:
held – Использовать предыдущее состояние (последнее состояние когда система была активна).
reset – Использоватьначальное (исходное) состояние.
Source of number of iterations (флажок) – Источник задающий количество итераций.
internal – Внутренний.
external – Внешний.
Number of iterations – Количество итераций. Параметр доступен, если выбран внутренний источник числа итераций.
Show iteration number port – Отобразить на пиктограмме блока выходной порт, с которого снимается сигнал номера итерации.
Output data type – Тип данных выходного сигнала порта. Значение параметра выбирается из списка: int32, int16, int8 и double.
На рисунке 9.9.9 показан пример использования For Iterator Subsystem. В примере выполняется накопление суммы значений с шагом равным 10. Количество итераций задается внешним источником и равно 20.
С-код, соответствующий алгоритму работы For Iterator Subsystem в приведенном примере выглядит следующим образом:
sum = 0; iterations = 20; sum_increment = 10; for (i = 0; i < iterations; i ++) { sum = sum + sum_increment; }
Управляемая подсистема While Iterator Subsystem
Управляемая подсистема While Iterator Subsystem представляет собой подсистему, которая выполняется неоднократно в течение одного такта моделирования. Количество повторений заранее не известно. Цикл прекращается, если значение логического сигнала на управляющем входе подсистемы станет равно FALSE. Основные свойства подсистемы задает итерационный блок While Iterator. Блок является аналогом оператора цикла while (do-while) языка программирования C.
Свойства While Iterator Subsystem определяются параметрами блока While Iterator. Его параметры перечислены ниже.
Максимальное количество итераций. Если значение
Параметры:
Maximum number of iterations – Максимальное количество итераций. Если значение параметра равно -1 (минус один), то количество итераций не ограничивается.
While loop type (флажок) – Тип цикла. Выбирается из списка:
while – Цикл while.
do-while – Цикл do-while.
States when starting – Состояние подсистемы системы при следующем запуске. Значение параметра выбирается из списка:
held – Использовать предыдущее состояние (последнее состояние когда система была активна).
reset – Использоватьначальное (исходное) состояние.
Show iteration number port – Отобразить на пиктограмме блока выходной порт, с которого снимается сигнал номера итерации.
Output data type – Тип данных выходного сигнала порта. Значение параметра выбирается из списка: int32, int16, int8 и double. Входной порт IC позволяет задать начальное значение сигнала прекращающего выполнение цикла while. При использовании цикла do-while подсистема будет выполнена хотя бы один раз (поскольку проверка условия в этом случае производится в конце цикла).
На рисунке 9.9.10 показан пример использования While Iterator Subsystem. В примере выполняется накопление суммы значений с шагом равным 10. Выполнение цикла прекращается, когда величина суммы достигнет значения 100.
С-код, соответствующий алгоритму работы While Iterator Subsystem вприведенном примере выглядит следующим образом:
sum= 0; IC = 1; iteration_number = 0; cond = IC; while (cond != 0) { iteration_number = iteration_number + 1; sum = sum + sum_increment; if (sum > 100 OR iterations > max_iterations) cond = 0;
Управляемая 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.
Управляемая уровнем и фронтом сигнала подсистема Enabled and Triggered Subsystem
Подсистема Enabled and Triggered Subsystem (в дальнейшем ET-подсистема) включается фронтом сигнала поступающего на Tвход системы при наличии положительного сигнала на E-входе системы. Так же как и Triggered Subsystem эта подсистема выполняет вычисления только на том шаге моделирования, где произошло изменение управляющего сигнала на T-входе. Параметр States when enabling блока Enable не оказывает влияния на работу ETподсистемы.
Оба управляющих сигнала могут быть векторными.
Пример ET-подсистемы дан на рисунке 9.9.6.
.
Управляемая уровнем сигнала подсистема Enabled Subsystem
Подсистема Enabled Subsystem (в дальнейшем Eподсистема) активизируется при наличии положительного сигнала на управляющем входе. Если входной сигнал векторный, то подсистема активизируется, если хотя бы один элемент принимает положительное значение. Величина выходного сигнала в том случае, если система заблокирована, определяется настройками выходных портов подсистемы (блоки Outport). В том случае если параметр Output when disabled (вид сигнала на выходе подсистемы) выходного порта имеет значение held, то выходной сигнал подсистемы равен последнему рассчитанному ею значению, если же этот параметр имеет значение reset, то выходной сигнал подсистемы равен значению задаваемому параметром Initial output (начальное значение).
Свойства E-подсистемы определяются параметрами блока Enable, который может находиться в любом месте данной подсистемы. Его параметры перечислены ниже.
Параметры:
States when enabling – Состояние при запуске. Параметр задает состояние подсистемы при каждом запуске. Выбирается из списка:
held – Использовать предыдущее состояние (последнее состояние когда система была активна).
reset – Использовать начальное (исходное) состояние.
Show output port (флажок) – Показать выходной порт. При установленном флажке на пиктограмме блока Enable появляется дополнительный выходной порт, сигнал с которого может быть использован для управления блоками внутри подсистемы. На рисунке 9.9.3 показан пример модели с подсистемой и
схема этой подсистемы. В примере параметр States when enabling блока Enable имеет значение held. Параметр Output when disabled первого выходного порта подсистемы имеет значение reset, а второго – held. Как видно из временных диаграмм при выключении подсистемы сигнал первого выходного порта равен начальному значению (нулю), а сигнал второго выходного порта равен последнему рассчитанному значению в момент активности подсистемы.
отличается от предыдущего настройкой
Пример на рисунке 9.9. 4 отличается от предыдущего настройкой блока Enable подсистемы. В данном примере параметр States when enabling блока Enable имеет значение reset. На временных диаграммах видно, что при выключении подсистемы происходит ее сброс до начального состояния.
Виртуальная и монолитная подсистемы Subsystem и Atomic Subsystem
Доступ к окну параметров подсистемы осуществляется через меню Edit командой Block Parameters…
Параметры:
Show port labels – Показать метки портов.
Treat as atomic unit (флажок) – Считать подсистему монолитной. Таким образом, блоки виртуальной и монолитной подсистем – это один и тот же блок, отличающийся значением данного параметра.
Access – Доступность подсистемы для изменений. Выбирается из списка:
ReadWrite – Пользователь может открывать и изменять подсистему.
ReadOnly – Пользователь может открывать подсистему только для просмотра.
NoReadOrWrite – Пользователь не может открывать и изменять подсистему.
Name of error callback function – Имя функции используемой для обработки ошибок возникающих в данной подсистеме. Остальные параметры подсистемы доступны при разработке приложений с использованием Real-Time Workshop и рассмотрены в документации на это приложение.
Находящийся в библиотеке блок Subsystem (или Atomic Subsystem) содержит входной и выходной порты и линию связи между ними. После того как блок подсистемы скопирован из библиотеки в модель, он становится доступным для редактирования.