MotorControlDemo

Аватара пользователя
Disona
Сообщения: 92
Зарегистрирован: 28 ноя 2015, 22:03
Откуда: Москва

Re: MotorControlDemo

Сообщение Disona » 21 апр 2021, 11:39

lomax! писал(а):
21 апр 2021, 11:31

Спасибо, я имел в виду что, было бы прекрасно, если бы режим симуляции включался бы программно, без перекомпиляции, :roll:
не всегда исходные коды доступны и не всегда допустимо перепрограммирование.
А, в этом смысле...
Что ж, на данный момент симулятор устроен так, что подменяет расчётными значениями реальные коды АЦП и уставки сравнения ШИМов. В целях ускорения, это сделано не через ИФ-ы, а через дефайны. Поэтому вот так.
С уважением,
Дмитрий Шпак
Telegram: +79773608997
shpak@motorcontrol.ru
Инженер-программист ООО "НПФ Вектор", Москва.

Георгий!
Сообщения: 11
Зарегистрирован: 07 сен 2021, 16:07

Re: MotorControlDemo

Сообщение Георгий! » 24 ноя 2021, 10:18

Добрый день!
Не могли бы Вы проконсультировать по ряду вопросов:

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

2) Можно ли без изменения кода в позиционном режиме задавать через ЮниКон положение в механических градусах за пределами одного оборота, например +-1375 ?

Аватара пользователя
Лашкевич Максим
Сообщения: 342
Зарегистрирован: 30 дек 2015, 10:38

Re: MotorControlDemo

Сообщение Лашкевич Максим » 24 ноя 2021, 12:45

Добрый.
1. Да, есть параметр для разрешения обратного вращения и рекуперации. Настройки СУ.Рекуперация = 1 поставьте. В векторном режиме theta_elec не "формируется", а показывает текущее положение ротора. А не формируется отрицательный ток статора, так как регулятор скорости в минус ограничен нулём
2. Судя по коду, можно, будет работать для нескольких механических оборотов.
С уважением,
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.

Анатолий К.!
Сообщения: 2
Зарегистрирован: 17 фев 2021, 10:07

Re: MotorControlDemo

Сообщение Анатолий К.! » 01 дек 2021, 13:11

Disona писал(а):
30 июл 2020, 11:08
Илья! писал(а):
30 июл 2020, 01:21
В продолжение темы по проекту ПО для контроллера 1921ВК035.
Правильно ли я понимаю, что и программу и данные вы размещаете во внутренней флэш памяти программ, откуда они загружаются во внутреннее ОЗУ память программ или программа выполняется из флэш? А во внешней флэш памяти данных храните отредактированные значения параметров, которые потом при загрузке программы и данных из флэщ ПП присваиваются переменным? А дефолтные значения переменных из кудэдита хранятся во внутренней флэш памяти программ?

