Перейти к содержанию
    

Что такое ПИД.Расшифровку я знаю но принцип этой системы.И в формулах коэффициенты откуда берутся с фонаря?На пальцах и на примере можно объяснить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть куча разных методик подбора коэффициентов, от экспериментально-фонарных до расчетов по подробным характеристикам системы.

На пальцах - есть управляемый объект, регулятор и воздействие. Регулятор измеряет состояние объекта, например, температуру паяльника, сравнивает с требуемой, выдает воздействие (мощность нагрева) в зависимости от

П - величины отклонения,

И - постоянного недорегулирования или перерегулирования, за счет накопления интеграла отклонения,

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

37 minutes ago, dimir said:

На пальцах и на примере можно объяснить?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, dimir сказал:

На пальцах и на примере можно объяснить?

Поиск по форуму заклинил ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

но принцип этой системы.И в формулах коэффициенты откуда берутся с фонаря?На пальцах и на примере можно объяснить?
На пальцах приличнее среднего получается только комбинация из трёх пальцев.
По сему, порекомендую книжицу: Стюарт Болл "Аналоговые интерфейсы микроконтроллеров" 2007. Гл 5 и конкретно параграфы 5.7 - 5.12

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 hours ago, Obam said:

По сему, порекомендую книжицу: Стюарт Болл "Аналоговые интерфейсы микроконтроллеров" 2007. Гл 5 и конкретно параграфы 5.7 - 5.1

Посылать ivan dimir читать книгу, пусть даже с точным указанием параграфов, это равносильно отправке его в пешее эротическое путешествие с явным указанием точек на маршруте. После такого посыла, обычно, со стороны ivan dimir начинается вежливое вопрошание, переходящее в рычание "Формулу скажи, ...!"

Изменено пользователем tonyk_av

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Формулу? 🙂  \(E = mc^2\)

За много лет в инете на тему ПИД написано очень много всякой разной инфы, в том числе и на пальцах. Порыться, почитать, ну и попробовать, покрутить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Цитата

Что такое ПИД.Расшифровку я знаю но принцип этой системы.И в формулах коэффициенты откуда берутся с фонаря?На пальцах и на примере можно объяснить?

Цитата

 

ChatGPT, [26.03.2024 9:30]
ПИД (PID) - это аббревиатура, которая означает пропорционально-интегрально-дифференциальный регулятор. Это один из наиболее распространенных методов автоматического управления и регулирования процессов в различных промышленных, технических и робототехнических системах.

Принцип работы ПИД-регулятора можно объяснить следующим образом:

1. Пропорциональная составляющая (P) - определяет, как быстро реагировать на разницу между текущим значением и требуемым значением (уставкой). Если уставка не достигнута, пропорциональная составляющая задает управляющий сигнал пропорционально ошибке.

2. Интегральная составляющая (I) - аккумулирует ошибку с течением времени и генерирует управляющий сигнал, который пропорционален накопленной ошибке. Это помогает устранять постоянные ошибки и обеспечивать более точное управление.

3. Дифференциальная составляющая (D) - представляет скорость изменения ошибки со временем. Она помогает предотвращать дальнейшее увеличение ошибки за счет предотвращения больших колебаний в системе.

Коэффициенты ПИД-регулятора (Kp, Ki, Kd) настраиваются экспериментально, математически или с помощью методов автоматического подбора, чтобы оптимизировать производительность и устойчивость регулируемой системы.

На простом примере: представим, что вы регулируете температуру духовки. P-часть регулятора будет увеличивать мощность поджигающего элемента пропорционально разнице между текущей температурой и уставкой. I-часть будет учитывать, сколько времени температура отклоняется от желаемой, а D-часть предотвратит резкое изменение мощности и перегрев.

Надеюсь, это поможет проиллюстрировать принцип работы ПИД-регулятора на примере управления температурой.

 

Цитата

juvf, [26.03.2024 9:31]
а можно на примере

Цитата

 

ChatGPT, [26.03.2024 9:31]
Конечно, давайте рассмотрим пример работы ПИД-регулятора на управлении положением робота-маятника. Представьте, что у вас есть робот-маятник, и вы хотите управлять его положением таким образом, чтобы он стоял вертикально.

1. Пропорциональная (P) составляющая: Если ваши данные показывают, что маятник немного отклонился влево, пропорциональная составляющая управления заставит мотор повернуть колеса вправо силой, пропорциональной величине отклонения.

2. Интегральная (I) составляющая: Если маятник остается немного отклоненным в одну сторону в течение длительного времени, интегральная составляющая начнет корректировать эту ошибку, накапливая корректирующий сигнал.

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

Таким образом, сочетая эти три компоненты (P, I, D) вы получаете ПИД-регулятор, который может эффективно управлять положением маятника, устраняя ошибки и обеспечивая стабильную и точную реакцию на отклонения.

Надеюсь, этот пример помогает наглядно проиллюстрировать принцип работы ПИД-регулятора на примере управления положением робота-маятника.

 

Цитата

juvf, [26.03.2024 9:32]
а с конкретными цифрами?

Цитата

 

ChatGPT, [26.03.2024 9:32]
Давайте рассмотрим конкретный пример управления температурой в отопительной системе с использованием ПИД-регулятора.

Предположим, у вас есть отопительный котел, который поддерживает температуру в помещении. Допустим, текущая температура в помещении составляет 20°C, а требуемая уставка (желаемая температура) равняется 25°C. Вы хотите использовать ПИД-регулятор для управления количеством топлива, подаваемого в котел, чтобы поддерживать температуру на уровне 25°C.

