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

 
 
> Контролер для 3-х двигателей.
Jenya7
сообщение Jul 2 2017, 08:31
Сообщение #1


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

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



Мне нужно сделать драйвер для 3-х двигателей. Двигатели обычные DC Motors 24V. Двигатели имеют энкодеры для отслеживания позиции.
Хотелось чтоб энкодеры были апаратные. Обычно это делается на таймерах.
Вот задумался какой контроллер выбрать. PWM+Encoders требуют таймера. К тому же на мои нужды нужно еще 3 таймера.
У ST вроде нет контролеров заточенных под motion. У TI есть но что то не хочется связываться с TI. К тому же 3 двигателя. Есть контроллеры под такую задачу?
Основная проблема - аппаратно обработать 3 энкодера. На атмеловских AVRках я пользовался внешними интераптами но это, как мне кажется, не очень хороший способ.

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Jenya7
сообщение Oct 29 2017, 12:25
Сообщение #2


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

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



Вот решение близко к идеальному. https://geektimes.ru/post/286324/

Сообщение отредактировал Jenya7 - Oct 29 2017, 12:27
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Oct 29 2017, 14:58
Сообщение #3


Ally
******

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



Цитата(Jenya7 @ Oct 29 2017, 14:25) *
Вот решение близко к идеальному. https://geektimes.ru/post/286324/

Хороший выбор. wink.gif
У меня уже вышла 3-я версия этого контроллера.
Но никак руки не дойдут зафиксить и выложить релиз.
Все время идут изменения.
Обязательное условие для применения моего фреймворка это использование RTOS MQX и IAR не выше 7.80.1 поскольку только до этой версии поддерживается плагин для MQX 4.2
Уровень OS abstraction layer я не применяю.

Тут недавно приложение для этой платы сделал - прграммируемый генератор пачек импульсов произвольной скважности.
В пределе на единичном выходе получаю 50% ШИМ частотой 500 кГц с токами до 100А.
В последней моей версии стоит гальваноизолированный CAN.
Можно без опасений соединять CAN-ом разбросанную сеть таких плат управляющих моторами в несколько сот ватт.
Go to the top of the page
 
+Quote Post
khach
сообщение Oct 29 2017, 15:35
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 439
Регистрация: 29-12-04
Пользователь №: 1 741



Цитата(AlexandrY @ Oct 29 2017, 16:58) *
В последней моей версии стоит гальваноизолированный CAN.
Можно без опасений соединять CAN-ом разбросанную сеть таких плат управляющих моторами в несколько сот ватт.

Это хорошее дело, особенно при таких токах. А вот можете посоветовать стек протокола в исходниках, на основе которого можно много осей синхронизировать? Желательно совместимый с чем- либо стандартным типа canopen.


Go to the top of the page
 
+Quote Post
Огурцов
сообщение Oct 29 2017, 16:37
Сообщение #5


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



Цитата(khach @ Oct 29 2017, 16:35) *
canopen

вам может сильно не хватить мегабита, коль уж двенадцати не хватило

Go to the top of the page
 
+Quote Post
khach
сообщение Oct 29 2017, 17:04
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 3 439
Регистрация: 29-12-04
Пользователь №: 1 741



Цитата(Огурцов @ Oct 29 2017, 18:37) *
вам может сильно не хватить мегабита, коль уж двенадцати не хватило

Там скорее не хватало времени реакции хоста на приход пакета. Хотя конечно было бы неплохо оптимизировать набор телеграмм под такое управление.
Вообще это отдельная большая тема по выбору интерфейса и протокола для распределенного многоосоевого синхронного движения.
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Oct 30 2017, 00:20
Сообщение #7


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



Цитата(khach @ Oct 29 2017, 18:04) *
Вообще это отдельная большая тема по выбору интерфейса и протокола для распределенного многоосоевого синхронного движения.

can неплохой интерфейс для, но ethernet явно не хуже, не вижу никаких причин использовать can и не использовать ethernet
из более других вариантов - только оптика, но она нужна только там, где совсем экстремально, а для обычных условий медного должно быть вполне достаточно


Сообщение отредактировал Огурцов - Oct 30 2017, 00:22
Go to the top of the page
 
+Quote Post
khach
сообщение Oct 30 2017, 10:53
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 3 439
Регистрация: 29-12-04
Пользователь №: 1 741



Цитата(Огурцов @ Oct 30 2017, 02:20) *
can неплохой интерфейс для, но ethernet явно не хуже, не вижу никаких причин использовать can и не использовать ethernet

Контроллер двигателя с эзернетом обязательно надо строить на двух микроконтроллерах- один отвечает за интерфейс, а второй- за собственно управление мотором. Эзернет может отличаться непредсказуемым флудом пакетов, который заторомозит любую RTOS до невменяемости. У нас такое подгоревший свитч устроил, который изобразил логическую петлю внутри себя.

Go to the top of the page
 
+Quote Post
mantech
сообщение Oct 30 2017, 11:38
Сообщение #9


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(khach @ Oct 30 2017, 13:53) *
Эзернет может отличаться непредсказуемым флудом пакетов, который заторомозит любую RTOS до невменяемости.


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

Цитата(jcxz @ Oct 30 2017, 14:33) *
Затормозить могут только кривые руки программиста. Какая бы ни была RTOS, но драйвер MAC-уровня Ethernet пишет всё-таки программист. Если у него есть голова на плечах, то никакой флуд не страшен.


Как уже написал, может сложится ситуация, когда пакеты мин. длины идут непрерывно, пришлось делать обработчик таких ситуаций.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Oct 30 2017, 11:41
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(mantech @ Oct 30 2017, 14:35) *
чтобы не произошло зацикливания при постоянно идущих коротких пакетах, сделан обработчик, который снижает приоритет эзернета при таких случаях, как при этом может все зависнуть - мне непонятно...

У меня вообще задача обслуживания стека Ethernet-а имеет самый низший приоритет. И не может затормозить никого.
А приём/передача пакетов Ethernet выполняются по DMA.

PS: Тут как обычно - тема про плохого танцора которому что-то мешает....

Цитата(mantech @ Oct 30 2017, 14:38) *
Как уже написал, может сложится ситуация, когда пакеты мин. длины идут непрерывно, пришлось делать обработчик таких ситуаций.

А зачем его делать? Ну потеряются эти пакеты, не получит их программа и что?
Это же ситуация нештатной работы Ethernet - связь по Ethernet возможно будет со сбоями, но остальным задачам поплохеть от этого не должно.
Go to the top of the page
 
+Quote Post
khach
сообщение Oct 30 2017, 12:02
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 3 439
Регистрация: 29-12-04
Пользователь №: 1 741



Цитата(jcxz @ Oct 30 2017, 13:41) *
У меня вообще задача обслуживания стека Ethernet-а имеет самый низший приоритет. И не может затормозить никого.

А зачем его делать? Ну потеряются эти пакеты, не получит их программа и что?

Ну у нас же управление движением, по сети идут не только пакеты задания скорости, но и пакеты положения с оптических линеек ( обычно это отдельное устройство со своим адресом).
Потеря пакетов в случае если петля ос по положению заведена через интерфейс чревата непрятностями. А если еще и рассинхронизация осей произойдет.
А прерывания от ДМА по окончанию приема пакета могут перегрузить например прерывания управлени ШИМ BLDC мотора совсем уж с грустными последствиями
А флуд может произойти из за банальности- портальный станок, витая пара идет на подвижную часть шпинделя, постоянно перегибается, протерлась изоляция ( именно витой пары, почему то они это любят). Появляется мерцающий контакт, свитч на станке получает кучу битых пакетов, начинается флуд. Это реальный пример, с весьма печальными финасовыми последствиями, хотя эзернет и был дублированный.
После этого интерфейс подвижной части поменяли на световоды.
Ну и от длительности сервоцикла зависит, мне например требовалось около 2 мсек в вышеописанном примере. Это надо было и датчики позиций осей опросить, и задание раскидать по сервоприводам, и со шпинделя скорость и позицию считать.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Oct 30 2017, 12:18
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(khach @ Oct 30 2017, 15:02) *
Ну у нас же управление движением, по сети идут не только пакеты задания скорости, но и пакеты положения с оптических линеек ( обычно это отдельное устройство со своим адресом).

Ну это у вас. Непонятно только - зачем вы тогда так сделали?
У нас, например, по Ethernet осуществляется только конфигурирование. Да в будущем будет осуществляться мониторинг возможно.
А задание скорости, передача положения угла ротора и др. критичные по времени операции - по специально для этого выделенным интерфейсам (даже не по общему CAN-у).

Цитата(khach @ Oct 30 2017, 15:02) *
А прерывания от ДМА по окончанию приема пакета могут перегрузить например прерывания управлени ШИМ BLDC мотора совсем уж с грустными последствиями

