MotorControlDemo

igbo
Сообщения: 4
Зарегистрирован: 07 сен 2017, 11:10

MotorControlDemo

Сообщение igbo » 21 сен 2017, 11:22

Прошу пояснить в части предложенного алгоритма векторной ШИМ
графики.jpg
графики.jpg (248.4 КБ) 22318 просмотров
Формируемое модулем ШИМ напряжение имеет ограничение (как я понял связанное с периодическим присвоением периода k_pwm). В рекомендуемой для изучения диссертации это алгоритм "Векторная ШИМ на базе синусоидальной центрированной ШИМ"?
В чем смысл такого искажения? Или что то неправильно настроено?

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

Re: MotorControlDemo

Сообщение Лашкевич Максим » 21 сен 2017, 12:34

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

igbo
Сообщения: 4
Зарегистрирован: 07 сен 2017, 11:10

Re: MotorControlDemo

Сообщение igbo » 22 сен 2017, 16:03

Суть проблемы была в настройках модуля ШИМ, т.к. попробовал перенести код с 1921 на 1986ВЕ91.
Был выбран режим переключение REF, если CNT =CCR;,
и вывод ШИМ через RC фильтр выглядел так:
TEK0020.JPG
TEK0020.JPG (90.66 КБ) 22290 просмотров

а надо было 1, если DIR= 0 (счет вверх), CNT<CCR, иначе 0;
0, если DIR= 1 (счет вниз), CNT<CCR, иначе 1;
TEK0019.JPG
TEK0019.JPG (87.19 КБ) 22290 просмотров
Что интересно с первой настройкой у нас нормально работают привода, но там алгоритм реализации ШИМ от Texas Instruments, где 3 уровня сравнения

rasulikv
Сообщения: 6
Зарегистрирован: 24 авг 2017, 15:23

Re: MotorControlDemo

Сообщение rasulikv » 29 сен 2017, 17:43

Добрый день! Вопрос по проекту motorcontroldemo. Я находил информацию (вроде на сайте и в видео на ютубе), что исходные коды некоторых модулей в нем, в частности CANOpen драйвера и бутлоадера, закрыты. Но в проекте есть и этот драйвер, и нечто похожее на бутлодер. Изменилось ли что нибудь? Полные ли это версии модулей лежат на битбакете в текущей версии? Если нет, то чего из софта не хватает и возможно нужно докупить (у меня есть ваша плата без двигателя и инвертора), чтобы прошивать контроллер удаленно по CAN шине?
С уважением, К. Расули

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

Re: MotorControlDemo

Сообщение Лашкевич Максим » 02 окт 2017, 12:56

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

sdv_cyborg!
Сообщения: 23
Зарегистрирован: 26 июл 2018, 20:30

Re: MotorControlDemo

Сообщение sdv_cyborg! » 09 авг 2018, 09:49

Здравствуйте.
Разбирая модуль АЦП проекта MotorControlDemo, наткнулся на некоторое недопонимание в пересчете коэффициентов для перевода измеренных значений АЦП в относительные единицы.
В описании в комментариях указано, что АЦП измеряет в диапазоне от 0 до 65535, т.е. как будто бы АЦП 16-битный, после чего необходимо произвести сдвиг измеренного числа на 8 бит влево (для примера с процентами). Однако для К1921ВК01Т это неверно, т.к. максимальное разрешение его АЦП - 12 бит. Далее, в коде функции AdcDrv_slow_calc производятся описанные манипуляции с перемножением, но в конце каждой операции еще производится дополнительный сдвиг влево: для токов на один бит и для напряжения ЗПТ - на 4 бита. Правильно я понимаю, что в описании была допущена ошибка на счет диапазона от 0 до 65535 и эти дополнительные сдвиги предназначены для ее устранения? Или я что-то упустил?

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

Re: MotorControlDemo

Сообщение Лашкевич Максим » 09 авг 2018, 19:53

Да, видимо, так и есть, комментарии перекочевали от процессоров тексаса.
С уважением,
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.

sdv_cyborg!
Сообщения: 23
Зарегистрирован: 26 июл 2018, 20:30

Re: MotorControlDemo

Сообщение sdv_cyborg! » 15 авг 2018, 09:51

Здравствуйте.
Возник еще один вопрос. Для отладки проекта мы планируем использовать поставляемую библиотеку CANOpen вместе с проектом. Судя по исходникам, там задействован отсчет времени с помощью RTC, однако в нашем проекте мы его не используем, и выводы под него вообще не разведены. Можно просто-напросто исключить модуль RTC и его упоминания из логгера событий без ущерба для связи с Unicon? Так-то мы планируем все-равно свой модуль связи писать с контроллером верхнего уровня (исторически сложилось), а Unicon пригодится для отладки.

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

Re: MotorControlDemo

Сообщение Лашкевич Максим » 15 авг 2018, 14:47

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

Константин!
Сообщения: 5
Зарегистрирован: 04 окт 2018, 10:30

Re: MotorControlDemo

Сообщение Константин! » 23 апр 2019, 16:00

Добрый день!

В проекте MotorControlDemo в модуле АЦП считывание данных осуществляется следующим образом:

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

while (NT_ADC->SEQ[3].FSTAT_bit.FLOAD > 0)	//пока фифо не опустеет
{
	p->IBBuf[p->IBPointer] = (int16) ((NT_ADC->SEQ[3].FIFO_bit.DATA) << 4) ^ 0x8000;
	p->IBPointer = (++p->IBPointer) & 3;
}
Для чего данные сдвигаются на 4 разряда влево для чего нужен "^0x8000"?

Ответить