Показано с 1 по 9 из 9

Тема: Неккоректная работа ПИД регулятора в ПЛК 150

  1. #1
    Пользователь
    Регистрация
    11.07.2015
    Адрес
    Шымкент
    Сообщений
    35

    Exclamation Неккоректная работа ПИД регулятора в ПЛК 150

    Добрый день! Вопрос разработчикам ПЛК ОВЕН 150. Недавно написал программу на языке ST. И в программе были включены блоки управления PID. Но регулировка PID в программе не регулируется. Коэффициенты PID выставлены. Регулировка производится при помощи унифицированными сигналами. Есть ли какие то документации для настройки PID. Что означают которые указаны красными на рисунке? Где можно найти их обозначании.
    Изображения Изображения

  2. #2
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,224

    По умолчанию

    А Вы считаете, что ошибки в готовом блоке? Вам для начала надо избавиться от использования команд АТ в ПОУ, использовать в программе программу без какой то крайне важной необходимости. Ну и выложить весь код, на скрине не видно как именно и с какой периодичностью запускается регулятор
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  3. #3
    Пользователь
    Регистрация
    11.07.2015
    Адрес
    Шымкент
    Сообщений
    35

    По умолчанию

    ДА! Я ГДЕ ТО В ФОРУМЕ ЧИТАЛ, что стандартный блок pid регулятор в библиотеке util.lib не регулируется в аналоговом сигнале.чтобы было понятно суть алгоритма таково:Регулятор принимает сигнал от раcходемера в диапазоне 4-20мА. Дальше обработанный сигнал в регуляторе передаться к частотнику через аналог сигнал 0-10В (Этот диапазон сигнала указана в регуляторе). Когда задаешь задание чтобы регулятор удерживал заданную значению, регулятор выдает к ПЧ максимальную напряжению 10В(50Гц). когда достигается до заданного значения показания герца на ПЧ резко снижается. И каждый раз насос герца прыгает. Что посоветуете.
    code_forum.jpg
    Последний раз редактировалось RZH; 06.01.2016 в 15:25.

  4. #4
    Пользователь
    Регистрация
    11.07.2015
    Адрес
    Шымкент
    Сообщений
    35

    По умолчанию

    У меня выглядит так
    config.jpg

  5. #5
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,314

    По умолчанию

    .....................

  6. #6
    Пользователь
    Регистрация
    11.07.2015
    Адрес
    Шымкент
    Сообщений
    35

    По умолчанию

    код программы

    PHP код:
    PROGRAM PLC_PRG
    VAR
    (*
    configuration panel*)
        
    set_point_from_panel_1 AT %QD9.6.0 REAL;
        
    set_point_from_panel_2 AT %QD9.7.0 REAL;
        
    FIT_VR_value_1 AT %QD9.19.0:REAL;
        
    FIT_VR_value_2 AT %QD9.20.0:REAL;        (*ðåàëüíîå çíà÷åíèå ðàñõîäà*)
        
    button_for_sp AT %QX9.1.0.6BOOL;
        
    hi_limit_error AT %QX9.2.0.4BOOL;
        
    PID_manual AT %QX9.3.0.0BOOL;        (*ðó÷íîé ðåæèì ðåãóëÿòîðà*)
        
    alarm AT %QX9.3.0.1BOOL;
        
    status_system AT %QX9.3.0.2BOOL;
        
    simulation AT %QX9.3.0.3BOOL;
        
    level_lall AT %QX9.3.0.4BOOL;
        
    level_lal AT %QX9.3.0.5BOOL;
        
    level_lah AT %QX9.3.0.6BOOL;
        
    level_lahh AT %QX9.3.0.7BOOL;
        
    battery_low AT %QX9.4.0.2BOOL;
        
    emergency_system AT %QX9.4.0.3BOOL;
        
    temp_plc150_owen AT %QD9.23.0 REAL;
        
    time_accum AT %QW9.24.0WORD;
    (*
    configuration panel*)



        
    P1_PID:PID;
        
    P2_PID:PID;
        
    kP REAL;
        
    kI REAL;
        
    kD REAL;

        (* 
    AT %QX9.17.0.7BOOL;        (*ðó÷íîé ðåæèì ðåãóëÿòîðà*)*)
        
    sp_flow1_for_PIDREAL;       (*óñòàâêà íà ã/ë*)
        
    sp_flow2_for_PIDREAL;       (*óñòàâêà íà ã/ë*)
        
    unit_1REAL;
        
    unit_2REAL;
        
    block_systemBOOL;

        
    regulationBOOL;


    END_VAR

    VAR_INPUT

        P1_Flow_SP
    :REAL;
        
    P2_Flow_SP:REAL;
    (*
    configuration panel*)
        
    k_P AT %QD9.12.0:REAL;
        
    k_I AT %QD9.13.0:REAL;
        
    k_D AT %QD9.14.0:REAL;
        
    KH2SO4 AT %QD9.15.0:REAL;     (*êîýôôèöåíò ïëîòíîñòè êèñëîòû*)
        
    FIT_acida_PID AT %QD9.17.0:REAL;
        
    FIT_acidb_PID AT %QD9.18.0:REAL;
    (*
    configuration panel*)

    (*
    discret input PLC*)
        
    start_system AT %IX0.0BOOL;
        
    stop_system AT %IX0.1BOOL;
        
    manual_system AT %IX0.2BOOL;
        
    auto_system AT %IX0.3BOOL;
        
    emergency_stop AT %IX0.4BOOL;
    (*
    discret input PLC*)
        
    FIT_1 AT %ID10.2.0.0REAL;
        
    FIT_2 AT %ID10.2.1.0REAL;
        
    timer_turnBOOL;
        
    PV_FI_1_panelREAL;        (*çíà÷åíèå òåêóùåãî ðàñõîäà êèñëîòû*)
        
    PV_FI_2_panelREAL;        (*çíà÷åíèå òåêóùåãî ðàñõîäà êèñëîòû*)
        
    FIT_VR_1 AT %ID10.2.2.0:REAL;   (*ðàñõîä ÂÐ*)
        
    FIT_VR_2 AT %ID10.2.3.0:REAL;   (*ðàñõîä ÂÐ*)
    END_VAR

    VAR_OUTPUT
    (*configuration panel*)
        
    fithics_vallue_Hz_1 AT %QD9.8.0:REAL;
        
    fithics_vallue_Hz_2 AT %QD9.9.0:REAL;
    (*
    configuration panel*)
    (*
    discret output PLC*)

        
    status_system_start_stop AT %QX1.1BOOL;
        
    alarm_system AT %QX1.2BOOL;



    (*
    discret output PLC*)

        
    P_01 AT %QD7.0REAL;
        
    P_02 AT %QD8.0REAL;
        
    statistic_power AT %IW11.1WORD;
        
    Temp_inside_PLC AT %ID11.2REAL;
    END_VAR

    VAR_INPUT RETAIN
    (*configuration panel*)
        
    HI_LIM AT %QD9.16.0REAL;        (*âåðõíèé ïðèäåë øêàëû äëÿ ðàñõîäåìåðà êèñëîòû*)
           
    HI_LIM_VR AT %QD9.21.0:REAL;(*LO_LIM AT %QD9.10.0REAL;*)        (*íèæíèé ïðèäåë øêàëû ðàñõîäåìåðà*)
    (*configuration panel*)
    END_VAR 
    PHP код:
    (*ìàñøòàáèðîâàíèå àíàëîãîâûõ ñèãíàëîâ m3/h*)

    scale_1(
        
    IN:=FIT_1 , (*ðàñõîä êèñëîòû*)
        
    IN_MIN:= 0.0,
        
    IN_MAX:= 100,
        
    OUT_MIN:= 0,
        
    OUT_MAX:= HI_LIM,          (*HI_LIM*)
        
    OUT=>FIT_acida_PID ,
        
    ERROR=>error_fit1 );(**)
    IF 
    error_fit1 THEN(*îáíóëåíèå ñèãíàëà ïðè àâòî ðåæèìå. Åñëè îòñóòñòâóåò ñèãíàë ðàñõîäà êèñëîòû, òî íàñîñû íå áóäåò ðàáîòàòü*)
    FIT_acida_PID:=0.0;
    END_IF;

    scale_3(
        
    IN:= FIT_VR_1, (*ðàñõîä ÂÐ*)
        
    IN_MIN:= 0.0,
        
    IN_MAX:= 100.1,
        
    OUT_MIN:= 0,
        
    OUT_MAX:= HI_LIM_VR,   (*HI_LIM_VR*)
        
    OUT=> FIT_VR_value_1,
        
    ERROR=> error_fi_vr1);(**)
    IF 
    error_fi_vr1 THEN
    FIT_VR_value_1
    :=0.0;
    END_IF;

    IF 
    HI_LIM=0.0 OR HI_LIM_VR=0.0(*ïàðàìåòðèðîâàíèå â ïàíåëè ìàêñ. çíà÷åíèå ðàñõîäîâ*)
    THEN
    hi_limit_error
    :=TRUE;
    ELSE
    hi_limit_error:=FALSE;
    END_IF;

    IF 
    button_for_sp THEN                                   (*ïåðåêëþ÷åíèå ïî ðåæèìàì ðåãóëèðîâàíèÿ*)
    P1_Flow_SP:=sp_flow1_for_PID;
    P2_Flow_SP:=sp_flow2_for_PID;
    ELSE
    (*&
    #243;ñòàâêà äëÿ ðåãóëèðîâàíèå*)
    P1_Flow_SP:= FIT_VR_value_1*sp_flow1_for_PID/(0.925*koef);  (*ôîðìóëà äëÿ âû÷åñëåíèÿ ðàñõîäà êèñëîòû ë/÷*)
    P2_Flow_SP:= FIT_VR_value_2*sp_flow2_for_PID/(0.925*koef);  (*óñòàâêà äëÿ ðåãóëèðîâàíèå*)
    END_IF;

    (*&
    #239;åðåìåííûå äëÿ íàñîñîâ+ðåãó*)
    P1_01:=P_01;
    P2_02:=P_02;
    (*&
    #207;ÈÄ-ðåãóëèðîâàíèÿ äëÿ íàñîñà P1*)
    P1_PID(
        
    ACTUAL:=  FIT_acida_PID, (*__FIT_acida_PID,--->íàäî çàìåíèòü ïîñëå ñèìóëÿöèè*)
        
    SET_POINT:= P1_Flow_SP,
        
    KP:= P1_P_SP,
        
    TN:= P1_I_SP,
        
    TV:= P1_D_SP,
        
    Y_MANUAL:=P1_Man_Spd_SP,
        
    Y_OFFSET:= 0.0,
        
    Y_MIN:=0.0,
        
    Y_MAX:= 10.0,
        
    MANUAL:=PID_manual,
        
    RESET:= ,
        
    Y=> P_01,
        
    LIMITS_ACTIVE=> ,
        
    OVERFLOW=> );

    (*&
    #207;ÈÄ-ðåãóëèðîâàíèÿ äëÿ íàñîñà P2*)
    P2_PID(
        
    ACTUAL:= FIT_acidb_PID,
        
    SET_POINT:= P2_Flow_SP,
        
    KP:= P1_P_SP,
        
    TN:= P1_I_SP,
        
    TV:= P1_D_SP,
        
    Y_MANUAL:=P2_Man_Spd_SP,
        
    Y_OFFSET:=0.0 ,
        
    Y_MIN:=0.0,
        
    Y_MAX:= 10.0,
        
    MANUAL:=PID_manual,
        
    RESET:= ,
        
    Y=> P_02,
        
    LIMITS_ACTIVE=> ,
        
    OVERFLOW=> ); 
    pid1.jpg
    pid2.jpg
    Последний раз редактировалось RZH; 06.01.2016 в 21:36.

  7. #7
    Пользователь
    Регистрация
    11.07.2015
    Адрес
    Шымкент
    Сообщений
    35

    По умолчанию

    Цитата Сообщение от krollcbas Посмотреть сообщение
    Вызов всех ПИД регуляторов советую вынести в отдельную программу.
    Тайминг поставьте 100мс, приоритет меньший, чем у остальной программы
    Ну и конечно график не ленитесь, сделайте. Чтоб была PV, SP, OUT
    я вас понял. чтобы сделать график надо по месту пойти и получить график. Как получится отправлю. Я сейчас далеко от этого ШУ. Спасибо за совет! Необходимо изменить прогу.

  8. #8
    Пользователь
    Регистрация
    11.07.2015
    Адрес
    Шымкент
    Сообщений
    35

    По умолчанию

    Добрый день!
    Кто знает, как можно произвести ПИ регулирование с дозирующими насосами?

  9. #9
    Пользователь
    Регистрация
    11.07.2015
    Адрес
    Шымкент
    Сообщений
    35

    По умолчанию

    Цитата Сообщение от krollcbas Посмотреть сообщение
    Вложение 21687
    В большинстве процессов d дифференциальная составляющая и не нужна.
    Она нужна тогда, когда при воздействии на контур возникают "мелкие волны",
    и в любом случае настраивается в последнюю очередь.
    У меня в проге d дифференциальная составляющая равно нулю. Просто поставил переменную для того чтобы если вдруг понадобится.
    Я вот никак не могу понять термина "мертвая зона". Для чего это? Можете простыми словами описывать.

Похожие темы

  1. Автонастройка ПИД-регулятора на ПЛК-154
    от Владислав Г. в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 14.12.2015, 12:24
  2. пид регулятор плк 150 и.м.
    от mihan-987654321 в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 23.09.2010, 12:17
  3. Работа тензодатчика с ПЛК 150
    от GBKII в разделе Разработки
    Ответов: 3
    Последнее сообщение: 12.08.2009, 16:12
  4. работа пид регулятора
    от Юрий(!) в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 16.01.2008, 09:23
  5. плк-150 работа с трм-138
    от DEN в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 04.05.2007, 11:19

Метки этой темы

Ваши права

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