Н.В. Клиначев

Моделирование и отладка программного кода микроконтроллера предназначенного для обработки сигналов редуктосина, резольвера или синусно-косинусного вращающегося трансформатора

Рабочие файлы: [Демодуляция сигналов СКВТ] [Редуктосин Скорость Фильтр]
[IQsin] [ARM Си FOC PMSM СКВТ]

Периодически, в связи с обновлением элементной базы, должна пересматриваться задача обработки сигналов датчиков положения ротора: редуктосина, резольвера или синусно-косинусного вращающегося трансформатора. Сигналы перечисленных датчиков могут быть обработаны либо аналоговой электроникой, либо цифровой. В статье рассматривается последний вариант. На чертеже 1 представлена интерактивная модель, которая позволяет отладить соответствующий программный код (для 32-х разрядного микроконтроллера с целочисленным АЛУ). Отладка выполняется с помощью моделирующей программы Jigrein4WEB (запускаемой в данном документе) и динамически подключаемой к её математическому ядру библиотеки пользователя. Моделирующая программа используется для эмуляции сигналов датчика и визуализации переменных программы на виртуальном осциллографе. Программный код реализует метод следящего преобразования. Можно ознакомиться с блок-схемой, соответствующей данному методу – модель доступна по гиперссылке ниже заголовка данной статьи.

На чертеже отображены: датчик (блок ВТ), программный задатчик угловой скорости в относительных единицах (блок Prog), интегратор угла (1/s) и блок динамически подключаемой библиотеки (dll). Последний имеет четыре входа, на которые поданы: сигнал опорной синусоиды, два ортогональных сигнала с информационных обмоток датчика (синусной и косинусной) и сигнал для канала комбинированного управления (используется для повышения точности). На выходах блока сформированны: сигнал ошибки следящего контура, идентифицированная скорость вала и демодулированный угол поворота. На входах и выходах сигналы представлены в виде потоков цифровых значений с плавающей точкой. Внутри – преобразуются к целому типу данных (к 32-х битным словам) и обрабатываются соответствующими арифметическими операциями. Входные и выходные сигналы приводятся к относительным единицам, поэтому присутствующие в коде ограничения – 15% для ошибки слежения и 140% для максимальной скорости изменения угла – не меняются при адаптации программы к другому датчику.

В изготовлении редуктосин проще и дешевле резольвера, поэтому интерес к нему выше. Но эта информационная машина имеет погрешность в виде ЭДС смещения (которую удобно регистрировать, если вынуть ротор). Обычно её величина не превышает одного или двух процентов. В данном случае, для наглядности, ЭДС смещения меняет амплитуду четных и нечетных огибающих (при вращении ротора с постоянной скоростью) в два раза. Система демодуляции сигнала со следящим контуром ФАПЧ известна своей стойкостью к шумам, поэтому на информационные сигналы датчика для наглядности наложен шум с нормальным распределением и с действующей величиной равной 3%.

Абсолютные величины скорости вала и частоты для возбуждения датчика (4 кГц) – типовые для электропривода. Диапазоны значений, в которых названные координаты могут меняться, на работоспособность программы не влияют. Разработчику необходимо оценить лишь величину ошибки слежения при реверсе привода (когда скорость вращения вала меняется максимально быстро). Возможно, придется понижать коэффициент ошибки по скорости, $c_1$, методом комбинированного управления.

Главная цель отладки программы состоит в контроле отсутствия перегрузки мантиссы 32-х разрядного АЛУ. В типовом случае управляющие программы для электропривода пишутся с применением типов данных _iq24, _iq22 и _iq20. У первого на целую часть числа отводиться 7 бит, у второго – 9, у последнего – 11 (старший бит – знак). Разработчик выбирает частоту дискретизации для следящего контура. Постоянную времени ПИ-регулятора, $T_i$, которая не может быть меньше. Коэффициент пропорционального канала определяется автоматически ($K_p=2/T_i$), и оказывается очень большим. С целью предотвращения перегрузки мантиссы коэффициенты усиления перераспределены между звеньями контура. В качестве примера, в листинге программного кода можно отследить константу (1 << 6).

Чертёж 1

Листинг 1. Программный код dll-блока (javascript)

Выполните серию экспериментов. Постоянную времени ПИ-регулятора следящего контура ФАПЧ (см. листигн программного кода) выбирайте в 4, в 16 и в 64 раза больше периода дискретизации (больше шага симуляции). Уточните, как меняется время захвата сигнала. Убедитесь в том, что с увеличением постоянной времени интегрирующего канала регулятора увеличивается ошибка следящего контура.

Подключите к осциллографу сигнал идентифицированной скорости вала. Повторите серию экспериментов при тех же условиях. Убедитесь в том, что с увеличением постоянной времени интегрирующего канала регулятора увеличивается подавление шума.

Установите постоянную времени ПИ-регулятора следящего контура ФАПЧ в 64 раза больше периода дискретизации. Отключите источники шума в блоке датчика. Запустите вычислительный процесс. Увеличьте осциллограмму ошибки. Убедитесь в том, что ошибка отлична от нуля лишь при изменении скорости вала датчика (малые пульсации во внимание не принимайте, поскольку они вызваны неидеальной формой функций синуса и косинуса, вычисляемых лишь по двум членам полиномиального ряда). Для уменьшения коэффициента ошибки $c_1$ (по ряду Тейлора), воспользуйтесь методом комбинированного управления. Подайте в следящий контур сигнал комбинированного управления (оценку скорости вала двигателя, которую вычисляет цифровая система управления по измеренным токам и напряжению). Убедитесь в том, что следящий контур слал системой, характеризующейся псевдоастатизмом второго порядка. Т.е. ошибка и при постоянном входном воздействии, и при воздействии меняющимся с постоянной скоростью равна нулю.

Верните модель и код программы к исходному состоянию. Выполните серию экспериментов. Меняйте тип данных для кодирования чисел с плавающей точкой (константе GL_Q присваивайте значения 20, 22, 24). Убедитесь в том, что мантисса АЛУ не перегружается и код остается работоспособным.

Ниже заголовка данной статьи доступна ссылка на программный код векторной системы управления для синхронного двигателя. Загрузите документ. В листинге файла mclib.h найдите похожий фрагмент кода. Оба листинга сохраните в двух файлах. Сравните файлы инструментом файлового менеджера Total Commander "Сравнение содержимого файлов".

26.09.2015