Simulink\Stateflow
„Ръководство за потребителя на Stateflow 5“.
1.1. Какво е Stateflow?
Stateflow е инструмент за числена симулация на системи със сложно поведение. Такива системи включват хибридни системи. Примери за хибридни системи са системи за управление, използвани в промишлеността (автоматизирани технологични процеси), в бита (сложна битова техника), във военната област (високотехнологични видове оръжия), в областта на космонавтиката, транспорта и комуникациите. Всички тези системи се състоят от аналогови и дискретни компоненти. Следователно хибридните системи са системи със сложно взаимодействие между дискретна и непрекъсната динамика. Те се характеризират не само с непрекъсната промяна в състоянието на системата, но и с поетапни промени в съответствие с логиката на управляващата подсистема, ролята на която по правило играе едно или друго изчислително устройство (краен автомат).
В случаите, когато логиката на управляващата подсистема е твърда и външните условия са относително стабилни, се говори за трансформационни системи. За такива системи фазите на получаване на информация, нейната обработка и издаване на изходни сигнали са ясно очертани. В момента на достъп до системата се дефинират всички входни сигнали. Сигналите на изходите се формират след определен период на изчисления. Изчисленията се правят по някакъв алгоритъм, който преобразува (трансформира) входния набор от данни в изходния.

В противен случай системата се класифицира като управлявана от събития или реактивна. Реактивната система е такава динамична система, която възприема външни дискретни влияния и реагира със свои собствени реакции на тези влияния. Освен това реакциите на системата са различни и сами зависят както от въздействията, така и отна състоянието, в което се намира системата. Основната разлика между реактивните системи и трансформационните системи се състои в фундаменталната непредсказуемост на моментите на получаване на определени въздействия. Тази непредсказуемост е следствие от променливостта на условията, в които работят подобни системи.

Пример за проста реактивна система е контролер за светофар, управляван от пешеходци. Неговите входове никога няма да придобият завършен вид - сигналите се получават постоянно и в предварително неизвестна последователност.
Последните десетилетия се характеризират с повсеместното разпространение на реактивните системи. Броят на такива системи в света, според някои оценки, надхвърля числото 10 10 . Не е изненадващо, че в съответствие с промяната в света около нас се променят и подходите към неговия анализ. Симулацията на физиката на технологичните процеси (непрекъснат компонент на поведението на системата) се допълва от симулация на логиката на работата на устройствата, които ги управляват (дискретна компонента). Математическият апарат за описание в този случай е система от уравнения, но не диференциални, а диференциално-алгебрично-логически, за които няма стройна теория и единен подход. Същото е и с видимостта. Визуализацията на протичането на физическите процеси беше осигурена чрез графики на промените във времето на определени величини. Опитът за такова графично представяне на процесите в реактивните системи може да се провали. Основните причини за това са многократното увеличаване на броя на показаните стойности и липсата на информация на графиките за причинно-следствените връзки между променящите се променливи на състоянието.
Понастоящем за моделиране на дискретната динамика на реактивни системи широко се използва визуалният формализъм, предложен от Д. Харел [1] -Диаграма на състоянието (диаграми на състоянието и прехода). Основните неграфични компоненти на такива диаграми са събитието и действието, основните графични компоненти са състоянието и преходът.
Събитие е нещо, което се случва извън въпросната система, което вероятно изисква някакъв отговор. Събитията могат да бъдат задействани от някакъв вход или задействания от човек или друга част от системата. Събитията се считат за мигновени (за избраното ниво на абстракция).
Действията са реакциите на симулираната система към събития. Подобно на събитията, действията се считат за мигновени.
Състояние - условията, в които симулираната система остава известно време, през което се държи по същия начин. В преходна диаграма състоянията са представени от правоъгълни кутии със заоблени ъгли.
Преходът е промяна в състоянието, обикновено предизвикана от някакво значимо събитие. По правило състоянието съответства на интервала от време между две такива събития. Преходите се показват в диаграмите на прехода като линии със стрелки, показващи посоката на прехода.
Всеки преход може да бъде свързан с условията, при които се извършва преходът.
Всеки преход и всяко състояние могат да бъдат свързани с някакво действие. Действията могат допълнително да се наричат действия, извършени веднъж при влизане в държавата; действия, извършвани многократно в рамките на определена държава; действия, които се извършват еднократно при излизане от състоянието.
Разгледайте, като пример, диаграмата на състоянието и прехода на цифров часовник, показан на фиг. 3.

