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

 
 
> Програмно задать поведение двигателей в С.
Jenya7
сообщение Jul 17 2017, 05:53
Сообщение #1


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

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Есть системы с довольно сложным поведением.

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

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

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

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

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

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

Сообщение отредактировал Jenya7 - Jul 17 2017, 06:22
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sigmaN
сообщение Jul 17 2017, 18:30
Сообщение #2


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Цитата
Не теории помогают программировать сложные вещи, а фреймворки. Они и диктуют стиль и "подходы"
Создается впечатление, что это "взгляд со стороны" какой-то. Ну, т.е. поверхностный.

А так то под всеми фреймворками лежит некая основа. Что конкретно они упрощают для человека путем введения более высокоуровневых абстракций.
На определенном же уровне парадигма автоматного программирования очень даже уместна и упрощает программирование. Там приведен очень красноречивый пример с будильником на флагах и на состояниях.

Какими бы не были,цитирую, "больным на всю голову", авторы упомянутой книги, они очень подробно и аргументированно изложили свои мысли.
Думал есть что почитать подобного уровня изложения, но про ваш "stateless" подход.

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

А я чего-то думаю ну ОК, а возможность/невозможность включения двигателей(т.е. все эти ограничения) как раз и зависят от состояния в котором находится сервопривод(назовем так совокупность двигателя, концевиков, измерителей тока и т.д.). Т.е. вы, собирая параметры с серво привода и пытаясь проверить ограничения, решая можно ли включать двигатель, по сути неким дедуктивным способом и пытаетесь выяснить состояние...

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

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


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Jenya7   Програмно задать поведение двигателей в С.   Jul 17 2017, 05:53
- - arhiv6   Почитайте про конечные автоматы, затем нарисуйте д...   Jul 17 2017, 06:29
|- - Jenya7   Цитата(arhiv6 @ Jul 17 2017, 12:29) Почит...   Jul 17 2017, 06:52
- - ikm   Цитата(Jenya7 @ Jul 17 2017, 08:53) В дан...   Jul 17 2017, 07:10
|- - Jenya7   Цитата(ikm @ Jul 17 2017, 13:10) Я вот то...   Jul 17 2017, 07:23
- - _pv   ну так возьмите любой понравившийся скриптовый язы...   Jul 17 2017, 08:13
|- - Jenya7   Цитата(_pv @ Jul 17 2017, 14:13) ну так в...   Jul 17 2017, 08:52
- - AlexandrY   Цитата(Jenya7 @ Jul 17 2017, 08:53) В дан...   Jul 17 2017, 09:55
|- - Jenya7   Цитата(AlexandrY @ Jul 17 2017, 15:55) Да...   Jul 17 2017, 10:15
|- - AlexandrY   Цитата(Jenya7 @ Jul 17 2017, 13:15) То ес...   Jul 17 2017, 10:57
- - sigmaN   ЦитатаПо сути это stateless подход. Я считаю его н...   Jul 17 2017, 11:00
|- - AlexandrY   Цитата(sigmaN @ Jul 17 2017, 14:00) По по...   Jul 17 2017, 14:31
|- - AlexandrY   Цитата(sigmaN @ Jul 17 2017, 21:30) Т.е. ...   Jul 17 2017, 20:21
- - Trump   Отдавать пользователю возможность управления автом...   Jul 17 2017, 19:02
|- - sigmaN   Цитата(Trump @ Jul 17 2017, 22:02) Отдава...   Jul 17 2017, 19:40
- - sigmaN   Ок, я тут спорить не буду, 1000 сигналов никогда н...   Jul 17 2017, 21:08


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

 


RSS Текстовая версия Сейчас: 4th July 2025 - 18:45
Рейтинг@Mail.ru


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