Создать контроллер pid на ni myrio - программное обеспечение

Создать контроллер pid на ni myrio - программное обеспечение
Создать контроллер pid на ni myrio - программное обеспечение
Anonim

Создайте ПИД-контроллер на NI myRIO-Software

Узнайте о программной стороне этого проекта PID-контроллера, используя LabVIEW и NI myRIO.

Связанная информация

  • Введение в системы управления: проектирование ПИД-регулятора с помощью инструмента SISO MATLAB
  • Встроенный контроль температуры ПИД-регулятора, часть 5: Регулировка усиления
  • Встроенный контроль температуры ПИД-регулятора, часть 6: настройка Ziegler-Nichols Tuning

В этой серии мы обсудим, как реализовать простой ПИД-контроллер с использованием LabVIEW и хобби-серводвигателя постоянного тока. Мы настраиваем сервопривод, удаляя его внутренний контроллер и заменяя его интерфейсом myRIO.

Это вторая статья, в которой мы основываемся на нашем специализированном сервомоторе и сосредоточены исключительно на программировании ПИД-контроллера. Вам нужно будет следовать первой части серии, в которой обсуждается аппаратное обеспечение проекта, для реализации описанных ниже действий.

LabVIEW

LabVIEW - это графический язык программирования, разработанный National Instruments. Одним из самых больших преимуществ языка является обширный набор наборов инструментов, модулей и библиотек, доступных для него. Используя их, вы можете быстро разработать наиболее сложные приложения для множества инженерных и исследовательских проектов.

Этот эксперимент не является исключением. Вместо того, чтобы писать PID-контроллер полностью с нуля, мы будем полностью контролировать NI LabVIEW PID и Fuzzy Logic Toolkit. Используя обычный «PID. VI», который поставляется с программным пакетом, мы сможем решить нашу задачу в обход исходного сервоконтроллера гораздо быстрее.

Этот учебник не предназначен для изучения теоретических деталей PID. Вместо этого он покажет вам, как реализовать простой ПИД-регулятор.

Требования

Чтобы следовать, вы должны иметь следующие доступные и / или установленные:

  • Встроенное аппаратное устройство NI myRIO
  • NI myRIO Расширительный порт (MXP) Protoboard Accessory (поставляется с предварительно упакованным myRIO)
  • Настроенный сервомотор, который должен быть подключен к аксессуару Protoboard
  • NI LabVIEW
  • NI LabVIEW PID и Инструментарий Fuzzy Logic

В этом уроке я использую NI LabVIEW версии 2014 для программирования устройства NI myRIO с помощью NI LabVIEW PID и Fuzzy Logic Toolkit. Если вы все еще студент, вы должны иметь возможность приобрести все программное обеспечение и соответствующие лицензии в своем университете.

Сервоконтроль-теория против практики

Ранее мы объясняли, как контролируется сервопривод, и как мы обходим внутренний контроллер устройства для управления скоростью вместо положения. Мы сказали, что эти устройства принимают сигналы широтно-импульсной модуляции (PWM) (рис. 1) и следуют стандартным канальным протоколам хобби.

Image
Image
Рисунок 1: Простой сервоконтроль через PWM

В соответствии с этим стандартным протоколом обычный сервопривод переместится в крайнее левое положение с длительностью импульса (T ON) 1000 мкс и самым правым при 2000 мкс, оставаясь посередине на 1500 мкс (таблица 1).

Image
Image
Таблица 1: Стандартное поведение сервопривода

При настройке он должен двигаться быстрее всего на 1000 мкс, вправо на 2000 мкс и оставаться неподвижным при 1500 мкс (таблица 2). Обратите внимание, что эти предположения предполагают частоту обновления 50 Гц.

Image
Image
Таблица 2: поведение сервопривода после настройки

Тем не менее, на практике эти значения могут сильно отличаться, особенно с бюджетными сервомоторами, такими как тот, который мы используем в этом учебнике.

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

Программного обеспечения

Создание проекта LabVIEW

