| Aufgaben 14.1 |
Gebäudeautomatisation
mit WAGO I/O Pro
PROGRAM PLC_PRG
(*Funktion: Kommunikation Controller-Feldbuskoppler.
1.) Liest vom Slave 192.168.0.109 die Eingangswerte und
schreibt
diese in Receive_Data[]
2.) Schreibt von ADR(Transmit_Data) Werte in die
Ausgänge von
192.168.0.109
Bibliotheken: ModbusEthernet_04.lib, Ethernet.lib, mod_com.lib*)
VAR
(*2. Etage: Slave über Modbus lesen und beschreiben*)
KOMMU_E2: ETHERNET_MODBUSMASTER_UDP;(*Instanz für
die Kommunikation*)
Receive_Data: ARRAY [0..5] OF WORD;(*Empfangsdaten*)
Transmit_Data: ARRAY [0..2] OF WORD;(*Sendedaten*)
TON1: TON;
(*Slave-Eingänge*)
x2S1, x2S2: BOOL;
DI_WORD_0: WORD;
(*Slave-Ausgänge*)
x2E1: BOOL;
x2E2: BOOL;
DO_WORD_0: WORD;
END_VAR
(*2. Etage: Slave über Modbus alle 0.1s lesen und
beschreiben*)
TON1(IN:= KOMMU_E2.xREADY, PT:= T#0.1s);
KOMMU_E2(
strIP_ADDRESS:='192.168.0.109',
wPORT:=
502,
bFUNCTION_CODE:=
23,
wREAD_ADDRESS:=
16#0000,(*Modbus-Adr. der Slave-Eingänge*)
wREAD_QUANTITY:=
6,
ptREAD_DATA:=
ADR(Receive_Data),
wWRITE_ADDRESS:=
16#0200,(*Modbus-Adr. der Slave-Ausgänge*)
wWRITE_QUANTITY:=
3,
ptSEND_DATA:=
ADR(Transmit_Data),
xSTART:=
TON1.Q,);
(*2. Etage: Büro 1, Beleuchtung*)
DI_WORD_0:= Receive_Data[0];(*Slave-Eingänge lesen *)
x2S1:= DI_WORD_0.0;(*Bit 0*)
x2S2:= DI_WORD_0.1;
(*Verarbeiten*)
x2E1:= x2S1 XOR x2S2;
x2E2:= x2E1;
(*Slave-Ausgänge (Transmit_Data) beschreiben*)
DO_WORD_0.0:= x2E1;(*in Bit 0 schreiben*)
DO_WORD_0.1:= x2E2;
Transmit_Data[0]:= DO_WORD_0;
|
| Aufgaben 14.2 |
Gebäudeautomatisation,
Erweiterung mit WAGO I/O Pro Passen Sie die
Steuerungskonfiguration des Controllers, die IEC-Adressen
und IP-Adresse an Ihre Automatisierungsgeräte an!
PROGRAM PLC_PRG
(*************************************************************************
Funktion: Kommunikation Controller-Feldbuskoppler.
1.) Liest vom Feldbuskoppler die Eingangswerte und
schreibt diese in
Receive_Data[]
2.) Schreibt von ADR(Transmit_Data) Werte in die
Ausgänge vom
Feldbuskoppler
Die Ein- und Ausgänge der Feldbuskoppler werden nicht
über IEC-Adressen,
sondern über die Modbus-Adressen angesprochen.
Bibliotheken: Ethernet.lib, mod_com.lib, ModbusEthernet_04.lib
Firma: xxxx, Version: 1.0, Datum: xxxx
*************************************************************************)
VAR
(*1. Etage*)
x1S1 AT %IX2.0:BOOL; (*Abwesenheitsschalter*)
(*2. Etage*)
KOMMU_E2: ETHERNET_MODBUSMASTER_UDP;
Receive_Data : ARRAY [0..5] OF WORD;
Transmit_Data: ARRAY [0..5] OF WORD;
T1: TON;
LICHT_SZENE_1:LICHT_SZENE;
(*Slave-Eingänge*)
x2S1, x2S2: BOOL; (*Schalter im Büro1*)
x2S3, x2S3visual:BOOL; (*Taster im Besprechungsraum*)
DI_WORD_0: WORD;
(*Slave-Ausgänge*)
x2E1, x2E2: BOOL; (*Leuchten im Büro1*)
x2E3, x2E4, x2E5: BOOL; (*Leuchten im
Besprechungsraum*)
DO_WORD_0: WORD;
Fehler: BOOL;(*Netzwerkunterbrechung*)
END_VAR
(*2. Etage: Slave über Modbus/TCP lesen und schreiben*)
T1(IN:= KOMMU_E2.xREADY, PT:= T#0.1s );
KOMMU_E2(
strIP_ADDRESS:='192.168.0.109',
wPORT:=
502,
bFUNCTION_CODE:=
23,
wREAD_ADDRESS:=
16#0000,(*Modbus-Adr. der Eingangs-
register
(%IW0 ...)*)
wREAD_QUANTITY:=
6,
ptREAD_DATA:=
ADR(Receive_Data),
wWRITE_ADDRESS:=
16#0200,
wWRITE_QUANTITY:=
6,
ptSEND_DATA:=
ADR(Transmit_Data),
xSTART:=T1.Q);
(*2. Etage: Beleuchtung*)
(*Slave-Eingänge (Receive_Data) lesen*)
DI_WORD_0:= Receive_Data[0];(*Slave DI1...(%IX0.0...)*)
x2S1:= DI_WORD_0.0;(*Bit 0*)
x2S2:= DI_WORD_0.1;
x2S3:= DI_WORD_0.2;
(*Verarbeiten*)
IF NOT x1S1 THEN
(*Büro 1*)
x2E1:= x2S1 XOR x2S2;
x2E2:= x2E1;
(*Besprechungsraum: Lichtszene schalten*)
LICHT_SZENE_1(IN:= x2S3 OR x2S3visual);
x2E3:= LICHT_SZENE_1.OUT1;
x2E4:= LICHT_SZENE_1.OUT2;
x2E5:= LICHT_SZENE_1.OUT3;
(*Slave-Ausgänge DO1...(Transmit_Data) beschreiben*)
DO_WORD_0.0:= x2E1;(*in Bit 0 schreiben*)
DO_WORD_0.1:= x2E2;
DO_WORD_0.2:= x2E3;
DO_WORD_0.3:= x2E4;
DO_WORD_0.4:= x2E5;
ELSE
DO_WORD_0:= 0;
END_IF;
Transmit_Data[0]:= DO_WORD_0;
(*Netzwerkunterbrechung*)
IF KOMMU_E2.wERROR = 153 THEN
Fehler:= TRUE;
ELSE Fehler:=FALSE;
END_IF;
|