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

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

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Пользователь
    Регистрация
    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.

Похожие темы

  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

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

Ваши права

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