Создание объектов Stateflow диаграммы



 

Для открытия окна моделирования Stateflow диаграммы необходимо выполнить следующие действия:

· откройте окно MATLAB и щелкните мышью по кнопке Simulink;

· в браузере Simulink Library Browser выберите пункт Stateflow;

· выполните двойной щелчок левой кнопкой мыши по блоку Chart. Появляется окно Stateflow (chart) sflib/Chart, в котором создается Stateflow диаграмма.

Выделите на панели инструментов значок State (состояние), а затем щелкните мышью на свободном месте поля диаграммы. Повторяя эти действия, разместите на экране все блоки состояний.

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

Для каждого блока состояния модели введите соответствующие метки. Например, щелкните правой кнопкой мыши по первому блоку состояния модели и выберите пункт Properties. В поле Label окна State введите метку:

                                           H0/

                                           tо0=ml(‘-log(unifrnd(0,1))’)/ Iо.

В этой метке переменной tо0 присваивается значение случайного числа, имеющего экспоненциальный закон распределения (логарифмическое преобразование применяется к случайным числам, подчиняющимся закону равномерной плотности). Переменная tо0 моделирует время нахождения системы в работоспособном состоянии. Iо – интенсивность отказов моделируемой системы (входной параметр модели Stateflow).

Для второго блока состояния модели введите метку:

                                           H1/

                                           tv1=ml(‘-log(unifrnd(0,1))’)/ Iv.

Переменная tv1 моделирует время нахождения системы в состоянии восстановления; Iv – интенсивность восстановления системы (входной параметр модели Stateflow).

Введите метки переходов. Например, щелкните правой кнопкой мыши по стрелке перехода из состояния H0 в состояние H1 и выберите пункт Properties.

В поле Label окна Transition введите метку

{Ts0=Ts0+to0; Tss=Tss+to0;}.

Здесь в переменной Ts0 накапливается время нахождения системы в состоянии H0, а в переменной Tss – суммарное время моделирования.

Для стрелки перехода из состояния H1 в состояние H0 введите метку

{ Ts1=Ts1+tv1; Tss=Tss+tv1;}.

В переменной Ts1 накапливается время нахождения системы в состоянии H1.

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

В результате выполнения этих действий должна быть получена модель, изображенная на рис. 4.

После создания визуальных объектов модели необходимо определить объекты данных. Для этого щелкните правой кнопкой мыши по свободному месту диаграммы и выберите пункт Explore. Stateflow открывает окно Exploring. Выберите объект в иерархии объектов Проводника (например, Chart). Из меню Проводника Add выберите пункт Data. По умолчанию Stateflow добавляет определение  для нового объекта в словарь данных (рис. 5).

 

 

Рис. 4. Модель Stateflow

 

В столбце Name введите имя переменной, в столбце Scope – разновидность переменной (Local,Input,Output и т.п.). К разновидности Local относятся переменные, которые используются только внутри модели Stateflow, в данном примере к ним относятся to0, tv1. Переменные типа Input импортируются из Simulink (Io,Iv), а переменные типа Output являются выходными в Simulink модель, в примере это Tss, Ts0, Ts1.

 

 

 

 

 

Рис. 5. Окно Exploring

 

Создание объектов Simulink

 

Для установления связи созданной модели Stateflow с Simulink необходимо в главном окне, которое всегда активно после запуска Matlab, щёлкнуть левой кнопкой мыши по значку  в результате этого откроется окно библиотеки Simulink Library Browser (рис. 6).

В меню File выберите пункт new/model, после этого откроется окно untitled.

Чтобы связать ранее созданную модель Stateflow с моделью Simulink необходимо перенести блок Chart в область окна untitled модели Simulink (рис. 7). После этого в модель Stateflow можно входить, дважды щёлкнув левой кнопкой мыши по блоку Chart, помещённому в области Simulink .

На следующем этапе необходимо задать значение входных переменных Io и Iv. Для этого в окне Simulink Library Browser в разделе Simulink выберите блок Constant (смотри пункт Sources) и перенесите его в область модели Simulink. Соедините выход блока Constant с входным портом переменной Io. Щёлкните дважды левой кнопкой мыши по блоку Constant, в результате появится окно Block Parametrs (рис. 8), в строке Сonstant value необходимо ввести нужное значение интенсивности отказов. Аналогичным образом создайте объект Constant1 и введите значение интенсивности восстановления.

 

Рис. 6. Окно библиотеки Simulink Library Browser

 

 

Для отображения текущих значений переменных Ts0, Ts1, Tss используются три блока типа Display из раздела Sinks библиотеки Simulink. Входы этих блоков необходимо соединить с соответствующими выходными портами переменных блока Chart.

 

 

 

 

Рис. 7. Окно модели Simulink

 

 

 

 

 

Рис. 8. Окно Block Parametrs блока Constant

 

      Вероятности нахождения моделируемой системы в состояниях H0 и H1 определяются следующим образом:

PH0=Ts0/Tss; PH1=Ts1/Tss.

Расчеты по этим формулам выполним с помощью двух блоков типа Product. Этот блок можно найти в разделе Math Operation. Чтобы задать операцию деления, щёлкните дважды по значку блока и в появившемся окне Block Parametrs в поле Number of inputs введите */ (рис. 9). После этого у блока появляются входы делимого и делителя. Соедините входы каждого из двух блоков типа Product с соответствующими выходами блока Chart.

Для отображения графиков вероятностей PH0 и PH1 воспользуемся блоком Scope (см. раздел Simulink пункт sinks). Этот блок моделирует многолучевой осциллограф. Щёлкните дважды по этому блоку и в меню выберите пункт Parametrs, открывается окно, изображенное на рис.10, в поле Number of axes задайте значение 2. Соедините входы блока Scope с выходами блока Product. По оси ординат шкалы измерений блока Scope откладываются значения наблюдаемой величины, по оси абсцисс – значения модельного времени. По умолчанию для оси ординат используется диапазон [-5;5], а для оси модельного времени – [0;10]. Для изменения масштаба можно использовать кнопки Zoom X-axis, Zoom Y-axis или кнопку Autoscale, которая позволяет автоматически установить оптимальный масштаб осей (автошкалирование).

Вид результирующей модели показан на рис. 11.

 

Рис. 9. Окно Block Parameters блока Product

 

Рис. 10. Окно Parameters блока scope

 

После добавления всех необходимых блоков и соединения их между собой надо задать время симуляции. Выберите в меню пункт Simulation / Simulation parameters, в результате появится окно Simulation parameters (рис.12). И в полях Start time и Stop time задайте необходимый интервал времени симуляции, а в поле Fixed step size – величину шага моделирования.

 Запустите модель на выполнение, нажав значок  на панели окна Stateflow. Процесс моделирования сопровождается мерцанием блоков состояний и линий переходов. После окончания моделирования необходимо открыть модель Simulink для просмотра и анализа результатов. В блоках типа Display отображаются окончательные значения для выходных переменных: Ts0, Ts1, Tss.


Рис. 11. Модель Simulink

 

 

 

 

Рис. 12. Окно Simulation parameters

 

Щёлкните дважды мышью по блоку Scope,появится окно, в котором должны отображаться два графика: PH0(n) и PH1(n), где n – номер шага моделирования. Для отображения этих графиков щёлкните мышью по кнопке Autoscale.

 


Дата добавления: 2019-02-12; просмотров: 302; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!