SPS- Programmierung mit ST

nach IEC 61131 mit CODESYS V2.3, CODESYS V3, e!COCKPIT

Vorlagen Kapitel 14  Kommunikation Controller–Feldbuskoppler, Modbus

  Kopieren Sie den Programmcode und fügen Sie diesen in Ihre Entwicklungsumgebung ein.
      


Aufgabe 14.1 Gebäudeautomatisation mit WAGO I/O Pro

PROGRAM PLC_PRG
(**************************************************************************
Firma: ......
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: Ethernet.lib, mod_com.lib, ModbusEthernet_04.lib
Version: 1.0, Datum: .......
**************************************************************************)
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,
         bUNIT_ID:= ,
         bFUNCTION_CODE:= 23,
         wREAD_ADDRESS:= 16#0000,(*Modbus-Adr. der Slave-Eingänge
                                 (%IW0...%IW5)*)
         wREAD_QUANTITY:= 6,
         ptREAD_DATA:= ADR(Receive_Data),
         wWRITE_ADDRESS:= 16#0200,(*Modbus-Adr. der Slave-Ausgänge
                                  (%QW0...%QW2)*)
         wWRITE_QUANTITY:= 3,
         ptSEND_DATA:= ADR(Transmit_Data),
         xSTART:= TON1.Q,
         xRESET:= ,
         tTIME_OUT:= ,
         wERROR=> ,
         xREADY=> ,
         bRESPONSE_UNIT_ID=> );
(* 2. Etage: Büro 1, Beleuchtung ************************************)
(*Slave-Eingänge (Receive_Data) lesen*)
DI_WORD_0:= Receive_Data[0];(*Slave %IX0.0...%IX0.15*)
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;
  

Aufgabe 14.2 Gebäudeautomatisation mit Erweiterung mit WAGO I/O Pro

FUNCTION_BLOCK LICHT_SZENEN
VAR_INPUT
 IN:BOOL;(*Impulse ändern die Ausgangswerte*)
END_VAR
VAR_OUTPUT
 OUT1, OUT2, OUT3:BOOL;
END_VAR
VAR
 CTU1:CTU;(*Instanz*)
 TON1:TON;
END_VAR
CTU1(CU:= IN);
CASE CTU1.CV OF
  0: OUT1 := FALSE;OUT2 := FALSE;OUT3 := FALSE;
  1: OUT1 := FALSE;OUT2 := TRUE;OUT3 := FALSE;
  2: OUT1 := FALSE;OUT2 := TRUE;OUT3 := TRUE;
  3: OUT1 := TRUE;OUT2 := TRUE;OUT3 := FALSE;
  4: OUT1 := TRUE;OUT2 := FALSE;OUT3 := TRUE;
  5: OUT1 := TRUE;OUT2 := TRUE;OUT3 := TRUE;
END_CASE;
IF CTU1.CV > 5 THEN
  CTU1.RESET:=TRUE;
 ELSE CTU1.RESET:=FALSE;
END_IF
(*Ausschalten
TON1(IN:= IN, PT:=T#1s);
IF TON1.Q THEN
  CTU1.RESET:= TRUE;
END_IF;*)
  


© Vogel Buchverlag