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

 
 
> Програмно задать поведение двигателей в С.
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
AlexandrY
сообщение Jul 17 2017, 20:21
Сообщение #3


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(sigmaN @ Jul 17 2017, 21:30) *
Т.е. вы, собирая параметры с серво привода и пытаясь проверить ограничения, решая можно ли включать двигатель, по сути неким дедуктивным способом и пытаетесь выяснить состояние...

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

Не я собираю, а среда исполнения PLC. Она каждую 1 мс берет и собирает всю 1000 сигналов которые использовались в моей программе, меня не спрашивает.
Ну просто так устроены PLC. A EtherCAT позволяет все собрать за 1 мс.
Конечно в cамой среде PLC есть состояния, события, очереди сообщений и проч. Там, не сомневаюсь, жесткая RTOS установлена.
Я использую массивы из сотен таймеров чтобы тот же дребезг конечников нейтрализовать.
Но в цикле моей программы, которую именно я написал нет никаких состояний.
Мне фреймворк PLC позволяет это сделать. Вот и вся теория.

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




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
- - 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 Текстовая версия Сейчас: 18th July 2025 - 02:41
Рейтинг@Mail.ru


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