Ориз. 3. Диаграма на състояния и преходи на цифров часовник
На часовника има два бутона: ModeButton и IncButton(Бутон за изображение и бутон за мащабиране). Натискането на който и да е от тях генерира събитие, което може да предизвика преход от едно състояние в друго. Има три състояния: Дисплей, Задаване на часове и Задаване на минути. Състояние Дисплеят е първоначалното състояние (което е обозначено със стрелка, сочеща встрани от преходния блок по подразбиране като черен кръг). В състояние Set Hours събитието ModeButton предизвиква преход към състояние Set Minutes, докато събитието IncButton увеличава текущото време (брой часове), което се показва на екрана, и това се случва без промяна на състоянието. Всяко състояние на часовника съответства на действие, написано под хоризонталната линия. Започва да се изпълнява след преминаването към това състояние.
Вече в тази форма диаграмите на състоянието и прехода са доста изразителен език за описание на реактивни системи. За да сравните ефективността на представянето на езика на диаграмите на състоянията и преходите с алтернативен (под формата на автомат с краен брой състояния), разгледайте 10-битов брояч, който отчита броя на събитиятаaи издава съобщение за препълване след 1024-то събитие (фиг. 4).


Както може да се види от фигурата, представянето с помощта на диаграмата на състоянието и преходния език е около 1000 пъти по-компактно. Въпреки това, когато се описва голяма система, дори такова описание може да бъде твърде трудно за разбиране.
Предложени са допълнителни подобрения за предотвратяване на ефекта от повишена сложност при моделиране на големи системи. Наред със състоянията вече могат да се използват хиперсъстояния (суперсъстояния),комбиниране на няколко състояния, които имат идентична реакция към едно и също събитие. В този случай, вместо да се изобразяват такива преходи към определено състояние, от всички състояния, обхванати от хиперсъстояние, се изобразява само един преход от хиперсъстояние към определено състояние (обобщаване на преходите). Хиперсъстоянията теоретично могат да имат произволна дълбочина на вмъкване. Преходите в свръхсъстояние са свързани с всички нива на гнездене. Хиперсъстоянията могат да комбинират състояния ИЛИ (последователни състояния) и състояния И (паралелни състояния). В първия случай, след като е преминала в хиперсъстояние, системата може да бъде само в едно от състоянията. Във втория случай системата, преминала в хиперсъстояние, ще бъде едновременно в няколко състояния.
Диаграмите на състояние и преход сега се използват широко за моделиране на сложни системи. Достатъчно е да споменем Unified Modeling Language (UML), един от елементите на който са диаграмите на състоянието и езика Graphset, който се използва при програмирането на логически контролери на системи за автоматизация.
Използването на симулация, която показва промени в системата, придружени от преходи от едно състояние в друго, значително повишава степента на видимост на модела. Изграждането на такива симулационни модели е възможно с помощта на програмите Stateflow и Simulink, включени в пакета MATLAB. MATLAB предоставя достъп до различни типове данни, инструменти за програмиране на високо ниво и визуализация. Simulink поддържа проектиране на непрекъснати и дискретни динамични системи в графична среда (под формата на блокови диаграми). Диаграмите на Stateflow, използващи визуалния формализъм на D. Harel, са включени в моделите на Simulink, за да се даде възможностмоделиране на процеси, движени от събития. Stateflow предоставя ясно описание на поведението на сложни системи, използвайки диаграми на състояние и преход.
Комбинацията MATLAB-Simulink-Stateflow е мощен инструмент с общо предназначение за моделиране на реактивни системи. Допълнителната възможност за проследяване в реално време на процеса на изпълнение на диаграмата чрез включване на режима на анимация прави процеса на моделиране на реактивни системи наистина визуален.
Stateflow е мощен инструмент за графичен дизайн и симулация за сложни системи за локално управление и контролна логика. С помощта на Stateflow можете:
- Визуално симулирайте сложни реактивни системи.
- Проектиране на детерминирани системи за контролно управление.
- Лесно е да промените проекта, да оцените резултатите от промените и да проверите поведението на системата на всеки етап от проекта.
- Автоматично генериране на програмен код (цяло число или с плаваща запетая) директно от проекта (изисква Stateflow Coder).
- Възползвайте се от интеграцията с MATLAB и Simulink среди в процеса на моделиране и анализ на системи.
Stateflow ви позволява да използвате диаграми на потока (диаграма на потока) и диаграми на състоянието и прехода (преход на състоянието) в една диаграма на потока на състоянието. Нотацията на блок-схемата е логически представена без използване на състояния. В някои случаи диаграмите на потока са по-близо до логиката на системата, като по този начин се избягва използването на ненужни състояния. Нотацията на диаграмата на потока е ефективен начин за представяне на цялостната структура на програмния код като конструкция под формата на условни изрази и цикли.
Stateflow също предоставя ясна,кратко описание на поведението на сложни системи, използвайки теорията на крайните автомати, диаграми на потока и диаграми на преминаване на състояния. Stateflow сближава системното описание (спецификация) и проекта. Създаването на проекти чрез разглеждане на различни сценарии и повторение е много по-лесно, когато използвате Stateflow за моделиране на поведението на системата.
1.2. Stateflow 5 като софтуерен продукт.
В момента MathWorks разработи петата версия на програмата Stateflow. Stateflow 5 изисква да бъдат инсталирани следните софтуерни продукти:
- MATLAB® 6.5 (версия 13)
- Simulink® 5
- C или C++ компилатор за генериране на код от диаграма на Stateflow
- Real-Time Workshop® Версия 5 (Издание 13) за генериране на код на Simulink елементи на модела Stateflow.

