Страница 3 из 7

Re: MotorControlDemo

Добавлено: 06 дек 2019, 18:11
Лашкевич Максим
Потому что снятые на текущем такте токи - это обычно токи с предыдущего такта, так как пока датчики тока измерят ток, пока аналоговый тракт контроллера отработает, пока АЦП, пока программа дойдет до их считывания... Всё условно, конечно.

Re: MotorControlDemo

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

Re: MotorControlDemo

Добавлено: 13 фев 2020, 17:36
Лашкевич Максим
Да, есть такой эффект, связан, насколько я помню, с влиянием мёртвого времени при попытке приложить околонулевое напряжение вдоль одной из осей. Попробуйте сменить тип ШИМ на другой. Также попробуйте поменять частоту ШИМ - попробуйте 10кГц, 15кГц, посмотрите как влияет.

Re: MotorControlDemo

Добавлено: 13 мар 2020, 12:12
Rine
Добрый день проект Motor control demo под контроллер 1921ВК035 выполнен полностью на данном микроконтроллере, без участия внешней памяти? Просто на отладочной плате я обратил внимание на DD2 (24LC256)...

Re: MotorControlDemo

Добавлено: 13 мар 2020, 12:32
Лашкевич Максим
Добрый день, в данном микроконтроллере нет встроенной отдельной флеш памяти для сохранения настроек привода. Поэтому для сохранения стоит внешний чип. Можно отключить возможность сохранения параметров в драйвере CANOpen, тогда внешний чип использоваться не будет.

Re: MotorControlDemo

Добавлено: 13 мар 2020, 12:51
Rine
Спасибо! Тогда алгоритм работы такой, если нет внешней памяти- все настройки, например, регуляторов писать "влоб", ввиде констант внутри приекта?
Просто нет возможности использовать внешнюю память

Re: MotorControlDemo

Добавлено: 13 мар 2020, 13:31
Лашкевич Максим
Для того, чтобы задавать Си-кодом "в лоб", все переменные надо удалить из словаря CANOpen, иначе он загрузить им значения по-умолчанию при инициализации. Поэтому лучше, при сохранении CANOpen, менять дефолты параметрам в COODEdit и перегенерить словарь.

Re: MotorControlDemo

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

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

Благодарю.

Re: MotorControlDemo

Добавлено: 30 июл 2020, 11:08
Disona
Илья! писал(а):
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.

Re: MotorControlDemo

Добавлено: 30 июл 2020, 15:31
Илья!
спасибо за развернутый ответ.
уточните пожалуйста, весь проект Motor Control Demo 035 входит во внутреннюю 64кБ флэш? Или все же вы используете часть внешней памяти для хранения программы?

Благодарю