Разобраться с алгоритмом ПИД-регулирования в одной статье (отказаться от формулы и по-настоящему понять ПИД-регулирование из принципа) «Рекомендуемый сборник»
Разобраться с алгоритмом ПИД-регулирования в одной статье (отказаться от формулы и по-настоящему понять ПИД-регулирование из принципа) «Рекомендуемый сборник»

Всем привет, мы снова встретились, я ваш друг Цюаньчжаньцзюнь.

Разберитесь с алгоритмом ПИД-регулирования в одной статье (откажитесь от формулы и по-настоящему поймите ПИД-регулирование в принципе)

ПИД-регулирование следует рассматривать как очень широко используемый алгоритм управления. ПИД-регулятор можно использовать для всего: от контроля температуры компонентов до управления ориентацией и скоростью полета дрона и т. д. Здесь мы понимаем ПИД-регулирование с принципиальной точки зрения. PID(proportion integration дифференциация) на самом деле относится к пропорции,интеграл,Дифференциальное управление. Сначала выложи картинки и формулы,Не имеет значения, если вы не понимаете。(Когда я впервые взглянул на этот алгоритм, я мог понять формулу, и знал, как ее использовать и как писать код, но я просто не знал принципа и не знал, зачем нужно использовать пропорция, дифференциал и интеграл для достижения наилучшего контроля. Почему это не работает? Каковы преимущества использования каждого элемента?

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

алгоритм пропорционального управления

Давайте сначала поговорим о простейшем пропорциональном регулировании в ПИД-регуляторе.,Остальные два оставьте в стороне. Давайте воспользуемся классическим примером. Предположим, у меня есть резервуар для воды,Конечная цель контроля – обеспечить, чтобы уровень воды в резервуаре для воды всегда поддерживался на высоте 1 метр. Предполагая начальное время тестирования,Уровень воды в резервуаре для воды составляет 0,2 метра.,Тогда возникает ошибка между уровнем воды в текущий момент и целевым уровнем воды.,И ошибка на данный момент 0,8.,Предположим, рядом с вами стоит человек,Этот человек контролирует уровень воды, добавляя воду в резервуар. Если вы просто используете алгоритм пропорционального управления означает, что количество добавленной воды прямо пропорционально ошибке ошибки. Прямо сейчас u=kp*error Предположим, что kp равно 0,5, Тогда, когда t=1 (имеется в виду первый раз, когда добавляется вода, то есть первый раз, когда в системе применяется управление), тогда u=0,5*0,8=0,4, поэтому количество воды, добавленной в этот раз, приведет к повышению уровня воды. повыситься на 0,4 из базы 0,2, достигнув 0,6. Тогда в момент времени t=2 (применяется второй контроль времени) текущий уровень воды равен 0,6, поэтому ошибка равна 0,4. u=0,5*0,4=0,2, что приведет к повторному повышению уровня воды на 0,2–0,8. Если цикл продолжается таким образом, это алгоритм пропорционального Как управлять управлением. Как видите, конечный уровень воды достигнет нужного нам 1 метра. Однако пропорциональное управление само по себе имеет некоторые недостатки, одним из которых является – Устойчивая ошибка! (Я тоже много читал и долго думал об этом, прежде чем понял, что такое установившаяся ошибка и почему существует установившаяся ошибка). Как и в приведенном выше примере, в зависимости от значения kp система в конечном итоге достигнет 1 метра, и установившейся ошибки не будет. Однако рассмотрим другую ситуацию. Предположим, что резервуар для воды протекает во время добавления воды. Предположим, что при каждом добавлении воды будет вытекать 0,1 метра воды. Еще предположим, что kp равно 0,5, то возникнет определенная ситуация. Допустим, после нескольких доливов воды, когда уровень воды в резервуаре для воды достигнет 0,8, уровень воды больше не изменится! ! ! Поскольку уровень воды равен 0,8, ошибка = 0,2. Следовательно, количество воды, добавляемой каждый раз в резервуар для воды, равно u=0,5*0,2=0,1. При этом каждый раз из резервуара будет вытекать 0,1 метра воды! ! ! Добавленная и вытекшая вода уравновешиваются, и уровень воды больше не изменится! ! Другими словами, моя цель — 1 метр, но когда система наконец достигает 0,8 метра, уровень воды больше не меняется, и система достигла стабильности. Результирующая ошибка является установившейся ошибкой. (В реальных ситуациях чаще встречается ситуация, аналогичная утечке воды в резервуаре для воды. Например, при управлении движением автомобиля сопротивление трения эквивалентно «утечке воды». При управлении полетом робота рука или дрон, все виды сопротивления и расхода можно понять в данном примере как "утечка воды"). Следовательно, во многих случаях только пропорциональное управление не может удовлетворить этим требованиям.

Интегральный алгоритм управления

Все еще используя приведенный выше пример,Если вы используете только пропорцию,Можно обнаружить, что существует временная ошибка,Конечный уровень воды застрял на отметке 0,8. затем,под контролем,Вводим еще один компонент,Эта составляющая прямо пропорциональна ошибке. так,Пропорция+Интегральный алгоритм управлениядля: u=kp*error+ ki ∗∫ ∗ ∫ *\interror Продолжая использовать приведенный выше пример для иллюстрации, первая ошибка равна 0,8, а вторая ошибка равна 0,4. На этом этапе интеграл ошибки (интеграция в дискретных случаях фактически представляет собой накопление) ∫ ∫ \interror=0.8+0.4=1.2. Управляющей величиной в это время, помимо пропорциональной части, является еще и коэффициент ki, умноженный на интегральный член. Поскольку этот интегральный член будет накапливать предыдущие ошибки, он может эффективно устранить установившуюся ошибку (при условии, что, когда есть только пропорциональный член, система застревает на установившейся ошибке, которая в приведенном выше примере равна 0,8. Поскольку Добавление существования интегрального члена увеличит входные данные, так что уровень воды в резервуаре для воды может превысить 0,8 и постепенно достичь целевого значения 1,0.) В этом роль интегрального члена.

Алгоритм дифференциального управления

В качестве другого примера рассмотрим ситуацию с торможением. Управляйте автомобилем плавно. Когда вы видите впереди красный свет, чтобы ехать плавно, вы просто отпускаете педаль газа и нажимаете на тормоза на десятки метров вперед. Если автомобиль находится очень близко к парковочной линии, резко затормозите, чтобы остановить автомобиль. Весь процесс можно рассматривать как стратегию управления, добавляющую дифференциал. Дифференциал, если говорить прямо, в дискретных случаях — это разница ошибок, то есть разница между ошибкой в ​​момент времени t и в момент t-1, то есть u=kd*(error(t)-error(t-1 )), где kd — коэффициент A. Видно, что во время процесса торможения, поскольку ошибка становится все меньше и меньше, член дифференциального управления должен быть отрицательным числом. Добавление отрицательного числа к управлению предназначено для предотвращения проезда автомобиля из-за отсутствия торможения. время вне линии. Из здравого смысла можно понять, что чем ближе автомобиль к парковочной линии, тем больше внимания следует уделять торможению и недопущению пересечения автомобилем линии. Поэтому функцию этого дифференциального термина можно понимать как торможение. автомобиль находится очень близко к парковочной линии, а скорость по-прежнему очень высока. Когда абсолютное значение этого дифференциального члена (на самом деле отрицательное число) будет очень большим, а это означает, что тормоза следует задействовать сильнее, чтобы остановить автомобиль. . Переходя к приведенному выше примеру добавления воды в резервуар для воды, когда обнаруживается, что уровень воды в резервуаре для воды близок к 1, добавление дифференциального члена может предотвратить добавление воды в резервуар для воды на высоту более 1 метр Грубо говоря, сокращает время в процессе контроля.

Теперь, оглядываясь назад на эту формулу, становится очень ясно:

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

Перед каждым пунктом стоят коэффициенты. Эти коэффициенты нужно попробовать и определить в экспериментах. Для удобства эти коэффициенты унифицированы:

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

Издатель: Лидер стека программистов полного стека, укажите источник для перепечатки: https://javaforall.cn/134794.html Исходная ссылка: https://javaforall.cn

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose