Kommunikation Modbus/TCP Siemens: Unterschied zwischen den Versionen

Aus wiki.vistera.de
Zur Navigation springen Zur Suche springen
Kieran (Diskussion | Beiträge)
Markierung: visualeditor
Keine Bearbeitungszusammenfassung
Markierung: visualeditor
 
Zeile 24: Zeile 24:
Im statischen Bereich in dem jeweiligen IDB gibt es eine Variable "MB_Unit_ID".
Im statischen Bereich in dem jeweiligen IDB gibt es eine Variable "MB_Unit_ID".


Ihr Startwert lautet '''16#FF.''' Mit diesem Startwert funktionert aber die Kommunikation nicht.
Ihr Startwert lautet '''16#FF.''' Mit diesem Startwert funktionert aber die Kommunikation nicht.  
 


Startwert mit '''16#01''' belegen. (siehe TIA V15 Projekt EV Leverkusen)


<br />
<br />
Zeile 49: Zeile 49:
Vorgehensweise findest du gut beschrieben in der Siemens-Hilfe zu dem Baustein.
Vorgehensweise findest du gut beschrieben in der Siemens-Hilfe zu dem Baustein.


=== Wichtige Hinweise ===
===Wichtige Hinweise===


==== CONNECT ====
====CONNECT====
Am "CONNECT" Eingang des "MB_Server" Bausteines muss auf eine "TCON_IP_v4" Struktur in einem
Am "CONNECT" Eingang des "MB_Server" Bausteines muss auf eine "TCON_IP_v4" Struktur in einem


Datenbaustein verwiesen werden.
Datenbaustein verwiesen werden.


==== TCON_IP_v4 ====
====TCON_IP_v4====
Die TCON_IP_v4 Struktur muss wie folgt belegt werden:
Die TCON_IP_v4 Struktur muss wie folgt belegt werden:
{| class="wikitable"
{| class="wikitable"
Zeile 101: Zeile 101:
|}
|}


=== Möglichkeit 1 - Direkter Zugriff auf verschiedene Datenbereiche ===
===Möglichkeit 1 - Direkter Zugriff auf verschiedene Datenbereiche===
Normalerweise wird am Eingang "MB_HOLD_REG" auf einen einzigen Datenbaustein verwiesen,
Normalerweise wird am Eingang "MB_HOLD_REG" auf einen einzigen Datenbaustein verwiesen,


Zeile 110: Zeile 110:
mit einer temporären Variable (Word) verknüpft werden, weil dieser nicht weiter berücksichtigt wird.
mit einer temporären Variable (Word) verknüpft werden, weil dieser nicht weiter berücksichtigt wird.


==== Datenbereiche festlegen ====
====Datenbereiche festlegen====
Im Instanzdatenbaustein des "MB_Server" Funktionsbausteines kann man unter "Data_Area_Array" bis zu 8
Im Instanzdatenbaustein des "MB_Server" Funktionsbausteines kann man unter "Data_Area_Array" bis zu 8


Zeile 143: Zeile 143:
|}
|}


==== Beispiel ====
====Beispiel====
Es sollen in diesem Beispiel folgende Daten übertragen werden:
Es sollen in diesem Beispiel folgende Daten übertragen werden:


* 16 Befehle empfangen
*16 Befehle empfangen
* 16 Sollwerte empfangen
*16 Sollwerte empfangen
* 32 Meldungen senden
*32 Meldungen senden
* 32 Messwerte senden
*32 Messwerte senden


Hierfür wird jeweils ein Datenbaustein (kein optimierter Zugriff) erstellt:
Hierfür wird jeweils ein Datenbaustein (kein optimierter Zugriff) erstellt:

Aktuelle Version vom 17. Februar 2022, 10:20 Uhr

Modbus-Client[Bearbeiten]

Baustein[Bearbeiten]

Name Beschreibung Version
MB_CLIENT Als Modbus-TCP-Client über PROFINET kommunizieren 5.0


Als Modbus-Client können Daten von einem Server gelesen oder geschrieben werden.

Vorgehensweise findest du gut beschrieben in der Siemens-Hilfe zu dem Baustein.

Wichtige Hinweise[Bearbeiten]

