Як працює stateflow

Stateflow - Simulink

Що таке кінцевий автомат?

Кінцевий автомат (finite state machine (FSM)) - варіант керованої подіями (реактивної) системи. Керована подіями система переходить з одного стану (режиму) в інше запропоноване стан в тому випадку, якщо умова, що визначає зміна, істинно.

Наприклад, можна використовувати кінцевий автомат, щоб описати автоматичну передачу автомобіля. Передача має ряд станів: парковка, нейтраль, рух, реверс і т. Д. Система переходить з одного стану в інший, коли водій переміщує важіль з однієї позиції в іншу, наприклад, з позиції парковка в нейтральне положення.

Уявлення кінцевого автомата (FSM)

Традиційно проектувальники використовували таблиці істинності, щоб представити відносини між введеннями, висновками і станами FSM. Результуюча таблиця описує логіку поведінки системи. Інший підхід до проектування керованих подіями систем полягає в тому, щоб моделювати поведінку системи, описуючи його в термінах переходів між станами. Перехід стану в активну фазу визначається настанням подій при наявності деяких умов. Діаграми переходів (state-transition diagrams (STDs)) і бульбашкові діаграми (bubble diagrams) - графічні уявлення, засновані на цьому підході.

Stateflow використовує варіант системи позначень кінцевого автомата, запропонований Девідом Харела [D. Harel Statecharts: A Visual Formalism for Complex Systems, "(Діаграми станів: візуальний формалізм для комплексних систем) Science of Computer Programming 8. 1987, pages 231-274]. Використовуючи Stateflow (state - стан, flow - потік), Ви створюєте Stateflow діаграми. Діаграма Stateflow - графічне представлення кінцевого автомата, де стану і переходи формують базові конструктивні блоки системи. Ви можете також представляти потокові (що не мають станів) діаграми з використанням Stateflow. Stateflow утворює блоки, які Ви включаєте в модель Simulink. Сукупність Stateflow блоків в моделі Simulink - Stateflow машин а.

Система позначень визначає набір об'єктів і правил, які керують відносинами між цими об'єктами. Stateflow система позначень забезпечує дозволяє розробити проект в повній відповідності з діаграмою Stateflow.

Stateflow система позначень складається з:

  • Набору графічних об'єктів
  • Набору неграфічних (текстових) об'єктів
  • Певних відносин між цими об'єктами

Семантика описує, як система позначень інтерпретується і здійснюється. Закінчена діаграма Stateflow ілюструє, як система буде вести себе. Діаграма Stateflow містить дії, пов'язані з переходами і станами. Семантика описує, в якій послідовності ці дії мають місце в ході виконання діаграми Stateflow.

Знання семантики особливо важливо для забезпечення правильних проектних рішень Stateflow діаграм при генерації об'єктного коду. Різне використання системи позначень призводить до різного порядку виконання згенерованого коду.

Simulink модель і Stateflow машина

Stateflow машина - сукупність Stateflow блоків в моделі Simulink. Simulink модель і Stateflow машина працюють спільно. Запуск моделювання автоматично запускає виконання як Simulink, так і Stateflow частин моделі.

Модель Simulink може складатися з комбінацій Simulink блоків, додаткових блоків з комплектів інструментів і Stateflow блоків (Stateflow діаграм). Stateflow діаграма (Stateflow chart) складається з набору графічних (стану, переходи, з'єднання (вузли), хронологічні з'єднання) і неграфічних (події, дані, програмні коди) об'єктів.

Є взаємно однозначна відповідність між моделлю Simulink і Stateflow машиною. Кожен блок Stateflow в моделі Simulink представлений в Stateflow окремої діаграмою (Stateflow діаграма). Кожна Stateflow машина має власну ієрархію об'єктів. Stateflow машина - найвищий рівень в Stateflow ієрархії. Нижче в об'єктної ієрархії Stateflow машини знаходиться комбінація графічних і неграфічних об'єктів. Словник даних - архів для всіх об'єктів Stateflow.

Як працює stateflow

Визначення Stateflow інтерфейсу

Кожен блок Stateflow відповідає єдиною діаграмі Stateflow. Блок Stateflow пов'язує з моделлю Simulink за допомогою інтерфейсу. За допомогою інтерфейсу блок Stateflow підключається до джерел, що надходять від моделі Simulink (дані, події, код користувача).

Stateflow діаграми управляються подіями. Події можуть бути локальними для блоку Stateflow або можуть надходити до і від моделі Simulink і джерел коду, зовнішніх до Simulink. Дані також можуть бути локальними для блоку Stateflow або можуть надходити до і від моделі Simulink і джерел коду, зовнішніх до Simulink.

Ви повинні визначити інтерфейс для кожного блоку Stateflow. Визначення інтерфейсу для блоку Stateflow може включати деякі або всі з цих завдань:

  • Визначення методу модифікації блоку Stateflow
  • Визначення Output to Simulink (Вихідних до Simulink) подій
  • Додавання і визначення нелокальних подій і нелокальних даних в межах діаграми Stateflow
  • Визначення відносин з будь-якими зовнішніми джерелами

У розглянутому раніше прикладі Simulink модель складається з Simulink блоку - джерела Sine Wave (Синусоїда), Simulink блоку - приймача Scope (Осцилограф) і єдиного блоку Stateflow з назвою On_off.

Як працює stateflow

Об'єкти Stateflow діаграми

Далі наводиться приклад Stateflow діаграми, в якій використовуються основні графічні компоненти. Крім того, детально описуються ці графічні компоненти, а також деякі неграфічні об'єкти і зв'язки між ними.

Як працює stateflow

Стан описує режим керованої подіями системи. Динамічні переходи станів від активності до неактивності базуються на події та умови. Кожне стан має батька. У діаграмі Stateflow, що складається з єдиного стану, батько стану - безпосередньо діаграма Stateflow (також звана коренем діаграми Stateflow). Ви можете розміщувати стану в межах інших станів вищого рівня. На малюнку StateA1 - нащадок в ієрархії по відношенню до StateA.

Стан також має хронологію. Хронологія забезпечує ефективні засоби базування майбутнього дії на минулому дії.

Стану мають мітки, які можуть визначити дії, виконані в послідовності, заснованої на типі дії. Типи дії - entry (на вході), during (протягом), exit (на виході) і on event_name (в разі події з ім'ям _).

У прикладі автоматичної передачі, передача може бути в нейтральному положенні або включена в роботу. Два стану цієї системи - neutral (нейтраль) і engaged (включена).

Stateflow режимі можливі два види станів: паралельний (І) і винятковий (АБО) тип стану. Паралелізм представлений І (паралельними) станами. Автоматична передача - приклад виняткового (АБО) стану. Виняткові (АБО) стану використовуються, щоб описати режими, які є взаємовиключними. Система знаходиться або в нейтральному стані, або у включеному стані в кожен момент часу.

Розглянемо знову автоматичну передачу. Clutch_engaged (включення передачі) - подія, яка потрібна, щоб здійснити перехід з нейтрального положення в стан "включено".

Як працює stateflow

Події керують виконанням діаграми Stateflow, але є неграфічні об'єктами і таким чином не представлені безпосередньо в діаграмі Stateflow. Всі події, які мають відношення до діаграми Stateflow, повинні бути визначені. Наступ події змушує статус стану (активно - неактивно) в діаграмі Stateflow змінюватися. Наступ події може запускати перехід, і тоді він відбувається, або може запускати дію, і тоді воно виконується. Події наступають по-низхідній, починаючи від батька події в ієрархії.

Події створюються і змінюються за допомогою Stateflow Explorer (Stateflow провідника). Події можуть бути створені на будь-якому рівні ієрархії. Подія має таку властивість, як видимість. Видимість визначає, чи є подія

  • Локальним для діаграми Stateflow
  • Входить в Stateflow діаграму від моделі Simulink
  • Виходить з Stateflow діаграми в модель Simulink
  • Експортується в код, зовнішній до Stateflow діаграмі і моделі Simulink
  • Імпортується з джерела коду, зовнішнього до Stateflow і Simulink

Об'єкти-дані використовуються, щоб зберігати числові значення для застосування в діаграмі Stateflow. Вони є неграфічні об'єктами і таким чином не представлені безпосередньо в діаграмі Stateflow.

Дані створюються і змінюються в Stateflow Explorer. Вони можуть бути створені на будь-якому рівні ієрархії. Дані мають таку властивість, як видимість. Видимість визначає для об'єктів-даних одну з наступних можливостей:

  • Бути локальними для діаграми Stateflow
  • Вступати в Stateflow діаграму від моделі Simulink
  • Виходити з Stateflow діаграми в модель Simulink
  • Бути тимчасовими даними
  • Бути певними в робочому просторі MATLAB
  • бути Константами
  • Експортіроватся в код, зовнішній до Stateflow діаграмі і моделі Simulin
  • Імпортіроватся з джерела коду, зовнішнього до Stateflow і Simulink

Ієрархія дає можливість організувати складні системи, визначаючи предка і структуру об'єктів-нащадків. Ієрархічно побудований проект зазвичай скорочує число переходів і призводить до чітких, зрозумілих діаграм. Stateflow підтримує ієрархічну організацію як для діаграм, так і для станів. Діаграми можуть існувати всередині інших діаграм. Діаграма, яка існує в іншій діаграмі, називається поддіаграммой.

Точно так же стану можуть існувати всередині інших станів. Stateflow представляє ієрархію станів з суперсостояніямі і підстанів. Наприклад, ця діаграма Stateflow має суперсостояніе, яке містить два підстану.

Як працює stateflow

Суперсостояніе engaged (передача включена) містить підстану first (перша передача) і second (друга передача). Суперсостояніе engaged - предок в ієрархії по відношенню до станів first і second. Коли подія clutch_engaged відбувається, система переходить з нейтрального стану до суперсостоянію "включено". Переходи всередині суперсостоянія навмисно опущені в цьому прикладі для простоти.

Умова - булево вираз, що визначає, що перехід відбувається, якщо вказане вираз є істинним. На малюнку компонента Stateflow діаграми [condition1] представляє булево вираз, яке повинно бути істинним, щоб перехід відбувся.

В автоматичній коробці передач перехід з першої швидкості до другої відбувається, якщо булево умова [speed> threshold] ([швидкість> пороговое_значеніе]) істинно.

Як працює stateflow

Хронологічні з'єднання (History Junction)

В автоматичній передачі хронологія вказує, що, коли clutch_engaged викликає перехід від нейтралі до суперсостоянія включено, стає активним то підстан (перша або друга швидкість), яке було активним в останню чергу.

Як працює stateflow

Дії - це результат виконання будь-якої частини діаграми Stateflow. Дія може бути виконано в результаті переходу від одного стану до іншого. Дія може бути також реакцією на стан. На малюнку сегмент переходу від StateA1b до з'єднання позначений дією func1 () умови condition 1, а сегмент переходу від з'єднання до StateA1c позначений дією func2 () переходу. Семантика дій буде розглянута пізніше.

Перехід, який закінчується в стані, може мати дію умови (condition action) і дію переходу (transition action), як розглянуто нижче. Однак переходи, які закінчуються в з'єднаннях, можуть мати тільки дії умов (не допускаються дії переходів).

Як працює stateflow

Стану можуть мати дії have entry (на вході), during (протягом), exit (на виході) і on event _ name (в разі події з ім'ям _). наприклад,

Мова дій визначає типи дій, які Ви можете використовувати і пов'язані з ними системи позначень. Дією може бути звернення до функції, настання події, привласнення деякого значення змінної і т.д.

Stateflow підтримує парадигми моделювання кінцевого автомата Мура та Мілі. В Милі моделі дії пов'язані з переходами, в той час як в Мура моделі вони пов'язані з станами. Stateflow підтримує дії станів, дії переходів і дії умов.

Система з паралелізмом має два або більше станів, які можуть бути активні в один і той же час. Дії кожного паралельного стану по суті незалежні від інших станів. На малюнку 2-1 StateA2a і StateA2b - паралельні (І) стану. StateA2 має паралельну (І) декомпозицію стану.

Наприклад, ця діаграма Stateflow має паралельну декомпозицію суперсостоянія.

Як працює stateflow

Передача (Transmission), обігрів (Heat) і освітлювальні прилади (Lights) - паралельні підсистеми в автомобілі. Вони існують паралельно і фізично незалежні від один одного. Є багато інших паралельних компонентів в автомобілі, наприклад підсистема гальмування і підсистема очищення вітрового скла.

Ви уявляєте паралелізм в Stateflow, задаючи паралельну (І) декомпозицію. Паралельні (І) стану відображені обведеними штриховий лінією областями.

Переходи за замовчуванням (Default Transitions)

Переходи за замовчуванням визначають, яке з декількох виключних (АБО) станів повинно бути активним, коли є невизначеність між двома або більше винятковими (АБО) станами на одному рівні в ієрархії.

Наприклад на малюнку 2-1 перехід за замовчуванням до StateA1 дозволяє неоднозначність, яка існує щодо того, яке з підстанів, StateA1 або StateA2, має бути активним, коли суперсостояніе StateA стає активним. У цьому випадку, коли StateA активно, за замовчуванням StateA1 також активно.

У наступній підсистемі Lights (Освітлювальні прилади) перехід за замовчуванням до підстанів Lights.Off (Освітлювальні прібори.виключени) вказує, що, коли суперсостояніе Lights стає активним, Lights.Off підстан стає активним за замовчуванням.

Як працює stateflow

Зверніть увагу! Хронологічні з'єднання скасовують переходи за замовчуванням в суперсостояніях з винятковими (АБО) декомпозиція.

Зверніть увагу! У паралельних (І) станах переходи за замовчуванням завжди повинні бути присутніми, щоб вказати, які з його виключних (АБО) станів активні, коли паралельне стан стає активним.

З'єднання (Connective Junctions)

З'єднання - точки прийняття рішень в системі. З'єднання - графічний об'єкт, який спрощує Stateflow схематичні уявлення і полегшує породження ефективного коду. З'єднання забезпечують альтернативні способи уявити бажане поведінку системи. На представленій вище Stateflow діаграмі з'єднання використовується як точка прийняття рішення для двох сегментів переходу, що завершуються в стані StateA1c.

Наступний приклад показує, як з'єднання (які відображаються у вигляді кіл) використовуються для конструкції if.

Як працює stateflow

Цей фрагмент виконується наступним чином:

  1. Якщо умова [з1] істинно, умовне дію а1 виконується і відбувається безумовний перехід до першого (верхнього) з'єднанню.
  2. Stateflow визначає, який сегмент переходу верхнього з'єднання вибрати (можна вибрати тільки один). З'єднання з умовами мають пріоритет над з'єднаннями без умов, т. О. перехід з умовою [с2] розглядається першим.
  3. Якщо умова [с2] істинно, дія А2 виконується і відбувається перехід до нижнього з'єднанню. Так як немає переходу, що виходить з цього з'єднання, виконання діаграми завершено.
  4. Якщо умова [с2] помилково, відбувається безумовний переходу по правому із сегментів (він не має умови).
  5. Якщо умова [с3] істинно, умовне дію а3 виконується і відбувається перехід до нижнього соедіненію.Виполненіе діаграми завершено.
  6. Якщо умова [с3] помилково, виконання закінчується на середньому з'єднанні.

Чи знаєте Ви, що інтуїтивне моделювання - це процес створення моделі на основі інтуїції, уявлень і життєвого досвіду.

НОВИНИ ФОРУМУ
Лицарі теорії ефіру

Схожі статті