Kompl Rampenprogr.
DATA_BLOCK DB 1
TITLE =
VERSION : 0.1
STRUCT
DB_VAR : BOOL ; //vorläufige Platzhaltervariable
END_STRUCT ;
BEGIN
DB_VAR := FALSE;
END_DATA_BLOCK
DATA_BLOCK "Globaler DB10"
TITLE =
AUTHOR : 'Kleißler'
VERSION : 0.1
STRUCT
DB_VAR : INT ; //vorläufige Platzhaltervariable
ANALOGWERT : REAL ; //Analogwert
ANALOGWERT_BEARB : REAL ; //Analogwert nach Bearbeitung
Zykluszeit : REAL ; //Zykluszeit
FC_105_Fehlerinfo : WORD ; //Fehlerinformationen zum FC 105
FC_106_Fehlerinfo : WORD ; //Fehlerinformationen zum FC 106
END_STRUCT ;
BEGIN
DB_VAR := 0;
ANALOGWERT := 0.000000e+000;
ANALOGWERT_BEARB := 0.000000e+000;
Zykluszeit := 0.000000e+000;
FC_105_Fehlerinfo := W#16#0;
FC_106_Fehlerinfo := W#16#0;
END_DATA_BLOCK
FUNCTION "Anlage EIN/AUS" : VOID
TITLE =Allgemeine Funktionen
AUTHOR : 'Kleißler'
VERSION : 0.1
BEGIN
NETWORK
TITLE =HM Anlage EIN_AUS
U "S1 Anlage EIN";
S "HM Anlage EIN_AUS";
UN "S0 Anlage AUS";
R "HM Anlage EIN_AUS";
U "HM Anlage EIN_AUS";
= DB1.DBX 0.0;
NETWORK
TITLE =
U "HM Anlage EIN_AUS";
SPB M001;
NETWORK
TITLE =Abfrage n = 0
L "Globaler DB10".ANALOGWERT_BEARB;
L 0.000000e+000;
==R ;
= "HM_N=0";
NETWORK
TITLE =Anlage aus bei n = 0
M001: UN "S0 Anlage AUS";
S "HM Anlage gegen n=0";
U "HM_N=0";
R "HM Anlage gegen n=0";
NOP 0;
END_FUNCTION
FUNCTION "Ramp_up" : VOID
TITLE =
AUTHOR : 'Kleißler'
VERSION : 0.1
BEGIN
NETWORK
TITLE =Anlage EIN / AUS
UN "HM Anlage EIN_AUS";
SPB M100;
NETWORK
TITLE =Vergleich Istwert = Sollwert
L "Globaler DB10".ANALOGWERT_BEARB;
L "Globaler DB10".ANALOGWERT;
>=R ;
SPB M100;
NETWORK
TITLE =Addition für Rampe
L "Globaler DB10".ANALOGWERT_BEARB;
L 1.000000e+000;
+R ;
T "Globaler DB10".ANALOGWERT_BEARB;
NOP 0;
NETWORK
TITLE =Bausteinende
M100: NOP 0;
END_FUNCTION
FUNCTION "Ramp_down" : VOID
TITLE =
AUTHOR : 'Kleißler'
VERSION : 0.1
BEGIN
NETWORK
TITLE =Abfrage n = 0
L "Globaler DB10".ANALOGWERT_BEARB;
L 0.000000e+000;
<=R ;
SPB M100;
NETWORK
TITLE =Abfrage Anlage EIN
U "HM Anlage EIN_AUS";
SPB M100;
NETWORK
TITLE =Subtrahiere den Istwert
L "Globaler DB10".ANALOGWERT_BEARB;
L 1.000000e+000;
-R ;
T "Globaler DB10".ANALOGWERT_BEARB;
NOP 0;
NETWORK
TITLE =Bausteinende
M100: NOP 0;
END_FUNCTION
FUNCTION "Ramp_down_folgen" : VOID
TITLE =
AUTHOR : 'Kleißler'
VERSION : 0.1
BEGIN
NETWORK
TITLE =Abfrage Anlage ist EIN
UN "HM Anlage EIN_AUS";
U "HM Anlage gegen n=0";
SPB M001;
NETWORK
TITLE =Abfrage Sollwert ist größer gleich Istwert
L "Globaler DB10".ANALOGWERT;
L "Globaler DB10".ANALOGWERT_BEARB;
>=R ;
SPB M001;
NETWORK
TITLE =Subtraktion
L "Globaler DB10".ANALOGWERT_BEARB;
L 1.000000e+000;
-R ;
T "Globaler DB10".ANALOGWERT_BEARB;
NOP 0;
NETWORK
TITLE =Bausteinende
M001: BE ;
END_FUNCTION
FUNCTION "Analog einlesen" : VOID
TITLE =Analog einlesen
AUTHOR : 'Kleißler'
VERSION : 0.1
BEGIN
NETWORK
TITLE =Umschaltung Einrich,- Normalbetrieb
U "Einrichtbetrieb";
SPB M001;
NETWORK
TITLE =Analogwert normieren auf 0...100 für Normalbetrieb
U "immer low";
= L 0.0;
BLD 103;
U "immer high";
SPBNB _001;
CALL "SCALE" (
IN := PEW 800,
HI_LIM := 1.000000e+002,
LO_LIM := 0.000000e+000,
BIPOLAR := L 0.0,
RET_VAL := "Globaler DB10".FC_105_Fehlerinfo,
OUT := "Globaler DB10".ANALOGWERT);
_001: NOP 0;
NETWORK
TITLE =Bausteinende im Normalbetrieb
BEA ;
NETWORK
TITLE =Analogwert normieren auf 0...50 für Einrichtbetrieb
M001: U "immer low";
= L 0.0;
BLD 103;
U "immer high";
SPBNB _002;
CALL "SCALE" (
IN := PEW 800,
HI_LIM := 5.000000e+001,
LO_LIM := 0.000000e+000,
BIPOLAR := L 0.0,
RET_VAL := "Globaler DB10".FC_105_Fehlerinfo,
OUT := "Globaler DB10".ANALOGWERT);
_002: NOP 0;
END_FUNCTION
FUNCTION "Analog ausgeben" : VOID
TITLE =Analogwert ausgeben
AUTHOR : 'Kleißler'
VERSION : 0.1
BEGIN
NETWORK
TITLE =Analogwert normiert (0...100) ausgeben auf PAW 820
U "immer low";
= L 0.0;
BLD 103;
U "immer high";
SPBNB _001;
CALL "UNSCALE" (
IN := "Globaler DB10".ANALOGWERT_BEARB,
HI_LIM := 1.000000e+002,
LO_LIM := 0.000000e+000,
BIPOLAR := L 0.0,
RET_VAL := "Globaler DB10".FC_106_Fehlerinfo,
OUT := PAW 820);
_001: NOP 0;
END_FUNCTION
FUNCTION "ML steuern" : VOID
TITLE =ML Steuern
AUTHOR : 'Kleißler'
VERSION : 0.1
BEGIN
NETWORK
TITLE =HM n=0 anfahren
U "HM Anlage gegen n=0";
U "Takt 1s (1Hz)";
= "HM_n=0_anf";
NETWORK
TITLE =HM_Anlage EIN
U "HM Anlage EIN_AUS";
= "HM_Anlage EIN";
NETWORK
TITLE =ML Anlage EIN (GN)
O "HM_n=0_anf";
O "HM_Anlage EIN";
= "ML Anlage EIN (GN)";
NETWORK
TITLE =ML Anlage AUS (RD)
UN "HM Anlage EIN_AUS";
UN "HM Anlage gegen n=0";
= "ML Anlage AUS (RD)";
END_FUNCTION
ORGANIZATION_BLOCK "Programmstruktur"
TITLE = "Main Program Sweep (Cycle)"
AUTHOR : 'Kleißler'
VERSION : 0.1
VAR_TEMP
OB1_EV_CLASS : BYTE ; //Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1)
OB1_SCAN_1 : BYTE ; //1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1)
OB1_PRIORITY : BYTE ; //Priority of OB Execution
OB1_OB_NUMBR : BYTE ; //1 (Organization block 1, OB1)
OB1_RESERVED_1 : BYTE ; //Reserved for system
OB1_RESERVED_2 : BYTE ; //Reserved for system
OB1_PREV_CYCLE : INT ; //Cycle time of previous OB1 scan (milliseconds)
OB1_MIN_CYCLE : INT ; //Minimum cycle time of OB1 (milliseconds)
OB1_MAX_CYCLE : INT ; //Maximum cycle time of OB1 (milliseconds)
OB1_DATE_TIME : DATE_AND_TIME ; //Date and time OB1 started
END_VAR
BEGIN
NETWORK
TITLE =Hilfsmerker immer low/high
//CLR setzt das VKE auf den Signalzustand "0"
//SET setzt das VKE auf den Signalzustand "1"
CLR ;
= "immer low";
SET ;
= "immer high";
NETWORK
TITLE =Aufruf allgemeiner Funktionen
CALL "Anlage EIN/AUS" ;
CALL "Analog einlesen" ;
CALL "Analog ausgeben" ;
CALL "ML steuern" ;
NETWORK
TITLE =Zeitgesteuerte Aufrufe der Rampenbausteine
//Anstatt des anspringen der Zeitgesteuerten FC´s 2+3+4 über den HW Takt kann auch
//der OB35 (Weckalarm OG) über die HW Projektierung verwendet werden.
U "Takt 0,1s (10Hz)";
FP "HM Flanke M1.1";
= "FM 1.1";
O "FM 1.1";
CC "Ramp_up";
O "FM 1.1";
CC "Ramp_down";
O "FM 1.1";
CC "Ramp_down_folgen";
END_ORGANIZATION_BLOCK