Показано с 1 по 10 из 24

Тема: Пишем свой ПИД-регулатор

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #14
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    3,190

    По умолчанию

    Цитата Сообщение от FPavel Посмотреть сообщение
    Критикуйте, хуже не будет. В крайнем случае скажу "ВыНеПонимаете - ЭтоДругое, У_МеняВсёРаботает" ))))
    да?
    Код:
    ///<Description>Эмулятор объекта управления. Эмулируется последовательное соединение трёх апериодических звеньев 1-го порядка.</Description>
    ///<Author>!!FPA!!</Author>
    ///<GroupName>Управляющие и регулирующие модули</GroupName>
    
    function_block Emulator_Cont_ST_
    
        var_input
            ///<Description>Перезапуск работы блока (инициализация всех переменных состояния) по фронту</Description>
            xReset: bool := false;
            ///<Description>Входная переменная. Управляющий сигнал с ПИД</Description>
            rVLV_Pos: real;
            ///<Description>Внешнее возмущающее воздействие (суммируется с rVLV_Pos для вычислений внутри ФБ)</Description>
            rDisturbance: REAL;
            ///<Description>Значение выхода при rVLV_Pos=0</Description>
            rPV_0: REAL:=20.0;
            ///<Description>Коэффициент передачи объекта управления (трёх последовательных апериодических звеньев 1-го порядка)</Description>
            rGain: REAL:=1.5;
            ///<Description>Постоянная времени первого апериодического звена 1-го порядка, [мс]</Description>
            dwTime_T1: udint:=60000;
            ///<Description>Постоянная времени второго апериодического звена 1-го порядка, [мс]</Description>
            dwTime_T2: udint:=10000;
            ///<Description>Постоянная времени третьего апериодического звена 1-го порядка, [мс]</Description>
            dwTime_T3: udint:=0;
        end_var
    вот вообще смотрю и не пойму. Даже пиво поставил и очки взял.
    Код:
    //GroupName: Управляющие и регулирующие модули
    //Эмулятор объекта управления (ОУ) 
    //Последовательное соединение апериодических звеньев (АЗ) 1-го порядка
    //Author: !!FPA!!
    function_block Emulator_Cont_ST_
    
        var_input
            xReset: bool := false;      //Перезапуск. Инициализация всех состояний по фронту
            rVLV_Pos: real;             //Управляющий сигнал с ПИД
            rDisturbance: REAL;         //Возмущающее воздействие (суммируется с rVLV_Pos)
            rPV_0: REAL:=20.0;          //Значение выхода при rVLV_Pos=0. 0 - норм сигнал же?
            rGain: REAL:=1.5;           //Коэффициент передачи ОУ для АЗ-1..3
            dwTime_T1: udint:=60000;    //Постоянная времени АЗ-1, [мс]
            dwTime_T2: udint:=10000;    //... АЗ-2, [мс]
            dwTime_T3: udint:=0;        //... АЗ-3, [мс]
        end_var
    стал воспринимать)) но не всё понимать


    ПИД.выход -> rVLV_Pos
    ...
    rPV_Inner := (rVLV_Pos + rDisturbance) * rGain;
    ... rPV_Inner := ...
    rPV := rPV_0 + rPV_Inner;
    rPV -> обр.связь.ПИД
    rPV может и эмулятор объекта управления (ОУ), ну вот ни разу не эмулятор ИУ* которое:
    ПИД.выход -> хотелка_Pos.ИУ.rVLV_Pos -> воздействие.ОУ.rPV -> обр.связь.ПИД
    и которое имеет 3 состояния :
    1.Не крутится.
    2.Крутится со скоростью const A
    3.Крутится со скоростью const B (которое часто просто = -A)

    *Достаточо часто встречающихся


    Не знаю, видел в справке к ФБ. Иногда, востребовано - при штатном изменении уставки ограничивают скорость.
    Если нужное встроено в ПИД на уровне динамической коррекции И-части то не нужно.


    В реализации для Koyo DirectLogic встречал ограничение И-части в виде "заморозка И-части при переполнении выхода" - когда выход (П+И+Д) превышал 100%, он ограничивался 100% и пересчёт И не производился.
    Допускаю что это описание чуть-чуть неверное, по факту примерно так:
    И-часть пересчитывается всегда, чтобы выход ПИДа не выходил за края.
    Если же как описано, то для меня это - в корзину.

    Нет, исходника ПИД от встроенного в прошивку ПР - нет, только описание.
    Жаль. То же справочное описание замечательного КДС/util/PID не совсем соответствует реальности примерно так же.

    закрытые библиотеки для ФБ, реализованных в прошивках
    Как для меня это странно. Что в ПИД секретного? И что в матформуле может быть привязано к прошивке?
    Поэтому тоже всегда сам ПИД делаю - не доверяю и свои хотелки реализую.
    И тоже предпочитаю Kp,Ki,Kd ))

    Цитата Сообщение от FPavel Посмотреть сообщение
    ...Или выполнять пересчёт строго по таймеру через заданные промежутки времени..
    Вот это - "строго" и это - "по таймеру" тоже странное в общем случае, хотя сами же подсказали
    Цитата Сообщение от FPavel Посмотреть сообщение
    ...время прошедшее от предыдущего вычисления..
    Место вычисления только не подсказали))
    Последний раз редактировалось Валенок; 19.10.2025 в 12:10.

Похожие темы

  1. Пишем музыку
    от МихаилГл в разделе Трёп (Курилка)
    Ответов: 5
    Последнее сообщение: 16.09.2023, 11:28
  2. Пишем музыку
    от МихаилГл в разделе Трёп (Курилка)
    Ответов: 1
    Последнее сообщение: 15.09.2023, 11:32
  3. Свой таймер
    от Спорягин Кирилл в разделе ПЛК1хх
    Ответов: 41
    Последнее сообщение: 28.08.2015, 11:17
  4. Пишем грамотно
    от superMAX в разделе Трёп (Курилка)
    Ответов: 7
    Последнее сообщение: 19.10.2009, 18:18
  5. Пишем грамотно
    от superMAX в разделе Разработки
    Ответов: 0
    Последнее сообщение: 28.07.2009, 03:03

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •