Проект MotorControlDemo для микроконтроллеров серии 1921ВК01

32-разрядные микроконтроллеры разработки АО "НИИЭТ"

Модераторы: dav, bkolbov, Alis, pip, _sva_, dav, bkolbov, Alis, pip, _sva_, dav, bkolbov, Alis, pip, _sva_

petrovitch
Сообщения: 72
Зарегистрирован: 15 фев 2017, 19:07

Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01

Сообщение petrovitch » 02 фев 2020, 23:01

Настраиваю регуляторы тока согласно описанию на ПО (п. 6.1.2.).
Заданный ток удержания 1А.
Хотя параметры ПИД-регулятора и влияют на результат, но при всех
настройках осциллограммы токов фаз В и С имеют форму как на картинке:
Oscill_Ifabc.jpg
Oscill_Ifabc.jpg (137.6 КБ) 684 просмотра
В чём может быть проблема?

Аватара пользователя
Лашкевич
Сообщения: 198
Зарегистрирован: 13 май 2015, 13:10
Предприятие: ООО "НПФ Вектор"
Откуда: Москва
Contact:

Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01

Сообщение Лашкевич » 13 фев 2020, 13:54

Да, есть такой эффект, связан, насколько я помню, с влиянием мёртвого времени при попытке приложить околонулевое напряжение вдоль одной из осей. Попробуйте сменить тип ШИМ на другой. Также попробуйте поменять частоту ШИМ - попробуйте 10кГц, 15кГц, посмотрите как влияет.
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/

petrovitch
Сообщения: 72
Зарегистрирован: 15 фев 2017, 19:07

Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01

Сообщение petrovitch » 22 окт 2020, 23:14

В структуре TDrvParams базовая скорость хранится в явном виде в формате int16.
Рассчитанная скорость получается в формате int32 (_iq). Эта скорость в относительных единицах?
Если да, то где производится обратный пересчёт из относительной скорости?

Объясните смысл констант в строке в файле V_DPR_eCAP.c

Код: Выделить всё

p->TsNom = ((CORE_CLK / (drv_params.speed_nom * drv_params.p)) * 15*2);
и в строке

Код: Выделить всё

p->TsNomMilsec = (60.0*1000 / (6*drv_params.speed_nom * drv_params.p));

petrovitch
Сообщения: 72
Зарегистрирован: 15 фев 2017, 19:07

Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01

Сообщение petrovitch » 22 окт 2020, 23:24

И ещё вопрос о запуске управления по двум каналам.

Как поступить?
Фактически код управления помимо дополнительных настроек портов должен быть продублирован.
А как поступать со словарём объектов в целевой программе и в UniCon-е.

Аватара пользователя
Лашкевич
Сообщения: 198
Зарегистрирован: 13 май 2015, 13:10
Предприятие: ООО "НПФ Вектор"
Откуда: Москва
Contact:

Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01

Сообщение Лашкевич » Вчера, 11:38

petrovitch писал(а):
22 окт 2020, 23:14
В структуре TDrvParams базовая скорость хранится в явном виде в формате int16.
Рассчитанная скорость получается в формате int32 (_iq). Эта скорость в относительных единицах?
Да, в проекте всё в относительных единицах.
Обратный пересчёт из относительной скорости внутри программы не производится нигде, а для пользователя пересчёт производит программа UniCON, пользуясь выведенной в словарь объектов базовой скоростью (масштабирующий коэффициент 14, co2_vars.co_scaleNum14 = drv_params.speed_nom;).

Предпосчитанная константа TsNom нужна для быстрого расчёта частоты вращения в функции SpeedCalc. Она показывает количество тактов микроконтроллера между двумя фронтами одного канала датчика холла при номинальной скорости
Здесь speed_nom в об/мин, например, 3000, p число пар полюсов.
1/(speed_nom/60*p) даст время одного периода датчика холла, а так как скорость рассчитывается два раза на периоде (между каждыми двумя фронтами), то константа в два раза меньше (умножение на 30 вместо 60). CORE_CLK переводит время в процессорные такты

Про TsNomMilsec есть комментарий в коде, коэффициент для пересчета времени между метками в мс в скорость в об/мин. 60 - об/мин, 1000 мс в секунде, 6 меток на эл. оборот. Нужен тоже для экономии процессорного времени, но вместо процессорных тактов показывает количество миллисекунд одного электрического периода.

petrovitch писал(а):
22 окт 2020, 23:24
И ещё вопрос о запуске управления по двум каналам.
Интересует одновременно два работающих модуля ДПР Холла? Так как модуль сильно завязан на использование конкретных регистров периферии, то проще всего просто скопировать и сделать второй модуль под другим именем (типа V_DPR_eCAP1.c), там переназначить ножки и модули CAP, сделать ещё три перывания в файле main.c, пройти поиском по проекту на DPReCAP и везде аналогично повторить всё для DPReCAP1. Затем в программе CoodEdit скопировать весь целиком индекс с параметрами про DPReCAP на свободное место (из индекса 5155 в 5156, например), заменить в скопированном имена переменных с DPReCAP на DPReCAP1. Также можно для второго датчика сделать отдельную группу параметров в перичеслении 15, чтобы не путаться, и выставить эту группу новому индексу параметров 5156. Тогда после перепрошивки и обновления словаря и экспорта базы текстов из CoodEdit в UniCon всё появится в юниконе. Рекомендуется пройти лабораторную работу "Добавление параметра CANopen в программе COODEdit" из руководства Описание структуры ПО MotorControlDemo_v23.pdf.
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/

petrovitch
Сообщения: 72
Зарегистрирован: 15 фев 2017, 19:07

Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01

Сообщение petrovitch » Вчера, 15:49

Спасибо за такой развёрнутый ответ.

Но по второму вопросу интересовал запуск двух двигателей с одного кристалла.

Аватара пользователя
Лашкевич
Сообщения: 198
Зарегистрирован: 13 май 2015, 13:10
Предприятие: ООО "НПФ Вектор"
Откуда: Москва
Contact:

Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01

Сообщение Лашкевич » Вчера, 16:09

petrovitch писал(а):
Вчера, 15:49
Но по второму вопросу интересовал запуск двух двигателей с одного кристалла.
Ну тогда надо мой ответ про модуль датчика положения расширить на все модули ПО, касающиеся управления двигателями.
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/

Ответить

Вернуться в «32-разрядные микроконтроллеры»

Пользователи онлайн

Сейчас этот форум просматривают: PatrickChear и 1 гость