close

Anmelden

Neues Passwort anfordern?

Anmeldung mit OpenID

Enterprise Mobility-Dienste Zeit

EinbettenHerunterladen
FAQ 09/2014
MODBUS-TCP mit den
Anweisungen MB_CLIENT
und MB_SERVER
S7-1500 CPU und S7-1200 CPU
http://support.automation.siemens.com/WW/view/de/102020340
Dieser Beitrag stammt aus dem Siemens Industry Online Support. Es gelten die
dort genannten Nutzungsbedingungen (www.siemens.com/nutzungsbedingungen).
Securityhinweise
Siemens bietet Produkte und Lösungen mit Industrial Security-Funktionen an,
die den sicheren Betrieb von Anlagen, Lösungen, Maschinen, Geräten und/oder
Netzwerken unterstützen. Sie sind wichtige Komponenten in einem
ganzheitlichen Industrial Security-Konzept. Die Produkte und Lösungen von
Siemens werden unter diesem Gesichtspunkt ständig weiterentwickelt. Siemens
empfiehlt, sich unbedingt regelmäßig über Produkt-Updates zu informieren.
Für den sicheren Betrieb von Produkten und Lösungen von Siemens ist es
erforderlich, geeignete Schutzmaßnahmen (z. B. Zellenschutzkonzept) zu
ergreifen und jede Komponente in ein ganzheitliches Industrial Security-Konzept
zu integrieren, das dem aktuellen Stand der Technik entspricht. Dabei sind auch
eingesetzte Produkte von anderen Herstellern zu berücksichtigen.
Weitergehende Informationen über Industrial Security finden Sie unter
http://www.siemens.com/industrialsecurity.
Siemens AG 2014 All rights reserved
Um stets über Produkt-Updates informiert zu sein, melden Sie sich für unseren
produktspezifischen Newsletter an. Weitere Informationen hierzu finden Sie
unter http://support.automation.siemens.com.
Inhaltsverzeichnis
1
Einleitung ........................................................................................................... 3
2
Anwenderprogramm der S7-1500 CPU ............................................................ 4
2.1
2.1.1
2.1.2
2.1.3
2.1.4
2.1.5
2.2
2.2.1
2.2.2
2.2.3
2.2.4
2.3
3
S7-1500 CPU: Modbus TCP-Client ...................................................... 4
FC100 „FC100_Modbus_Client“ .......................................................... 4
Ein- und Ausgangsparameter der Anweisung „MB_CLIENT“ .............. 6
Parameter MB_MODE und MB_DATA_ADDR .................................... 7
Datenstruktur am Parameter CONNECT der Anweisung
„MB_CLIENT“ ....................................................................................... 8
Parameter MB_DATA_PTR ................................................................. 9
S7-1500 CPU: Modbus TCP-Server .................................................... 9
FC200 „FC200_Modbus_Server“ ......................................................... 9
Ein- und Ausgangsparameter der Anweisung „MB_SERVER“ .......... 11
Parameter MB_HOLD_REG .............................................................. 12
Datenstruktur am Parameter CONNECT der Anweisung
„MB_SERVER“ ................................................................................... 13
Aufbau der Struktur „TCON_IP_v4“ ................................................... 13
Anwenderprogramm der S7-1200 CPU .......................................................... 15
3.1
3.1.1
3.1.2
3.1.3
3.2
3.2.1
3.2.2
3.2.3
S7-1200: Modbus TCP-Server ........................................................... 15
FC100 „FC100_MB_SERVER“ .......................................................... 15
Ein- und Ausgangsparameter der Anweisung „MB_SERVER“ .......... 16
Parameter MB_HOLD_REG .............................................................. 17
S7-1200: Modbus TCP-Client ............................................................ 18
FC200 „FC200_MB_CLIENT“ ............................................................ 18
Ein- und Ausgangsparameter der Anweisung „MB_CLIENT“ ............ 20
Parameter MB_DATA_PTR ............................................................... 21
MODBUS-TCP mit den Anweisung MB_CLIENT und MB_SERVER
Beitrags-ID: 102020340, V1.0, 09/2014
2
1 Einleitung
1
Einleitung
Vorgeführt wird die Modbus-TCP-Kommunikation zwischen S7-1500 CPU und
S7-1200 CPU.
Im Anwenderprogramm der S7-1200 CPU und S7-1500 CPU werden die
Anweisungen „MB_CLIENT“ und „MB_SERVER“ aufgerufen und parametriert.
Die Anweisung „MB_CLIENT“ kommuniziert als Modbus TCP-Client über die
PROFINET-Verbindung der CPU. Zur Verwendung der Anweisung benötigen Sie
kein zusätzliches Hardwaremodul. Über die Anweisung „MB_CLIENT“ bauen Sie
eine Verbindung zwischen den Client und Server auf, senden Anfragen und
empfangen Antworten und steuern den Verbindungsabbau.
Die Anweisung „MB_SERVER“ kommuniziert als Modbus TCP-Server über die
PROFINET-Verbindung der CPU. Zur Verwendung der Anweisung benötigen Sie
kein zusätzliches Hardwaremodul. Die Anweisung „MB_SERVER“ verarbeitet
Verbindungsanfragen eines Modbus TCP-Client, empfängt Anfragen von ModbusFunktionen und sendet Antwort-Meldungen.
Siemens AG 2014 All rights reserved
In diesem Beispiel wird eine Modbus-Funktion über zwei Modbus-TCPVerbindungen demonstriert.
Die erste Verbindung baut die S7-1500 CPU als Modbus TCP-Client auf. Die
S7-1200 CPU ist Modbus TCP-Server.
Die zweite Verbindung baut die S7-1200 CPU als Modbus TCP-Client auf. Die
S7-1500 CPU ist Modbus TCP-Server.
Die Modbus-TCP-Verbindungen werden jeweils über ein Modbus-Bausteinpärchen
(MB_CLIENT und MB_SERVER) aufgebaut.
Abbildung 1-1 zeigt eine Übersicht der demonstrierten Modbus-Funktion und
Modbus TCP-Verbindungen sowie die Zuordnung der Bausteinpärchen.
Abbildung 1-1
FC100_
Modbus_
Client
[FC100]
MB_
CLIENT
DB100_
Modbus
[DB100]
Main
[OB1]
FC200_
Modbus_
Server
[FC200]
FC100_
MB_SERVER
[FC100]
TCP-Verbindung (ID=1)
Modbus-Funktion: 03
Halteregister schreiben
MB_
SERVER
DB100_
Modbus
[DB100]
Main
[OB1]
FC200_
MB_CLIENT
[FC200]
MB_
SERVER
MB_
CLIENT
TCP-Verbindung (ID=2)
Modbus-Funktion: 03
Halteregister lesen
Anwenderprogramm
S7-1500 CPU
(Modbus-Client/
Modbus-Server)
Systembausteine
Datenbausteine
MODBUS-TCP mit den Anweisung MB_CLIENT und MB_SERVER
Beitrags-ID: 102020340, V1.0, 09/2014
Anwenderprogramm
S7-1200 CPU
(Modbus-Server/
Modbus-Client)
Systembausteine
Datenbausteine
3
2 Anwenderprogramm der S7-1500 CPU
2
Anwenderprogramm der S7-1500 CPU
Im Anwenderprogramm der S7-1500 CPU wird die Anweisung „MB_CLIENT“ und
„MB_SERVER“ für jede Modbus-TCP-Verbindung mit einer eindeutigen ID und
einem eigenen Instanz- Datenbaustein aufgerufen. Der Aufruf der Anweisung
„MB_CLIENT“ und „MB_SERVER“ erfolgt jeweils in einer eigenen Funktion.
Als Modbus TCP-Client baut die die S7-1500 CPU die Verbindung zum Modbus
TCP-Server (S7-1200 CPU) auf und sendet die Anfrage zum Lesen des
Halteregisters.
Tabelle 2-1
ID
1
Aufruf der Anweisung
„MB_CLIENT“
Instanz-DB der
Anweisung
„MB_CLIENT“
FC100 „FC100_Modbus_Client“
DB3 „iDB_Modbus_Client“
Beschreibung
Halteregister
lesen
Als Modbus TCP-Server verarbeitet die S7-1500 CPU die Verbindungsanfrage des
Modbus TCP-Client (S7-1200 CPU) und empfängt die Anfrage zum Lesen des
Halteregisters.
Tabelle 2-2
Siemens AG 2014 All rights reserved
ID
2
Aufruf der Anweisung
„MB_SERVER“
FC200
„FC200_Modbus_Server“
Instanz-DB der
Anweisung
„MB_SERVER“
DB4 „iDB_Modbus_Server“
2.1
S7-1500 CPU: Modbus TCP-Client
2.1.1
FC100 „FC100_Modbus_Client“
Beschreibung
Halteregister
lesen
Die Funktion FC100 „FC100_Modbus_Client“ ruft intern die Anweisung
„MB_CLIENT“ auf, um die Modbus-TCP-Verbindung mit der ID=1 aufzubauen und
das Halteregister des Modbus-TCP-Server zu lesen.
Die Kommunikationsanfrage zum Lesen des Halteregisters wird über zwei
Variablen gesteuert:
„DB100_Modbus“.INO_MB_CLIENT.REQ am Eingangsparameter REQ
„DB100_Modbus“.INO_MB_CLIENT.EN am Eingangsparameter EN
In diesem Beispiel wird die Modbus-TCP-Verbindung mit der
Verbindungsnummer=1 zum Port 502 des Modbus-TCP-Server aufgebaut. Der
Modbus-TCP-Server hat die IP-Adresse 192.168.0.12.
Es werden 10 Datenwörter aus dem Halteregister gelesen. Dafür parametrieren
Sie die Eingangsparameter MB_MODE, MB_DATA_ADDR und MB_DATA_LEN
wie folgt:
MB_MODE = 0
MB_DATA_ADDR = 40001
MB_DATA_LEN = 10
Hinweis
Im Kapitel 2.1.3 finden Sie eine ausführliche Beschreibung der Parameter
MB_MODE und MB_ADDR.
MODBUS-TCP mit den Anweisung MB_CLIENT und MB_SERVER
Beitrags-ID: 102020340, V1.0, 09/2014
4
2 Anwenderprogramm der S7-1500 CPU
Abbildung 2-1 zeigt den Aufruf und die Parametrierung der Anweisung
„MB_CLIENT“ im FC100.
Siemens AG 2014 All rights reserved
Abbildung 2-1
Hinweis
Im Kapitel 2.1.2 finden Sie eine Übersicht und Beschreibung der Ein- und
Ausgangsparameter der Anweisung „MB_CLIENT“.
MODBUS-TCP mit den Anweisung MB_CLIENT und MB_SERVER
Beitrags-ID: 102020340, V1.0, 09/2014
5
2 Anwenderprogramm der S7-1500 CPU
2.1.2
Ein- und Ausgangsparameter der Anweisung „MB_CLIENT“
Eingangsparameter
Die Anweisung „MB_CLIENT“ hat folgende Eingangsparameter.
Tabelle 2-3
Siemens AG 2014 All rights reserved
Eingangsparameter
Datentyp
Beschreibung
REQ
BOOL
Kommunikationsanfrage mit dem
Modbus-TCP-Server
Der Parameter REQ ist pegelgesteuert. D. h.,
solange der Eingang gesetzt ist (REQ=true),
sendet die Anweisung Kommunikationsanfragen.
Mit der Kommunikationsanfrage wird der
Instanz-DB für andere Clients gesperrt.
Änderungen an den Eingangsparametern
wirken sich erst aus, wenn Antwort des
Servers erfolgt ist oder eine
Fehlermeldung ausgegeben wurde.
Wird während einer laufenden ModbusAnfrage der Parameter REQ erneut
gesetzt, wird im Anschluss keine weitere
Übertragung durchgeführt.
DISCONNECT
BOOL
Über den Parameter steuern Sie den
Verbindungsaufbau und Verbindungsabbau zu
dem Modbus-Server.
0: Kommunikationsverbindung zu dem
am Parameter CONNECT konfigurierten
Verbindungspartner herstellen.
1: Kommunikationsverbindung trennen.
Während des Verbindungsabbaus wird
keine andere Funktion ausgeführt. Nach
dem erfolgreichen Abbau der Verbindung
wird am Parameter STATUS der Wert
w#16#0003 ausgegeben.
Ist der Parameter REQ beim
Verbindungsaufbau gesetzt, wird die ModbusAnfrage sofort gesendet.
MB_MODE
USINT
Auswahl des Modus der Modbus-Anfrage
(Lesen, Schreiben oder Diagnose)
Im Kapitel 2.1.3 finden Sie eine ausführliche
Beschreibung des Parameters MB_MODE.
MB_DATA_ADDR
UDINT
Anfangsadresse der Daten, auf welche die
Anweisung “MB_CLIENT” zugreift.
Im Kapitel 2.1.3 finden Sie eine ausführliche
Beschreibung des Parameters
MB_DATA_ADDR.
MB_DATA_LEN
UINT
Datenlänge: Anzahl der Bits oder Wörter für
den Datenzugriff.
MODBUS-TCP mit den Anweisung MB_CLIENT und MB_SERVER
Beitrags-ID: 102020340, V1.0, 09/2014
6
2 Anwenderprogramm der S7-1500 CPU
Eingangsparameter
Datentyp
Beschreibung
VARIANT
Zeiger auf das Modbus-Datenregister. Das
Register ist ein Puffer für die vom Modbus
TCP-Server empfangenen oder zum Modbus
TCP-Server zu sendenden Daten. Der Zeiger
muss auf einen globalen Datenbaustein (DB)
mit Standardzugriff verweisen.
In diesem Beispiel verweist der Zeiger auf den
DB100 „DB100_Modbus“ (siehe Kapitel 2.1.5)
CONNECT
VARIANT
Zeiger auf die Struktur der Verbindungsbeschreibung.
Die folgenden Strukturen (Systemdatentypen)
können verwendet werden:
TCON_IP_v4: Enthält alle Adressierungsparameter, die für den Aufbau einer
programmierten Verbindung benötigt
werden. Bei Verwendung von
TCON_IP_v4 wird die Verbindung beim
Aufruf der Anweisung „MB_CLIENT“
hergestellt.
TCON_Configured: Enthält die
Adressierungsparameter einer
konfigurierten Verbindung. Bei
Verwendung von TCON_Configured wird
eine vorhandene Verbindung genutzt, die
nach dem Laden der HardwareKonfiguration durch die CPU hergestellt
wurde.
In diesem Beispiel wird die Struktur
TCON_IP_v4 verwendet. Im Kapitel 2.1.4 und
2.3 wird der Aufbau der Struktur TCON_IP_v4
beschrieben.
Siemens AG 2014 All rights reserved
MB_DATA_PTR
Ausgangsparameter
Die Anweisung „MB_CLIENT“ hat folgende Ausgangsparameter.
Tabelle 2-4
Ausgangsparameter
2.1.3
Datentyp
Beschreibung
DONE
BOOL
Das Bit am Ausgangsparameter DONE wird
auf „1“ gesetzt, sobald der letzte Auftrag ohne
Fehler ausgeführt wurde.
BUSY
BOOL
0: Keine Modbus-Anfrage in Bearbeitung
1: Modbus-Anfrage wird bearbeitet
ERROR
BOOL
0: Kein Fehler
1: Fehler aufgetreten. Die Fehlerursache
wird über den Parameter STATUS
angezeigt.
STATUS
WORD
Detaillierte Statusinformation der Anweisung
Parameter MB_MODE und MB_DATA_ADDR
Die Anweisung „MB_CLIENT“ verwendet anstelle eines Funktionscodes den
Parameter MB_MODE. Über den Parameter MB_DATA_ADDR legen Sie die
Modbus-Startadresse der Daten fest, auf die Sie zugreifen möchten. Die
Kombination der Parameter MB_MODE, MB_DATA_ADDR und MB_DATA_LEN
legt den Funktionscode fest, der im aktuellen Modbus-Telegramm verwendet wird.
MODBUS-TCP mit den Anweisung MB_CLIENT und MB_SERVER
Beitrags-ID: 102020340, V1.0, 09/2014
7
2 Anwenderprogramm der S7-1500 CPU
Tabelle 2-5 zeigt den Zusammenhang zwischen den Eingangsparametern der
Funktion „MB_CLIENT“ und der Modbus-Funktion.
Tabelle 2-5
MB_MODE
MB_DATA_ADDR
0
Anfangsadresse:
40001 bis
49999
400001 bis
465535
1
Anfangsadresse:
40001 bis
49999
400001 bis
465535
Siemens AG 2014 All rights reserved
2.1.4
MB_DATA_LEN
Datenlänge
(WORD) pro Aufruf:
1 bis 125
ModbusFunktion
03
2 bis 123
Halteregister
lesen
0 bis 9998
0 bis 65534
1 bis 125
Datenlänge
(WORD) pro Aufruf:
2 bis 123
Funktion und
Datentyp
16
Mehrere Halteregister schreiben
0 bis 9998
0 bis 65534
Datenstruktur am Parameter CONNECT der Anweisung „MB_CLIENT“
Verwenden Sie für programmierte Verbindungen am Parameter CONNECT
folgende Struktur zur Verbindungsbeschreibung nach TCON_IP_v4.
Achten Sie darauf, in der Struktur TCON_IP_v4 nur Verbindungen vom Typ
TCP anzugeben.
Die Verbindung darf die folgenden TCP-Port-Nummern nicht verwenden: 20,
21, 25, 80, 102, 123, 5001, 34963 und 34964.
Die folgende Abbildung zeigt den Aufbau der Struktur TCON_IP_v4 mit dem
Namen „To_S71200“. Diese Struktur geben Sie am Parameter CONNECT der
Anweisung „MB_CLIENT“ an. Eine Beschreibung der Parameter der Struktur
„TCON_IP_v4“ finden Sie in Tabelle 2-10.
Abbildung 2-2
MODBUS-TCP mit den Anweisung MB_CLIENT und MB_SERVER
Beitrags-ID: 102020340, V1.0, 09/2014
8
2 Anwenderprogramm der S7-1500 CPU
2.1.5
Parameter MB_DATA_PTR
Am Parameter MB_DATA_PTR geben Sie den Puffer für die vom
Modbus TCP-Server empfangenen Daten an. Die aus dem Halteregister gelesenen
Daten werden im DB100 „DB100_Modbus“ ab Adresse 18 gespeichert.
Tabelle 2-6
Variablenname
HoldingRegister_MBClient
Datentyp
Array [0..9] of Word
2.2
S7-1500 CPU: Modbus TCP-Server
2.2.1
FC200 „FC200_Modbus_Server“
Adresse im DB100
18.0
Die Funktion FC200 „FC200_Modbus_Server“ ruft intern die Anweisung
„MB_SERVER“ auf, um die Verbindungsanfrage zum Lesen des Halteregisters zu
verarbeiten. Die Verbindungsanfrage erfolgt über die Modbus-TCP-Verbindung mit
der ID=2 und den Port 503.
Siemens AG 2014 All rights reserved
Abbildung 2-3 zeigt den Aufruf und die Parametrierung der Anweisung
„MB_SERVER“ im FC200.
Abbildung 2-3
MODBUS-TCP mit den Anweisung MB_CLIENT und MB_SERVER
Beitrags-ID: 102020340, V1.0, 09/2014
9
2 Anwenderprogramm der S7-1500 CPU
Im Kapitel 2.2.2 finden Sie eine Übersicht und Beschreibung der Ein- und
Ausgangsparameter der Anweisung „MB_SERVER“.
Siemens AG 2014 All rights reserved
Hinweis
MODBUS-TCP mit den Anweisung MB_CLIENT und MB_SERVER
Beitrags-ID: 102020340, V1.0, 09/2014
10
2 Anwenderprogramm der S7-1500 CPU
2.2.2
Ein- und Ausgangsparameter der Anweisung „MB_SERVER“
Eingangsparameter
Die Anweisung „MB_SERVER“ hat folgende Eingangsparameter.
Tabelle 2-7
Siemens AG 2014 All rights reserved
Eingangsparameter
Datentyp
Beschreibung
DISCONNECT
BOOL
Die Anweisung „MB_SERVER“ geht eine
passive Verbindung mit einer PartnerBaugruppe ein. Der Server reagiert auf eine
Verbindungsanfrage von der IP-Adresse, die
in der Struktur „TCON_IP_v4“ am
Eingangsparameter CONNECT angegeben
ist.
Über diesen Parameter können Sie steuern,
wann die Verbindungsanfrage akzeptiert wird.
0: Wenn keine Kommunikationsversteht,
wird eine passive Verbindung aufgebaut.
1: Initialisierung des Verbindungsabbaus.
Ist der Eingang gesetzt, werden keine
anderen Vorgänge ausgeführt. Nach
erfolgreichem Verbindungsabbau wird am
Ausgangsparameter STATUS der Wert
w#16#0003 ausgegeben.
MB_HOLD_REG
VARIANT
Zeiger auf das Modbus-Halteregister der
Anweisung „MB_SERVER“
Das Halteregister beinhaltet die Werte, auf die
ein Modbus-Client über die Modbus-Funktion
3 (lesen), 6 und 16 (schreiben) zugreifen darf.
Verwenden Sie als Halteregister einen
globalen Datenbaustein (DB) mit optimiertem
Zugriff oder den Speicherbereich der Merker.
Tabelle 2-9 zeigt, wie die Modbus-Adressen
auf das Halteregister für die Modbus-Funktion
3 (WORD lesen) abgebildet werden.
CONNECT
VARIANT
Zeiger auf die Struktur der Verbindungsbeschreibung.
Die folgenden Strukturen (Systemdatentypen)
können verwendet werden:
TCON_IP_v4: Enthält alle Adressierungsparameter, die für den Aufbau einer
programmierten Verbindung benötigt
werden. Bei Verwendung von
TCON_IP_v4 wird die Verbindung beim
Aufruf der Anweisung „MB_SERVER“
hergestellt.
TCON_Configured: Enthält die
Adressierungsparameter einer
konfigurierten Verbindung. Bei
Verwendung von TCON_Configured wird
die Verbindung nach dem Laden der
Hardware-Konfiguration durch die CPU
hergestellt.
In diesem Beispiel wird die Struktur
TCON_IP_v4 verwendet. Im Kapitel 2.2.4 und
2.3 wird der Aufbau der Struktur TCON_IP_v4
beschrieben.
MODBUS-TCP mit den Anweisung MB_CLIENT und MB_SERVER
Beitrags-ID: 102020340, V1.0, 09/2014
11
2 Anwenderprogramm der S7-1500 CPU
Ausgangsparameter
Die Anweisung „MB_SERVER“ hat folgende Ausgangsparameter.
Tabelle 2-8
Siemens AG 2014 All rights reserved
Ausgangsparameter
2.2.3
Datentyp
Beschreibung
NDR
BOOL
„New Data Ready“
0: Keine neue Daten
1: Neue Daten durch den Modbus-TCPClient geschrieben
DR
BOOL
„Data Read“
0: Keine Daten gelesen
1: Daten durch den Modbus-TCP-Client
gelesen
BUSY
BOOL
0: Keine Modbus-Anfrage in Bearbeitung
1: Modbus-Anfrage wird bearbeitet
ERROR
BOOL
Kein Fehler
Fehler aufgetreten. Die Fehlerursache
wird über den Parameter STATUS
angezeigt.
STATUS
WORD
Detaillierte Statusinformation der Anweisung
Parameter MB_HOLD_REG
Die Daten, die aus dem Modbus TCP-Server gelesen oder auf den Modbus TCPServer geschrieben werden, werden im Datenbaustein DB100 „DB100_Modbus“
gespeichert.
Tabelle 2-9 zeigt, wie die Modbus-Adressen auf das Halteregister für die ModbusFunktion 3 (WORD lesen) abgebildet werden.
Tabelle 2-9
Modbus-Adresse
Absolute
Adresse
Symbolischer Name
40001
DB100.DBW56
„DB100_Modbus“.HoldingRegister_MBServer[0]
40002
DB100.DBW58
„DB100_Modbus“.HoldingRegister_MBServer[1]
40003
DB100.DBW60
„DB100_Modbus“.HoldingRegister_MBServer[2]
40004
DB100.DBW62
„DB100_Modbus“.HoldingRegister_MBServer[3]
40005
DB100.DBW64
„DB100_Modbus“.HoldingRegister_MBServer[4]
40006
DB100.DBW66
„DB100_Modbus“.HoldingRegister_MBServer[5]
40007
DB100.DBW68
„DB100_Modbus“.HoldingRegister_MBServer[6]
40008
DB100.DBW70
„DB100_Modbus“.HoldingRegister_MBServer[7]
40009
DB100.DBW72
„DB100_Modbus“.HoldingRegister_MBServer[8]
40010
DB100.DBW74
„DB100_Modbus“.HoldingRegister_MBServer[9]
MODBUS-TCP mit den Anweisung MB_CLIENT und MB_SERVER
Beitrags-ID: 102020340, V1.0, 09/2014
12
2 Anwenderprogramm der S7-1500 CPU
2.2.4
Datenstruktur am Parameter CONNECT der Anweisung
„MB_SERVER“
Verwenden Sie für programmierte Verbindungen am Parameter CONNECT
folgende Struktur zur Verbindungsbeschreibung nach TCON_IP_v4.
Achten Sie darauf, in der Struktur TCON_IP_v4 nur Verbindungen vom Typ
TCP anzugeben.
Die Verbindung darf die folgenden TCP-Port-Nummern nicht verwenden: 20,
21, 25, 80, 102, 123, 5001, 34963 und 34964.
Die folgende Abbildung zeigt den Aufbau der Struktur TCON_IP_v4 mit dem
Namen „From_S71200“. Diese Struktur geben Sie am Parameter CONNECT der
Anweisung „MB_SERVER“ an. Eine Beschreibung der Parameter der Struktur
„TCON_IP_v4“ finden Sie in Tabelle 2-10.
Siemens AG 2014 All rights reserved
Abbildung 2-4
2.3
Aufbau der Struktur „TCON_IP_v4“
Tabelle 2-10 beschreibt die Parameter der Struktur „TCON_IP_v4“.
Tabelle 2-10
Byte
Parameter
Datentyp
Beschreibung
0..1
InterfaceID
HW_ANY
Hardware-Kennung der lokalen Schnittstelle
(Wertebereich: 0 bis 65535)
Die Hardware-Kennung finden Sie in der
Gerätekonfiguration der CPU. Markieren Sie die
PROFINET-Schnittstelle, um im Inspektorfenster die
Eigenschaften der PROFINET-Schnittstelle anzuzeigen.
Im Register „Allgemein“ navigieren zu „HW-Kennung“, um
die Hardware-Kennung zu ermitteln.
2..3
ID
CONN_OUC
Referenz auf diese Verbindung (Wertebereich: 1 bis
4095)
Über den Parameter wird eine Verbindung innerhalb der
CPU eindeutig identifiziert. Jede einzelne Instanz der
Anweisung „MB_CLIENT“ sowie „MB_SERVER“ muss
eine eindeutige ID verwenden.
MODBUS-TCP mit den Anweisung MB_CLIENT und MB_SERVER
Beitrags-ID: 102020340, V1.0, 09/2014
13
2 Anwenderprogramm der S7-1500 CPU
Siemens AG 2014 All rights reserved
Byte
Parameter
Datentyp
Beschreibung
4
ConnectionType
BYTE
Verbindungstyp
Wählen Sie 11 (dezimal) für TCP. Andere
Verbindungstypen sind nicht zulässig.
5
ActiveEstablished
BOOL
Kennung für die Art des Verbindungsaufbaus.
True: aktiver Verbindungsaufbau
False: passiver Verbindungsaufbau
6..9
RemoteAddress
ARRAY[1..4]
of BYTE
IP-Adresse des Verbindungspartners.
10..11
RemotePort
UINT
Port-Nummer des entfernten Verbindungspartners
(Wertebereich: 1 bis49151).
MB_CLIENT: Verwenden Sie die IP-Port-Nummer
des Servers, zu dem der Client die Verbindung
herstellt und über das TCP/IP-Protokoll kommuniziert
MB_SERVER: Verwenden Sie die IP-Port-Nummer
des Clients, von dem die Verbindungsanfrage
akzeptiert werden soll. Soll die Anweisung
„MB_SERVER“ von jedem entfernten Partner
akzeptieren, verwenden Sie als Port-Nummer „0“.
12..13
LocalPort
UINT
Port-Nummer des lokalen Verbindungspartners
(Wertebereich: 1 bis 49151)
MB_CLIENT:
– Port-Nummern: 1 bis 49151
– Beliebiger Port: 0
MB_SERVER: Die Nummer der IP-Ports legt fest,
welcher IP-Port für Verbindungsanfragen des
Modbus-Clients überwacht wird.
MODBUS-TCP mit den Anweisung MB_CLIENT und MB_SERVER
Beitrags-ID: 102020340, V1.0, 09/2014
14
3 Anwenderprogramm der S7-1200 CPU
3
Anwenderprogramm der S7-1200 CPU
Im Anwenderprogramm der S7-1200 CPU wird die Anweisung „MB_CLIENT“ und
„MB_SERVER“ für jede Modbus-TCP-Verbindung mit einer eindeutigen ID und
einem eigenen Instanz- Datenbaustein aufgerufen. Der Aufruf der Anweisung
„MB_CLIENT“ und „MB_SERVER“ erfolgt jeweils in einer eigenen Funktion.
Als Modbus TCP-Server verarbeitet die S7-1200 CPU die Verbindungsanfrage des
Modbus TCP-Client (S7-1500 CPU) und empfängt die Anfrage zum Lesen des
Halteregisters.
Tabelle 3-1
ID
1
Aufruf der Anweisung
„MB_SERVER“
FC100 „FC100_MB_SERVER“
Instanz-DB der
Anweisung
„MB_SERVER“
DB2 „iDB_MB_SERVER“
Beschreibung
Halteregister
lesen
Als Modbus TCP-Client baut die die S7-1200 CPU die Verbindung zum Modbus
TCP-Server (S7-1500 CPU) auf und sendet die Anfrage zum Lesen des
Halteregisters.
Tabelle 3-2
Siemens AG 2014 All rights reserved
ID
2
Aufruf der Anweisung
„MB_CLIENT“
FC200 „FC200_MB_CLIENT“
Instanz-DB der
Anweisung
„MB_CLIENT“
DB3 „iDB_MB_CLIENT“
3.1
S7-1200: Modbus TCP-Server
3.1.1
FC100 „FC100_MB_SERVER“
Beschreibung
Halteregister
lesen
Die Funktion FC100 „FC100_MB_SERVER“ ruft intern die Anweisung
„MB_SERVER“ auf, um die Verbindungsanfrage zum Lesen des Halteregisters zu
verarbeiten. Die Verbindungsanfrage erfolgt über die Modbus-TCP-Verbindung mit
der ID=1 und den Port 502.
MODBUS-TCP mit den Anweisung MB_CLIENT und MB_SERVER
Beitrags-ID: 102020340, V1.0, 09/2014
15
3 Anwenderprogramm der S7-1200 CPU
Abbildung 3-1 zeigt den Aufruf und die Parametrierung der Anweisung
„MB_SERVER“ im FC100.
Siemens AG 2014 All rights reserved
Abbildung 3-1
Hinweis
Im Kapitel 3.1.2 finden Sie eine Übersicht und Beschreibung der Ein- und
Ausgangsparameter der Anweisung „MB_SERVER“.
Parameter MB_HOLD_REG
Der Parameter MB_HOLD_REG ist ein Zeiger auf einen Datenpuffer zur Ablage
der Daten, die von oder auf den Modbus-Server gelesen oder geschrieben wurden.
Als Speicherbereich können Sie einen globalen Datenbaustein oder einen Merker
verwenden. Die folgende Tabelle zeigt, wie die Modbus-Adressen auf das
Halteregister für die Modbus-Funktion 3 (WORD lesen) abgebildet werden.
3.1.2
Ein- und Ausgangsparameter der Anweisung „MB_SERVER“
Eingangsparameter
Die Anweisung „MB_SERVER“ hat folgende Eingangsparameter.
Tabelle 3-3
Eingangsparameter
DISCONNECT
Datentyp
BOOL
Beschreibung
Die Anweisung „MB_SERVER“ geht eine
passive Verbindung mit einer PartnerBaugruppe ein, d. h. der Server reagiert auf
eine TCP-Verbindungsanfrage von jeder
anfragenden IP-Adresse. Über diesen
Parameter können Sie steuern, wann eine
MODBUS-TCP mit den Anweisung MB_CLIENT und MB_SERVER
Beitrags-ID: 102020340, V1.0, 09/2014
16
3 Anwenderprogramm der S7-1200 CPU
Eingangsparameter
Datentyp
Beschreibung
Siemens AG 2014 All rights reserved
Verbindungsanfrage akzeptiert wird.
0: Wenn keine Kommunikationsverbindung
besteht, wird eine passive Verbindung
aufgebaut.
1: Initialisierung des Verbindungsabbaus.
Ist der Eingang gesetzt, werden keine
anderen Vorgänge ausgeführt. Nach
erfolgreichem Verbindungsabbau wird am
Parameter STATUS der Wert 7003
ausgegeben.
CONNECT_ID
UINT
Eindeutige ID zur Identifizierung der
Verbindung. Jeder Instanz der Anweisung
„MB_SERVER“ muss eine eindeutige
Verbindungs- ID zugewiesen werden.
IP_PORT
UINT
Startwert 502
Die Nummer des IP-Ports legt fest, welcher IPPort für Verbindungsanfragen des Modbus
TCP-Clients überwacht wird.
MB_HOLD_REG
VARIANT
Zeiger auf das Modbus-Halteregister der
Anweisung „MB_SERVER“.
Verwenden Sie als Halteregister einen globalen
Datenbaustein mit Standard-Zugriff. Das
Halteregister beinhaltet die Werte, auf die ein
Modbus-Client über die Modbus-Funktionen 3
(lesen), 6 (schreiben) und 16 (schreiben)
zugreifen darf.
Tabelle 3-5 zeigt, wie die Modbus-Adressen auf
das Halteregister für die Modbus-Funktion 3
(WORD lesen) abgebildet werden.
Ausgangsparameter
Die Anweisung „MB_SERVER“ hat folgende Ausgangsparameter.
Tabelle 3-4
Ausgangsparameter
Datentyp
NDR
BOOL
New Data Ready
0: keine neuen Daten
1: neue Daten durch den Modbus-Client
geschrieben
DR
BOOL
Data Read
0: keine neuen Daten gelesen
1: Daten durch den Modbus-Client gelesen
ERROR
STATUS
3.1.3
Beschreibung
Tritt während eines Aufrufs der Anweisung
„MB_SERVER“ ein Fehler auf, wird der
Ausgang am Parameter ERROR auf „1“ gesetzt.
Detailinformationen zur Fehlerursache werden
am Parameter STATUS angezeigt.
WORD
Detaillierte Statusinformation der Anweisung.
Parameter MB_HOLD_REG
Die Daten, die aus dem Modbus TCP-Server gelesen oder auf den Modbus TCPServer geschrieben werden, werden im Datenbaustein DB100 „DB100_Modbus“
gespeichert.
MODBUS-TCP mit den Anweisung MB_CLIENT und MB_SERVER
Beitrags-ID: 102020340, V1.0, 09/2014
17
3 Anwenderprogramm der S7-1200 CPU
Tabelle 3-5 zeigt, wie die Modbus-Adressen auf das Halteregister für die ModbusFunktion 3 (WORD lesen) abgebildet werden.
Tabelle 3-5
Siemens AG 2014 All rights reserved
Modbus-Adresse
Absolute
Adresse
Symbolischer Name
40001
DB100.DBW4
„DB100_Modbus“.HoldingRegister_MBServer[0]
40002
DB100.DBW6
„DB100_Modbus“.HoldingRegister_MBServer[1]
40003
DB100.DBW8
„DB100_Modbus“.HoldingRegister_MBServer[2]
40004
DB100.DBW10
„DB100_Modbus“.HoldingRegister_MBServer[3]
40005
DB100.DBW12
„DB100_Modbus“.HoldingRegister_MBServer[4]
40006
DB100.DBW14
„DB100_Modbus“.HoldingRegister_MBServer[5]
40007
DB100.DBW16
„DB100_Modbus“.HoldingRegister_MBServer[6]
40008
DB100.DBW18
„DB100_Modbus“.HoldingRegister_MBServer[7]
40009
DB100.DBW20
„DB100_Modbus“.HoldingRegister_MBServer[8]
40010
DB100.DBW22
„DB100_Modbus“.HoldingRegister_MBServer[9]
3.2
S7-1200: Modbus TCP-Client
3.2.1
FC200 „FC200_MB_CLIENT“
Die Funktion FC200 „FC200_MB_CLIENT“ ruft intern die Anweisung „MB_CLIENT“
auf, um die Modbus-TCP-Verbindung mit der ID=2 aufzubauen und das
Halteregister zu lesen.
Die Kommunikationsanfrage zum Lesen des Halteregisters wird über zwei
Variablen gesteuert:
„DB100_Modbus“.INO_MB_CLIENT.REQ am Eingangsparameter REQ
„DB100_Modbus“.INO_MB_CLIENT.EN am Eingangsparameter EN
In diesem Beispiel wird die Modbus-TCP-Verbindung mit der
Verbindungsnummer=2 zum Port 503 des Modbus-TCP-Server aufgebaut. Der
Modbus-TCP-Server hat die IP-Adresse 192.168.0.123.
Es werden 10 Datenwörter aus dem Halteregister gelesen. Dafür parametrieren
Sie die Eingangsparameter MB_MODE, MB_DATA_ADDR und MB_DATA_LEN
wie folgt:
MB_MODE = 0
MB_DATA_ADDR = 40001
MB_DATA_LEN = 10
MODBUS-TCP mit den Anweisung MB_CLIENT und MB_SERVER
Beitrags-ID: 102020340, V1.0, 09/2014
18
3 Anwenderprogramm der S7-1200 CPU
Abbildung 3-2 zeigt den Aufruf und Parametrierung der Anweisung „MB_CLIENT“
im FC200.
Siemens AG 2014 All rights reserved
Abbildung 3-2
Hinweis
Im Kapitel 3.2.2 finden Sie eine Übersicht und Beschreibung der Ein- und
Ausgangsparameter der Anweisung „MB_CLIENT“.
MODBUS-TCP mit den Anweisung MB_CLIENT und MB_SERVER
Beitrags-ID: 102020340, V1.0, 09/2014
19
3 Anwenderprogramm der S7-1200 CPU
3.2.2
Ein- und Ausgangsparameter der Anweisung „MB_CLIENT“
Eingangsparameter
Die Anweisung „MB_CLIENT“ hat folgende Ausgangsparameter.
Tabelle 3-6
Eingangsparameter
Datentyp
Beschreibung
BOOL
Kommunikationsanfrage mit dem Modbus TCPServer bei steigender Flanke.
Hinweis
Mit der Kommunikationsanfrage wird der
Instanz-DB für andere Clients gesperrt.
Änderungen an den Eingangsparametern
wirken sich erst aus, wenn eine Antwort des
Servers erfolgt ist oder eine Fehlermeldung
ausgegeben wurde. Wird während einer
laufenden Anfrage der Parameter REQ erneut
gesetzt, wird im Anschluss keine weitere
Übertragung durchgeführt.
DISCONNECT
BOOL
Über den Parameter steuern Sie den
Verbindungsaufbau und Verbindungsabbau zu
dem Modbus TCP-Server.
0: Kommunikationsverbindung zu der
angegebenen IP-Adresse und PortNummer herstellen
1: Kommunikationsverbindung trennen.
Während des Verbindungsabbaus wird
keine andere Funktion ausgeführt. Nach
dem erfolgreichen Abbau der Verbindung
wird am Parameter STATUS der Wert 7003
ausgegeben.
Ist der Parameter REQ beim
Verbindungsaufbau gesetzt, wird die Anfrage
sofort gesendet.
CONNECT_ID
UINT
Eindeutige ID zur Identifizierung der
Verbindung. Jeder Instanz der Anweisung
„MB_CLIENT“ muss eine eindeutige
Verbindungs- ID zugewiesen werden.
IP_OCTET_1
USINT
Erstes Oktett der IP-Adresse des Modbus TCPServers.
IP_OCTET_2
USINT
Zweites Oktett der IP-Adresse des Modbus
TCP-Servers.
IP_OCTET_3
USINT
Drittes Oktett der IP-Adresse des Modbus TCPServers.
IP_OCTET_4
USINT
Viertes Oktett der IP-Adresse des Modbus TCPServers.
IP_PORT
UINT
IP-Port-Nummer des Servers, zu dem der Client
die Verbindung herstellt und über das TCP/IPProtokoll kommuniziert. (Standard-Wert: 502)
MB_MODE
USINT
Auswahl des Modus der Anfrage
Im Kapitel finden Sie eine ausführliche
Beschreibung des Parameters MB_MODE.
Siemens AG 2014 All rights reserved
REQ
MODBUS-TCP mit den Anweisung MB_CLIENT und MB_SERVER
Beitrags-ID: 102020340, V1.0, 09/2014
20
3 Anwenderprogramm der S7-1200 CPU
Eingangsparameter
Datentyp
Beschreibung
MB_DATA_ADDR
UDINT
Anfangsadresse der Daten, auf welche die
Anweisung „MB_CLIENT“ zugreift.
Im Kapitel finden Sie eine ausführliche
Beschreibung des Parameters
MB_DATA_ADDR.
MB_DATA_LEN
UINT
Datenlänge: Anzahl der Bits oder Wörter für den
Datenzugriff.
MB_DATA_PTR
VARIANT
Zeiger auf das Modbus-Datenregister. Das
Register ist ein Puffer für die vom Modbus TCPServer empfangenen oder zum Modbus TCPServer zu sendenden Daten. Der Zeiger muss
auf einen globalen Datenbaustein mit
Standardzugriff verweisen.
In diesem Beispiel verweist der Zeiger auf den
DB100 „DB100_Modbus“ (siehe Kapitel 3.2.3).
Ausgangsparameter
Die Anweisung „MB_CLIENT“ hat folgende Ausgangsparameter.
Tabelle 3-7
Siemens AG 2014 All rights reserved
Ausgangsparameter
3.2.3
Datentyp
Beschreibung
DONE
Bool
Das Bit am Ausgangsparameter DONE wird auf
„1“ gesetzt, sobald der letzte Auftrag ohne
Fehler ausgeführt wurde
BUSY
Bool
0: kein Auftrag von „MB_CLIENT“ in
Bearbeitung
1: Auftrag von „MB_CLIENT“ in Bearbeitung
ERROR
Bool
0: kein Fehler
1: Fehler aufgetreten. Die Fehlerursache wird
über den Parameter STATUS angezeigt.
STATUS
WORD
Fehlercode der Anweisung
Parameter MB_DATA_PTR
Am Parameter MB_DATA_PTR geben Sie den Puffer für die vom
Modbus TCP-Server empfangenen Daten an. Die aus dem Halteregister gelesenen
Daten werden im DB100 „DB100_Modbus“ ab Adresse 28 gespeichert.
Tabelle 3-8
Variablenname
HoldingRegister_MBClient
Datentyp
Array [0..9] of Word
MODBUS-TCP mit den Anweisung MB_CLIENT und MB_SERVER
Beitrags-ID: 102020340, V1.0, 09/2014
Adresse im DB100
28.0
21
Document
Kategorie
Technik
Seitenansichten
111
Dateigröße
2 442 KB
Tags
1/--Seiten
melden