1.3. Компоненти на Stateflow.
Stateflow се състои от следните компоненти:
1.4. Проектиране на модели на реактивни системи
При проектиране на модели на реактивни системи се използва Stateflow със Simulink и по избор с RTW (Real-Time Workshop - работилница в реално време) под контрола на MATLAB.
Можете да проектирате модела, като започнете с частта Stateflow (контрол) и по-късно да изградите модела Simulink. Можете също да проектирате модел, като започнете със Simulink (алгоритмична) част и по-късно да добавите диаграма на Stateflow. Можете да подобрите съществуващ модел на Simulink, като замените логическите блокове на Simulink с диаграми на Stateflow. Подходът, който използвате, определя последователността, в която разработвате различните части на модела.
Колекцията от всички блокове Stateflow в модел Simulink е машина. ИзползвайкиSimulink заедно със Stateflow за симулация, Stateflow генерира S-функция (MEX файл) за всяка машина Stateflow за поддържане на симулация. Този генериран симулационен код се нарича Stateflow sfun код.
Ако се изисква работа с модел в реално време, Stateflow Coder ще ви позволи да генерирате цяло число или код с плаваща запетая въз основа на машината Stateflow. RTW ще генерира код за частта Simulink на модела и ще предостави рамка за изпълнение в реално време на генерирания Stateflow код. Кодът, генериран от Stateflow Coder, е включен в кода, генериран от RTW. Можете да получите код, специфичен за платформата, генериран от двата продукта. Този генериран код е специфичен RTW код, който се нарича rtw код в Stateflow.
Така че основните случаи на употреба са:
- Използвайте Stateflow заедно със Simulink за симулация.
- Използвайте Stateflow, Stateflow енкодер, Simulink и семинар в реално време, за да генерирате целеви код за завършения модел.
- Използвайте Stateflow и Stateflow енкодер, за да генерирате целеви код за Stateflow машина.