Системы имитационного моделирования. Технология имитационного моделирования (Разделы 9-10 учебного пособия "Моделирование систем"), страница 4

          Пример. Предположим, что интересующая нас информация находится в Интернете на одном из двух Web-узлов - Сайт 1 и Сайт 2. Результаты поиска нужно отобразить. Все данные (результат анализа сайтов и факты сообщений) имеют бинарные значения - 1, 0. Число выборок - 4.

          Составим таблицу состояний системы (табл.9.1).

Таблица 9.1. Входные и выходные данные

Наличие нужной информации

Факт сообщения

Сайт 1

Сайт 2

0

0

1

0

1

1

1

0

1

1

1

1

Осуществим ручной ввод данных с помощью блоков-источников постоянных величин (Constant). Таких блоков нужно два - по числу источников информации (Сайт 1 - Siti1, Сайт 2 - Siti2). Для первой выборки необходимо в поле параметров этих блоков ввести соответственно числа 0, 0. Набор состояний пользователя Интернета легко описывается блоком Combinatorial Logic. В поле параметров этого блока укажем по два входных набора и один выходной (всего четыре тройки чисел): [0 0 1;0 1 1;1 0 1;1 1 1], отобразив таким образом результаты поиска и факт сообщения. В качестве приемника сообщений выберем блок цифровых дисплеев - два дисплея для отображения входных данных, один - для вывода факта сообщения. Так как такой совокупности дисплеев нет в библиотеке Simulink, необходимо перенести библиотечный блок Display в модель, заказать его характеристики и увеличить блок  по высоте. В этом случае при первом запуске модели на выполнение в поле блока Display автоматически появятся все три дисплея (так как выход блока Combinatorial Logic - вектор). Поскольку информация от двух источников передается через одного пользователя, потребуется также блок мультиплексора - Mux (рис.9.3).

 


Display

 

Constant 1

 
   

Рис.9.3

 
         

Вводя любые входные наборы, можно последовательно исследовать реакцию модели для четырех выборок.

          Для визуального упрощения сложных Simulink-моделей, кроме SubSystem, в определенных случаях целесообразно использовать маскированные подсистемы (Mask Subsystem), куда помещают часть всей модели и которые нельзя увидеть на блок-диаграмме. Это обычные блоки SubSystem, которые введены в Simulink-модели из библиотеки и   обработаны редактором маски (Mask Editor). Для запуска последнего необходимо в меню Edit окна блок-диаграммы Simulink выбрать команду Mask Subsystem.

          Подсистема  Stateflow. Расширяет возможности Simulink, предоставляя возможность моделирования гибридных или сложных событийно-управляемых систем, базируясь на картах состояния Харела. Созданные пользователями пакета Simulink модели рассматриваются как объекты, закон управления которыми реализуется в Stateflow. Для этого в Stateflow разрабатывают диаграммы состояний исходной Simulink-модели и добавляют интерфейс событий и данных; после отладки системы производится генерация программного кода.

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

          Основные элементы карты состояний - это состояние (state) и переход (transition). Каждое состояние описывает один режим работы событийно-управляемой  системы. Состояние становится активным, если получает значение "истина" условие перехода (срабатывает переход), ведущего к нему, или если это состояние является начальным. Каждое состояние на диаграмме Stateflow имеет "родителя", которым, по умолчанию, является сама диаграмма Stateflow. Графическое состояние выбирают на инструментальной панели и переносят на то место, где его нужно разместить. Состояние имеет текстовые метки, которые определяют действия, выполняемые во время его активности. Состояние, которое может быть активным, только если активно состояние, называемое его родителем, называется подсостоянием. Подсостояние создается в поле родительского состояния. Состояние с его подсостояниями можно сгруппировать в единое целое. Допустимы параллельные активные состояния.

          Переход (transition) - это объект, связывающий между собой два состояния. На диаграмме Stateflow он представляется стрелкой, начало которой относится к состоянию-источнику, а конец - к состоянию-адресату. Переход имеет метку, которая описывает условия срабатывания перехода и выполняемые при этом действия. Начальное состояние не имеет источника, но имеет адресат.

          Переменные (Data) в Stateflow - это неграфические объекты на диаграмме, предназначенные для хранения числовых данных. Переменные могут быть  входными, выходными, локальными, константами, существующими только в определенные отрезки времени, в рабочем пространстве MATLAB, импортируемые от внешних источников, экспортируемые во внешние приемники. Тип переменных задается выбором соответствующего меню в окне диаграммы состояний.

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