plcforum.uz.ua

International PLC Forum
It is currently Sun Mar 26, 2017 12:38 am

All times are UTC + 3 hours




Post new topic Reply to topic  [ 3 posts ] 
Author Message
PostPosted: Sat Feb 25, 2012 10:06 am 

Joined: Tue Jun 27, 2006 8:52 am
Posts: 500
Location: Russia
Пример функционального блока (язык SCL) в Step7, для выбора уставки регулятору системы отопления по графику 105/70 (у нас кое-где применяется) и 95/70.
Несложный функциональный блок обрабатывает входящую текущую температуру наружного воздуха и температуру приходящего теплоносителя (REAL). Т.е. можно использовать либо по температуре наружного воздуха, либо, если неисправен или отсутствует датчик Тнв, то определять уставку по температуре приходящего теплоносителя. Верней, результат выводится по обоим управляющим величинам (REAL). :)
В архиве сам FB с исходником и, в качестве примера, скан температурного графика, по которому сконфигурирован FB.
Test_tgr.zip


Top
 Profile  
 
PostPosted: Sat Feb 22, 2014 1:11 pm 

Joined: Wed Aug 18, 2010 9:03 am
Posts: 12
закончился срок хранения файлова


Top
 Profile  
 
PostPosted: Sat Feb 22, 2014 1:21 pm 

Joined: Tue Jun 27, 2006 8:52 am
Posts: 500
Location: Russia
95/70
Срезка по -3, это мой регион. По своему региону - советоваться надо с заказчиком
Code:
VAR
   i     : INT;
   Tnv   : INT;
   Tstec : REAL;
   
   x : ARRAY[0..39] OF INT  := 8,    7,    6,    5,    4,     3,     2,     1,     0,     -1,    -2,    -3,    -4,    -5,    -6,    -7,    -8,    -9,    -10,   -11,
                               -12,  -13,  -14,  -15,  -16,   -17,   -18,   -19,   -20,   -21,   -22,   -23,   -24,   -25,   -26,   -27,   -28,   -29,   -30,   -31;
   y : ARRAY[0..39] OF REAL := 75.0, 75.0, 75.0, 75.0, 75.0,  75.0,  75.0,  75.0,  75.0,  75.0,  75.0,  75.0,  76.6,  78.6,  80.7,  82.7,  84.8,  86.8,  88.8,  90.8,
                               92.9, 94.9, 96.9, 98.8, 100.8, 102.8, 104.8, 106.8, 108.7, 110.7, 112.6, 114.6, 116.5, 118.5, 120.4, 122.3, 124.2, 126.2, 128.1, 130.0;
   z : ARRAY[0..39] OF REAL := 45.3, 47.1, 48.8, 50.5, 52.2,  53.9,  55.5,  57.2,  58.8,  60.4,  62.0,  63.6,  65.2,  66.7,  68.3,  69.8,  71.4,  72.9,  74.4,  76.0,
                               77.5, 79.0, 80.5, 82.0, 83.4,  84.9,  86.4,  87.8,  89.3,  90.8,  92.2,  93.6,  95.1,  96.5,  97.9,  99.4,  100.8, 102.2, 103.6, 105.0;
   r : ARRAY[0..39] OF REAL := 42.6, 44.1, 45.7, 47.2, 48.6,  50.1,  51.6,  53.0,  54.5,  55.9,  57.3,  58.7,  60.1,  61.5,  62.8,  64.2,  65.5,  66.9,  68.2,  69.6,
                               70.9, 72.2, 73.5, 74.8, 76.1,  77.4,  78.7,  80.0,  81.3,  82.5,  83.8,  85.1,  86.3,  87.6,  88.8,  90.1,  91.3,  92.5,  93.8,  95.0;

END_VAR

// --- Block Parameters -----------------------
VAR_INPUT
    in_Tnv    : REAL;
    in_Tstec  : REAL;
END_VAR

VAR_IN_OUT
    // I/O Parameters
END_VAR

VAR_OUTPUT
    out_Tg_ot_nv_105_70   : REAL;
    out_Tg_ot_nv_95_70    : REAL;
    out_Tg_ot_stec_105_70 : REAL;
    out_Tg_ot_stec_95_70  : REAL;
END_VAR
// --- END Block Parameters --------------------

BEGIN


//--- Производим округление Тнв до целого числа (в большую сторону 3.56 -> 4) и переводим в формат INT ---
Tnv := REAL_TO_INT(ROUND(in_Tnv));
Tstec := in_Tstec;
   

//----------------------------------------------------------------------------------------------------------
//--- По Т наружнего воздуха -------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------------
   
    //--- Если Тнв выше 8 градусов, то приравниваем ее к 8 градусам ---
    IF Tnv > 8 THEN
        Tnv := 8;
    END_IF;
    //--- Если Тнв ниже -31 градусов, то приравниваем ее к -31 градусу ---   
    IF Tnv < -31 THEN
        Tnv := -31;
    END_IF;   
    //--- Вычисляем температуру сетевой воды по графику 105/70 и по графику 95/70  ---   
    FOR i:=0 TO 39 BY 1 DO
      IF Tnv = x[i] THEN
        out_Tg_ot_nv_105_70:=z[i];
        out_Tg_ot_nv_95_70:=r[i];
      END_IF;   
    END_FOR;

//----------------------------------------------------------------------------------------------------------
//--- По Т приходящего теплоносителя от СТЭЦ ---------------------------------------------------------------
//----------------------------------------------------------------------------------------------------------

    //--- Если Т приходящего теплоносителя меньше или равна 75, то берем строчку при Тнв = -3
    IF Tstec <= 75 THEN
        out_Tg_ot_stec_105_70:=z[11];
        out_Tg_ot_stec_95_70:=r[11];
    ELSE
      //--- Вычисляем температуру сетевой воды по графику 107/70 и по графику 95/70  ---                 
      FOR i:=12 TO 39 BY 1 DO
        IF (Tstec >= y[i]) AND (Tstec < y[i+1]) THEN
          out_Tg_ot_stec_105_70:=z[i];
          out_Tg_ot_stec_95_70:=r[i];
        END_IF;   
      END_FOR;   
    END_IF;
    //--- Если Т приходящего теплоносителя больше или равна 130, то берем строчку при Тнв = -31
    IF Tstec >= y[39] THEN
        out_Tg_ot_stec_105_70:=z[39];
        out_Tg_ot_stec_95_70:=r[39];
    END_IF;


END_FUNCTION_BLOCK


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 3 posts ] 

All times are UTC + 3 hours


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
Jump to:  
Powered by International PLCforum® Forum Software © PLCforum
Mobile version