Не могут в принципе. Прерывания по завершению DMA генерятся когда принят очередной пакет DMA. Который в свою очередь может быть принят только если есть свободное место в очереди DMA-пакетов. А это свободное место появляется только в случае обработки и удаления из очереди одного из пакетов низкоприоритетной задачей TCP-стека.
Более того - после обработки очередного RX-пакета, прерывание о завершении RX-DMA следующего пакета может генериться только одно, а на следующие пакеты прерывания генериться не будут, до момента удаления из очереди RX-DMA-пакетов хотя-бы одного пакета задачей TCP-стека.
Т.е. - всё завязано на низкоприоритетную задачу TCP-стека и всё что выше её по приоритету будет работать независимо от её загрузки.
Да и мест пакетов в очереди RX-DMA немного - у меня всего-то их 5 в цепочке.
Если свободного места в очереди RX-DMA пакетов нет, то очередной пакет будет потерян. И выставится флажок о его потере в соотв. регистре контроллера Ethernet.

Цитата(khach @ Oct 30 2017, 15:02) *
и со шпинделя скорость и позицию считать.

В текущей задаче у нас считывание и вычисление позиции ротора занимает ~340 тактов CPU. Это вместе с фильтрацией, коррекцией нелинейности, вычислением скоростей и т.п.
С ресольвера или синус-косинусных датчиков. Это на частоте >100 МГц сущие копейки...
Вычисляем её каждый период ШИМ 10кГц.
Go to the top of the page
 
+Quote Post
khach
сообщение Oct 30 2017, 12:34
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 3 439
Регистрация: 29-12-04
Пользователь №: 1 741



Цитата(jcxz @ Oct 30 2017, 14:18) *
Ну это у вас. Непонятно только - зачем вы тогда так сделали?
У нас, например, по Ethernet осуществляется только конфигурирование. Да в будущем будет осуществляться мониторинг возможно.
А задание скорости, передача положения угла ротора и др. критичные по времени операции - по специально для этого выделенным интерфейсам (даже не по общему CAN-у).

Это не мы, это готовый общепромышленный ethercat.
Если для критической информации есть отдельный CAN то конечно мои замечания теряют смысл.


Цитата
Если свободного места в очереди RX-DMA пакетов нет, то очередной пакет будет потерян. И выставится флажок о его потере в соотв. регистре контроллера Ethernet.

Интерсный вариант. Хотя возможно и чреват рассинхронизацией, т.к доступен наиболее старый пакет. Мы наоборот старались сохранить самый последний пакет из валидных.
Вот только что с броадкастами делать? Вообще их не обрабатывать? Флуд по ним самый убийственный.
Цитата
В текущей задаче у нас считывание и вычисление позиции ротора занимает ~340 тактов CPU. Это вместе с фильтрацией, коррекцией нелинейности и т.п.
С ресольвера или синус-косинусных датчиков. Это на частоте >100 МГц сущие копейки...
Вычисляем её каждый период ШИМ 10кГц.

