Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практика_домашние_задания.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
288 Кб
Скачать
☆

3.2 Контрольные вопросы

3.2.1 Для чего предназначен пакет Simulink?

3.2.2 Объясните процедуру создания блок-диаграммы модели.?

3.2.3 Перечислите основные разделы библиотеки блоков пакета Simulink.

3.2.4 Какие блоки используются для входов модели?

3.2.5 Какие блоки можно использовать для выходов модели?

3.2.6 Как запускается модель?

Тема 4 Подсистема Statefiow пакета Simulink

Цель работы: изучить принципы создания диаграмм событийно-управляемых систем.

Основное назначение пакета Simulink заключается в осуществлении имитационного моделирования систем. При этом воздействие внешних событий (ситуаций) на поведение систем не учитывается или учитывается на уровне временных зависимостей источников воздействия. Между тем многие системы работают в условиях, когда возникновение тех или иных событий может существенным образом повлиять на их работу. Моделирование систем, поведение которых зависит от внешних событий (ситуаций) называется событийным или ситуационным. В пакете Simulink системы MatLab такое моделирование реализуется с помощью специального расширения Stateflow. Пакет имеет свой графический интерфейс пользователя, позволяющий создавать графические диаграммы, называемые SF-диаграммами. Эти диаграммы служат для визуального представления работы моделируемой системы. Это достигается анализом всех стадий ее работы с указанием активных и пассивных в данное время блоков и переходов между ними по результатам анализа тех или иных условий.

Доступ к средствам Stateflow подобен доступу к разделам библиотеки пакета Simulink. В окне библиотеки пакета Stateflow присутствует единственный блок Chart, который размещается в окне модели с помощью мыши.

Statefiow представляет собой графический инструментарий для проектирования сложных систем управления и является самым значительным дополнением к среде Simulink. Эта подсистема дает возможность моделировать поведение сложных событийно-управляемых систем.

4.1 Создание блока управления Statefiow

Процесс создания модели системы управления в Statefiow обычно подразумевает следующие этапы:

  • создание новой модели управляемого объекта в Simulink или использование уже существующей модели;

  • создание диаграммы в Statefiow;

  • добавление к Statefiow-блоку интерфейса событий и данных;

  • откладка модели;

  • генерация кода.

Для создания Statefiow-диаграммы необходимо сначала создать модель в Simulink или открыть уже существующую. Затем нужно выбрать в библиотеке блок, обозначающий диаграмму Statefiow, и перенести его в свою модель. После двойного щелчка по нему мышью, откроется окно Statefiow (chart), в котором, пользуясь меню и панелью инструментов, можно описывать сами состояния, связи между ними, определять переменные, условия переключения и другие, необходимые для управления элементы.

4.2 Основные элементы диаграмм Statefiow

На диаграмме Statefiow различают две основные группы элементов: графические и неграфические. Все графические элементы диаграммы представлены на левой панели основного окна - Statefiow (chart), графического редактора карт состояний. Это – state (состояние), default transition (переход по умолчанию), history junction (переход в последнее активное состояние) и connective junction (соединительный переход). Неявно на диаграмме задается еще один графический элемент – transition (переход). Состояние могут быть простыми и сложными (то есть имеющими иерархическую структуру), они также могут объединяться в цепочки состояний, функционирующих параллельно (и независимо друг от друга) и последовательно. В число графически непредставимых элементов входят data (переменные) и event (событие).

В основе Statefiow лежит специальная форма представления гибридного поведения – карта состояний. Основные элементы карты состояний – это состояние (state) и переход (transition).

State. Каждое состояние описывает один режим работы событийно-управляемой системы. Состояние становится активным, если получает значение “истина” условие перехода (срабатывает переход), ведущего к нему, или если это состояние является начальным. Каждое состояние на диаграмме Statefiow имеет «родителя», которым, по умолчанию, является сама диаграмма Statefiow.

Для создания графического образа состояния необходимо, выбрав на панели соответствующую кнопку, щелкнуть кнопкой мыши в том месте, где его необходимо разместить.

Состояние имеет текстовые метки, которые определяют действия, выполняемые во время его активности. Имя состояния вводится первым. При описании самого состояния могут быть определены следующие действия:

  • entry – действие, выполняемое на входе в состояние;

  • during- действие, выполняемое, пока состояние активно;

  • exit – действие, выполняемое на выходе из состояния;

  • on: {имя события}- действие, выполняемое в момент появления события (имя которого указано в угловых скобках) при условии, что система будет находиться в данном состоянии.

Создание подсостояний. Подсостояние – это состояние, которое может быть активно, только если активно состояние, называемое его родителем. Для того что бы создать подсостояние, необходимо, выбрав кнопку State, щелкнуть кнопкой мыши в поле того состояния, которое должно быть родительским, причем вложенность подсостояний может быть произвольной. Для того чтобы сменить родителя, следует “подхватить “ мышью необходимое подсостояние и “перетащить” его из поля предыдущего родителя в поле нового родителя.

Состояние с его подсостояниями можно сгруппировать в единое целое. Это удобно при перемещении такого состояния с одного места на другое без нарушения расположения его подсостояний относительно друг друга. Для этого необходимо, щелкнув правой кнопкой мыши, выбрать в появившемся меню пункт Make Contents/Group, или просто дважды щелкнуть левой кнопкой мыши в поле состояния. Сгруппированные состояния Simulink выделяет, обводя утолщенной линией. Разгруппировать состояния можно опять же, дважды щелкнув в поле состояния кнопкой мыши.