Сначала создадим проект LabVIEW. Запустите LabVIEW и на всплывающем экране выберите «Создать проект» (в качестве альтернативы вы можете перейти в Файл >> Создать проект).

В новом всплывающем окне выберите «myRIO Project» и нажмите «Далее».

Image
Image
Рисунок 2: Создание проекта myRIO - шаг 1

Затем дайте проекту название. Я назвал мой просто «ПИД».

Наконец, убедитесь, что myRIO подключен и найден, после чего вы можете нажать «Готово».

Image
Image
Рисунок 3: Создание проекта myRIO - шаг 2

Создать новый VI

Затем создайте новый VI, называемый «PID Controller. VI» под мишенью myRIO, как показано на рисунке 4. Вы можете игнорировать или даже удалять «Main. VI» -it, созданный по умолчанию в качестве примера для каждого проекта myRIO, созданного в этот шаблон.

Image
Image
Рисунок 4: Создание нового VI на myRIO

Откройте новый ВП и переключитесь в окно «Блок-диаграмма». Создайте цикл while с соответствующей кнопкой остановки. Здесь мы поместим весь наш код, который должен выполняться непрерывно.

Image
Image
Рисунок 5: Цикл с кнопкой останова

Затем, используя Quick Drop (CTRL + Space) или выбрав функцию из палитры функций myRIO, добавьте «Analog Input» express VI, как показано на рисунке 6.

Во всплывающем окне конфигурации убедитесь, что выбранный канал «A / AI0 (Pin 3)» и присвоить каналу имя. Я назвал его «Feedback», потому что, используя этот функциональный блок, мы будем считывать в наших позициях значения из внутреннего сервоусилителя.

Затем нажмите «ОК» и поместите экспресс-VI в цикл while.

Image
Image
Рисунок 6: Добавление функций аналогового ввода

Аналогично, давайте создадим выход PWM, чтобы мы могли контролировать скорость сервопривода. Опять же, используя Quick Drop или палитру функций, добавьте экспресс-VI, называемый «PWM» (рис. 7).

Для вашего канала выберите «A / PWM0 (контакт 27)». Установите частоту 50 Гц (с помощью опции «Установить постоянную настройку») и выберите «Установить с помощью ввода в экспресс-VI» в разделе «Рабочий цикл».

Image
Image
Рисунок 7: Добавление функций PWM

Затем нажмите «ОК» и поместите блок в цикл while. У вас должен быть макет, аналогичный показанному на рисунке 8.

Image
Image
Рисунок 8: Добавление функции аналогового ввода и широтно-импульсной модуляции (PWM) в цикл while

Определение положения центра сервопривода

Затем мы будем стремиться определить центральное положение сервопривода. Для этого создайте элемент управления для входа «рабочий цикл».

Вы также можете создать индикатор «Обратная связь», чтобы вы могли узнать, какое значение имеет потенциометр (он будет находиться в диапазоне от 0 до 5, но, как мы увидим ниже, просто преобразовать эти значения в другой диапазон). Мы также добавим некоторое время с функцией «Подождите». Блок-схема показана на рисунке 9; функция Wait отображается как наручные часы, а постоянная 10, прикрепленная к ней, означает, что у нас 10 мс задержки.

Image
Image
Рисунок 9: Добавление элементов управления, индикаторов и времени

Теоретически, наш рабочий цикл будет варьироваться между шириной импульса 1 мс и 2 мс, причем 1, 5 мс является значением, которое останавливает серво (нулевую скорость). Наш 50 Гц-сигнал имеет период 20 мс, поэтому эти длительности импульса соответствуют рабочим циклам 0, 05, 0, 10 и 0, 075.

На практике фактическая ширина импульса, которая производит нулевую скорость, может изменяться от теоретического значения. Чтобы найти фактическое значение, запустите ВП с рабочим циклом, установленным на 0.075, а затем отрегулируйте его, пока сервопривод не вращается. В моем случае фактическое значение было 0, 058 (рисунок 10).

Image
Image
Рисунок 10: Передняя панель кода центра поиска (передняя панель)

