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

Тема: Система автоматического погодного регулирования

  1. #1

    По умолчанию Система автоматического погодного регулирования

    Имеется рабочая программа для погодного регулирования с точностью 0,5 градуса. Но когда контроллер поддерживает целое значение температуры теплоносителя, например 50 гр., то точность становится 1 гр.: от 49,5 до 50,5 гр. Если поддерживается, например 50,5 гр. о точность становится 0,5 гр.: от 50,25 до 50,75 гр.
    Где нужно подкорректировать программу чтобы точность поддержания температуры была 0,5 гр.?

    PROGRAM PLC_PRG
    VAR
    ind_temp: INT;
    ton1,ton2: TON;
    df: DECODE_FLOAT;
    ust_temp: REAL;
    temp_pod_i: INT;
    first_start: BOOL := TRUE;
    (*old_mode: INT;
    old_pod_ust: INT;
    old_ust_temp_z: INT;*)
    temp_pod, ust_temp_f: REAL;
    temp_nv: REAL;
    delta: REAL;
    ind_temp1: REAL;
    END_VAR
    VAR RETAIN
    temp: ARRAY [0..78] OF REAL;
    (*mode_r: INT;
    pod_ust_r: INT;
    ust_temp_r: INT;*)
    NaprReg_r:REAL;
    END_VAR

    …………………………………………………………………………………………………………………………………… …………………………….


    NaprReg := NaprReg_r;


    IF first_start THEN
    (* +8 +7.5 +7 +6.5 +6 *)
    temp[0] := 35; temp[1] := 36; temp[2] := 36; temp[3] := 36; temp[4] := 36;
    (* +5.5 +5 +4.5 +4 +3.5 *)
    temp[5] := 36; temp[6] := 36; temp[7] := 36; temp[8] := 36; temp[9] := 36.5;
    (* +3 +2.5 +2 +1.5 +1 *)
    temp[10] := 37; temp[11] := 37.5; temp[12] := 38; temp[13] := 38.5; temp[14] := 39;
    (* +0.5 0 -0.5 -1 -1.5 *)
    temp[15] := 39.5; temp[16] := 40; temp[17] := 40.5; temp[18] := 41; temp[19] := 41.5;
    (* -2 -2.5 -3 -3.5 -4 *)
    temp[20] := 42; temp[21] := 42.5; temp[22] := 43; temp[23] := 43.5; temp[24] := 44;
    (* -4.5 -5 -5.5 -6 -6.5 *)
    temp[25] := 44.5; temp[26] := 45; temp[27] := 45.5; temp[28] := 46; temp[29] := 46.5;
    (* -7 -7.5 -8 -8.5 -9 *)
    temp[30] := 47; temp[31] := 47.5; temp[32] := 48; temp[33] := 48.5; temp[34] := 49;
    (* -9.5 -10 -10.5 -11 -11.5 *)
    temp[35] := 49; temp[36] := 49; temp[37] := 49.5; temp[38] := 50; temp[39] := 50;
    (* -12 -12.5 -13 -13.5 -14 *)
    temp[40] := 50; temp[41] := 50.5; temp[42] := 51; temp[43] := 51; temp[44] := 51;
    (* -14.5 -15 -15.5 -16 -16.5 *)
    temp[45] := 51.5; temp[46] := 52; temp[47] := 52.5; temp[48] := 53; temp[49] := 53.5;
    (* -17 -17.5 -18 -18.5 -19 *)
    temp[50] := 54; temp[51] := 54.5; temp[52] := 55; temp[53] := 55.5; temp[54] := 56;
    (* -19.5 -20 -20.5 -21 -21.5 *)
    temp[55] := 56.5; temp[56] := 57; temp[57] := 57.5; temp[58] := 58; temp[59] := 58.5;
    (* -22 -22.5 -23 -23.5 -24 *)
    temp[60] := 59; temp[61] := 59.5; temp[62] := 60; temp[63] := 60.5; temp[64] := 61;
    (* -24.5 -25 -25.5 -26 -26.5 *)
    temp[65] := 61.5; temp[66] := 62; temp[67] := 62.5; temp[68] := 63; temp[69] := 63.5;
    (* -27 -27.5 -28 -28.5 -29 *)
    temp[70] := 64; temp[71] := 64.5; temp[72] := 65; temp[73] := 65.5; temp[74] := 66;
    (* -29.5 -30 -30.5 -31 *)
    temp[75] := 66.5; temp[76] := 67; temp[77] := 67.5; temp[78] := 68;




    IF NaprReg=0.0 THEN
    NaprReg := 0.5;
    END_IF;
    first_start := FALSE;
    END_IF;



    df( VALUE:=temp_pod_d, DEF_VALUE:= temp_pod);
    CASE df._ERR OF
    12: temp_pod_s := 2000; (* кз *)
    13: temp_pod_s := 2001; (*обрыв *)
    6,7,8,9,10,11,14,15: temp_pod_s := 2002; (*ошибка контроллера *)
    ELSE
    temp_pod_s := REAL_TO_INT(df.OUT_VALUE*10);
    temp_pod := temp_pod_d;
    END_CASE;

    df( VALUE:=temp_nv_d, DEF_VALUE:=temp_nv);
    CASE df._ERR OF
    12: temp_nv_s := 2000; (* кз *)
    13: temp_nv_s := 2001; (*обрыв *)
    6,7,8,9,10,11,14,15: temp_nv_s := 2002; (*ошибка контроллера *)
    ELSE
    temp_nv_s := REAL_TO_INT((df.OUT_VALUE+50.0)*10);
    temp_nv := temp_nv_d;
    END_CASE;

    ind_temp1 := temp_nv;
    ind_temp := 16 - REAL_TO_INT(ind_temp1*2);
    IF ind_temp < 0 THEN
    ind_temp := 0;
    ELSIF ind_temp > 78 THEN
    ind_temp := 78;
    END_IF;

    IF mode = 1 THEN
    ust_temp := temp[ind_temp]+pod_ust;
    ELSE
    ust_temp := ust_temp_z;
    END_IF;


    temp_pod_i := REAL_TO_INT(temp_pod);
    ust_temp_f := (ust_temp);
    ton1.PT := t#10m; ton2.PT := t#10s;
    ton1(in :=TRUE); ton2(in :=TRUE);
    IF ton1.ET >t#30s THEN
    IF (temp_pod_i >ust_temp) AND (temp_pod_s <2000) AND ((temp_nv_s<2000) OR (mode=0)) THEN
    delta :=(temp_pod - ust_temp_f)/500;
    NaprReg := NaprReg +delta;
    IF NaprReg > 0.90 THEN NaprReg := 0.90; END_IF;
    END_IF;
    IF (temp_pod_i <ust_temp) AND (temp_pod_s <2000) AND ((temp_nv_s<2000) OR (mode=0)) THEN
    delta :=(ust_temp_f - temp_pod)/500 ;
    NaprReg := NaprReg -delta;
    IF NaprReg < 0.0 THEN NaprReg := 0.0; END_IF;
    END_IF;
    ton1(in :=FALSE);
    END_IF;

    NaprReg_r := NaprReg;
    napr_s :=REAL_TO_INT( NaprReg *1000);

    IF ton2.ET >t#400ms THEN
    ton2(in :=FALSE);
    ClearScreen(0);
    SetWorkScreen(0);

    ShowString(0,0,0,'Тнв=');
    CASE temp_nv_s OF
    2000: ShowString(0,4,0,'КЗ ');
    2001: ShowString(0,4,0,'Обр ');
    2002: ShowString(0,4,0,'Ош. ');
    ELSE
    ShowReal(0, 4, 0, '%3.1f',temp_nv);
    END_CASE;
    ShowString(0,9,0,'Тп=');
    CASE temp_pod_s OF
    2000: ShowString(0,12,0,'КЗ ');
    2001: ShowString(0,12,0,'Обр ');
    2002: ShowString(0,13,0,'Ош. ');
    ELSE
    ShowReal(0, 12, 0, '%3.1f',temp_pod);
    END_CASE;
    ShowString(0,0,1,'Uуп='); ShowReal(0, 4, 1, '%4.2f',NaprReg*10);
    END_IF;

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

    По умолчанию

    Возьмите пид-регулятор и не занимайтесь ерундой

  3. #3

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Возьмите пид-регулятор и не занимайтесь ерундой
    Кто занимается ерундой?
    Когда контроллер поддерживает целое значение температуры теплоносителя, например 50 гр., то точность становится 1 гр.: от 49,5 до 50,5 гр. Если поддерживается, например 50,5 гр. о точность становится 0,5 гр.: от 50,25 до 50,75 гр.
    Где нужно подкорректировать программу чтобы точность поддержания температуры была 0,5 гр. для целых значений температур?

  4. #4
    Пользователь
    Регистрация
    24.07.2012
    Адрес
    Россия
    Сообщений
    1,492

    По умолчанию

    Цитата Сообщение от Юра Б. Посмотреть сообщение
    Кто занимается ерундой?
    Когда контроллер поддерживает целое значение температуры теплоносителя, например 50 гр., то точность становится 1 гр.: от 49,5 до 50,5 гр. Если поддерживается, например 50,5 гр. о точность становится 0,5 гр.: от 50,25 до 50,75 гр.
    Где нужно подкорректировать программу чтобы точность поддержания температуры была 0,5 гр. для целых значений температур?
    В КАРАГАНДЕ, тебе тут должны чтоли? Нет ума, плати людям, чтобы за тебя думали.

  5. #5
    Пользователь
    Регистрация
    12.07.2007
    Адрес
    Воронеж
    Сообщений
    884

    По умолчанию

    Цитата Сообщение от Юра Б. Посмотреть сообщение
    Кто занимается ерундой?
    Когда контроллер поддерживает целое значение температуры теплоносителя, например 50 гр., то точность становится 1 гр.: от 49,5 до 50,5 гр. Если поддерживается, например 50,5 гр. о точность становится 0,5 гр.: от 50,25 до 50,75 гр.
    Где нужно подкорректировать программу чтобы точность поддержания температуры была 0,5 гр. для целых значений температур?
    В ПЛК надо подкорректировать программу, с учетом поста #2.

Похожие темы

  1. Система автоматического звона в колокола
    от warm3 в разделе Наши проекты
    Ответов: 8
    Последнее сообщение: 02.03.2016, 15:55
  2. Ответов: 5
    Последнее сообщение: 12.10.2013, 08:00
  3. Система регулирования ИТП на ПЛК100
    от kristow в разделе ПЛК1хх
    Ответов: 14
    Последнее сообщение: 16.09.2013, 14:15
  4. ПЛК-160 ПИД регулирования давления
    от fred2012 в разделе ПЛК1хх
    Ответов: 11
    Последнее сообщение: 18.05.2013, 04:56
  5. Контроллер регулирования
    от mRATs в разделе Подбор Оборудования
    Ответов: 3
    Последнее сообщение: 17.10.2007, 09:37

Ваши права

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