Перейти к содержанию
    

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 минут назад, Segment сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

23 минуты назад, iosifk сказал:

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

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

Изменено пользователем Segment

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

36 minutes ago, Segment said:

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

25 минут назад, k155la3 сказал:

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

29 minutes ago, Segment said:

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

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

ps

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

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

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

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 minutes ago, AlexandrY said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 часов назад, AlexandrY сказал:

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 часов назад, Segment сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

27 minutes ago, a123-flex said:

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...