реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Еще раз о switch-технологии, Цифровые автоматы и С++
ochkarik_
сообщение Mar 13 2010, 23:05
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 1-07-07
Пользователь №: 28 824



Добрый день. Хотелось бы еще раз более подробно поговорить о switch-технологии.
Ввиду наличия свободного времени начал разрабатывать библиотеку классов для этого дела, хотелось бы узнать мнение специалистов о правильности самого подхода.
В целом, идея такова. Создать набор виртуальных классов, реализующих базовую функциональность. Сами автоматы создаются в виде наследников. Требование - должна быть реализована виртуальная функция переходов. Функция может быть написана как вручную, так и сгенерирована автоматически из dot файла (формата GraphViz) (в этом случае имеем дополнительно картинку, соответствующую функции переходов).
Такая библиотека кажется довольно удобной, особенно в случае программирования логических контроллеров (управление различными задвижками, пневмоцилиндрами, контакторами и т.д.), так как допускает множественное использование единожды написанного автомата сразу для нескольких объектов (для этого используются шаблоны). Единственная проблема - недостаток опыта. Хочется создать не просто одиночный проект, а именно библиотеку, а здесь все зависит от того, по тому ли пути пошел в самом начале.
В общем, подскажите, стоит ли игра свеч, и в каком направлении двигаться. В прикрепленных файлах - самое начало. Может, у кого есть подобные вещи - прошу поделиться, в целях, так сказать, повышения образованности.
Прикрепленные файлы
Прикрепленный файл  StateMachines.zip ( 34.26 килобайт ) Кол-во скачиваний: 78
 
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Mar 14 2010, 01:58
Сообщение #2


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Ресурсов сожрет немеряно...
По сравнению с концепцией "точка входа в подпрограмму, реализующую автомат есть состояние автомата". Применительно к АВР - это статическая переменная размером в 2 байта.
Go to the top of the page
 
+Quote Post
sensor_ua
сообщение Mar 14 2010, 05:25
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387



http://ru.wikipedia.org/wiki/%D0%A3%D1%81%...%84%D1%84%D0%B0
http://en.wikipedia.org/wiki/Protothreads


--------------------
aka Vit
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Mar 14 2010, 07:14
Сообщение #4


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Ага. Ну и конструкцию новомодную ГЦЦ-шную тоже нельзя не упомянуть
Код
static int count;
static void *pc=NULL;
void *thread_proc(void *pc)
{
  if(pc !=NULL) goto *pc;
//.............CODE.................
//...........MORE CODE..........

// example of the State
StateN:
    if(PIND & (1<<In_Pin)) count += 1;
    return &&StateN;
}

Вызов такого треда
Код
pc = thread_proc(pc);

Впрочем, в помянутых Protothreads это как вариант и так есть.
ЗЫ помогает избавиться от двухбайтового оверхеда
Go to the top of the page
 
+Quote Post
alcosar
сообщение Mar 14 2010, 18:00
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 30-03-06
Пользователь №: 15 598



Фреймворк использующий иерархические машины состояний http://state-machine.com/. Реализация на С и С++ под разные архитектуры.

Сообщение отредактировал alcosar - Mar 14 2010, 18:13
Go to the top of the page
 
+Quote Post
sensor_ua
сообщение Mar 15 2010, 06:32
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387



Finite State Machine Operating System (FSMOS) http://www.nilsenelektronikk.no/nenesos.html


--------------------
aka Vit
Go to the top of the page
 
+Quote Post
Dima_G
сообщение Mar 15 2010, 08:35
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 279
Регистрация: 2-07-08
Из: Новосибирск
Пользователь №: 38 699



Возможно Вам будет интересно почитать
http://www.rsdn.ru/article/alg/Static_Fini...ate_Machine.xml
Go to the top of the page
 
+Quote Post
Oldring
сообщение Mar 15 2010, 09:09
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(ochkarik_ @ Mar 14 2010, 02:05) *
Ввиду наличия свободного времени начал разрабатывать библиотеку классов для этого дела, хотелось бы узнать мнение специалистов о правильности самого подхода.


Вы не первый и не последний.
IMHO главная проблема писателей подобных систем - чрезмерная универсальность, превышающая реальные потребности решаемых с помощью подобных инструментов задач.


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Mar 15 2010, 10:48
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(Oldring @ Mar 15 2010, 12:09) *
Вы не первый и не последний.
IMHO главная проблема писателей подобных систем - чрезмерная универсальность, превышающая реальные потребности решаемых с помощью подобных инструментов задач.

+1
Где предел абстрактности? Иногда идея возводится в абсолют.
Не знаю как у кого, но я, если превышаю какой-то порог универсальности, то потом этим воспользоваться всё равно не могу. То есть, по прошествии какого-то времени, мне надо сначала изучить свой же (!!!) вариант реализации и уж потом им воспользоваться. Написание документов и описаний (делаю всегда) не очень помогает. Надо перечитать документ (описание) вспомнить, вникнуть, и уж потом воспользоваться.

Если созданной библиотекой с таким уровнем абстракции, пользоваться постоянно, то, безусловно, это себя окупит. А если от раза к разу, то это работа ради идеи. Это моё мнение.

Не знаю как у кого, но у меня, как мне кажется, организм борется с избытком информации. И борется простым методом. Я забываю. Начисто. Хорошо усваиваю и тут же забываю. biggrin.gif
Доходит до смешного. Бывали случаи когда я наново создавал некоторые вещи. Потом находишь - "Во! Так я это уже делал! Интересно! И решение интересное!" smile.gif

Применительно к данной тематике, я бы предпочёл несколько разных решений, пусть менее универсальных, но более наглядных с точки зрения универсальности. Либо применил бы промежуточное ПО (скорее всего именно так). То есть реализовал бы систему с управлением состояниями в виде внешних данных. Интерпретатор.
Go to the top of the page
 
+Quote Post
ochkarik_
сообщение Mar 15 2010, 18:54
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 1-07-07
Пользователь №: 28 824



Сколько всего вкусного ))))
Спасибо всем за отзывчивость.
Информации не на одну неделю. Нужно все это переосмыслить.
Пока более всего заинтересовал вариант, на который дал ссылку Dima_G.
(Кто-нибудь пользовал? В IAR откомпилится?)
Ладно, буду думать.
Go to the top of the page
 
+Quote Post
sansnotfor
сообщение Mar 24 2011, 00:16
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 24-10-08
Пользователь №: 41 157



Сделал перевод статьи о конечных автоматах. Эта статья где-то упоминалась на форуме - Martin Gomez "Embedded State Machine Implementation"

Сообщение отредактировал sansnotfor - Mar 24 2011, 00:16
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 16:35
Рейтинг@Mail.ru


Страница сгенерированна за 0.01449 секунд с 7
ELECTRONIX ©2004-2016