MotorControlDemo
MotorControlDemo
Прошу пояснить в части предложенного алгоритма векторной ШИМ
В чем смысл такого искажения? Или что то неправильно настроено?
Формируемое модулем ШИМ напряжение имеет ограничение (как я понял связанное с периодическим присвоением периода k_pwm). В рекомендуемой для изучения диссертации это алгоритм "Векторная ШИМ на базе синусоидальной центрированной ШИМ"?В чем смысл такого искажения? Или что то неправильно настроено?
- Лашкевич Максим
- Сообщения: 342
- Зарегистрирован: 30 дек 2015, 10:38
Re: MotorControlDemo
Добрый день. Там реализован обычный векторный ШИМ, который в диссертации "Разработка систем векторного управления асинхронными приводами на базе специализированных сигнальных микроконтроллеров" описывается начиная со страницы 109 и далее.
Никаких ограничений напряжения у метода нет. Скважности присваиваются периоду чтобы исключить коммутацию одной из стоек инвертора для снижений потерь. Реализуемое напряжение при этом синусоидальное (за исключением искажений мертвого времени). Скважности в этом методе и должны быть такой формы, как у Вас на рисунке.
Никаких ограничений напряжения у метода нет. Скважности присваиваются периоду чтобы исключить коммутацию одной из стоек инвертора для снижений потерь. Реализуемое напряжение при этом синусоидальное (за исключением искажений мертвого времени). Скважности в этом методе и должны быть такой формы, как у Вас на рисунке.
С уважением,
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.
Re: MotorControlDemo
Суть проблемы была в настройках модуля ШИМ, т.к. попробовал перенести код с 1921 на 1986ВЕ91.
Был выбран режим переключение REF, если CNT =CCR;,
и вывод ШИМ через RC фильтр выглядел так:
а надо было 1, если DIR= 0 (счет вверх), CNT<CCR, иначе 0;
0, если DIR= 1 (счет вниз), CNT<CCR, иначе 1; Что интересно с первой настройкой у нас нормально работают привода, но там алгоритм реализации ШИМ от Texas Instruments, где 3 уровня сравнения
Был выбран режим переключение REF, если CNT =CCR;,
и вывод ШИМ через RC фильтр выглядел так:
а надо было 1, если DIR= 0 (счет вверх), CNT<CCR, иначе 0;
0, если DIR= 1 (счет вниз), CNT<CCR, иначе 1; Что интересно с первой настройкой у нас нормально работают привода, но там алгоритм реализации ШИМ от Texas Instruments, где 3 уровня сравнения
Re: MotorControlDemo
Добрый день! Вопрос по проекту motorcontroldemo. Я находил информацию (вроде на сайте и в видео на ютубе), что исходные коды некоторых модулей в нем, в частности CANOpen драйвера и бутлоадера, закрыты. Но в проекте есть и этот драйвер, и нечто похожее на бутлодер. Изменилось ли что нибудь? Полные ли это версии модулей лежат на битбакете в текущей версии? Если нет, то чего из софта не хватает и возможно нужно докупить (у меня есть ваша плата без двигателя и инвертора), чтобы прошивать контроллер удаленно по CAN шине?
С уважением, К. Расули
С уважением, К. Расули
- Лашкевич Максим
- Сообщения: 342
- Зарегистрирован: 30 дек 2015, 10:38
Re: MotorControlDemo
Добрый день. И драйвер CANOpen, и прошивальщик в проекте присутствуют без исходных кодов (в виде библиотек), но они полнофункциональные и пользоваться ими можно и нужно для всех желаемых задач.
С уважением,
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.
-
- Сообщения: 23
- Зарегистрирован: 26 июл 2018, 20:30
Re: MotorControlDemo
Здравствуйте.
Разбирая модуль АЦП проекта MotorControlDemo, наткнулся на некоторое недопонимание в пересчете коэффициентов для перевода измеренных значений АЦП в относительные единицы.
В описании в комментариях указано, что АЦП измеряет в диапазоне от 0 до 65535, т.е. как будто бы АЦП 16-битный, после чего необходимо произвести сдвиг измеренного числа на 8 бит влево (для примера с процентами). Однако для К1921ВК01Т это неверно, т.к. максимальное разрешение его АЦП - 12 бит. Далее, в коде функции AdcDrv_slow_calc производятся описанные манипуляции с перемножением, но в конце каждой операции еще производится дополнительный сдвиг влево: для токов на один бит и для напряжения ЗПТ - на 4 бита. Правильно я понимаю, что в описании была допущена ошибка на счет диапазона от 0 до 65535 и эти дополнительные сдвиги предназначены для ее устранения? Или я что-то упустил?
Разбирая модуль АЦП проекта MotorControlDemo, наткнулся на некоторое недопонимание в пересчете коэффициентов для перевода измеренных значений АЦП в относительные единицы.
В описании в комментариях указано, что АЦП измеряет в диапазоне от 0 до 65535, т.е. как будто бы АЦП 16-битный, после чего необходимо произвести сдвиг измеренного числа на 8 бит влево (для примера с процентами). Однако для К1921ВК01Т это неверно, т.к. максимальное разрешение его АЦП - 12 бит. Далее, в коде функции AdcDrv_slow_calc производятся описанные манипуляции с перемножением, но в конце каждой операции еще производится дополнительный сдвиг влево: для токов на один бит и для напряжения ЗПТ - на 4 бита. Правильно я понимаю, что в описании была допущена ошибка на счет диапазона от 0 до 65535 и эти дополнительные сдвиги предназначены для ее устранения? Или я что-то упустил?
- Лашкевич Максим
- Сообщения: 342
- Зарегистрирован: 30 дек 2015, 10:38
Re: MotorControlDemo
Да, видимо, так и есть, комментарии перекочевали от процессоров тексаса.
С уважением,
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.
-
- Сообщения: 23
- Зарегистрирован: 26 июл 2018, 20:30
Re: MotorControlDemo
Здравствуйте.
Возник еще один вопрос. Для отладки проекта мы планируем использовать поставляемую библиотеку CANOpen вместе с проектом. Судя по исходникам, там задействован отсчет времени с помощью RTC, однако в нашем проекте мы его не используем, и выводы под него вообще не разведены. Можно просто-напросто исключить модуль RTC и его упоминания из логгера событий без ущерба для связи с Unicon? Так-то мы планируем все-равно свой модуль связи писать с контроллером верхнего уровня (исторически сложилось), а Unicon пригодится для отладки.
Возник еще один вопрос. Для отладки проекта мы планируем использовать поставляемую библиотеку CANOpen вместе с проектом. Судя по исходникам, там задействован отсчет времени с помощью RTC, однако в нашем проекте мы его не используем, и выводы под него вообще не разведены. Можно просто-напросто исключить модуль RTC и его упоминания из логгера событий без ущерба для связи с Unicon? Так-то мы планируем все-равно свой модуль связи писать с контроллером верхнего уровня (исторически сложилось), а Unicon пригодится для отладки.
- Лашкевич Максим
- Сообщения: 342
- Зарегистрирован: 30 дек 2015, 10:38
Re: MotorControlDemo
Добрый день. Там часы только для банка аварий используются... Конечно отключайте.
С уважением,
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.
-
- Сообщения: 5
- Зарегистрирован: 04 окт 2018, 10:30
Re: MotorControlDemo
Добрый день!
В проекте MotorControlDemo в модуле АЦП считывание данных осуществляется следующим образом:
Для чего данные сдвигаются на 4 разряда влево для чего нужен "^0x8000"?
В проекте 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;
}