1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

ПИД-регулятор

PLC, прочие контроллеры, промышленные компьютеры, операторские панели
Ответить

Автор темы
dabchinskiy
здесь недавно
здесь недавно
Сообщения: 5
Зарегистрирован: 11 июн 2014, 17:24
Имя: Дабчинский И

ПИД-регулятор

Сообщение dabchinskiy »

Для обучения и правктического освоения ПИД порекомендуйте готовый работающий текст программы простого ПИД-регулятора.
Готовая библиотечная функция "черный ящик" не нужна, язык какой придется: C, basic, pascal, LD ...

Регулирование хочу попробовать дискретное, например включение-выключение электронагревателя для поддержания температуры и пропорциональное. Это не одно и то же ?

alex_ugrumov
почётный участник форума
почётный участник форума
Сообщения: 626
Зарегистрирован: 29 сен 2008, 17:05
Имя: Алексей Угрюмов
Страна: Россия
город/регион: СПб
Благодарил (а): 6 раз
Поблагодарили: 22 раза

Re: ПИД-регулятор

Сообщение alex_ugrumov »

http://robot-develop.org/archives/2833 там есть архив с кодом
Alex.

alex_ugrumov
почётный участник форума
почётный участник форума
Сообщения: 626
Зарегистрирован: 29 сен 2008, 17:05
Имя: Алексей Угрюмов
Страна: Россия
город/регион: СПб
Благодарил (а): 6 раз
Поблагодарили: 22 раза

Re: ПИД-регулятор

Сообщение alex_ugrumov »

возможно тут будет понятнее

http://we.easyelectronics.ru/Theory/pid ... tikov.html
Alex.

VaBo
частый гость
частый гость
Сообщения: 441
Зарегистрирован: 21 июл 2013, 19:32
Имя: Вадим
город/регион: Северодвинск
Благодарил (а): 12 раз
Поблагодарили: 38 раз

Re: ПИД-регулятор

Сообщение VaBo »

alex_ugrumov писал(а):возможно тут будет понятнее

http://we.easyelectronics.ru/Theory/pid ... tikov.html
Блин, там автор оперирует отрицательными коэффициентами Td и считает, что 0,1 для Ti - это "начнем по-немногу".

Автор темы
dabchinskiy
здесь недавно
здесь недавно
Сообщения: 5
Зарегистрирован: 11 июн 2014, 17:24
Имя: Дабчинский И

Re: ПИД-регулятор

Сообщение dabchinskiy »

alex_ugrumov писал(а):http://robot-develop.org/archives/2833 там есть архив с кодом
слабоват я в C++ на котором написан пример http://robot-develop.org/archives/2833
кто может просветите пожалуйста:
Вопросы.jpg
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Автор темы
dabchinskiy
здесь недавно
здесь недавно
Сообщения: 5
Зарегистрирован: 11 июн 2014, 17:24
Имя: Дабчинский И

Re: ПИД-регулятор

Сообщение dabchinskiy »

VaBo писал(а):
там автор оперирует отрицательными коэффициентами Td и считает, что 0,1 для Ti - это "начнем по-немногу".
а как нужно ?

Автор темы
dabchinskiy
здесь недавно
здесь недавно
Сообщения: 5
Зарегистрирован: 11 июн 2014, 17:24
Имя: Дабчинский И

Re: ПИД-регулятор

Сообщение dabchinskiy »

Не могу разобраться в алгоритме программы - откуда берутся в программе (не будучи ранее присвоенными) например значения m_integral и m_period ?

Код: Выделить всё


#include "v_pid.h"
VPid::VPid(qreal proportional, qreal integral, qreal differential,
           qreal period, qreal minSaturation, qreal maxSaturation)
    : m_proportional(proportional),
      m_integral(integral),
      m_differential(differential),
      m_period(period),
      m_minSaturation(minSaturation),
      m_maxSaturation(maxSaturation)
{
    m_lastResult = m_lastInput = 0;
}

qreal VPid::getValue(qreal input)
{
    qreal sum = m_lastResult + m_integral * m_period * input;
    qreal diff = m_differential / m_period * (input - m_lastInput);
    qreal result = m_proportional * input + sum + diff;

    result = qMax(m_minSaturation, result);
    result = qMin(m_maxSaturation, result);

    m_lastResult = sum;
    m_lastInput = input;

    return result;
}