MB_Unit_ID[Bearbeiten]

Im statischen Bereich in dem jeweiligen IDB gibt es eine Variable "MB_Unit_ID".

Ihr Startwert lautet 16#FF. Mit diesem Startwert funktionert aber die Kommunikation nicht.

Startwert mit 16#01 belegen. (siehe TIA V15 Projekt EV Leverkusen)


Modbus-Server[Bearbeiten]

Baustein[Bearbeiten]

Name Beschreibung Version
MB_Server Als Modbus-TCP-Server über PROFINET kommunizieren 5.0


Als Modbus-Server können Daten einem Client zur Verfügung gestellt werden.

Vorgehensweise findest du gut beschrieben in der Siemens-Hilfe zu dem Baustein.

Wichtige Hinweise[Bearbeiten]

CONNECT[Bearbeiten]

Am "CONNECT" Eingang des "MB_Server" Bausteines muss auf eine "TCON_IP_v4" Struktur in einem

Datenbaustein verwiesen werden.

TCON_IP_v4[Bearbeiten]

Die TCON_IP_v4 Struktur muss wie folgt belegt werden:

Name Datentyp Wert Beschreibung
InterfaceId HW_Any Hardwarekennung der Modbus TCP Schnittstelle
ID CONN_OUC 1 Verbindungsnummer (falls mehrere Verbindungen aufgebaut werden)
ConnectionType Byte 11 Verbindungstyp (11 = TCP/IP / 19 = UDP)
ActiveEstablished Bool False Aktiver Verbindungsaufbau (beim MB_Server immer False)
RemoteAddress IP_V4 IP-Adresse des Modbus TCP Client
RemotePort UInt 0 Remote UDP/TCP Port
LocalPort UInt 502 Lokaler UDP/TCP Port

Möglichkeit 1 - Direkter Zugriff auf verschiedene Datenbereiche[Bearbeiten]

Normalerweise wird am Eingang "MB_HOLD_REG" auf einen einzigen Datenbaustein verwiesen,

in welchem die Datenpunkte liegen. Es gibt aber auch die Möglichkeit auf verschiedene Datenbausteine

zu verweisen (z.B. Bitsignale senden, Bitsignale empfangen usw.). Hierfür kann der "MB_HOLD_REG" einfach

mit einer temporären Variable (Word) verknüpft werden, weil dieser nicht weiter berücksichtigt wird.

Datenbereiche festlegen[Bearbeiten]

Im Instanzdatenbaustein des "MB_Server" Funktionsbausteines kann man unter "Data_Area_Array" bis zu 8

Datenbereiche bzw. verschiedene Datenbausteine angeben. Dafür muss man folgende Dinge eingeben:

Name Datentyp Wert Beschreibung
data_type UInt 0-4 Kennung für den Modbus Datentype (0 = Leeres Feld / 1 = Prozessabbild der Ausgänge /

2 = Prozessabbild der Eingänge / 3 = Holding-Register / 4 = Input Register)

db UInt 1 bis 60999 Nummer des Datenbausteines.
start UInt 0 bis 65535 Erste Modbus - Adresse die im Datenbaustein ab 0.0 abgebildet wird.
length UInt 1 bis 65535 Anzahl der Bits / Anzahl der Werte.

Beispiel[Bearbeiten]

Es sollen in diesem Beispiel folgende Daten übertragen werden:

  • 16 Befehle empfangen
  • 16 Sollwerte empfangen
  • 32 Meldungen senden
  • 32 Messwerte senden

Hierfür wird jeweils ein Datenbaustein (kein optimierter Zugriff) erstellt:

16 Befehle empfangen
Name Offset Datentyp
BIT_Input 0.0 Array[0..15] of Bool
reserved 2.0 Word
16 Sollwerte empfangen
Name Offset Datentyp
WORD_Input 0.0 Array[0..15] of Word
reserved 32.0 Word
32 Meldungen senden
Name Offset Datentyp
BIT_Output 0.0 Array[0..31] of Bool
reserved 4.0 Word
32 Messwerte senden
Name Offset Datentyp
WORD_Output 0.0 Array[0..31] of Word
reserved 64.0 Word