Jump to content

    

Реальный пример использования State Machine в Embedded разработке

Периодически вижу упоминания о IAR Visual State, Stateflow или Quantum Leaps. Но что-то не смог найти вменяемый сложный проект с применением подхода машин состояний или схожих. Кто-то вообще это использует? Только я говорю не про обработку нажатий клавиш или мигание индикатором, а о чуть более больших и законченных проектах. Просто хотелось бы взглянуть как применяется подобный подход в реальной практике.

Share this post


Link to post
Share on other sites
6 минут назад, Segment сказал:

 о чуть более больших и законченных проектах. Просто хотелось бы взглянуть как применяется подобный подход в реальной практике.

Смотрите на сайте ИТМО, Switch-технология у Шалыто А.А. 

Share this post


Link to post
Share on other sites
23 минуты назад, iosifk сказал:

Смотрите на сайте ИТМО, Switch-технология у Шалыто А.А. 

Сами конечные автоматы мне ясны и я знаком с работами Шалыто. В том числе и в ПЛИС сталкивался, хотя не совсем моя область. А вот на более высоком уровне в программном обеспечении все заканчивается на примерах с клавиатурой и каким-нибудь алгоритмом на несколько состояний. В реальном проекте на языке Си намного больше условий, зависимостей и последовательностей действий, чем в найденных примерах. Описанные в статьях плюсы тоже вроде мне понятны, такие как потенциальная верификация. Но я не представляю, как будет выглядеть большой (и которым будет гордиться программист) проект на автоматах. Могу разве что представить лапшу, которую иногда вижу в картинках при поиске.

Edited by Segment

Share this post


Link to post
Share on other sites
36 minutes ago, Segment said:

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

Стройте "большой" как систему "малых". Разработка и отладка частями, по иерархии.

Не тот случай, когда "я бы взял частями но мне нужно сразу"  :)

ps - начинайте с "малой" гордости, которая максимально отлажена-продумана-надежна.

тогда "большая" гордость может получиться автоматически.

Share this post


Link to post
Share on other sites
25 минут назад, k155la3 сказал:

Стройте "большой" как систему "малых". Разработка и отладка частями, по иерархии.

Не тот случай, когда "я бы взял частями но мне нужно сразу"  :)

ps - начинайте с "малой" гордости, которая максимально отлажена-продумана-надежна.

тогда "большая" гордость может получиться автоматически.

Можете привести пример такой большой системы, которая с нуля была построена подобным образом? Или все это просто размышления?

Share this post


Link to post
Share on other sites

Строил в древние времена такие велосипеды - с GUI, файловой системой и т.п. на автоматах. До сих пор стыдно :)

Из плюсов можно отметить только удобство отладки и обработки исключительных ситуаций.

 

Share this post


Link to post
Share on other sites
29 minutes ago, Segment said:

Можете привести пример такой большой системы, которая с нуля была построена подобным образом? Или все это просто размышления?

ВСЕ (сложные) системы строятся подобным образом :))))   

ps

Можете посмотреть в сфере PLC. IEC61131.

На "входе" - описание автомата в том или ином виде (FBD, SFC). На "выходе" - прошивка контроллера.

"Логика" задаваемая пользователем переводится в алгоритм, думаю с базой на FSM.

Где-то давно натыкался на фриварный проект на FBD PLC. Исходный вид проекта - релейно-контактная схема (LAD-диаграмма).

 

Share this post


Link to post
Share on other sites

У меня многое на автоматах в контроллере двигателя. Нижний уровень работает жестко по тактам привязанным ко времени. Верхний уровень дает нижнему команды в какую ветвь графа пойти, ждет исполнения и командует дальше, это уже делается из задач rtos.

Код "верхней" и "нижней" части: High / Low.

Share this post


Link to post
Share on other sites
2 hours ago, Segment said:

Периодически вижу упоминания о IAR Visual State, Stateflow или Quantum Leaps. Но что-то не смог найти вменяемый сложный проект с применением подхода машин состояний или схожих. Кто-то вообще это использует? Только я говорю не про обработку нажатий клавиш или мигание индикатором, а о чуть более больших и законченных проектах. Просто хотелось бы взглянуть как применяется подобный подход в реальной практике.

В  IAR Visual State и Quantum Leaps вы сложных проектов не найдете поскольку это слишком примитивные инструменты. 
Так что сразу вычеркните их из списка. 

Смотреть надо примеры StateFlow или IBM Rational Rhapsody

11 minutes ago, amaora said:

У меня многое на автоматах в контроллере двигателя.

Если вы не поняли, то речь не про автоматы, а графические нотации в программировании. 

Share this post


Link to post
Share on other sites
2 minutes ago, AlexandrY said:

Если вы не поняли, то речь не про автоматы, а графические нотации в программировании.

Ну значит я тоже только слышал об их использовании. От тех кто свои проекты не будет нигде публиковать.

Share this post


Link to post
Share on other sites
2 часа назад, AlexandrY сказал:

Если вы не поняли, то речь не про автоматы, а графические нотации в программировании. 

Да, именно о нотациях, спасибо.

2 часа назад, amaora сказал:

Ну значит я тоже только слышал об их использовании. От тех кто свои проекты не будет нигде публиковать.

То есть все слышали, но никто не видел. Я не могу найти вменяемых обсуждений подобных инструментов, и, соответственно, примеров. Все видимо счастливы и применяют их без проблем, да так, чтобы нигде не обсуждать и не выкладывать свои работы. И наверняка все под NDA.

Share this post


Link to post
Share on other sites

State machine = "конечный автомат". Лучше пользоваться общепринятыми терминами, чем дословным переводом.

Share this post


Link to post
Share on other sites
5 часов назад, AlexandrY сказал:

Если вы не поняли, то речь не про автоматы, а графические нотации в программировании. 

Гуру кода и печатной платы снова консультирует бесплатно ?

Сколько вам раз нужно face of table себе сделать, чтобы наконец этот апломб дурацкий убрать ? Ладно бы новичок был, и речь про ацп AD 80 Гц СТМ, это ещё куда ни шло, можно пыльнуть безнаказанно.

Но amaora выложил код управления ДВС. Это вам не на хабре статейки, один из сложнейших проектов в embedded. И все равно фонтан не закрывается (((

Хотя с другой стороны, как-то здесь скучновато стало. Единственное развлечение посты AlexandrY, хоть посмеяться можно, и то хлеб.

Share this post


Link to post
Share on other sites
6 часов назад, Segment сказал:

 (и которым будет гордиться программист) 

Молодость это здорово. Гордиться это обязательное условие ?

Share this post


Link to post
Share on other sites
27 minutes ago, a123-flex said:

Но amaora выложил код управления ДВС. Это вам не на хабре статейки, один из сложнейших проектов в embedded. 

Пить меньше надо.
Что такое ДВС хоть помните?

Референс дизайнов контроллеров BLDC полный интернет. Фишка в софте. 
И вот такие контроллеры нынче надо программировать исключительно в StateFlow и Simulink. 
Кстати еслиб TC не поленился просмотреть примеры в Simulink-е у него бы не было вопросов насчет где посмотреть сложные реальные проекты. 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now