NETWORK
CALL FC 16
( ELNR := 6
, T1 := M 0.2
, T2 := M 0.2
, FR := M 1.5
, RM_A := M 0.0
, RM_Z := M 0.0
);
FUNCTION FC 16 : VOID
NAME: TEMP_ANZ // TEMP.ANZ
VAR_INPUT
ELNR :int; // ELNR
FR :bool; // FR
RM_A :bool; // RM-A
RM_Z :bool; // RM-Z
END_VAR
VAR_OUTPUT
T1 :bool; // T1
T2 :bool; // T2
END_VAR
VAR_TEMP
conv_akku1 :dword;
conv_akku2 :dword;
conv_stw :word;
END_VAR
BEGIN
NETWORK
TITLE = Temperatur-Regler-Anzeige
//
//DER FB RECHNET FUER DIE SOLLWERTVORGABE DES PID-REGLERS DIE PYS.GROESSE
//IN EINEN ELEKTR. WERT UM (AUS DB153, DW100 FUER TEMP. 1 USW.).
//WIRD DER REGLER NICHT FREIGEGEBEN, WIRD DER SOLLWERT "NULL" VORGEGEBEN.
//
//DER VOM FB 78 EINGELESENE ISTWERT WIRD AUF EINEN PHY.WERT (FUER ISTWERTANZEIGE)
//GEBRACHT. DIESER ISTWERT WIRD DABEI IN DEM DB160, DW31 FUER TEMPERATUR 1 USW.
//ABGELEGT.
//
//ERREICHTE TEMPERATURGRENZEN WERDEN UEBER DIE PARAMETER "T1-2" AUSGEGEBEN.
//DIE KENNUNG "UEBERLAUF ADU" WIRD AUS DEM UBB-BEREICH (M 118.0) ENTNOMMEN.
//DIE KENNUNGEN "UNTERE/OBERE BEGRENZUNG" DES REGLERS WIRD AUS DEM UBB-BEREICH
//(M 118.2 UND 118.3) ENTNOMMEN.
//
//SIND DIE STELLVENTIL-ENDLAGEN ERREICHT, WERDEN KEINE STELLIMPULSE ZUR
//ENDLAGE HIN MEHR AUSGEGEBEN.
//
//
//PARAMETERBEZEICHNUNG
//--------------------
//
//ELNR = ELEMENTNUMMER
//T1 = TEMPERATURGRENZWERT 1
//T2 = TEMPERATURGRENZWERT 2
//FR = REGLERFREIGABE
//RM-A = RUECKMELDUNG AUF
//RM-Z = RUECKMELDUNG ZU
//
//
//VERWENDET: MW240
// MW242
//
//
//
AUF DB 3;
L 34; // Laenge
T DBW 18; // --------------------------------
L #ELNR;
*I; // Quelle
INC 10;
T DBW 14; // --------------------------------
L 10; // Ziel
T DBW 16; // --------------------------------
NETWORK
CALL FC 27 // Elnr. in den akt. Bereich laden
( QUEL := DBW 14
, ZIEL := DBW 16
, LAEN := DBW 18
);
// --------------------------------
NETWORK
UN #FR; // Reglerfreigabe
SPB M001;
AUF DB 153;
L #ELNR;
INC 99;
T MW 242;
T conv_akku1;
L STW;
T conv_stw;
L MB 243;
SLW 4;
LAR1;
L conv_stw;
T STW;
L conv_akku1;
L DBW [ AR1, P#0.0 ];
AUF DB 3;
T DBW 20; // Umrechnung Sollwert
DTR; // ===================
L +0.1000000E+04;
*R;
L +0.2670000E+03;
/R;
T DBD 48;
SPA M002;
M001:L 0; // Sollwert Null
T DBW 20;
T DBD 48;
M002: NOP 0;
// --------------------------------
NETWORK
UN M 118.0; // bei Ueberl. ADU Istw.= ? setzen
SPB M003;
L 10000;
T DBW 26;
S DBX 87.2;
SPA M004; // --------------------------------
M003:R DBX 87.2; // Umrechnung Istwert
L DBD 42;
L +0.2670000E+03;
*R;
L +0.1000000E+04;
/R;
RND;
T DBW 26;
M004: NOP 0;
// --------------------------------
NETWORK
U M 118.2; // untere/obere Begrenzung
= DBX 87.3; // =======================
U M 118.3;
= DBX 87.4;
UN #RM_A; // Stellventil-Endlagen
= DBX 85.3; // ====================
UN #RM_Z;
= DBX 85.2;
// --------------------------------
NETWORK
L DBW 26; // Temperaturgrenzwerte ermitteln
L DBW 22; // ==============================
>=I; // Grenzwert 1
= DBX 87.0;
= #T1; // --------------------------------
L DBW 26;
L DBW 24;
>=I; // Grenzwert 2
= DBX 87.1;
= #T2; // --------------------------------
NETWORK
L DBW 26; // Istwert fuer Temp.- Anzeige
T MW 240; // ===========================
L #ELNR;
INC 30;
T MW 242;
AUF DB 160;
L MW 240;
T conv_akku1;
TAK;
T conv_akku2;
L STW;
T conv_stw;
L MB 243;
SLW 4;
LAR1;
L conv_stw;
T STW;
L conv_akku2;
L conv_akku1;
T DBW [ AR1, P#0.0 ];
// --------------------------------
NETWORK
AUF DB 3; // Akt. Bereich nach Elementnr.
CALL FC 27
( QUEL := DBW 16
, ZIEL := DBW 14
, LAEN := DBW 18
);
// --------------------------------
NETWORK
END_FUNCTION