Если это так, то подскажите пожалуйста как отключить возможность сохранения параметров в драйвере CANOpen, для того, чтобы работать без внешнего чипа флэщ памяти.
И еще, подскажите пожалуйста, как оценить объем занимаемой памяти проектом, чтобы понять впишется ли разработанное ПО в 64 кБ? В файле Debug/*.map есть строчки .debug_frame .... - это оно?

Благодарю.
Здравствуйте.
Если я правильно понял, вы говорите про проект MotorControlDemo для 035.
Вы всё описали верно:
1. Программа хранится во внутренней Flash, и оттуда же выполняется, так как ОЗУ очень мало для хранения функций. В принципе есть возможность разместить часть функций в RAM и копировать их туда из Flash, но опыт показывает, что смысла в этом особо нет. Программа из Flash выполняется в большинстве случаем так же быстро, как и из RAM. Это связано с архитектурой микроконтроллера.

2. Значения параметров словаря CANopen "по умолчанию" хранятся во внутренней флеш.
3. Значений параметров словаря, которые пользователь изменил и хочет сохранить, хранятся во внешней памяти.
Логика загрузки этих параметров такая: при инициализации, драйвер CANopen считывает значения из внешней памяти. Помимо самих значений хранится ещё и контрольная сумма. Если количество требуемых для словаря значений и их контрольная сумма сходятся, то драйвер записывает в параметры эти загруженные значения. Если нет - либо изменился словарь и количество параметров в словаре теперь не такое, как в памяти, или память пуста и не сходится контрольная сумма - драйвер загружает значения по умолчанию из внутренней Flash.

4. Если вы хотите работать без внешней памяти, то нужно в файле "SM_NET.c" найти в функции "SM_NET_Init" строки для инициализации CANopen драйвера и присвоить переменной " co1_vars.settings.LoadParamsFromUserMemory_ena" значение "0". Тогда значения параметров всегда будут загружаться "по-умолчанию".

Вы также можете подчистить всё, что связано с модулем "UserMemory", если у вас сильно не достаёт памяти под ваш проект. Это файл для работы с I2C памятью на плате MotorControlBoard035. Но на внешнюю память ещё кое-что завязано, например ведение логов аварий. Если у вас внешней памяти нет, то и смысла в этом модуле тоже нет, но придётся повозиться, чтобы аккуратно всё подчистить. Возможно проще будет просто закомментировать содержимое некоторых функций.

5. Что касается размера программы, то он печатается в консоли после окончания сборки:
Развернуть

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

Invoking: GNU ARM Cross Print Size
arm-none-eabi-size --format=berkeley "K1921VK035_MCD.elf"
   text	   data	    bss	    dec	    hex	filename
  56008	   9304	   1832	  67144	  10648	K1921VK035_MCD.elf
Finished building: K1921VK035_MCD.siz
Нужно сложить значения для секций .text и .data - получите размер вашего проекта. Bss, если я правильно помню, во Flash памяти не занимает, но лучше это проверить. Вот в примере под спойлером во flash занято 56008 + 9304 = 65312 байт, или 0xFF20.
Здравствуйте.
Тоже в проекте на 035-ом нет памяти. Почистил как было предложено.
Теперь в Unicon не подгружаются значения по умолчанию.
Что я мог сломать? и может кто-то проверял такой вариант работы? Поделитесь пожалуйста подробностями если работает.
Вложения
2.jpg
2.jpg (173.68 КБ) 10953 просмотра
1.jpg
1.jpg (192.79 КБ) 10953 просмотра

Аватара пользователя
Лашкевич Максим
Сообщения: 342
Зарегистрирован: 30 дек 2015, 10:38

Re: MotorControlDemo

Сообщение Лашкевич Максим » 01 дек 2021, 13:33

Да, совет co1_vars.settings.LoadParamsFromUserMemory_ena=0, наверное, неправильный. Мы посмотрели драйвер, он делает так - если co1_vars.settings.LoadParamsFromUserMemory_ena=0, то он не пытается восстановить никакие параметры, ни из памяти, ни дефолты. Если co1_vars.settings.LoadParamsFromUserMemory_ena=1, то драйвер читает данные из памяти через функцию co_UserMemoryRead, проверяет контрольную сумму, и, если она не сошлась, то загружает дефолты. Поэтому пока совет такой - включите
co1_vars.settings.LoadParamsFromUserMemory_ena=1
а функции co_UserMemoryRead/Write оставьте пустыми. У драйвера не сойдётся контрольная сумма и он загрузит дефолты.

Мы подумали, что это выглядит как костыль, и в скором времени переделаем драйвер так, чтобы он грузил дефолты даже если co1_vars.settings.LoadParamsFromUserMemory_ena=0. Думаю, это более ожидаемое поведение.

Кроме того, по поводу оптимизации памяти. Мой коллега занимался минимизацией проекта MotorControlDemo для 035 и скоро его запушит. Он гораздо меньше места стал занимать. Самое эффективное оказалось заменять инициализацию регистров проца побитово на инициализацию регистра целиком - так для хранения констант меньше места надо.
С уважением,
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.

Аватара пользователя
Disona
Сообщения: 92
Зарегистрирован: 28 ноя 2015, 22:03
Откуда: Москва

Re: MotorControlDemo

Сообщение Disona » 01 дек 2021, 18:30

Анатолий К.! писал(а):
01 дек 2021, 13:11

Здравствуйте.
Тоже в проекте на 035-ом нет памяти. Почистил как было предложено.
Теперь в Unicon не подгружаются значения по умолчанию.
Что я мог сломать? и может кто-то проверял такой вариант работы? Поделитесь пожалуйста подробностями если работает.
Добрый вечер.
Мы обновили проект "MotorControlDemo_035" на BitBucket.
Там много разных изменений, в том числе обновлена и библиотека CANopen.
Теперь при отключении восстановления параметров из EEPROM будут восстановлены параметры по-дефолту из словаря.
Кроме того некоторые модули немного оптимизированы по размеру - можете посмотреть, вдруг какие-то изменения пригодятся и вам.

Также можно взять архив с отдельными файлами библиотеки CANopen из раздела "Downloads" проекта под K1921ВК01Т - эти библиотеки подходят и для 035 микроконтроллера. Вам в таком случае потребуется библиотека для CAN1.
С уважением,
Дмитрий Шпак
Telegram: +79773608997
shpak@motorcontrol.ru
Инженер-программист ООО "НПФ Вектор", Москва.

Георгий!
Сообщения: 11
Зарегистрирован: 07 сен 2021, 16:07

Re: MotorControlDemo

Сообщение Георгий! » 02 дек 2021, 15:35

Добрый день!
После настройки регуляторов тока и скорости включил рекуперацию. В режиме векторного управления двигатель работает стабильно на низких и высоких оборотах, однако при изменении скорости вращения во время работы с 2000 об до -2000 об пробивает конденсаторы! Работал с собственным двигателем на 6А при 16В(энкодер инкрементальный ИДМ 20), при выставленной защите на 9А(АЦП отлажен).
Возможно ли программно улучшить защиту или для своего двигателя следует дорабатывать уже саму плату?

Аватара пользователя
Лашкевич Максим
Сообщения: 342
Зарегистрирован: 30 дек 2015, 10:38

Re: MotorControlDemo

Сообщение Лашкевич Максим » 02 дек 2021, 15:40

Добрый день. Какое у вас железо? Что значит пробивает? В софте motorcontroldemo штатно есть защита по превышению напряжения ЗПТ.
Проверьте, что напряжение ЗПТ измеряется верно в
АЦП.Напряжение ЗПТ
Проверьте уровень защиты в
Защиты.Ud_max
А также проверьте, что уровень защиты не выше предела измерения АЦП (параметр АЦП.Коэффициент напряжения ЗПТ).
С уважением,
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.

Георгий!
Сообщения: 11
Зарегистрирован: 07 сен 2021, 16:07

Re: MotorControlDemo

Сообщение Георгий! » 03 дек 2021, 14:53

Добрый день, использую источник питания Mastech HY5030E(стабилизация напряжения на 16В при токе до 30 А), двигатель ДБМ50 (разработка нашего предприятия, работал на 16В). Коэффициенты на АЦП корректно настроены, ровно как и модуль защит. При задании обратного направления вращения при скоростях порядка 2300 об на - 2000 об у меня пробило конденсатор сперва на 330мкФ(получил КЗ, на клеммах входного питания было 2.5 В при токе 0.03 А), заменил на схожий (у пробитого сопротивление было всего порядка 400КОМ). Потом история повторилась при схожих условиях(ток понизил до 5А), теперь уже пробило большой конденсатор на 1000мкФ.

Аватара пользователя
Лашкевич Максим
Сообщения: 342
Зарегистрирован: 30 дек 2015, 10:38

Re: MotorControlDemo

Сообщение Лашкевич Максим » 03 дек 2021, 14:58

Мало данных. На какое напряжение настроен модуль защит? Сработала ли защита? На какое напряжение конденсаторы? Какая силовая часть? Есть ли осциллограммы процесса из юникона? ЗПТ, частота вращения, ток. Хотя бы из непрерывного режима осциллографа
С уважением,
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.

Ответить