![]() |
|||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
![]() |
![]() |
![]() |
![]() |
||||||||||||||||||||||||||||||
![]() |
![]() |
||||||||||||||||||||||||||||||||
![]() |
![]() |
![]() |
![]() |
||||||||||||||||||||||||||||||
![]() |
![]() |
Вход | ![]() |
Раздел "Simulink" И.В.Черных. "Simulink: Инструмент моделирования динамических систем" В оглавление книги \ К следующему разделу \ К предыдущему разделу 9. Библиотека блоков Simulink 9.9. Subsystem – подсистемы. Подсистема это фрагмент Simulink-модели, оформленный в виде отдельного блока. Использование подсистем при составлении модели имеет следующие положительные стороны:
Использование подсистем и механизма их блоков позволяет создавать блоки, не уступающие стандартным по своему оформлению (собственное окно параметров блока, пиктограмма, справка и т.п.). Количество подсистем в модели не ограничено, кроме того подсистемы могут включать в себя другие подсистемы. Уровень вложенности подсистем друг в друга также не ограничен. Связь подсистемы с моделью (или подсистемой верхнего уровня иерархии) выполняется с помощью входных (блок Inport библиотеки Sources) и выходных (блок Outport библиотеки Sinks) портов. Добавление в подсистему входного или выходного порта приводит к появлению на изображении подсистемы метки порта, с помощью которой внешние сигналы передаются внутрь подсистемы или выводятся в основную модель. Переименование блоков Inport или Outport позволяет изменить метки портов, отображаемые на пиктограмме подсистемы со стандартных (In и Out) на те, которые нужны пользователю. Подсистемы могут быть виртуальными (Subsystem) и монолитными (Atomic Subsystem). Отличие этих видов подсистем заключается в порядке выполнения блоков во время расчета. Если подсистема является виртуальной, то Simulink игнорирует наличие границ отделяющих такую подсистему от модели при определении порядка расчета блоков. Иными словами в виртуальной системе сначала могут быть рассчитаны выходные сигналы нескольких блоков, затем выполнен расчет блоков в основной модели, а затем вновь выполнен расчет блоков входящих в подсистему. Монолитная подсистема считается единым (неделимым) блоком и Simulink выполняет расчет всех блоков в такой подсистеме, не переключаясь на расчеты других блоков в основной модели. Изображение монолитной подсистемы имеет более толстую рамку по сравнению с виртуальной подсистемой. Подсистемы могут быть также управляемыми или неуправляемыми. Управляемые подсистемы всегда являются монолитными. Управляемые подсистемы имеют дополнительные (управляющие) входы, на которые поступают сигналы активизирующие данную подсистему. Управляющие входы расположены сверху или снизу подсистемы. Когда управляемая подсистема активизирована – она выполняет вычисления. В том случае если управляемая подсистема пассивна, то она не выполняет вычисления, а значения сигналов на ее выходах определяются настройками выходных портов. Для создания в модели подсистемы можно воспользоваться двумя способами:
Рис. 9.9.1 иллюстрирует процесс создания подсистемы вторым способом. На рис. 9.9.2 показан результат этого процесса. В примере использована модель управляемого функционального генератора. Рис. 9.9.1 Создание подсистемы Рис. 9.9.2 Модель, использующая подсистему 9.9.1. Виртуальная и монолитная подсистемы Subsystem и Atomic Subsystem Доступ к окну параметров подсистемы осуществляется через меню Edit командой Block Parameters… Параметры:
Остальные параметры подсистемы доступны при разработке приложений с использованием Real-Time Workshop и рассмотрены в документации на это приложение. Находящийся в библиотеке блок Subsystem (или Atomic Subsystem) содержит входной и выходной порты и линию связи между ними. После того как блок подсистемы скопирован из библиотеки в модель, он становится доступным для редактирования. 9.9.2. Управляемая уровнем сигнала подсистема Enabled Subsystem Подсистема Enabled Subsystem (в дальнейшем E-подсистема) активизируется при наличии положительного сигнала на управляющем входе. Если входной сигнал векторный, то подсистема активизируется, если хотя бы один элемент принимает положительное значение. Величина выходного сигнала в том случае, если система заблокирована, определяется настройками выходных портов подсистемы (блоки Outport). В том случае если параметр Output when disabled (вид сигнала на выходе подсистемы) выходного порта имеет значение held, то выходной сигнал подсистемы равен последнему рассчитанному ею значению, если же этот параметр имеет значение reset, то выходной сигнал подсистемы равен значению задаваемому параметром Initial output (начальное значение). Свойства E-подсистемы определяются параметрами блока Enable, который может находиться в любом месте данной подсистемы. Его параметры перечислены ниже. Параметры:
На рис. 9.9.3 показан пример модели с подсистемой и схема этой подсистемы. В примере параметр States when enabling блока Enable имеет значение held. Параметр Output when disabled первого выходного порта подсистемы имеет значение reset, а второго – held. Как видно из временных диаграмм при выключении подсистемы сигнал первого выходного порта равен начальному значению (нулю), а сигнал второго выходного порта равен последнему рассчитанному значению в момент активности подсистемы. Рис. 9.9.3 Модель, использующая E-подсистему Пример на рис. 9.9.4 отличается от предыдущего настройкой блока Enable подсистемы. В данном примере параметр States when enabling блока Enable имеет значение reset. На временных диаграммах видно, что при выключении подсистемы происходит ее сброс до начального состояния. Рис. 9.9.4 Модель, использующая E-подсистему 9.9.3. Управляемая фронтом сигнала подсистема Triggered Subsystem Подсистема Triggered Subsystem (в дальнейшем T-подсистема) включается фронтом (перепадом уровня) управляющего сигнала и выполняет вычисления только на том шаге моделирования, где произошло это изменение. Если входной сигнал векторный, то подсистема активизируется, если хотя бы в одном элементе изменяется уровень сигнала. Возврат T-подсистемы в исходное состояние не производится (подсистема сохраняет последнее значение до следующего запуска), поэтому параметр States when enabling выходных портов имеет значение held, и недоступен для изменения. В T-подсистеме могут использоваться блоки, для которых модельное время является наследуемым параметром от предыдущего блока (например, Gain или Logical Operator), а также дискретные блоки, для которых параметр sample time имеет значение –1 (минус один). Свойства T-подсистемы определяются параметрами блока Trigger, который может находиться в любом месте данной подсистемы. Его параметры перечислены ниже. Параметры:
На рис. 9.9.5 показан пример модели с T-подсистемой. Сама T-подсистема содержит лишь один усилитель с коэффициентом передачи равным 1. Как видно из временных диаграмм, подсистема срабатывает по положительному фронту управляющего сигнала. Выходной сигнал подсистемы остается неизменным до следующего положительного фронта управляющего сигнала. Рис. 9.9.5 Модель, использующая T-подсистему 9.9.4. Управляемая уровнем и фронтом сигнала подсистема Enabled and Triggered Subsystem Подсистема Enabled and Triggered Subsystem (в дальнейшем ET-подсистема) включается фронтом сигнала поступающего на T-вход системы при наличии положительного сигнала на E-входе системы. Так же как и Triggered Subsystem эта подсистема выполняет вычисления только на том шаге моделирования, где произошло изменение управляющего сигнала на T-входе. Параметр States when enabling блока Enable не оказывает влияния на работу ET-подсистемы. Оба управляющих сигнала могут быть векторными. Пример ET-подсистемы дан на рис. 9.9.6. Рис. 9.9.6 Модель, использующая ET-подсистему 9.9.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. 9.9.6. Блок условного оператора If Назначение: Обеспечивает формирование управляющих сигналов для подсистем If Action Subsystem. Блок является аналогом оператора if-else языка программирования C. Параметры:
На пиктограмме блока отображаются условные выражения, записанные в его параметрах. Добавление каждого нового альтернативного условного выражения приводит к появлению нового 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) { Рис. 9.9.7 Использование блока If совместно с подсистемами If Action Subsystem 9.9.7. Блок переключателя Switch Case Назначение: Обеспечивает формирование управляющих сигналов для подсистем Case Action Subsystem. Блок является аналогом оператора Switch языка программирования C. Параметры:
На рис. 9.9.8 показан пример использования блока Switch Case совместно с подсистемами Switch Case Action Subsystem. В примере первая подсистема пропускает через себя входной сигнал, если входной сигал блока Switch Case равен 1, вторая – если входной сигнал равен –1 (минус один), и третья – если входной сигнал не равен ни -1 ни +1. С-код, соответствующий алгоритму работы блока Switch Case в приведенном примере выглядит следующим образом: switch (u1) { Рис. 9.9.8 Использование блока Switch Case совместно с подсистемами Switch Case Action Subsystem 9.9.8. Управляемая по условию подсистема Action Subsystem Подсистема предназначена для работы под управлением блоков If или Switch Case. В первом случае она называется If Action Subsystem, а во втором Switch Case Action Subsystem. Параметры подсистемы определяются настройками ее выходных портов, а также настройкой блока Action Port, наличие которого в подсистеме и превращает ее в Action Subsystem. Блок имеет один параметр настройки: States when execution is resumed – Состояние подсистемы системы при следующем возобновлении работы. Значение параметра выбирается из списка:
Рассматриваемый параметр оказывает такое же действие на поведение подсистемы как параметр States when enabling блока Enable. 9.9.9. Управляемая подсистема For Iterator Subsystem Управляемая подсистема For Iterator Subsystem представляет собой подсистему, которая выполняется неоднократно в течение одного такта моделирования. Количество повторений должно быть известно заранее и может задаваться внешним источником сигнала или с помощью параметра блока. Основные свойства подсистемы задает итерационный блок For Iterator. Блок является аналогом оператора цикла For языка программирования C. Блока For может находиться в любом месте подсистемы. Его параметры перечислены ниже. Параметры:
На рис. 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; } Рис. 9.9.9 Применение For Iterator Subsystem Скачать пример (EX_For_Iterator_Subsystem_1.zip) 9.9.10. Управляемая подсистема While Iterator Subsystem Управляемая подсистема While Iterator Subsystem представляет собой подсистему, которая выполняется неоднократно в течение одного такта моделирования. Количество повторений заранее не известно. Цикл прекращается, если значение логического сигнала на управляющем входе подсистемы станет равно FALSE. Основные свойства подсистемы задает итерационный блок While Iterator. Блок является аналогом оператора цикла while (do-while) языка программирования C. Свойства While Iterator Subsystem определяются параметрами блока While Iterator. Его параметры перечислены ниже. Параметры:
Входной порт 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; } Рис. 9.9.10 Применение While Iterator Subsystem 9.9.11. Конфигурируемая подсистема Configurable Subsystem Блок Configurable Subsystem позволяет создавать подсистему, обеспечивающую выбор конфигурации этой подсистемы. Например, в систему управления каким-либо объектом можно поставить конфигурируемую подсистему, наполнив ее различными вариантами регуляторов, и затем, перед проведением расчета, выбирать нужный вариант регулятора. Для реализации такого механизма конфигурирования необходимо:
Рис. 9.9.11 Окно диалога Configuration dialog Пример модели, использующей конфигурируемую подсистему, и библиотека конфигурируемой подсистемы показаны на рис. 9.9.12. В примере конфигурируемая подсистема состоит из апериодического и колебательного звеньев, которые могут выбираться при указании нужного варианта. Рис. 9.9.12 Применение Configurable Subsystem В оглавление книги \ К следующему разделу \ К предыдущему разделу |
![]() |
||
Всероссийская научная конференция "Проектирование научных и инженерных приложений в среде MATLAB" (май 2002 г.) |
||
На первую страницу \ Сотрудничество \ MathWorks \ SoftLine \ Exponenta.ru \ Exponenta Pro | ||
E-mail: info@matlab.ru | ||
Информация на сайте была обновлена 10.11.2003 |
Copyright 2001-2003 SoftLine Co
|
|