ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 26.01.2021
Просмотров: 784
Скачиваний: 2
230
События
создаются
путем
выбора
пункта
меню
Add – Event
и
далее
последовательности
Event – Local, Event – Input from Simulink
и
т
.
д
.
В
результате
появляется
диалоговое
окно
Event,
где
определяется
конкретное
имя
события
и
его
характеристики
,
в
перечне
которых
важнейшей
является
установка
вида
события
в
поле
Trigger.
В
большинстве
случаев
события
могут
рассматриваться
как
скачкообразные
изменения
(
переключения
)
состояний
,
сопровождающиеся
резкими
изменениями
уровня
соответствующих
сигналов
;
при
этом
могут
быть
события
следующего
вида
: Rising –
с
повышением
уровня
сигнала
; Falling
–
с
понижением
уровня
; Either –
с
любым
направлением
изменения
уровня
.
События
могут
также
создаваться
и
модифицироваться
в
диалоговом
окне
обозревателя
Stateflow Explorer,
выбираемом
в
рамках
пункта
основного
меню
Tools – Explorer.
Другими
основными
неграфическими
объектами
SF-
модели
являются
данные
(Date).
Они
представляют
числовые
значения
переменных
,
используемых
в
модели
.
Данные
имеют
свойства
(
классические
типы
),
а
также
область
видимости
(Scope).
Как
и
события
,
данные
могут
быть
локальными
,
входными
,
выходными
,
импортируемыми
и
экспортируемыми
.
Кроме
того
,
данные
могут
определяться
как
константы
и
временные
(
промежуточные
)
переменные
.
Для
создания
и
модификации
данных
следует
воспользоваться
пунктом
меню
Add – Date,
а
также
обозревателем
Stateflow Explorer,
выбираемом
в
рамках
пункта
меню
Tools – Explorer.
Еще
одним
классом
неграфических
объектов
SF-
моделей
являются
действия
или
процедуры
(Action).
Они
определяют
любые
операции
,
связанные
с
преобразованием
данных
,
работой
SF-
модели
и
управлением
процессом
ее
функционирования
.
Для
описания
процедур
служит
специальный
язык
Action Language,
построенный
на
основе
синтаксиса
языка
C
и
содержащий
арифметические
и
логические
операторы
,
функции
,
определяемые
пользователем
,
а
также
некоторые
специальные
функции
.
Следует
отметить
следующие
процедуры
,
часто
используемые
при
построении
SF-
моделей
:
chg (data_name) –
процедура
генерации
локального
события
в
случае
изменения
значений
переменной
data_name;
in (state_name) –
логическая
функция
,
имеющая
значение
true,
когда
состояние
state_name
активно
;
231
send (event_name, state_name) –
процедура
пересылки
спецификации
события
event_name
состоянию
state_name (
прямая
передача
событий
);
ml (
′
function_name (a, b,…)
′
) –
процедура
,
вызывающая
функцию
,
сформированную
в
MATLAB
и
выполняющую
вычисления
для
значений
перечисленных
аргументов
;
ml.datam_name –
процедура
,
предоставляющая
доступ
к
переменной
datam_name
рабочей
области
MATLAB.
Процедуры
используются
для
описания
SF-
диаграммы
в
рамках
двух
моделей
конечных
автоматов
:
модели
Мура
,
связывающей
процедуры
с
состояниями
;
модели
Мили
,
связывающей
процедуры
с
переходами
.
Для
того
чтобы
реализовать
выбранный
алгоритм
работы
SF-
модели
,
необходимо
выполнить
описание
введенных
состояний
и
переходов
между
ними
,
а
также
используемых
данных
.
При
создании
состояния
с
помощью
кнопки
State
в
левом
верхнем
углу
его
графического
образа
появляется
знак
вопроса
.
На
его
место
вводится
описание
состояния
,
которое
в
простейшем
случае
должно
определять
имя
состояния
.
В
общем
случае
описание
состояния
имеет
следующую
структуру
(
см
.
пример
рис
. 6.20).
Первым
вводится
имя
состояния
.
Далее
через
косую
черту
может
вводится
: entry:
и
группа
действий
,
выполняемых
при
входе
в
состояние
; during:
и
группа
действий
,
выполняемых
пока
данное
состояние
активно
; exit:
и
группа
действий
,
выполняемых
при
выходе
из
состояния
; on event_name:
и
группа
действий
,
выполняемых
в
момент
возникновения
события
event_name
при
пребывании
в
данном
состоянии
.
Для
описания
перехода
следует
поместить
указатель
мыши
на
соединительную
линию
и
нажать
левую
кнопку
.
Около
линии
появится
знак
вопроса
.
На
его
место
следует
ввести
описание
или
метку
перехода
,
которая
определяет
условия
срабатывания
перехода
и
выполняемые
при
этом
процедуры
.
В
общем
случае
структура
метки
перехода
состоит
из
нескольких
частей
и
имеет
следующий
вид
(
см
.
пример
рис
. 6.20):
event_name [condition] {condition_action}/transition_action ,
где
event_name –
имя
события
,
которое
инициирует
переход
; condition –
условие
перехода
в
виде
булевского
выражения
,
инициирующего
переход
232
в
случае
его
истинности
; condition_action –
действие
условия
,
выполняемое
мгновенно
после
того
,
как
стало
истинным
условие
перехода
,
но
до
того
,
как
выполнен
весь
переход
(
не
определилось
состояние
-
адресат
); transition_action –
действие
перехода
,
совершаемое
при
переходе
и
уже
найдено
состояние
-
адресат
.
При
программировании
метки
перехода
может
отсутствовать
любая
ее
часть
.
Переход
происходит
при
наступлении
события
,
но
с
учетом
истинности
условия
,
если
оно
определено
.
Определение
условия
не
обязательно
.
Также
может
отсутствовать
имя
события
.
Тогда
переход
происходит
при
выполнении
условия
и
наступлении
любого
события
.
SF-
диаграмма
может
реализовывать
иерархическую
структуру
вложенных
состояний
(
рис
. 6.20).
Это
означает
,
что
каждое
состояние
имеет
состояние
-
родителя
.
Для
SF-
диаграммы
,
состоящей
из
одного
состояния
,
родителем
является
сама
SF-
диаграмма
.
Для
того
,
чтобы
получить
вложенные
состояния
необходимо
с
помощью
мыши
перетащить
один
блок
-
состояние
в
другой
,
предварительно
увеличив
размеры
последнего
.
Эти
размеры
регулируются
также
с
помощью
мыши
,
для
чего
необходимо
поместить
ее
указатель
в
один
из
скругленных
углов
прямоугольника
.
При
выполнении
действий
адрес
любого
вложенного
состояния
с
именем
state_name1
указывается
как
state_name.state_name1,
где
state_name –
имя
состояния
-
родителя
.
Stateflow
поддерживает
создание
как
взаимоисключающих
(OR),
так
и
параллельных
(AND)
состояний
.
Для
определения
параллельных
состояний
,
предварительно
помещенных
в
окне
SF-
диаграммы
,
необходимо
,
щелкнув
левой
кнопкой
мыши
в
поле
внешнего
состояния
-
родителя
,
выбрать
в
раскрывающемся
меню
пункт
Decomposition –
Parallel (AND).
В
результате
границы
параллельных
состояний
отображаются
пунктирной
линией
,
а
в
правых
верхних
углах
блоков
автоматически
устанавливаются
их
номера
.
При
подготовке
SF-
модели
к
работе
требуется
установить
параметры
модели
с
помощью
диалогового
окна
,
вызываемого
при
выборе
команды
Chart Properties,
входящей
в
пункт
меню
File
графического
редактора
.
Окно
содержит
элементы
,
определяющие
:
имя
SF-
диаграммы
;
имя
S-
модели
и
/
или
SF-
диаграммы
более
высокого
уровня
,
в
которых
размещается
данная
модель
;
раскрывающийся
список
Update method,
233
определяющий
используемый
метод
управления
динамикой
работой
SF-
диаграммой
из
Simulink;
поле
параметра
дискретизации
по
времени
Sample time;
вспомогательные
флажки
,
устанавливающие
возможности
использования
данных
Simulink,
варианты
инициализации
и
задания
точек
остановки
модели
,
возможности
модификации
модели
и
т
.
п
.
Весьма
существенным
является
выбор
установки
Update method.
Она
имеет
три
основных
варианта
:
Inherited –
метод
,
реализующий
управление
SF-
диаграммы
внешними
событиями
,
что
приводит
к
активизации
модели
каждый
раз
,
когда
на
триггерный
порт
диаграммы
поступает
управляющий
сигнал
;
Discrete –
метод
,
при
котором
периодичность
активизации
SF-
диаграммы
задается
параметром
Sample time,
при
этом
Simulink
автоматически
генерирует
управляющие
события
с
соответствующей
периодичностью
;
Continuous –
непрерывный
метод
активизации
SF-
диаграммы
на
каждом
шаге
моделирования
,
установленном
для
Simulink.
Помимо
рассмотренных
компонентов
разработки
и
управления
SF-
моделей
,
следует
также
выделить
встроенный
отладчик
,
вызываемый
в
пункте
меню
Tools – Debug,
синтаксический
анализатор
ошибок
(Tools –
Parse),
а
также
средства
поиска
объектов
заданного
типа
(Tools – Find).
Принципы
их
использования
подробно
рассматриваются
в
специальной
литературе
.
Рассмотрим
теперь
технологию
создания
SF-
моделей
на
примере
простейших
систем
массового
обслуживания
.
Первой
рассмотрим
систему
с
одним
каналом
без
накопителя
(M/M/1/0).
Такая
система
подробно
описана
в
п
. 4.1.
Она
имеет
два
состояния
:
канал
обслуживания
свободен
(free);
канал
обслуживания
занят
(busy).
Факторами
,
определяющими
эффективность
обработки
заявок
,
являются
интенсивность
входного
потока
заявок
Li
и
интенсивность
потока
обслуживания
Lo.
Значения
этих
параметров
определяются
в
m-
файле
УП
(
см
.
рис
. 6.19).
Показателем
эффективности
является
относительная
пропускная
способность
системы
q,
определяемая
как
отношение
среднего
количества
обслуженных
заявок
к
среднему
количеству
поступивших
заявок
в
единицу
времени
.
При
построении
S-
моделей
,
в
которых
используются
блоки
Stateflow,
содержащие
в
себе
переходы
,
инициируемые
истечением
некоторых
временных
интервалов
(
что
характерно
для
СМО
),
требуется
обеспечить
синхронизацию
внутреннего
системного
времени
Stateflow
и
Simulink.
Для
этого
необходимо
в
качестве
входного
параметра
подавать
в
SF-
диаграмму
системное
время
(systime)
из
Simulink
и
именно
это
время
использовать
для
составления
условий
переходов
.
Другой
возможный
способ
состоит
в
том
,
чтобы
использовать
специальный
символ
« t »,
изначально
определенный
в
Stateflow
для
проверки
выполнения
условий
истечения
временных
интервалов
.
Однако
,
в
этом
случае
,
если
требуется
осуществить
многократное
обращение
к
модели
в
цикле
статистического
моделирования
,
необходимо
отключить
флажок
Execute (enter) Chart Initialization
в
диалоговом
окне
Chart Properties.
И
тот
,
и
другой
подход
может
быть
использован
в
равной
степени
.
Реализация
с
внешним
источником
предоставляет
дополнительные
возможности
применения
неравномерной
шкалы
системного
времени
(
с
замедлением
и
ускорением
процесса
моделирования
).
Далее
возможно
рассмотреть
два
варианта
построения
общей
S-
модели
.
В
рамках
первого
варианта
входной
поток
заявок
формируется
в
Simulink
и
подается
на
вход
SF-
модели
в
виде
последовательности
событий
-
заявок
.
На
рис
. 6.21
и
6.22
представлены
блок
-
диаграмма
S-
модели
и
диаграмма
вложенной
в
нее
SF-
модели
,
реализованные
в
рамках
этого
варианта
.
Здесь
в
S-
модели
размещается
блок
Clock,
формирующий
значение
времени
systime (Input from Simulink date),
подаваемого
на
вход
SF-
модели
(
блок
Chart).
Поток
заявок
формируется
на
выходе
блока
Fcn,
реализующего
сравнение
входного
сигнала
с
величиной
Ts
Li
Pi
∗
=
(
логическое
условие
).
Pi
u
<
Амплитуда
входного
сигнала
имеет
равномерное
распределение
в
диапазоне
и
формируется
на
выходе
генератора
шума
Uniform
Random Number.
Значение
определяет
интервал
дискретизации
Sample
time
во
всех
блоках
S-
модели
.
В
результате
с
вероятностью
на
выходе
блока
Fcn
в
каждом
элементарном
интервале
u
]
1
,
0
[
Ts
Pi
]
Ts
t
,
t
[
+
формируется
сигнал
с
единичной
амплитудой
.
Поток
заявок
при
этом
имеет
вид
последовательности
коротких
импульсов
,
имеющих
длительность
.
Каждое
событие
,
связанное
с
поступлением
входной
заявки
,
определяется
в
SF-
модели
под
именем
zayvka (Input from Simulink event).
Ts
234