Автор темы
dabchinskiy
здесь недавно
здесь недавно
Сообщения: 5
Зарегистрирован: 11 июн 2014, 17:24
Имя: Дабчинский И

Re: ПИД-регулятор

Сообщение dabchinskiy »

Спасибо помогавшим с ПИД-регулятором разобрался . Посоветуйте алгоритмы автоматических методов настройки коэффициентов ПИД.
те "оценочной функции" (cost function) согласно этой схеме


zpid_1.gif


источник http://model.exponenta.ru/z_tf_pid.html

упрощенные методы:
http://vent2b.ru/ventilyaciya/prostaya- ... atora.html
У вас нет необходимых прав для просмотра вложений в этом сообщении.

acronis2000
здесь недавно
здесь недавно
Сообщения: 2
Зарегистрирован: 06 июн 2014, 18:31
Имя: Иванов Петр Сергеевич

Re: ПИД-регулятор

Сообщение acronis2000 »

Добрый день.

В продолжение этой темы , как реализовать плавный набор температуры c PID регулированием ( например за 3 часа плавно ! поднять температуру с 30 градусов до 70 градусов ) какой алгоритм применить? как расчитать - какая температура в какой момент времени должна быть ?

Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5623
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 546 раз
Поблагодарили: 706 раз

Re: ПИД-регулятор

Сообщение Ryzhij »

acronis2000 писал(а):В продолжение этой темы , как реализовать плавный набор температуры c PID регулированием ( например за 3 часа плавно ! поднять температуру с 30 градусов до 70 градусов ) какой алгоритм применить?
У стандартного функционального блока ПИД-регулятора непременно есть входы для задания SP и для обратной связи от регулируемого процесса PV.
Смысл в том, чтобы изменять SP во времени по нужному Вам закону (по заданному профилю). А у регулятора "дело биндюжье": дали задание - отрабатывай (нагрузили - вези).
acronis2000 писал(а):как расчитать - какая температура в какой момент времени должна быть ?
Здрас-сьте! Кто ж кроме Вас нужный Вам профиль температуры во времени знает?!
Линейный он у Вас там, параболический, ступенчатый или какой-то ещё?
Если с изменением температуры и/или времени у Вас и динамические параметры объекта регулирования будут сильно меняться, то для обеспечения качественного регулирования может потребоваться и изменение ПИД-коэффициентов. Это будет уже адаптивное регулирование.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)

Михайло
почётный участник форума
почётный участник форума
Сообщения: 3559
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 6 раз
Поблагодарили: 253 раза

Re: ПИД-регулятор

Сообщение Михайло »

acronis2000 писал(а):за 3 часа плавно ! поднять температуру с 30 градусов до 70 градусов ) какой алгоритм применить?
Этот алгоритм по-разному называется ramp-generator или как-то так. Можно поискать готовый блок в среде разработке. Смысл: на входе у рамп-генератора - ступенчатый, резко изменяющийся сигнал, на выходе - сглаженный сигнал в соответствии с заданными темпами разгона-торможения. В Вашем случае на вход рамп-генератора нужно изначально подать 30 градусов, затем 70 градусов; задать темп разгона, соответствующий 3 часам нарастания от 30 до 70.
По-русски ramp generator обзывался задатчиком интенсивности и строился по следующей модели:

Изображение

НЭ - элемент "ограничение", saturation. Величина ограничения должна быть равна максимальным значениям температуры со знаками плюс и минус (+Tmax, -Tmax), линейный участок минимальный, функция может практически стремиться к функции Хэвисайда sign(x).
1/Tи*p - интегратор, где Ти определяет темп разгона и торможения (при такой реализации рамп-генератора они одинаковые по величине).

Василий Иванович
авторитет
авторитет
Сообщения: 878
Зарегистрирован: 21 авг 2009, 14:25
Имя: Василий Иванович
Благодарил (а): 1 раз
Поблагодарили: 3 раза

Re: ПИД-регулятор

Сообщение Василий Иванович »

Уже была тема.
viewtopic.php?f=24&t=4240
Ответить

Вернуться в «Средний уровень автоматизации (управляющий)»