Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Программирование Новый топик    Ответить
 Програмно задать поведение двигателей в С.  [new]
jenya7
Member

Откуда:
Сообщений: 769
Есть системы с довольно сложным поведением.

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

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

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

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

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

В данном случае никак не соображу какую структуру создать под сценарий движения и как учитывать все логические условия.
17 июл 17, 08:54    [20649107]     Ответить | Цитировать Сообщить модератору
 Re: Програмно задать поведение двигателей в С.  [new]
OoCc
Member

Откуда: с Кавказа
Сообщений: 1323
конечный автомат
17 июл 17, 09:07    [20649130]     Ответить | Цитировать Сообщить модератору
 Re: Програмно задать поведение двигателей в С.  [new]
jenya7
Member

Откуда:
Сообщений: 769
OoCc
конечный автомат

да. пожалуй. но какую структуру передать в конечный автомат.
17 июл 17, 09:13    [20649139]     Ответить | Цитировать Сообщить модератору
 Re: Програмно задать поведение двигателей в С.  [new]
OoCc
Member

Откуда: с Кавказа
Сообщений: 1323
jenya7,

Конечный автомат описывается табличкой.
17 июл 17, 09:50    [20649274]     Ответить | Цитировать Сообщить модератору
 Re: Програмно задать поведение двигателей в С.  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 33541
OoCc
jenya7,

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



почитайте про синтез конечных автоматов, есть Мили и Мура, книжка автора Баранова, например.
"Синтез конечных автоматов"
17 июл 17, 12:25    [20649830]     Ответить | Цитировать Сообщить модератору
 Re: Програмно задать поведение двигателей в С.  [new]
OoCc
Member

Откуда: с Кавказа
Сообщений: 1323
MasterZiv
OoCc
jenya7,

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



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

Не морочь ТС голову. Для вопроса ТС ничего читать ненужно - хватит простенькой логической таблички которая имплементируется в простом массиве.
17 июл 17, 13:27    [20650101]     Ответить | Цитировать Сообщить модератору
 Re: Програмно задать поведение двигателей в С.  [new]
mayton
Member

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

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

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

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

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

Просто самые вкусные темы ждут конца недели. Будем эмулировать полиморфизм на сях.
17 июл 17, 23:17    [20652088]     Ответить | Цитировать Сообщить модератору
 Re: Програмно задать поведение двигателей в С.  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 5276
mayton
...Просто самые вкусные темы ждут конца недели. Будем эмулировать полиморфизм на сях.
Косвенную адресацию изобрели 50лет назад даже на ассемблере. Изобретатели....
17 июл 17, 23:26    [20652100]     Ответить | Цитировать Сообщить модератору
 Re: Програмно задать поведение двигателей в С.  [new]
mayton
Member

Откуда: loopback
Сообщений: 35682
Балин.... Зяма! Всю контору спалил
17 июл 17, 23:47    [20652120]     Ответить | Цитировать Сообщить модератору
 Re: Програмно задать поведение двигателей в С.  [new]
Изопропил
Member

Откуда:
Сообщений: 30569
mayton
Балин.... Зяма! Всю контору спалил

ничего страшного
18 июл 17, 00:53    [20652152]     Ответить | Цитировать Сообщить модератору
Все форумы / Программирование Ответить