Transition. Переход – это объект, связывающий между собой два состояния. На диаграмме Stateflow он представляется стрелкой, начало которой относится к состоянию-источнику, а конец – к состоянию-адресату. Для того чтобы нарисовать переход, достаточно установив мышь у состояния-источника, нажать ее левую кнопку и, удерживая ее, протянуть появившуюся стрелку до состояния-адресата. Переход имеет метку, которая описывает условия срабатывания перехода и выполняемые при этом действия. Текст метки имеет следующий формат:

Event [condition] {condition_action}/transition_action

где Event – определяет события, которые инициирует переход. Если событие не указано, то переход инициируется при выполнении булевского выражения. Если событий, инициирующих данный переход, несколько, то они все указываются, при этом разделяются оператором OR. Например, на рис. 4.1 метка представляет переход, который срабатывает, если при возникновении события Е становится истинным выражение off_count==0.

4.1 Переход c приписанным ему условием срабатывания

E[off_count==0]{off_count++}/light_off

Condition – булевское выражение, инициирующее переход, становясь истинным. В данном примере выражение off_count==0, как только оно становится истинным, инициирует действие off_count++.

condition_action – действие, выполняемое после того, как стало истинным условие перехода, но до того, как весь переход определился истинным (и определилось состояние-адресат). В данном примере, как только становится истинным условие off_count==0, мгновенно выполняется действие off_count++.

transition_action – определяет действия, совершаемые при переходе, если все описанные ранее условия истинны и уже определено состояние-адресат. В данном примере действие Light_off выполняется, если условие off_count==0 истинно и найдено состояние-адресат.

Default transition. Переход по умолчанию – это переход с заданным адресатом, но без заданного источника. Его используют как аналог начального состояния, а также в сложных состояниях для того, чтобы определить, какое подсостояние становится активным, когда система попадает в данное сложное состояние (рис. 4.2). Для того чтобы установить на диаграмме переход по умолчанию, необходимо, выбрав в меню соответствующую кнопку, установить курсор мыши недалеко от границы того состояния, к которому надо подсоединить переход и нажать ее левую кнопку. Переход по умолчанию присоединяют, протянув курсор к границе состояния.

Рис. 4.2. Так помечается начальное состояние

History junction. Представим себе, что система покидает некоторое сложное организованное состояние с множеством подсостояний. Через некоторое время она возвращается в него же, и по определению должна возобновить работу с начального состояния, а нам бы хотелось, чтобы она продолжила работу с предыдущего активного состояния. Вот для этого и нужен переход в последнее активное состояние (history junction). Он срабатывает на том уровне иерархии, где был определен.

Connective junction. Соединительный переход – это графический объект, который позволяет упрощать диаграммы Stateflow и генерировать более эффективный код. Соединительный переход можно трактовать как состояние, в котором ничего не происходит, а лишь ожидается выполнение условий перехода. Его можно использовать, если у состояния существует два перехода, ожидающих одного и того же события, но срабатывающих при истинном значении различных булевских выражений. Соединительный переход можно помещать на диаграмме теми же способами, что и переход в последнее активное состояние с помощью кнопки меню.

Data. Переменные – это неграфические объекты на диаграмме Stateflow, предназначенные для хранения числовых данных. Переменные можно использовать на любом уровне иерархии. Различают следующие виды переменных: Входные; Выходные; Локальные; Константы; Существующие только в течение определенного временного интервала; Определенные в рабочем пространстве Matlab; Импортируемые из источника, внешнего относительно диаграмме Stateflow и Simulink; Экспортируемые адресату, внешнему относительно диаграмм Stateflow и Simulink.

Для того чтобы создать входные (выходные и т. д.) переменные в блоке Stateflow, необходимо в окне соответствующей диаграммы Stateflow выбрать соответствующий пункт меню: Add/Data/Input from Simulink для создания входной, Add/Data/Output to Simulink для создания выходной и Add/Data/Local для создания локальной переменной, и в открывшемся диалоговом окне Data ввести имя переменной и другие ее характеристики.

Event. События – это неграфические объекты на диаграмме Stateflow, управляющие диаграммой. Все события имеющие отношение к диаграмме Stateflow, должны быть определены. Различают следующие виды событий: Входные; Выходные; Локальные; Импортируемые из источника, внешнего относительно диаграмм Stateflow и Simulink; Экспортируемые адресату, внешнему относительно диаграмм Stateflow и Simulink.

Для того чтобы создать входные (выходные и т. д.) переменные в блоке Stateflow, необходимо в окне соответствующей диаграммы Stateflow выбрать соответствующий пункт меню: Add/ Event /Input from Simulink для создания входной, Add/ Event /Output to Simulink для создания выходной и Add/Data/Local для создания локальной переменной, и в открывшемся диалоговом окне Event ввести имя переменной и другие ее характеристики.

4.3 Примеры построения модели с SF-диаграммой

В первом примере SF-диаграмма обеспечивает прием двух векторов данных x и y и выдает вектор output той же длины. Выходной вектор выдается на цифровой дисплей (рис.4.3.1).

На рисунке 4.3.2 приведена блок-диаграмма еще одной модели, а на рис.4.3.3 - SF-диаграмма и результат работы диаграммы в смотровом окне Scope. Логика работы модели и SF-диаграммы понятна из рисунка.

Студентам должны собрать диаграммы приведенных моделей в Simulink и посмотреть работу SF-диаграммы.

Рисунок 4.3.1 Пример модели с SF-диаграммой

4.3.2 Блок-диаграмма модели

4.3.3 SF-диаграмма и «смотровое» окно результата