1. Пропорциональный коэффициент (Kp): Пусть Kp = 1. Это значит, что каждое отклонение на 1 градус будет управляться добавлением или уменьшением мощности на 1 единицу.

2. Интегральный коэффициент (Ki): Пусть Ki = 0.01. Это позволяет накапливать коррекцию, если отклонение сохраняется длительное время.

3. Дифференциальный коэффициент (Kd): Пусть Kd = 0.1. Это позволяет предотвращать резкие колебания в мощности подачи топлива.

Допустим, при первом запуске вашего ПИД-регулятора отопление выключено. Ошибка температуры (отклонение от уставки) равняется 5°C.

P-часть: управление = Kp  error = 1  5 = 5 единиц мощности.
I-часть: накопленная ошибка = Ki  error = 0.01  5 = 0.05 единиц.
D-часть: предотвращает резкие изменения в мощности.

ПИД-регулятор будет рассчитывать управляющий сигнал на основе комбинации этих трех компонент. Потом он будет адаптировать мощность подачи топлива в котел в зависимости от изменения температуры помещения и обеспечивать поддержание уставки на уровне 25°C.

 

в телеге бот. попробуйте. всего 2 минуты и картина маслом. бомбите его уточняющими вопросами. вполне годные ответы дает. https://t.me/gpturbo_bot

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ps

Цитата

juvf, [26.03.2024 9:42]
а как реализовать этот пример на с++?

Цитата

 

ChatGPT, [26.03.2024 9:42]
Для реализации ПИД-регулятора на C++ вам потребуется определить класс или функцию, которая будет выполнять расчет управляющего сигнала в соответствии с принципами ПИД-регулирования. Ниже представлен простой пример кода на C++, демонстрирующий реализацию ПИД-регулятора для управления температурой:

#include <iostream>

class PIDController {
private:
    double Kp, Ki, Kd;
    double prevError, integral;

public:
    PIDController(double Kp, double Ki, double Kd) : Kp(Kp), Ki(Ki), Kd(Kd), prevError(0), integral(0) {}

    double computeControlSignal(double setpoint, double currentTemperature) {
        double error = setpoint - currentTemperature;
        integral += error;
        double derivative = error - prevError;
        double controlSignal = Kp * error + Ki * integral + Kd * derivative;

        prevError = error;
        return controlSignal;
    }
};

int main() {
    PIDController pidController(1, 0.01, 0.1); // Задание коэффициентов ПИД-регулятора

    double setpoint = 25; // Уставка температуры
    double currentTemperature = 20; // Текущая температура

    double controlSignal = pidController.computeControlSignal(setpoint, currentTemperature);

    std::cout << "Управляющий сигнал: " << controlSignal << std::endl;

    return 0;
}


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

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

 

Цитата

juvf, [26.03.2024 9:48]
а в цикле while?

Цитата

 

ChatGPT, [26.03.2024 9:48]
Да, естественно, для организации циклического управления регулятором PID в реальном времени, вы можете встраивать вычисление управляющего сигнала в цикл while. Ниже приведен пример реализации ПИД-регулятора в цикле while на C++:

#include <iostream>

class PIDController {
private:
    double Kp, Ki, Kd;
    double prevError, integral;

public:
    PIDController(double Kp, double Ki, double Kd) : Kp(Kp), Ki(Ki), Kd(Kd), prevError(0), integral(0) {}

    double computeControlSignal(double setpoint, double currentTemperature) {
        double error = setpoint - currentTemperature;
        integral += error;
        double derivative = error - prevError;
        double controlSignal = Kp * error + Ki * integral + Kd * derivative;

        prevError = error;
        return controlSignal;
    }
};

int main() {
    PIDController pidController(1, 0.01, 0.1); // Задание коэффициентов ПИД-регулятора

    double setpoint = 25; // Уставка температуры
    double currentTemperature = 20; // Текущая температура

    while (true) {
        double controlSignal = pidController.computeControlSignal(setpoint, currentTemperature);

        // Применение управляющего сигнала к системе (например, коэффициенту подачи топлива)
        // Здесь можно добавить логику обновления текущей температуры системы и дополнительные условия

        std::cout << "Управляющий сигнал: " << controlSignal << std::endl;

        // Задержка или ожидание для следующей итерации цикла
    }

    return 0;
}


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

 

Ваш вердикт, уважаемые гуру. На сколько качественный код? Можно для старта/шаблона использовать подобный код/чат/бот?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

44 minutes ago, juvf said:

Можно для старта/шаблона использовать подобный код/чат/бот?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, juvf said:

Ваш вердикт, уважаемые гуру.

Как раз сегодня попался на глаза код ПИД-регулятора импульсного источника измерительного тока, написанный в 2015 году. Без всяких GPT-чатов)))) Но принцип действия очень похож. Сложнее оказалось подобрать коэффициенты методом Зиглера-Никольса. Да, я знал о существовании других методик, позволяющих найти более оптимальные их величины. Но ещё больше проблем выяснилось при испытаниях ИТ. Он упорно требовал для себя двух наборов настроек при различных нагрузках. Например, при нагрузке от 0 до 10 мОм набор коэффициентов был один, а от 10 мОм и до 1 Ом - другим. Но это было вполне приемлемо, так и работает успешно выпускаемый прибор до сих пор.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, haker_fox сказал:

Он упорно требовал для себя двух наборов настроек при различных нагрузках.

Это называется адаптивный регулятор🙂

На самом деле любой регулятор, в котором есть хотя бы строчки ограничения выходного сигнала, уже, по факту, "не классический" ПИД, а с прибамбасами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...