MotorControlDemo
- Лашкевич Максим
- Сообщения: 342
- Зарегистрирован: 30 дек 2015, 10:38
Re: MotorControlDemo
Эти операции делают из однополярного 12-ти разрядного сигнала АЦП разнополярный 16ти разрядный, где за ноль принимается середина диапазона. Это наиболее вычислительно-быстрый "хак".
С уважением,
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.
-
- Сообщения: 5
- Зарегистрирован: 04 окт 2018, 10:30
Re: MotorControlDemo
Добрый день!
Объясните, пожалуйста, как в ПО motorControlDemo получается значение фазного тока adc.Imeas_a в формате 8.24?
Вспомогательный коэффициент усиления тока рассчитывается следующим образом:
p->IaGainNom = _IQ16mpy(p->Imeas_a_gain, drv_params._1_I_nom) << 1;
IaGainNom - число в формате 16.0. Кстати, для чего тут нужен сдвиг на один разряд влево?
Imeas_a = IaGainNom * ((IA_temp + Imeas_a_offset));
IaGainNom - IQ16.0
IA_temp - int16.0
Imeas_a_offset - IQ16.0
Почему Imeas_a интерпретируется как IQ8.24?
Объясните, пожалуйста, как в ПО motorControlDemo получается значение фазного тока adc.Imeas_a в формате 8.24?
Вспомогательный коэффициент усиления тока рассчитывается следующим образом:
p->IaGainNom = _IQ16mpy(p->Imeas_a_gain, drv_params._1_I_nom) << 1;
IaGainNom - число в формате 16.0. Кстати, для чего тут нужен сдвиг на один разряд влево?
Imeas_a = IaGainNom * ((IA_temp + Imeas_a_offset));
IaGainNom - IQ16.0
IA_temp - int16.0
Imeas_a_offset - IQ16.0
Почему Imeas_a интерпретируется как IQ8.24?
- Лашкевич Максим
- Сообщения: 342
- Зарегистрирован: 30 дек 2015, 10:38
Re: MotorControlDemo
Эм... ну там же перед функцией AdcDrv_slow_calc написана цела портянка текста на 2 страницы про это... Проще всего для себя понять как это работает - пройти весь путь преобразования чисел "на листочке" для какого-то фиксированного значения.
С уважением,
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.
Re: MotorControlDemo
Добрый день, Максим.
Вопрос по инициализации и запуску АЦП в проект MotorControlDemo
в Файле V_adc.c
При инициализации АЦП в качестве события запуска секвенсора выбран блок ШИМ 3
NT_ADC->EMUX_bit.EM2 = 8; //запуск производится по команде SocA Блока ШИМ 3 для vector card
При записи в регистр EMUX_bit.EM2 = 8 в качестве источника используется сигнал от блока 2 ШИМ (в соответствии с даташитом стр. 224)
в Файле V_PWM_Module.c написано, что в качестве внешнего сигнала для запуска АЦП используется ШИМ 3
NT_PWM3->ETSEL_bit.SOCAEN = 1; // Разрешить запуск ацп
NT_PWM3->ETSEL_bit.SOCASEL = 1; // Запускать при CTR == 0 (Underflow)
Вопросы
1. Какой ШИМ инициализирует событие запуска секвенсора и запуск АЦП?
2. Что всё же запускается секвенсор или АЦП. (из даташита непонятно).
Вопрос по инициализации и запуску АЦП в проект MotorControlDemo
в Файле V_adc.c
При инициализации АЦП в качестве события запуска секвенсора выбран блок ШИМ 3
NT_ADC->EMUX_bit.EM2 = 8; //запуск производится по команде SocA Блока ШИМ 3 для vector card
При записи в регистр EMUX_bit.EM2 = 8 в качестве источника используется сигнал от блока 2 ШИМ (в соответствии с даташитом стр. 224)
в Файле V_PWM_Module.c написано, что в качестве внешнего сигнала для запуска АЦП используется ШИМ 3
NT_PWM3->ETSEL_bit.SOCAEN = 1; // Разрешить запуск ацп
NT_PWM3->ETSEL_bit.SOCASEL = 1; // Запускать при CTR == 0 (Underflow)
Вопросы
1. Какой ШИМ инициализирует событие запуска секвенсора и запуск АЦП?
2. Что всё же запускается секвенсор или АЦП. (из даташита непонятно).
- Лашкевич Максим
- Сообщения: 342
- Зарегистрирован: 30 дек 2015, 10:38
Re: MotorControlDemo
Добрый день. В ТО написано, что EM=8 соответствует "Сигналы от блоков ШИМ3, ШИМ4, ШИМ5 – канал A". Запускается, конечно же, секвенсор. И только секвенсор уже запускает сами каналы АЦП.
- Вложения
-
- 2019-09-05_15-35-03.png (88.27 КБ) 13417 просмотров
С уважением,
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.
Re: MotorControlDemo
Добрый день.
Пытаюсь применить традиционные алгоритмы компенсации мертвого времени (через добавку напряжения задания, через непосредственное воздействие на значения регистров скважности в зависимости от знака тока) к предлагаемой в проекте векторной ШИМ. Ничего хорошего не выходит. Скажите пожалуйста, к этому методу ШИМ применимы какие-либо методы компенсации мертвого времени?
Спасибо.
Пытаюсь применить традиционные алгоритмы компенсации мертвого времени (через добавку напряжения задания, через непосредственное воздействие на значения регистров скважности в зависимости от знака тока) к предлагаемой в проекте векторной ШИМ. Ничего хорошего не выходит. Скажите пожалуйста, к этому методу ШИМ применимы какие-либо методы компенсации мертвого времени?
Спасибо.
- Лашкевич Максим
- Сообщения: 342
- Зарегистрирован: 30 дек 2015, 10:38
Re: MotorControlDemo
Добрый день. Конечно, всё должно работать на всех типах ШИМ. В векторной ШИМ, конечно же, не нужно трогать ту фазу, которая не ШИМит, а прибавлять добавки в остальные.
Учтите, что компенсировать МВ получается хорошо обычно только в следующих случаях:
1. Индуктивность двигателя достаточно большая, а значит пульсация тока не периоде ШИМ мала, а значит при переходе тока через ноль меньше неоднозначности и нелинейности в компенсации.
2. Период расчета системы управления должен быть мал по сравнению с периодом тока первой гармоники, чтобы задержка компенсации МВ в 2 такта расчета была пренебрежимо мала (и сглажена большой индуктивностью двигателя).
Обычно, под эти два критерия подходит общепромышленный асинхронник небольшой мощности. На других двигателях сделать хорошую компенсацию обычно сложнее.
Учтите, что компенсировать МВ получается хорошо обычно только в следующих случаях:
1. Индуктивность двигателя достаточно большая, а значит пульсация тока не периоде ШИМ мала, а значит при переходе тока через ноль меньше неоднозначности и нелинейности в компенсации.
2. Период расчета системы управления должен быть мал по сравнению с периодом тока первой гармоники, чтобы задержка компенсации МВ в 2 такта расчета была пренебрежимо мала (и сглажена большой индуктивностью двигателя).
Обычно, под эти два критерия подходит общепромышленный асинхронник небольшой мощности. На других двигателях сделать хорошую компенсацию обычно сложнее.
С уважением,
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.
Re: MotorControlDemo
Поясните пожалуйста о какой задержке идет речь : "... чтобы задержка компенсации МВ в 2 такта расчета была пренебрежимо мала..." ?
И еще, индуктивность асинхронных двигателей небольшой мощности лежит в пределах десятых долей Гн. Именно такой порядок индуктивности Вы имеете ввиду, говоря об положительной работе компенсации МВ?
Спасибо.
И еще, индуктивность асинхронных двигателей небольшой мощности лежит в пределах десятых долей Гн. Именно такой порядок индуктивности Вы имеете ввиду, говоря об положительной работе компенсации МВ?
Спасибо.
- Лашкевич Максим
- Сообщения: 342
- Зарегистрирован: 30 дек 2015, 10:38
Re: MotorControlDemo
Ну, значение тока фазы мы получаем с прошлого такта ШИМ, расчет делаем на текущем, а скорректированные скважности отработаются на следующем. Когда ток меняет знак, в районе пересечения нуля получается пара тактов с компенсацией в обратную сторону (если не пытаться там что-то предсказывать на опережение).
Да, там десятые, а то и сотые доли Гн. Это много и это сгладит ошибку компенсации в пару тактов ШИМ 10кГц.
Да, там десятые, а то и сотые доли Гн. Это много и это сгладит ошибку компенсации в пару тактов ШИМ 10кГц.
С уважением,
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.
Re: MotorControlDemo
Добрый день! А почему значение токов фаз мы получаем с предыдущего такта? Ведь можно в текущем такте по прерыванию ацп снять токи