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

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


Ally
******

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



Цитата(Jenya7 @ Jul 17 2017, 08:53) *
В данном случае никак не соображу какую структуру создать под сценарий движения и как учитывать все логические условия.

Да не надо тут никакого сценария.
Просто запоминайте в каком направлении надо было двигаться по последней команде пользователя.
И пытайтесь включить одновременно все двигатели.
Но перед включением каждого двигателя проверяете все возможные запреты на его включение.
Это и все конечники,и цепи безопасности, и направления, и напряжение, и правильность фазировки напряжения, и таймауты от последней смены направления, а таймауты с предыдущего движения того же мотора и проч.
Тот мотор движение которого ничем не запрещено включится, а кому есть запрет не включиться.
И вы получите правильную последовательность работы моторов в любом случае.
И этот цикл повторяется каждый рабочий такт PLC.
Советую подсмотреть у PLC такие удобные компоненты как TOF, TON и TP


Буквально на прошлой неделе я сдал большой проект для нового аэропорта в Мельбурне.
Там таких моторов было 40 шт. управляемых одновременно по EtherCAT.
Цикл программы 4 мс.
И программа строилась именно так.
Никаких автоматов здесь придумывать не нужно. Сама среда исполнения PLC выполняет роль автомата.

По сути это stateless подход. Я считаю его наиболее надежным и безопасным для ответственной автоматики.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Jul 17 2017, 10:15
Сообщение #3


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

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



Цитата(AlexandrY @ Jul 17 2017, 15:55) *
Да не надо тут никакого сценария.
Просто запоминайте в каком направлении надо было двигаться по последней команде пользователя.
И пытайтесь включить одновременно все двигатели.
Но перед включением каждого двигателя проверяете все возможные запреты на его включение.
Это и все конечники,и цепи безопасности, и направления, и напряжение, и правильность фазировки напряжения, и таймауты от последней смены направления, а таймауты с предыдущего движения того же мотора и проч.
Тот мотор движение которого ничем не запрещено включится, а кому есть запрет не включиться.
И вы получите правильную последовательность работы моторов в любом случае.
И этот цикл повторяется каждый рабочий такт PLC.
Советую подсмотреть у PLC такие удобные компоненты как TOF, TON и TP


Буквально на прошлой неделе я сдал большой проект для нового аэропорта в Мельбурне.
Там таких моторов было 40 шт. управляемых одновременно по EtherCAT.
Цикл программы 4 мс.
И программа строилась именно так.
Никаких автоматов здесь придумывать не нужно. Сама среда исполнения PLC выполняет роль автомата.

По сути это stateless подход. Я считаю его наиболее надежным и безопасным для ответственной автоматики.

То есть в цикле пробежаться по всем моторам и проверить условия? А как реагировать на приходящие команды? Включать команду в условие? Мое PLC это программа написанная в контроллере.

Сообщение отредактировал Jenya7 - Jul 17 2017, 10:17
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jul 17 2017, 10:57
Сообщение #4


Ally
******

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



Цитата(Jenya7 @ Jul 17 2017, 13:15) *
То есть в цикле пробежаться по всем моторам и проверить условия? А как реагировать на приходящие команды? Включать команду в условие? Мое PLC это программа написанная в контроллере.

Да, именно. В условии проверяется и команда. И пытаемся включать во всех возможных направлениях.

Большинство PLC - это программы написанные в микроконтроллере.
Или вы хотите сказать что у вас ненастоящий PLC?
У 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
- - sigmaN   ЦитатаПо сути это stateless подход. Я считаю его н...   Jul 17 2017, 11:00
|- - AlexandrY   Цитата(sigmaN @ Jul 17 2017, 14:00) По по...   Jul 17 2017, 14:31
- - sigmaN   ЦитатаНе теории помогают программировать сложные в...   Jul 17 2017, 18:30
|- - 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 Текстовая версия Сейчас: 16th July 2025 - 09:03
Рейтинг@Mail.ru


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