Програмно задать поведение двигателей в С.

jenya7
Дата: 17.07.2017 08:54:14
Есть системы с довольно сложным поведением.

Скажем есть система где

1. пользователь нажимает на кнопку ОТКРЫТЬ
2. Мотор №1 начинает двигаться - открывается крышка - мотор останавливается достигнув концевого выключателя №1.
3. Мотор №2 начинает двигаться - выезжает экран - мотор останавливается достигнув концевого выключателя №2.

4. пользователь нажимает на кнопку ЗАКРЫТЬ
5. Мотор №2 начинает двигаться - экран заезжает обратно - мотор останавливается достигнув концевого выключателя №3.
6. Мотор №1 начинает двигаться - закрывается крышка - мотор останавливается достигнув концевого выключателя №4.

Естественно на любом участке пути пользователь может применять команды СТОП, ОТКРЫТЬ, ЗАКРЫТЬ и логика отрабатывает команды в соответствии с положением моторов.
То есть если нажать на кнопку ОТКРЫТЬ при закрытой крышке - начнет двигаться Мотор №1. А если нажать на кнопку ОТКРЫТЬ в середине пути - начнет двигаться Мотор №2.
И отслеживаются все положения - скажем Мотор №2 не может начать движение пока крышка полностю не открыта (концевик №1 нажат)

До сих пор я этот сценарий жестко кодировал в микроконтроллере и все было хорошо.
Сейчас есть требование сделать эти сценарии движения програмируемые.
У меня в принципе есть проект где пользователь по UART заливает скрипт я его обрабатываю и произвожу действия. Но там простой PLC - по входным условиям
(значениям на аналоговых и дигитальных входах) я выставляю значения на выходах.

В данном случае никак не соображу какую структуру создать под сценарий движения и как учитывать все логические условия.
OoCc
Дата: 17.07.2017 09:07:22
jenya7
Дата: 17.07.2017 09:13:03
OoCc
конечный автомат

да. пожалуй. но какую структуру передать в конечный автомат.
OoCc
Дата: 17.07.2017 09:50:46
jenya7,

Конечный автомат описывается табличкой.
MasterZiv
Дата: 17.07.2017 12:25:37
OoCc
jenya7,

Конечный автомат описывается табличкой.



почитайте про синтез конечных автоматов, есть Мили и Мура, книжка автора Баранова, например.
"Синтез конечных автоматов"
OoCc
Дата: 17.07.2017 13:27:27
MasterZiv
OoCc
jenya7,

Конечный автомат описывается табличкой.



почитайте про синтез конечных автоматов, есть Мили и Мура, книжка автора Баранова, например.
"Синтез конечных автоматов"

Не морочь ТС голову. Для вопроса ТС ничего читать ненужно - хватит простенькой логической таблички которая имплементируется в простом массиве.
mayton
Дата: 17.07.2017 23:17:51
jenya7
До сих пор я этот сценарий жестко кодировал в микроконтроллере и все было хорошо.
Сейчас есть требование сделать эти сценарии движения програмируемые.
У меня в принципе есть проект где пользователь по UART заливает скрипт я его обрабатываю и произвожу действия. Но там простой PLC - по входным условиям
(значениям на аналоговых и дигитальных входах) я выставляю значения на выходах.

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

Странно что ты кодил PLC но не исследовал возможности самого компиллятора.

По сабжу верно сказали. Бери табличку. Делай в одной колонке состояния и условия. А в другой - переходы.

По поводу инструмента. Способов - масса. Самый близкий к языку конечно полиморфизм. Но у нас - язык "C".
Поэтому КМК стоит подождать пятницы.

Просто самые вкусные темы ждут конца недели. Будем эмулировать полиморфизм на сях.
Siemargl
Дата: 17.07.2017 23:26:41
mayton
...Просто самые вкусные темы ждут конца недели. Будем эмулировать полиморфизм на сях.
Косвенную адресацию изобрели 50лет назад даже на ассемблере. Изобретатели....
mayton
Дата: 17.07.2017 23:47:49
Балин.... Зяма! Всю контору спалил
Изопропил
Дата: 18.07.2017 00:53:48
mayton
Балин.... Зяма! Всю контору спалил

ничего страшного