Н.В. Клиначев, Е.А. Маргацкая

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

Рабочие файлы: [ЦСУ 4 ЛЭМД Модель] [ЦСУ 4 ЛЭМД int32] [ЦСУ 4 ЛЭМД [-1, +1]]
[ЦСУ 4 ЛЭМД Шум] [ЦСУ 4 ЛЭМД Си-код]

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

Какую бы разрядность не имел аналогово-цифровой преобразователь (АЦП) микроконтроллера две простейшие команды (выполняемые за один такт) преобразуют результат измерения к диапазону от -1 до +1. Причин, по которым имело бы смысл привести измеряемую величину к другому диапазону, нет. Поэтому базовые величины – это максимальные измеряемые значения, соответствующие полной шкале АЦП или её половине, если измеряемая величина биполярная. Такое же утверждение справедливо и для выходной периферии – число, принадлежащее диапазону от -1 до +1, элементарным преобразованием (сдвиг и сложение) масштабируется для контроля шкалы цифро-аналогового преобразователя или регистра захвата/сравнения таймера. Напомним, базовые величины используются для приведения параметров регуляторов.

В центре чертежа изображен блок динамически подключаемой библиотеки. Сигналы на его входах и выходах должны принадлежать диапазону от -1 до +1. С сигналами в абсолютных величинах они связаны блоками масштабирования сигналов – это коэффициенты передачи датчиков обратных связей и преобразователя напряжения. Убедитесь в том, что их значения определяют базовые величины в листинге программного кода (см. константы BASE_VOLTAGE, BASE_CURRENT, BASE_POSITION).

Изучите предыдущий документ с примером создания программного кода цифровой системы управления для ЦВМ с целочисленным АЛУ. Сохраните копии листингов кода в два текстовых файла. Сравните файлы инструментом файлового менеджера Total Commander "Сравнение содержимого файлов". Выявите строки кода, которые решают задачу масштабирования уставок и параметров регуляторов с целью приведения обрабатываемых сигналов к относительным величинам.

Двухконтурная система управления ЛЭМД

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

Решите задачу даунгрейда кода (откатки к более ранней версии). Так чтобы программа не поддерживала обработку сигналов в относительных единицах. Установите единичные значения коэффициентов передачи датчиков и преобразователя напряжения на чертеже. Убедитесь в том, что модель сохранила работоспособность.

Вернитесь к предыдущему документу с примером программного кода цифровой системы управления для ЦВМ с целочисленным АЛУ. Попробуйте решить прямую задачу масштабирования уставок и параметров регуляторов с целью приведения обрабатываемых сигналов к относительным величинам. Начните с контура регулирования тока и определения базовой величины BASE_CURRENT.

Примечание. Математическое ядро программы Jigrein4WEB вызывает функцию tune перед первым шагом симуляции. Её необходимо использовать для сброса начальных условий в регистрах задержки. Функцию calcStep математическое ядро может вызывать множество раз на каждом шаге симуляции (в зависимости от типа активированных решателей). Реализованный в ней код не должен обладать эффектом памяти (результат преобразований должен завесить исключительно от входных сигналов). Функция stepEnd вызывается на каждом шаге симуляции только один раз после всех вызовов функции calcStep и предназначена для обновления регистров задержки.

JSLint | JSBeautifier | Emmet coding

18.04.2016