Добавление произвольных смещений

Затем мы добавим произвольные смещения скорости к этому центральному значению.

Я выбрал смещение 0, 012. Это означает, что максимальная угловая скорость по часовой стрелке соответствует рабочему циклу 0, 046 (0, 058-0, 012), а также максимальная угловая скорость в направлении против часовой стрелки соответствует 0, 070 (0, 058 + 0, 012). Эти сопоставления показаны в таблице 3.

Image
Image
Таблица 3: Отображения скорости

Любые промежуточные значения представляют собой долю максимальной угловой скорости в заданном направлении. Например, для вращения против часовой стрелки на половине максимальной скорости контроллер должен установить рабочий цикл на 0, 058 + (0, 012 / 2) = 0, 064.

Реализация ПИД-регулятора

Как только мы определяем среднее положение, мы можем, наконец, реализовать ПИД-регулятор. Используя Quick Drop или палитру функций, добавьте «PID.vi» из набора инструментов LabVIEW PID и Fuzzy Logic.

Создать элемент управления для ввода заданного значения; уставка - это значение (в этой системе - скорость вращения), которое мы хотим получить.

Мы также можем создать элемент управления для усиления PID и диапазона вывода (оставьте это без изменений на данный момент).

Теперь у вас должен быть ВИ, аналогичный показанному на рисунке 11.

Image
Image
Рисунок 11: Добавление ПИД-регулирования

Мы должны обеспечить, чтобы наши заданные значения, выходные данные и обратная связь менялись в пределах соответствующего диапазона значений.

Наш диапазон выходного сигнала варьируется от -100 до 100 (рисунок 11), поэтому применим этот же диапазон к обратной связи. Обратная связь первоначально находится в диапазоне от 0 до 5, и поэтому нам нужно масштабировать эти значения (таблица 4).

Image
Image
Таблица 4: Таблица сопоставления отзывов; 0 должен отображаться на -100 и от 5 до 100

Масштабирование выполняется путем применения наклона (обозначается буквой A) и смещения (обозначенного буквой B) значениям обратной связи. Мы можем найти требуемый наклон и смещение, решая следующие два одновременных уравнения:

Image
Image
Рисунок 12: Решение для наклона (A) и смещения (B), необходимого для масштабирования значений обратной связи в диапазоне от -100 до 100

Масштабирование обратной связи и вывода

На следующем рисунке показано, как мы включаем наклон и смещение в ВП.

Image
Image
Рисунок 13: Масштабирование значений обратной связи

Мы также должны масштабировать выход, который варьируется от -100 до 100, в соответствии с нашими ранее определенными значениями рабочего цикла:

Image
Image
Таблица 5: Таблица отображения выходного (рабочего цикла)
Image
Image
Рисунок 14: Решение для наклона (A) и смещения (B), необходимого для масштабирования выходных значений в диапазоне от 0, 046 до 0, 070

На следующем рисунке показано, как мы включаем масштабирование вывода в ВП.

Image
Image
Рисунок 15: Заключительный VI для этого проекта

Резюме

Если вы пошаговали шаг за шагом, то вы успешно внедрили ПИД-регулятор для сервопривода, минуя исходную схему сервоуправления.

Если теперь вы переключаетесь на переднюю панель своего ВП, вы можете самостоятельно настроить все три коэффициента усиления ПИД и управлять сервоприводом с помощью элемента управления «Уставка». Изменение коэффициента усиления позволяет вам настраивать ПИД-регулятор и тем самым улучшать производительность сервопривода.

Также обратите внимание, что я изменил интерфейс на слайдер, как показано на рисунке 16 ниже, чтобы иметь более естественный способ перемещения сервопривода.

Image
Image
Рисунок 16: Передняя панель заключительного VI для этого проекта

Вы также можете сделать это, щелкнув правой кнопкой мыши на цифровом элементе управления и выбрав «Заменить >> Числовой >> Горизонтальный указатель слайда».

Поздравляем с внедрением ПИД-контроллера с использованием LabVIEW и NI myRIO!