MotorControlDemo

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

Re: MotorControlDemo

Сообщение Лашкевич Максим » 24 апр 2019, 22:06

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

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

Re: MotorControlDemo

Сообщение Константин! » 08 июл 2019, 17:13

Добрый день!

Объясните, пожалуйста, как в ПО 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

Сообщение Лашкевич Максим » 09 июл 2019, 16:13

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

Анатолий!
Сообщения: 4
Зарегистрирован: 11 июн 2019, 10:16

Re: MotorControlDemo

Сообщение Анатолий! » 05 сен 2019, 15:09

Добрый день, Максим.
Вопрос по инициализации и запуску АЦП в проект 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

Сообщение Лашкевич Максим » 05 сен 2019, 15:34

Добрый день. В ТО написано, что EM=8 соответствует "Сигналы от блоков ШИМ3, ШИМ4, ШИМ5 – канал A". Запускается, конечно же, секвенсор. И только секвенсор уже запускает сами каналы АЦП.
Вложения
2019-09-05_15-35-03.png
2019-09-05_15-35-03.png (88.27 КБ) 13387 просмотров
С уважением,
Лашкевич Максим.
skype: maxlashk
Инженер-программист ООО "НПФ Вектор", Москва.

Илья!
Сообщения: 114
Зарегистрирован: 09 ноя 2018, 16:55

Re: MotorControlDemo

Сообщение Илья! » 14 окт 2019, 10:49

Добрый день.
Пытаюсь применить традиционные алгоритмы компенсации мертвого времени (через добавку напряжения задания, через непосредственное воздействие на значения регистров скважности в зависимости от знака тока) к предлагаемой в проекте векторной ШИМ. Ничего хорошего не выходит. Скажите пожалуйста, к этому методу ШИМ применимы какие-либо методы компенсации мертвого времени?
Спасибо.

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

Re: MotorControlDemo

Сообщение Лашкевич Максим » 15 окт 2019, 21:41

Добрый день. Конечно, всё должно работать на всех типах ШИМ. В векторной ШИМ, конечно же, не нужно трогать ту фазу, которая не ШИМит, а прибавлять добавки в остальные.
Учтите, что компенсировать МВ получается хорошо обычно только в следующих случаях:
1. Индуктивность двигателя достаточно большая, а значит пульсация тока не периоде ШИМ мала, а значит при переходе тока через ноль меньше неоднозначности и нелинейности в компенсации.
2. Период расчета системы управления должен быть мал по сравнению с периодом тока первой гармоники, чтобы задержка компенсации МВ в 2 такта расчета была пренебрежимо мала (и сглажена большой индуктивностью двигателя).

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

Илья!
Сообщения: 114
Зарегистрирован: 09 ноя 2018, 16:55

Re: MotorControlDemo

Сообщение Илья! » 16 окт 2019, 10:23

Поясните пожалуйста о какой задержке идет речь : "... чтобы задержка компенсации МВ в 2 такта расчета была пренебрежимо мала..." ?
И еще, индуктивность асинхронных двигателей небольшой мощности лежит в пределах десятых долей Гн. Именно такой порядок индуктивности Вы имеете ввиду, говоря об положительной работе компенсации МВ?

Спасибо.

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

Re: MotorControlDemo

Сообщение Лашкевич Максим » 16 окт 2019, 18:50

Ну, значение тока фазы мы получаем с прошлого такта ШИМ, расчет делаем на текущем, а скорректированные скважности отработаются на следующем. Когда ток меняет знак, в районе пересечения нуля получается пара тактов с компенсацией в обратную сторону (если не пытаться там что-то предсказывать на опережение).

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

Rine
Сообщения: 49
Зарегистрирован: 28 апр 2017, 09:25

Re: MotorControlDemo

Сообщение Rine » 06 дек 2019, 17:42

Добрый день! А почему значение токов фаз мы получаем с предыдущего такта? Ведь можно в текущем такте по прерыванию ацп снять токи

Ответить