Ну это же не петля положения, а петля скорости. А ШИМ это вообще петля тока/момента, самая быстрая.
Кстати, в случае ресолверов, что там с приоритетом прерываний АЦП? Ресолверы ведь синус-косинусом запитаны? Или два канала в квадратурах на прием? А потом обрабатывать тригонометрию. за 340 тактов никак не управится.



Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Jenya7   Контролер для 3-х двигателей.   Jul 2 2017, 08:31
- - sigmaN   У ST есть всё для моторов и даже библиотека имеетс...   Jul 2 2017, 15:19
|- - AlexandrY   Цитата(sigmaN @ Jul 2 2017, 18:19) У ST е...   Jul 2 2017, 15:54
|- - oleg_d   У семейства XMC4000 есть все что надо но только дл...   Jul 2 2017, 15:55
|- - Jenya7   Цитата(sigmaN @ Jul 2 2017, 20:19) У ST е...   Jul 2 2017, 16:33
- - sigmaN   Кстати по ходу у ТСа коллекторные движки и там всё...   Jul 2 2017, 15:56
|- - AlexandrY   Цитата(sigmaN @ Jul 2 2017, 18:56) Кстати...   Jul 2 2017, 16:01
- - sigmaN   Я щас тоже только что так подумал )   Jul 2 2017, 16:02
- - EmbedElektrik   параметры энкодера и частота вращения какие? при 1...   Jul 2 2017, 20:47
|- - Jenya7   Цитата(EmbedElektrik @ Jul 3 2017, 01:47)...   Jul 3 2017, 05:46
|- - Эдди   Цитата(EmbedElektrik @ Jul 2 2017, 23:47)...   Jul 3 2017, 11:12
- - sigmaN   Ну так надо сначала ж выбрать энкодеры исходя из т...   Jul 3 2017, 09:04
|- - Jenya7   Цитата(sigmaN @ Jul 3 2017, 14:04) Ну так...   Jul 3 2017, 09:43
||- - HardEgor   Цитата(Jenya7 @ Jul 3 2017, 16:43) А проб...   Jul 3 2017, 17:11
||- - Эдди   Цитата(HardEgor @ Jul 3 2017, 20:11) Возм...   Jul 3 2017, 22:21
||- - Maverick   Цитата(Эдди @ Jul 4 2017, 01:21) Вот это,...   Jul 3 2017, 22:43
||- - Огурцов   Цитата(Maverick @ Jul 3 2017, 23:43) заче...   Jul 4 2017, 02:01
||- - HardEgor   Цитата(Maverick @ Jul 4 2017, 05:43) Возм...   Jul 4 2017, 05:00
||- - Эдди   Цитата(Maverick @ Jul 4 2017, 01:43) Возм...   Jul 4 2017, 05:17
|- - jcxz   Цитата(sigmaN @ Jul 3 2017, 12:04) А ведь...   Jul 4 2017, 10:40
- - sigmaN   Проблема в том, что ваша система не должна допусти...   Jul 3 2017, 10:24
- - sigmaN   Цитатаи вопрос "определить текущую скорость в...   Jul 3 2017, 13:14
- - Maverick   Цитата(Jenya7 @ Jul 2 2017, 11:31) Мне ну...   Jul 3 2017, 20:04
|- - Jenya7   Цитата(Maverick @ Jul 4 2017, 02:04) так ...   Jul 4 2017, 06:38
- - khach   Для надежности как раз и применяют два STM32 - оди...   Jul 4 2017, 07:19
- - sigmaN   ЦитатаА нужно-ли принимать решение на каждом импул...   Jul 4 2017, 15:05
|- - jcxz   Цитата(sigmaN @ Jul 4 2017, 18:05) Ну учи...   Jul 4 2017, 15:11
- - sigmaN   ЦитатаБольшое кол-во импульсов - это только для ув...   Jul 4 2017, 15:54
|- - jcxz   Цитата(sigmaN @ Jul 4 2017, 18:54) Правил...   Jul 4 2017, 16:40
- - khach   Энкодер с аппаратным таймером считает все импульсы...   Jul 4 2017, 17:45
- - sigmaN   Ну если счётчик аппаратный тогда ОК   Jul 4 2017, 20:00
- - Jenya7   Решил вернутся к теме. То есть как решил - жизнь з...   Oct 27 2017, 08:41
|- - HardEgor   Цитата(Jenya7 @ Oct 27 2017, 15:41) Я бы ...   Oct 27 2017, 12:09
||- - Jenya7   Цитата(HardEgor @ Oct 27 2017, 17:09) Стр...   Oct 27 2017, 12:13
|- - khach   Цитата(Jenya7 @ Oct 27 2017, 10:41) Я бы ...   Oct 28 2017, 12:16
||- - Jenya7   спасибо. посмотрю.   Oct 29 2017, 06:32
|- - Огурцов   Цитата(Jenya7 @ Oct 27 2017, 09:41) Но се...   Oct 29 2017, 08:31
|- - khach   Цитата(Огурцов @ Oct 29 2017, 10:31) эта,...   Oct 29 2017, 09:35
|- - Огурцов   Цитата(khach @ Oct 29 2017, 10:35) На мик...   Oct 29 2017, 12:24
|- - khach   Цитата(Огурцов @ Oct 29 2017, 14:24) а тр...   Oct 29 2017, 12:55
|- - Огурцов   Цитата(khach @ Oct 29 2017, 12:55) условн...   Oct 29 2017, 14:14
|- - khach   Цитата(Огурцов @ Oct 29 2017, 16:14) обыч...   Oct 29 2017, 14:36
- - mantech   Цитата(Jenya7 @ Jul 2 2017, 11:31) Мне ну...   Oct 29 2017, 08:07
- - Jenya7   Прихожу к мысли, что нужно делать модуль контроль+...   Oct 29 2017, 10:04
|- - mantech   Цитата(Jenya7 @ Oct 29 2017, 13:04) Прихо...   Oct 29 2017, 11:08
|- - gosha-z   Цитата(Jenya7 @ Oct 29 2017, 15:25) Вот р...   Oct 29 2017, 14:40
|||- - jcxz   Цитата(khach @ Oct 30 2017, 13:53) Контро...   Oct 30 2017, 11:33
|||||- - jcxz   Цитата(khach @ Oct 30 2017, 15:34) Интерс...   Oct 30 2017, 12:46
||||- - AlexandrY   Цитата(jcxz @ Oct 30 2017, 14:18) Прерыва...   Oct 30 2017, 13:24
||||- - jcxz   Цитата(AlexandrY @ Oct 30 2017, 16:24) А ...   Oct 30 2017, 13:38
||||- - mantech   Цитата(jcxz @ Oct 30 2017, 16:38) А что -...   Oct 30 2017, 14:31
|||- - Огурцов   Цитата(khach @ Oct 30 2017, 11:53) Контро...   Oct 30 2017, 12:22
||- - AlexandrY   Цитата(khach @ Oct 29 2017, 17:35) Это хо...   Oct 29 2017, 18:29
|- - Jenya7   Цитата(AlexandrY @ Oct 29 2017, 19:58) Хо...   Oct 30 2017, 07:11
|- - AlexandrY   Цитата(Jenya7 @ Oct 30 2017, 09:11) а где...   Oct 30 2017, 07:34
|- - Jenya7   Цитата(AlexandrY @ Oct 30 2017, 12:34) От...   Oct 30 2017, 07:43
|- - AlexandrY   Цитата(Jenya7 @ Oct 30 2017, 09:43) да. с...   Oct 30 2017, 08:51
|- - Jenya7   Цитата(AlexandrY @ Oct 30 2017, 13:51) Пе...   Oct 30 2017, 09:22
|- - AlexandrY   Цитата(Jenya7 @ Oct 30 2017, 11:22) понял...   Oct 30 2017, 09:33
|- - Jenya7   Цитата(AlexandrY @ Oct 30 2017, 14:33) Бе...   Oct 30 2017, 09:38
|- - AlexandrY   Цитата(Jenya7 @ Oct 30 2017, 11:38) я пон...   Oct 30 2017, 10:07
|- - Jenya7   Цитата(AlexandrY @ Oct 30 2017, 15:07) Ес...   Oct 30 2017, 10:40
- - Dog Pawlowa   5 страниц, задача не озвучена. Управление мотором:...   Oct 30 2017, 16:20
- - Jenya7   Нашел вот такое чудо. http://www.allegromicro.com/...   Nov 15 2017, 08:22
- - Tanya   Цитата(Jenya7 @ Nov 15 2017, 11:22) Это ж...   Nov 15 2017, 08:29
- - AlexandrY   Цитата(Jenya7 @ Nov 15 2017, 10:22) Нашел...   Nov 15 2017, 09:52
|- - Jenya7   Цитата(AlexandrY @ Nov 15 2017, 15:52) Он...   Nov 15 2017, 10:02
|- - AlexandrY   Цитата(Jenya7 @ Nov 15 2017, 11:56) А есл...   Nov 15 2017, 10:07
||- - Jenya7   Цитата(AlexandrY @ Nov 15 2017, 16:07) То...   Nov 15 2017, 10:10
||- - AlexandrY   Цитата(Jenya7 @ Nov 15 2017, 12:10) там т...   Nov 15 2017, 10:20
||- - Jenya7   Цитата(AlexandrY @ Nov 15 2017, 16:20) Да...   Nov 15 2017, 10:37
||- - AlexandrY   Цитата(Jenya7 @ Nov 15 2017, 12:37) так м...   Nov 15 2017, 10:46
||- - Jenya7   Цитата(AlexandrY @ Nov 15 2017, 16:46) А ...   Nov 15 2017, 11:00
||- - AlexandrY   Цитата(Jenya7 @ Nov 15 2017, 13:00) ну во...   Nov 15 2017, 11:05
||- - Jenya7   Цитата(AlexandrY @ Nov 15 2017, 17:05) TA...   Nov 15 2017, 11:14
||- - AlexandrY   Цитата(Jenya7 @ Nov 15 2017, 13:14) а как...   Nov 15 2017, 12:08
||- - Jenya7   Цитата(AlexandrY @ Nov 15 2017, 18:08) Си...   Nov 15 2017, 12:22
|- - mantech   Цитата(Jenya7 @ Nov 15 2017, 13:02) Не по...   Nov 15 2017, 13:12
|- - Jenya7   Цитата(mantech @ Nov 15 2017, 19:12) В че...   Nov 15 2017, 13:27
|- - mantech   Цитата(Jenya7 @ Nov 15 2017, 16:27) боязн...   Nov 15 2017, 19:01
- - Aner   QUOTE (Jenya7 @ Nov 15 2017, 12:22) Нашел...   Nov 15 2017, 09:53


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

 


RSS Текстовая версия Сейчас: 19th June 2025 - 06:12
Рейтинг@Mail.ru


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