Sie sind auf Seite 1von 32

MODBUS/TCP

Modbus/TCP mit den Steuerungen von


Phoenix Contact

Anwenderhinweis
8294_de_03 © PHOENIX CONTACT 2015-10-08

1 Beschreibung
Dieser Anwenderhinweis beschreibt, wie Steuerungen von
Phoenix Contact mittels Modbus/TCP I/O-Signale von Peri-
pheriegeräten empfangen und verarbeiten.
Die Inbetriebnahmen der Modbus/TCP-Client-Funktion und
der Modbus/TCP-Server-Funktion werden jeweils am Bei-
spiel einer Projekterstellung mit PC Worx beschrieben,
siehe hierzu Kapitel 5 und Kapitel 7.

Modbus/TCP-Client- Modbus/TCP-Server-Unterstützung
Controller
Unterstützung ab Firmware-Version ab AX Software Suite Version
ILC 131 ETH Ja 4.40 1.82 AddOn V1
ILC 151 ETH Ja 4.40 1.82 AddOn V1
ILC 171 ETH 2TX Ja 4.40 1.82 AddOn V1
ILC 191 ETH 2TX Ja 4.40 1.82 AddOn V1
ILC 131 ETH/XC Ja 4.40 1.82 AddOn V1
ILC 151 ETH/XC Ja 4.40 1.82 AddOn V1
ILC 191 ME/AN Ja 4.40 1.82 AddOn V1
ILC 191 ME/INC Ja 4.40 1.82 AddOn V1
ILC 151 GSM/GPRS Ja 4.40 1.82 AddOn V1
AXC 1050 Ja – –
AXC 1050 XC Ja – –
AXC 3050 Ja – –
PC WORX RT BASIC Ja – –
PC WORX SRT Ja – –

Stellen Sie sicher, dass Sie immer mit der aktuellen Dokumentation arbeiten.
Diese steht unter der Adresse phoenixcontact.net/products zum Download bereit.

Dieser Anwenderhinweis gilt für die unter „Bestelldaten“ auf Seite 4 aufgelisteten Produkte.
MODBUS/TCP

2 Inhaltsverzeichnis
1 Beschreibung.............................................................................................................................. 1
2 Inhaltsverzeichnis ....................................................................................................................... 2
3 Bestelldaten................................................................................................................................ 4
4 Modbus/TCP .............................................................................................................................. 5
5 Controller als Modbus/TCP-Client konfigurieren – Beispielprojekt ........................................................ 6
5.1 Zyklische Kommunikation:
Ablauf zum Erstellen des Modbus-Projekts .................................................................................................... 6
5.1.1 Neues Projekt anlegen........................................................................................................................ 7
5.1.2 Projektinformationen angeben ............................................................................................................ 7
5.1.3 IP-Einstellungen für Controller prüfen/ändern ..................................................................................... 7
5.1.4 „Generic Modbus Device“ einfügen..................................................................................................... 7
5.1.5 Einstellungen des „Generic Modbus Device“ ändern .......................................................................... 8
5.1.6 Kompilieren nach Fertigstellen der Busstruktur................................................................................... 9
5.1.7 Programm erstellen............................................................................................................................. 9
5.1.8 Kompilieren nach Erstellen des Programms ....................................................................................... 9
5.1.9 Prozessdaten erstellen und Modbus-Funktionscode zuweisen .......................................................... 9
5.1.10 Variablen erzeugen und Prozessdaten zuordnen ............................................................................. 10
5.1.11 Diagnose- und Kontrollvariablen erzeugen und Prozessdaten zuordnen.......................................... 11
5.1.12 Projekt kompilieren ........................................................................................................................... 12
5.1.13 Modbus/TCP-Server konfigurieren ................................................................................................... 12
5.1.14 Projekt senden und Kaltstart durchführen ......................................................................................... 12
5.2 Azyklische Kommunikation mithilfe des Funktionsbausteins MB_ASYNC_RW ........................................... 13
5.2.1 Alte Version des Funktionsbausteins ................................................................................................ 13
5.2.2 Neue Version des Funktionsbausteins.............................................................................................. 14
5.3 Fehlercodes des Ausgangs Status (Error = TRUE) ...................................................................................... 15
5.4 Verwendung der Diagnosestruktur MBT_STATION_DIAG .......................................................................... 16
5.5 Größe des ReadBuffers / WriteBuffers festlegen.......................................................................................... 17

6 Betrieb von unterlagerten Modbus/RTU-Teilnehmern über ein Gateway...................................18


7 Controller als Modbus/TCP-Server konfigurieren ......................................................................19
7.1 Modbus/TCP-Server in PC Worx – Beispielprojekt....................................................................................... 19
7.1.1 Neues Projekt anlegen...................................................................................................................... 19
7.1.2 Projektinformationen angeben .......................................................................................................... 19
7.1.3 IP-Einstellungen für Controller prüfen/ändern ................................................................................... 19
7.1.4 Modbus/TCP-Server einfügen .......................................................................................................... 19
7.1.5 Einstellungen des Modbus/TCP-Servers ändern .............................................................................. 20
7.1.6 Kompilieren nach Fertigstellen der Busstruktur................................................................................. 20
7.1.7 Programm erstellen........................................................................................................................... 20
7.1.8 Kompilieren nach Erstellen des Programms ..................................................................................... 20
7.1.9 Prozessdaten erstellen und Register definieren................................................................................ 20
7.1.10 Variablen erzeugen und Prozessdaten zuordnen ............................................................................. 23
7.1.11 Diagnose- und Kontrollvariablen erzeugen und Prozessdaten zuordnen.......................................... 23
7.1.12 Zyklischen Task für die Aktualisierungszeit der Modbus-Register definieren.................................... 25

8294_de_03 PHOENIX CONTACT 2 / 32


MODBUS/TCP

7.1.13 Projekt kompilieren ........................................................................................................................... 25


7.1.14 Projekt senden und Kaltstart durchführen ......................................................................................... 25

8 Multi-Controller-Projekte konfigurieren – Beispielprojekt ...........................................................26


8.1 Neues Projekt anlegen ................................................................................................................................. 26
8.2 Projektinformationen angeben ..................................................................................................................... 26
8.3 IP-Einstellungen für Controller prüfen/ändern............................................................................................... 26
8.4 Spezifisches Modbus-Device einfügen ........................................................................................................ 26
8.5 Einstellungen des spezifischen Modbus-Device ändern .............................................................................. 27
8.6 Controller ILC 191 ME/AN einfügen ............................................................................................................. 27
8.7 IP-Einstellungen für Controller prüfen/ändern............................................................................................... 27
8.8 Modbus/TCP-Server einfügen...................................................................................................................... 27
8.9 Einstellungen des Modbus/TCP-Servers ändern.......................................................................................... 28
8.10 „Generic Modbus Device“ einfügen .............................................................................................................. 28
8.11 Einstellungen des „Generic Modbus Device“ ändern ................................................................................... 28
8.12 Kompilieren nach Fertigstellen der Busstruktur ............................................................................................ 28
8.13 Programm erstellen ...................................................................................................................................... 28
8.14 Kompilieren nach Erstellen des Programms................................................................................................. 28
8.15 Prozessdaten erstellen und Modbus-Funktionscode zuweisen.................................................................... 28
8.16 Variablen erzeugen und Prozessdaten zuordnen......................................................................................... 28
8.17 Diagnose- und Kontrollvariablen erzeugen und Prozessdaten zuordnen ..................................................... 28
8.18 Prozessdaten erstellen und Register definieren ........................................................................................... 28
8.19 Variablen erzeugen und Prozessdaten zuordnen......................................................................................... 29
8.20 Diagnose- und Kontrollvariablen erzeugen und Prozessdaten zuordnen ..................................................... 29
8.21 Zyklischen Task für die Aktualisierungszeit der Modbus-Register definieren ............................................... 29
8.22 Projekt kompilieren....................................................................................................................................... 29
8.23 Modbus/TCP-Server konfigurieren............................................................................................................... 29
8.24 Projekt senden und Kaltstart durchführen .................................................................................................... 29

9 Besonderheiten beim Lesen und Schreiben von Arrays ......................................................................... 29


9.1 Allgemeine Beispiele .................................................................................................................................... 29
9.2 Konkrete Fallbeispiele zu den allgemeinen Beispielen im Kapitel 9.1 .......................................................... 30
9.2.1 Beispiel 1:
Lesender Zugriff des Modbus/TCP-Clients ....................................................................................... 30
9.2.2 Beispiel 2:
Schreibender Zugriff des Modbus/TCP-Clients................................................................................. 31

8294_de_03 PHOENIX CONTACT 3 / 32


MODBUS/TCP

3 Bestelldaten
Produkte
Beschreibung Typ Artikel-Nr. VPE
Inline-Controller mit Ethernet-Schnittstelle zur Kopplung an andere Steuerun- ILC 131 ETH 2700973 1
gen bzw. Systeme und Programmiermöglichkeit nach IEC 61131-3, komplett
mit Anschlussstecker und Beschriftungsfeld.
Inline-Controller mit Ethernet-Schnittstelle zur Kopplung an andere Steuerun- ILC 151 ETH 2700974 1
gen bzw. Systeme und Programmiermöglichkeit nach IEC 61131-3, komplett
mit Anschlussstecker und Beschriftungsfeld.
Inline-Controller mit Ethernet-Schnittstelle zur Kopplung an andere Steuerun- ILC 171 ETH 2TX 2700975 1
gen bzw. Systeme und Programmiermöglichkeit nach IEC 61131-3, komplett
mit Anschlussstecker und Beschriftungsfeld.
Inline-Controller mit Ethernet-Schnittstelle zur Kopplung an andere Steuerun- ILC 191 ETH 2TX 2700976 1
gen bzw. Systeme und Programmiermöglichkeit nach IEC 61131-3, komplett
mit Anschlussstecker und Beschriftungsfeld.
Inline-Controller mit Ethernet-Schnittstelle zur Kopplung an andere Steuerun- ILC 131 ETH/XC 2701034 1
gen bzw. Systeme und Programmiermöglichkeit nach IEC 61131-3, komplett
mit Anschlussstecker und Beschriftungsfeld.
Inline-Controller mit Ethernet-Schnittstelle zur Kopplung an andere Steuerun- ILC 151 ETH/XC 2701141 1
gen bzw. Systeme und Programmiermöglichkeit nach IEC 61131-3, komplett
mit Anschlussstecker und Beschriftungsfeld.
Inline-Controller mit integrierter Puls-Richtungsschnittstelle, RS-485/422, ILC 191 ME/AN 2700074 1
analogen Eingängen (0 ... 10 V) und analogen Ausgängen (0 ... 10 V), Pro-
grammiermöglichkeit nach IEC 61131-3
Inline-Controller mit integrierter Puls-Richtungsschnittstelle, RS-485/422, ILC 191 ME/INC 2700075 1
schnellen Zählern und Inkrementalwertgeber-Eingängen, Programmiermög-
lichkeit nach IEC 61131-3
Inline-Controller mit Ethernet-Schnittstelle und GSM-Modem zur Kopplung an ILC 151 GSM/GPRS 2700977 1
andere Steuerungen bzw. Systeme und Programmiermöglichkeit nach
IEC 61131-3, komplett mit Anschlussstecker und Beschriftungsfeld
Axiocontrol zur direkten Steuerung von Axioline I/Os. Mit 2 Ethernet-Schnitt- AXC 1050 2700988 1
stellen und Programmiermöglichkeit nach IEC 61131-3. Komplett mit An-
schlussstecker und Beschriftungsfeld
Axiocontrol zur direkten Steuerung von Axioline I/Os. Mit 2 Ethernet-Schnitt- AXC 1050 XC 2701295 1
stellen, erweitertem Temperaturbereich und Programmiermöglichkeit nach
IEC 61131-3. Komplett mit Anschlussstecker und Beschriftungsfeld
Axiocontrol zur direkten Steuerung von Axioline I/Os. Mit 3 Ethernet-Schnitt- AXC 3050 2700989 1
stellen und Programmiermöglichkeit nach IEC 61131-3. Komplett mit An-
schlussstecker und Beschriftungsfeld
Software-SPS PC WORX RT BASIC 2700291 1
Software-SPS PC WORX SRT 2701680 1

Dokumentation
Beschreibung Typ Artikel-Nr. VPE
Anwenderhandbuch „Installation und Betrieb der Inline-Controller UM DE ILC 1X1 – –
ILC 131 ETH, ILC 151 ETH, ILC 171 ETH 2TX, ILC 191 ETH 2TX,
ILC 131 ETH/XC und ILC 151 ETH/XC“
Anwenderhandbuch „Installation und Betrieb der Inline-Controller UM DE ILC 191 ME/X – –
ILC 191 ME/AN und ILC 191 ME/INC“
Anwenderhandbuch „Installation, Inbetriebnahme und Betrieb des Inline- UM DE ILC 151 GSM/GPRS – –
Controllers ILC 151 GSM/GPRS“
Anwenderhandbuch „Installation und Betrieb der Controller AXC 1050 und UM DE AXC 1050 (XC) – –
AXC 1050 XC“
Anwenderhandbuch „Installation und Betrieb der Controller AXC 3050“ UM DE AXC 3050 (/XC) – –
Anwenderhandbuch „Installation und Betrieb der Software-SPS UM DE PC WORX RT BASIC – –
PC WORX RT BASIC mit Valueline Industrie-PCs und PROFINET“
Anwenderhandbuch „Installation und Betrieb der Software-SPS UM DE PC WORX SRT – –
PC WORX SRT“
Schnelleinstieg „PC Worx“ UM QS DE PC WORX – –

8294_de_03 PHOENIX CONTACT 4 / 32


MODBUS/TCP

4 Modbus/TCP
Modbus/TCP ist ein Kommunikationsprotokoll für den Aus- – Azyklische Kommunikation
tausch von Prozessdaten zwischen einem Client und einem Der Austausch von Prozessdaten zwischen Modbus/
Server in einem Ethernet-Netzwerk. TCP-Client und Modbus/TCP-Server erfolgt nach Be-
In den Steuerungen von Phoenix Contact (s. „Bestelldaten“ darf. Hierfür steht in PC Worx der Funktionsbaustein
auf Seite 4) ist hierzu die Modbus/TCP-Client-Funktion inte- „MB_ASYNC_RW“ (siehe hierzu Kapitel 5.2) zur Verfü-
griert. Die Peripheriegeräte müssen die Modbus/TCP-Ser- gung, der auf der Client-Seite verwendet wird.
ver-Funktion beinhalten. Die TCP/IP-Verbindung wird aufgebaut, nach Ab-
Ab der Firmware-Version 4.40 können Controller des Typs schluss der Datenübertragung getrennt und bei erneu-
ILC 1X1 auch als Modbus/TCP-Server konfiguriert werden tem Kommunikationsbedarf wieder aufgebaut. Der
(siehe Kapitel 7). Verbindungsauf- und abbau wird automatisch durch
den Modbus/TCP-Client angestoßen.
Zur Datenübertragung kann das TCP-Protokoll (Transmis-
sion Control Protocol) oder das UDP-Protokoll (User Data- Für die Kommunikation wird standardmäßig der für
gram Protocol) verwendet werden. Dabei werden die zu Modbus/TCP reservierte Port 502 verwendet.
übertragenden Daten des Modbus-Protokolls in das jewei- Die Kommunikation zwischen Modbus/TCP-Client und -Ser-
lige Protokoll eingebettet. Der Controller lässt zwei Arten ver wird vom Modbus/TCP-Client initiiert. Dieser sendet
der Kommunikation zu: eine Anfrage (Request) in Form eines Modbus/TCP-Funkti-
– Zyklische Kommunikation onscodes (und ggf. Daten) an den Modbus/TCP-Server.
Nach erfolgreichem Empfang des Requests sendet der Ser-
Prozessdaten zwischen Modbus/TCP-Client und
ver dem Client eine entsprechende Antwort (Response), die
Modbus/TCP-Server werden zyklisch ausgetauscht,
die angefragten Daten und Statusinformationen oder eine
ausgelöst durch den entsprechenden Task, in dem die
Fehlermeldung enthält. Die Daten können dabei Bit- oder
Prozessdaten definiert sind.
Wortinformationen enthalten.
Der Modbus/TCP-Client kann Prozessdaten-Watch-
dogs von Modbus/TCP-Servern in einem definierbaren Die geräteinterne Organisation der Daten (Modbus-Spei-
Zeitraum pflegen. Hierzu wiederholt der Modbus/TCP- cheradressen, etc.) und der unterstützten Modbus-Funkti-
Client alle Schreibzugriffe auf den jeweiligen Modbus/ onscodes variiert je nach Gerät und Hersteller. Diese Infor-
TCP-Server mit den aktuellen Daten. mationen sind der Dokumentation des jeweiligen Gerätes
Während einer zyklischen Kommunikation bleibt die zu entnehmen.
aufgebaute TCP/IP-Verbindung zwischen Client und Für die Kommunikation zwischen Client und Server stellt
Server permanent bestehen. Modbus/TCP verschiedene Dienste für den lesenden und
schreibenden Zugriff auf digitale Ein- und Ausgänge sowie
auf Register zur Verfügung.
Die folgende Tabelle zeigt die unterstützten Modbus-Funk-
tionscodes:

Modbus-Funktionscodes
Code-Nr. Funktionscode Beschreibung Methode
FC01 Read Coils Lesen mehrerer interner Bits oder digitaler Ausgänge bitweise
FC02 Read Discrete Inputs Lesen mehrerer digitaler Eingänge bitweise
FC03 Read Holding Registers Lesen mehrerer interner Register oder Ausgangsregister wortweise
FC04 Read Input Registers Lesen mehrerer Eingangsregister wortweise
FC051 Write Single Coil Schreiben eines internen Bits oder digitalen Ausgangs bitweise
FC061 Write Single Register Schreiben eines internen Registers wortweise
FC15 Write Multiple Coils Schreiben mehrerer interner Bits oder digitaler Ausgänge bitweise
FC16 Write Multiple Registers Schreiben mehrerer interner Register oder Ausgangsregister wortweise
FC23 Read/Write Multiple Re- Gleichzeitiges Lesen und Schreiben mehrerer interner Regis- wortweise
gisters ter oder Ausgangsregister
1
Im Busaufbau von PC Worx wird der Modbus-Funktionscode wird nur vom Modbus/TCP-Server unterstützt.

8294_de_03 PHOENIX CONTACT 5 / 32


MODBUS/TCP

5 Controller als Modbus/TCP-Client


konfigurieren – Beispielprojekt Start

Das vorliegende Beispielprojekt besteht aus ILC 151 ETH OFFLINE


(Controller) und ILB ETH 24 DI16 DIO16-2TX (Modul der Neues Projekt anlegen
Produktfamilie Inline Block IO für Ethernet mit 16 digitalen
Eingängen und 16 digitalen Ein- oder Ausgängen).
Im Beispielprojekt wird ausschließlich ein Modbus/TCP- Projektinformationen
angeben
Netzwerk verwendet.
Informationen zur Verwendung eines Gateways zur Kopp-
lung eines Modbus/TCP-Netzwerks mit Modbus/RTU-Teil- IP-Einstellungen für
nehmern finden Sie im Kapitel 6. Controller prüfen/ändern

5.1 Zyklische Kommunikation:


„Generic Modbus Device“
Ablauf zum Erstellen des Modbus-Projekts einfügen

In Bild 1 ist der vollständige Ablauf zum Erstellen des


Modbus-Projekts in PC Worx dargestellt. Einstellungen des „Generic
Modbus Device“ prüfen/ändern
Ergänzende Informationen zum Erstellen eines
Projektes finden Sie im Schnelleinstieg
UM QS DE PC WORX und in der Online-Hilfe Kompilieren nach Fertig-
stellen der Busstruktur
von PC Worx.
Bei der Erstellung des PC Worx-Projekts wird der Großteil
der Arbeiten offline (ohne Verbindung zu dem Modbus-Sys- Programm erstellen

tem) durchgeführt.

Kompilieren nach Erstellen


des Programms

Prozessdaten erstellen und


Modbus-Funktionscode
zuweisen

Variablen erzeugen und


Prozessdaten zuordnen

Diagnose- und Kontroll-


variablen erzeugen und
Prozessdaten zuordnen

Projekt kompilieren

ONLINE
Modbus/TCP-Server
konfigurieren

Projekt senden und


Kaltstart durchführen

Betrieb (Ende)
8294C001

Bild 1 Ablauf zum Erstellen des Modbus-Projekts

8294_de_03 PHOENIX CONTACT 6 / 32


MODBUS/TCP

5.1.4 „Generic Modbus Device“ einfügen


Der hier beschriebene Ablauf zum Erstellen eines Im Beispiel wird das Modul
Modbus-Projekts gilt für Projekte, in denen eine ILB ETH 24 DI16 DIO16-2TX der Produktfamilie
zyklische Kommunikation zwischen Controller Inline Block IO für Ethernet als Modbus/TCP-Ser-
(hier: Modbus/TCP-Client) und einem beliebigen ver verwendet.
Modbus/TCP-Server stattfindet.
Für die Kommunikation zwischen Modbus/TCP-
Die azyklische Kommunikation wird im Kapitel 5.2
Client und -Server sind bestimmte Einstellungen
„Azyklische Kommunikation mithilfe des Funkti-
erforderlich. Diese Einstellungen werden in
onsbausteins MB_ASYNC_RW“ erklärt.
PC Worx über das „Generic Modbus Device“ vor-
genommen.
5.1.1 Neues Projekt anlegen
Das „Generic Modbus Device“ muss in den Bus-
• Wählen Sie aus dem Menü „Datei“ den Befehl „Neues aufbau eingefügt werden, damit eine Kommuni-
Projekt...“. kation zwischen Modbus/TCP-Client und -Server
• Wählen Sie die Steuerung aus und bestätigen Sie Ihre erfolgen kann.
Auswahl mit „OK“.
• Stellen Sie sicher, dass Sie sich im Arbeitsbereich Bus-
• Wählen Sie den Befehl „Datei, Projekt speichern unter / konfiguration befinden.
Projekt packen unter...“.
• Falls der Gerätekatalog nicht eingeblendet ist, blenden
• Geben Sie Ihrem Projekt einen eindeutigen und aussa- Sie ihn über das Menü „Ansicht, Gerätekatalog“ ein.
gekräftigen Namen und speichern Sie es.
• Öffnen Sie den Gerätekatalog „Phoenix Contact, Gene-
ric, Device“.
5.1.2 Projektinformationen angeben
• Wählen Sie das „Generic Modbus Device“ aus.
• Wechseln Sie in den Arbeitsbereich Buskonfiguration.
• Passen Sie die Projektinformationen Ihrem Projekt an.

5.1.3 IP-Einstellungen für Controller prüfen/ändern


Beim Erstellen des Projekts werden die IP-Einstellungen für
den Controller vorgenommen.
Passen Sie diese Einstellungen bei Bedarf an.
• Wechseln Sie in den Arbeitsbereich Buskonfiguration.
• Markieren Sie den Knoten des Controllers.
• Wechseln Sie im Fenster „Gerätedetails“ auf die Regis-
terkarte „IP-Einstellungen“.
• Prüfen Sie die IP-Einstellungen und nehmen Sie gege-
benenfalls Änderungen vor.
• Falls noch keine IP-Adresse vergeben ist, vergeben Sie Bild 2 „Generic Modbus Device“ auswählen
diese. Für Details zur Vergabe der IP-Adresse siehe
Schnelleinstieg UM QS DE PC WORX. • Verschieben Sie das „Generic Modbus Device“ bei ge-
drückter linker Maustaste in das Fenster „Busaufbau“
Die IP-Adresse, die Sie hier für den Controller rechts neben das Symbol MODBUS_CLT1, bis das
vorgeben, wird auch als IP-Adresse für den Kom- Symbol „Einfügen in untergeordneter Ebene“ erscheint.
munikationsweg über TCP/IP übernommen. • Verschieben Sie alle weiteren „Generic Modbus De-
vices“ jeweils unter das vorhergehende „Generic Mod-
bus Device“, bis das Symbol „Einfügen auf gleicher
Ebene“ erscheint.
In Bild 3 ist der Busaufbau mit eingefügtem „Generic Mod-
bus Device“ dargestellt.

1
Wenn Sie einen Controller des Typs 1X1 ab Firmware-Version 4.40
verwenden, wird anstatt des Symbols MODBUS_CLT das Symbol
MODBUS angezeigt.

8294_de_03 PHOENIX CONTACT 7 / 32


MODBUS/TCP

Bild 3 Generic Modbus Device eingefügt

Über das Kontextmenü eines Gerätes können Sie


das „Gerät ausblenden“ oder bei Bedarf den ge-
samten „Bus deaktivieren“.
Zum Wieder-Einblenden des Geräts bzw. zur Ak-
tivierung des Busses wählen Sie im Kontextmenü
erneut die o. g. Einstellungen.

5.1.5 Einstellungen des „Generic Modbus Device“


ändern Bild 4 Modbus-Einstellungen des „Generic Modbus
Nach dem Einfügen in den Busaufbau werden für jedes Device“
„Generic Modbus Device“ Default-Werte gesetzt. Diese
können Sie auf der Registerkarte „Modbus-Einstellungen“ Zu den für die Kommunikaiton zwischen Modbus/TCP-Cli-
ändern. ent und -Server notwendigen Einstellungen gehören:

Die Einstellungen des „Generic Modbus Device“ Stationsname


sind für die Kommunikation zwischen Modbus/ Dieser Name ist die eindeutige Kennzeichnung des Mod-
TCP-Client und -Server erforderlich. bus/TCP-Servers (hier: ILB ETH 24 DI16 DIO16-2TX) im
Netzwerk.
• Stellen Sie sicher, dass Sie sich im Arbeitsbereich Bus-
konfiguration befinden.
MAC-Adresse
• Markieren Sie im Fenster „Busaufbau“ das „Generic
Modbus Device“. Tragen Sie die MAC-Adresse des Modbus/TCP-Servers
(hier: ILB ETH 24 DI16 DIO16-2TX) ein. Sie finden diese als
• Wählen Sie im Fenster „Gerätedetails“ die Registerkar-
Aufdruck am jeweiligen Gerät. Sie beginnt bei Geräten von
te „Modbus-Einstellungen“.
Phoenix Contact mit „00.a0.45.“.
• Ändern Sie entsprechend Ihrer Anforderungen die Die Eingabe der MAC-Adresse ist optional und nicht zwin-
Modbus-Einstellungen. gend erforderlich.

IP-Adresse
Über die IP-Adresse ist der Modbus/TCP-Server (hier:
ILB ETH 24 DI16 DIO16-2TX) im laufenden Betrieb zu er-
reichen. Die Adresse wird von PC Worx aus dem Bereich
ausgewählt, der auf dem Projektknoten eingestellt ist.

Subnetzmaske
Als Subnetzmaske wird für jeden Modbus/TCP-Server
(hier: ILB ETH 24 DI16 DIO16-2TX) die Subnetzmaske ver-
geben, die auf dem Projektknoten angegeben wurde. Sie
kann für jeden einzelnen Teilnehmer spezifisch geändert
werden.

8294_de_03 PHOENIX CONTACT 8 / 32


MODBUS/TCP

Protokoll UnitID
Hier wählen Sie das Protokoll aus, das für die Kommunika- Adresse des Teilnehmers im Modbus/RTU-Netzwerk unter-
tion verwendet werden soll (TCP oder UDP). halb des Gateways.
Default-Wert: 255 (Betrieb ohne Gateway)
Port
5.1.6 Kompilieren nach Fertigstellen der Busstruktur
Hier wählen Sie den Port für die Kommunikation aus. Stan-
dardmäßig wird der für Modbus/TCP reservierte Port 502 • Wählen Sie den Befehl „Code, Make“.
verwendet.
5.1.7 Programm erstellen
Bytes vertauschen
• Erstellen Sie das Programm.
Hier kann bei Bedarf die Byte-Reihenfolge für die gesamte Gehen Sie zum Programmieren des Beispielprogramms
Kommunikation mit dem Modbus/TCP-Server getauscht entsprechend der Beschreibung im Schnelleinstieg
werden, wenn der Modbus/TCP-Server und der Modbus/ UM QS DE PC WORX vor.
TCP-Client (hier: ILC 151 ETH) jeweils mit einer unter-
schiedlichen Byte-Reihenfolge arbeiten. 5.1.8 Kompilieren nach Erstellen des Programms
Wählen Sie „ja“, um die verwendete Byte-Reihenfolge auf
der Clientseite zu drehen. • Wählen Sie den Befehl „Code, Make“.
Informationen zur Byte-Reihenfolge finden Sie im Kapitel 9.
5.1.9 Prozessdaten erstellen und Modbus-
Verbindungs-Time-out/UDP-Time-out Funktionscode zuweisen

Dieser Wert gibt die Zeit an, die mindestens vergehen Für den Modbus/TCP-Client (hier: ILC 151 ETH) müssen
muss, um eine Unterbrechung der Verbindung als solche zu Sie festlegen, mit welchen Modbus-Funktionscodes der
erkennen. Modbus/TCP-Client auf bestimmte Registeradressen des
Bei UDP kann keine Aussage über eine mögliche Unterbre- Modbus/TCP-Servers (hier: ILB ETH 24 DI16 DIO16-2TX)
chung der Verbindung getroffen werden. Daher wird das zu- zugreifen soll. Hierzu definieren Sie bestimmte Prozessda-
letzt gesendete Paket nach dem UDP-Time-out erneut ver- ten und weisen diesen den entsprechenden Modbus-Funk-
sandt. tionscode zu.
Zudem gibt der Wert die Zeit an, in der ein Modbus/TCP- • Stellen Sie sicher, dass Sie sich im Arbeitsbereich Bus-
Server auf eine Anfrage (Request) des Modbus/TCP- konfiguration befinden.
Clients geantwortet haben muss (Response). • Markieren Sie im Fenster „Busaufbau“ das Generic
Modbus Device.
Reconnect-Intervall • Wählen Sie im Fenster „Gerätedetails“ die Registerkar-
Nach Unterbrechung der TCP-Verbindung (Verbindungs- te „Modbus-Register“.
Time-out) wird nach Ablauf dieses Zeitintervalls versucht, • Öffnen Sie per Rechtsklick das Kontextmenü des Fel-
eine neue TCP-Verbindung aufzubauen. des „Name“.
Diese Einstellung ist für die Kommunikation via UDP nicht • Wählen Sie den Menüpunkt „Hinzufügen“.
relevant. • Geben Sie im Feld „Name“ einen eindeutigen und aus-
sagekräftigen Namen für das Prozessdatum an.
Prozessdaten-Watchdog-Trigger • Wählen Sie den gewünschten „Funktionscode“ aus,
Der Prozessdaten-Watchdog-Trigger gibt die zeitliche Peri- siehe hierzu die Tabelle „Modbus-Funktionscodes“ auf
ode an, in der spätestens ein erneuter Schreibzugriff auf Seite 5.
den Modbus/TCP-Server erfolgen muss. • Wählen Sie den gewünschten Datentyp.
Die hier eingestellte Zeit sollte halb so groß wie die auf dem • Geben Sie die Anzahl der zu lesenden oder schreiben-
Modbus/TCP-Server eingestellte Prozessdaten-Watchdog- den Bits oder Register ein.
Zeit sein.
• Geben Sie als „Adresse“ für den Modbus/TCP-Server
Die Einstellung „0 ms“ bedeutet, dass der Watchdog ausge-
den Speicherbereich des Prozessdatums ein, auf das
schaltet ist.
der gewählte Funktionscode angewendet werden soll.
Den Speicherbereich des Prozessdatums finden Sie in
der Dokumentation des Gerätes, das als Modbus/TCP-
Server verwendet wird.
Im Beispiel soll ein 16-Bit-Wort aus einem internen Re-

8294_de_03 PHOENIX CONTACT 9 / 32


MODBUS/TCP

gister gelesen werden. Hierzu wird der Modbus- 5.1.10 Variablen erzeugen und Prozessdaten zuord-
Funktionscode FC03 verwendet. Als Adresse wird der nen
Wert „1“ gesetzt, da der Speicherbereich für das Pro-
Die Zuordnung von Prozessdaten und Variablen erfolgt im
zessdatum zum wortweisen Lesen eines internen Re-
Arbeitsbereich Prozessdatenzuordnung.
gisters für das ILB ETH 24 DI16 DIO16-2TX den Wert
„1“ besitzt, siehe hierzu das klemmenspezifische • Wechseln Sie in den Arbeitsbereich Prozessdatenzu-
Datenblatt. ordnung, um die Variablen den Prozessdaten zuzuord-
nen.
• Die „Datenrichtung“ gibt an, ob die Funktion auf einen
digitalen Eingang/ein internes Register oder einen digi- • Wählen Sie im oberen rechten Fenster das „Generic
talen Ausgang bzw. ein Ausgangsregister zugreift. Die Modbus Device“ aus. Im oberen linken Fenster „Sym-
Datenrichtung ist abhängig vom ausgewählten bole/Variablen“ wird dann die Standard-Konfiguration
Funktionscode und kann nicht manuell geändert wer- angezeigt.
den. • Markieren Sie im oberen linken Fenster „Symbole/Vari-
ablen“ die Standard-Ressource.
• Markieren Sie im oberen rechten Fenster das Gerät, für
das Sie die Prozessdaten mit Variablen verbinden wol-
len (in Bild 6: „Generic Modbus Device“; im Beispiel
wird das Modul ILB ETH 24 DI16 DIO16-2TX verwen-
det).
• Markieren Sie das Prozessdatum zum Verbinden.
Bild 5 Prozessdaten erstellen und Modbus- • Durch das Erstellen des Programms sind Variablen an-
Funktionscode zuweisen gelegt. Verbinden Sie per Drag-and-drop die markierte
Variable mit einer angezeigen Variablen auf der linken
Seite.
Falls Sie weitere Prozessdaten verbinden wollen und
Der Funktionscode FC23 wird im „Modbus-Re- noch keine entsprechenden Variablen angelegt sind,
gister“ zweizeilig dargestellt (eine Zeile für die Da- wählen Sie im Kontext-Menü „Variable erzeugen“.
tenrichtung IN, eine Zeile für die Datenrichtung
OUT). Beim Löschen einer Zeile wird automa- Im linken unteren Fenster wird die erzeugte Variable ange-
tisch auch die zweite Zeile entfernt. zeigt.
• Wiederholen Sie dieses Vorgehen für alle auszuwer-
ACHTUNG: tenden Eingänge und alle anzusteuernden Ausgänge.
Bei der Verknüpfung einer Prozessvariable des Das Ergebnis der Prozessdatenzuordnung ist in Bild 6 dar-
Datentyps Array [] of (D)WORD kann es zu einer gestellt.
gedrehten Byte-Reihenfolge kommen. Weitere
Informationen hierzu finden Sie im Kapitel 9.

Bild 6 Alle verwendeten Prozessdaten den Variablen zugeordnet

8294_de_03 PHOENIX CONTACT 10 / 32


MODBUS/TCP

5.1.11 Diagnose- und Kontrollvariablen erzeugen und Parameter Beschreibung


Prozessdaten zuordnen
NetOutCycleMax Maximale Antwortzeit des
Die Diagnose- und Kontrollstruktur ist im Arbeits- Modbus/TCP-Servers bei
bereich IEC-Programmierung im Projektbaum- schreibenden Zugriffen
Fenster unter „Datentypen, sys_flag_types“ de- InternalError1 Wird intern von
klariert. Phoenix Contact verwendet
InternalError2 Wird intern von
Für jedes „Generic Modbus Device“ stellt PC Worx eine Di- Phoenix Contact verwendet
agnose- und Kontrollstruktur zur Verfügung, mit der sich
ExceptionCounter Anzahl der empfangenen
Verbindungsstatus, Verbindungsstatistiken und Unterbre-
Ausnahmecodes (Modbus
chungen der Verbindung ablesen lassen.
Exception Codes)
PC Worx stellt die folgende Diagnose- und Kontrollstruktur
DiagReserved1 Reserviert
zur Verfügung:
DiagReserved2 Reserviert
– Diagnosestruktur „STATION_DIAG“
UnitID Adresse des Teilnehmers im
Modbus/RTU-Netzwerk un-
Parameter Beschreibung terhalb des Gateways.
Status Status der Kommunikations- Default-Wert: 255 (Betrieb
verbindung zum ohne Gateway)
Modbus/TCP-Server DiagReserved3 Reserviert
(Bit 0 = 1: Kommunikations-
verbindung ist in Ordnung,
Bit 1 = 1: Ausnahme aufgetre- – Kontrollstruktur „STATION_CONTROL“
ten)
IP IP-Adresse des Parameter Beschreibung
Modbus/TCP-Servers im ctrlStatistics Mit einer steigenden Flanke
Busaufbau an Bit 0 werden alle Parame-
OfflineCounter Anzahl der Offline-Zeiten des ter der Diagnosestruktur zu-
Modbus/TCP-Servers rückgesetzt.
NetCycleAvg Durchschnittliche Antwortzeit ControlReserved1 Reserviert
des Modbus/TCP-Servers ControlReserved2 Reserviert
NetCycleMin Minimale Anwortzeit des ControlReserved3 Reserviert
Modbus/TCP-Servers Um die Diagnose- und Kontrollstruktur nutzen zu können,
NetCycleMax Maximale Antwortzeit des legen Sie je eine Diagnose- und eine Kontrollvariable an.
Modbus/TCP-Servers • Wechseln Sie in den Arbeitsbereich IEC-Programmie-
NetInCycleAvg Durchschnittliche Anwortzeit rung.
des Modbus/TCP-Servers bei • Doppelklicken Sie im Projektbaum-Fenster auf „Global
lesenden Zugriffen Variables“.
NetInCycleMin Minimale Antwortzeit des Die globalen Variablen der Standard-Ressource werden
Modbus/TCP-Servers bei le- angezeigt.
senden Zugriffen
• Fügen Sie über das Kontextmenü eine neue Variable
NetInCycleMax Maximale Antwortzeit des ein, die als Kontrollvariable verwendet werden soll.
Modbus/TCP-Servers bei le-
• Wählen Sie für die Kontrollvariable den Typ
senden Zugriffen
MBT_STATION_CONTROL aus.
NetOutCycleAvg Durchschnittliche Anwortzeit
• Fügen Sie über das Kontextmenü eine weitere neue
des Modbus/TCP-Servers bei
Variable ein, die als Diagnosevariable verwendet wer-
schreibenden Zugriffen
den soll.
NetOutCycleMin Minimale Antwortzeit des
• Wählen Sie für die Diagnosevariable den Typ
Modbus/TCP-Servers bei
MBT_STATION_DIAG.
schreibenden Zugriffen

8294_de_03 PHOENIX CONTACT 11 / 32


MODBUS/TCP

Bild 7 Diagnose- und Kontrollvariable erzeugt

• Wechseln Sie in den Arbeitsbereich Prozessdatenzu- Das Ergebnis der Prozessdatenzuordnung ist in Bild 8 dar-
ordnung und nehmen Sie die Zuordnung von Prozess- gestellt.
daten zu den Kontroll- und Diagnosevariablen vor, wie
im Kapitel 5.1.10 auf Seite 10 beschrieben.

Bild 8 Prozessdaten den Diagnose- und Kontrollvariablen zugeordnet

5.1.12 Projekt kompilieren 5.1.14 Projekt senden und Kaltstart durchführen


• Wählen Sie den Befehl „Code, Make“. • Öffnen Sie den „Projekt-Kontrolldialog“.
• Aktivieren Sie im Bereich „Projekt“ das Kontrollkäst-
5.1.13 Modbus/TCP-Server konfigurieren chen „Bootprojekt einbeziehen“.
• Nehmen Sie direkt am Modbus/TCP-Server (hier: • Betätigen Sie den Schalter „Senden“ im linken Bereich.
ILB ETH 24 DI16 DIO16-2TX) alle erforderlichen Konfi-
gurationen (zum Beispiel Einstellen von IP-Adresse
und Prozessdaten-Watchdog) vor.
Die Informationen zur Konfiguration und Inbetriebnahme
des Geräts finden Sie in der zugehörigen Dokumentation.

8294_de_03 PHOENIX CONTACT 12 / 32


MODBUS/TCP

5.2 Azyklische Kommunikation mithilfe des Funkti- Um den alten Funktionsbaustein verwenden zu können,
onsbausteins MB_ASYNC_RW müssen Sie in den vordefinierten Datenstrukturen ein paar
Datentypen anpassen:
Der Funktionsbaustein MB_ASYNC_RW dient zur azykli-
schen Kommunikation zwischen Controller (Modbus/TCP- • Doppelklicken Sie im Projektbaum-Fenster auf
Client) und Modbus/TCP-Server). „sys_flag_types“.
• Ersetzen Sie in der Struktur „MBT_STATION_DIAG“
den Datentyp „IP:DWORD;“ durch den Datentyp
Der Funktionsbaustein MB_ASYNC_RW steht in „Handle:DWORD;“.
zwei verschiedenen Versionen zur Verfügung.
• Ersetzen Sie in der Struktur „MBT_STATION_DIAG“
Die beiden Versionen unterscheiden sich in den
den Datentyp „UnitID:BYTE;“ durch den Datentyp
Eingängen „ServerID“ sowie „IP“ und „UnitID“.
„StationNumber:BYTE;“.
Der Baustein verfügt entweder über den Eingang
„ServerID“ (alter Baustein) oder die Eingänge „IP“ Sie können den alten Funktionsbaustein nun verwenden.
und „UnitID“ (neuer Baustein). Der neue Baustein
(siehe Bild 9) wird von folgenden Geräten unter- Weiterführende Informationen zu dem Funktions-
stützt: baustein finden Sie in der Online-Hilfe von
– ILC 1x1 ≥ Firmware 4.20 PC Worx.
– AXC 1050 (XC) ≥ Firmware 2.10
– AXC 3050 ≥ Firmware 5.50
Alle anderen Steuerungen (siehe „Bestelldaten“
auf Seite 4) unterstützen den alten Baustein (Ein-
gang „ServerID“).

5.2.1 Alte Version des Funktionsbausteins


Beim ersten Einfügen des Funktionsbausteins in das Varia-
blenarbeitsblatt wird standardmäßig der neue Funktions-
baustein verwendet.
Falls Sie eine Steuerung einsetzen, die den alten Funktions-
baustein unterstützt, gehen Sie wie folgt vor, um den alten
Baustein im Variablenarbeitsblatt anzuzeigen:
• Fügen Sie den neuen Baustein in das Variablenarbeits-
blatt ein.
• Öffnen Sie im Projektbaum-Fenster per Rechtsklick das
Kontextmenü für „Logische POEs“.
• Wählen Sie den Menüpunkt „Eigenschaften“.
• Wählen Sie im sich öffnenden Dialog „POE Eigenschaf-
ten ändern:“ die Registerkarte „SPS/Prozessor“.
• Wählen Sie als „SPS-Typ“ in der Drop-down-Liste den
Eintrag „eCLR“.
• Wählen Sie als „Prozessortyp“ in der Drop-down-Liste
die von Ihnen eingesetzte Steuerung mit der entspre-
chenden Firmware-Version.
• Bestätigen Sie Ihre Einstellungen per Mausklick auf die
Schaltfläche „OK“.
• Öffnen Sie im Variablenarbeitsblatt per Rechtsklick das
Kontextmenü des Funktionsbausteins.
• Wählen Sie den Eintrag „Update FB/FU“.
Nach dem Update wird der alte Baustein (Eingang „Ser-
verID“ angezeigt).

8294_de_03 PHOENIX CONTACT 13 / 32


MODBUS/TCP

5.2.2 Neue Version des Funktionsbausteins

Bild 9 Funktionsbaustein MB_ASYNC_RW

Eingangs- und Ausgangsparameter des Funktionsbausteins


Name Datentyp Beschreibung
Request BOOL Mit einer positiven Flanke an diesem Eingang werden die Eingangsparame-
ter geprüft und der Funktionsbaustein wird aktiviert.
Nach erfolgreicher Ausführung des Funktionscodes ist der Baustein deakti-
viert und kann nur durch eine erneute positive Flanke aktiviert werden.
IP DWORD IP-Adresse des „Generic Modbus Device“ im Busaufbau.

Empfohlen:
Verwenden Sie die IP-Adresse aus der zuvor angelegten Diag-
nosestruktur (siehe hierzu Kapitel 5.4). Hierdurch werden im-
mer die aktuellen Einstellungen aus der Buskonfiguration
verwendet.
Alternativ kann die IP-Adresse direkt eingegeben werden.

Beim Betrieb von Modbus/RTU-Teilnehmern ist die IP-Adresse


des entsprechenden Gateways zu verwenden.
UnitID BYTE UnitID des Modbus/RTU-Device (Modbus/RTU-Slave) im Busaufbau.

Empfohlen:
Verwenden Sie die UnitID aus der zuvor angelegten Diagnose-
struktur (siehe hierzu Kapitel 5.4). Hierdurch werden immer die
aktuellen Einstellungen aus der Buskonfiguration verwendet.
Alternativ kann die UnitID direkt eingegeben werden.

FC BYTE Modbus-Funktionscode (s. Tabelle „Modbus-Funktionscodes“ auf Seite 5)


ReadStartAddr WORD Startadresse des Speichers, ab der Daten ausgelesen werden sollen.
WriteStartAddr WORD Startadresse, ab der Daten auf den Speicher geschrieben werden sollen.
MaxReadCount INT Anzahl der zu lesenden Bits oder Register.
WriteCount INT Anzahl der zu schreibenden Bits oder Register.

8294_de_03 PHOENIX CONTACT 14 / 32


MODBUS/TCP

Eingangs- und Ausgangsparameter des Funktionsbausteins


Name Datentyp Beschreibung
Done BOOL TRUE: Der Baustein wurde erfolgreich ausgeführt und die azyklische
Kommunikation hat stattgefunden.
FALSE: Der Baustein wird noch ausgeführt oder wurde nicht ausgeführt.
Error BOOL TRUE: Ein Fehler ist aufgetreten. Details liefert der Ausgang Status.
FALSE: Es ist kein Fehler aufgetreten.

Error zeigt einen Fehler, solange der Eingang Request aktiv ist.

Status DWORD Im Fehlerfall (Error = TRUE) enthält der Ausgang Status einen Fehlercode.
Die möglichen Fehlercodes zeigt die Tabelle „Fehlercodes des Ausgangs
Status“ auf Seite 15.
ReadByteCount INT Anzahl der gelesenen Bits / Register
WrittenByteCount INT Anzahl der geschriebenen Bits / Register
ReadBuffer BYTE Zwischenspeicher (max. 250 Byte), in dem die gelesenen Bits / Register ab-
WORD gelegt werden (abhängig vom verwendeten Funktionscode).
DWORD
ARRAY OF BYTE, Zum Definieren der Größe des Zwischenspeichers siehe Kapi-
ARRAY OF WORD tel 5.5 „Größe des ReadBuffers / WriteBuffers festlegen“ .
ARRAY OF DWORD
WriteBuffer BYTE Zwischenspeicher (max. 250 Byte) für die geschriebenen Bits / Register (ab-
WORD hängig vom verwendeten Funktionscode).
DWORD
ARRAY OF BYTE, Zum Definieren der Größe des Zwischenspeichers siehe Kapi-
ARRAY OF WORD tel 5.5 „Größe des ReadBuffers / WriteBuffers festlegen“ .
ARRAY OF DWORD

5.3 Fehlercodes des Ausgangs Status (Error = TRUE)

Fehlercodes des Ausgangs Status


Wert Bedeutung
0x0101 0000 Nicht unterstützte/unbekannte Modbus-Funktion
0x0102 0000 Der Wert für MaxReadCount liegt außerhalb des zulässigen Bereichs.
0x0103 0000 Der Wert für WriteCount liegt außerhalb des zulässigen Bereichs.
0x0104 0000 Falscher Datentyp des ReadBuffers.
0x0105 0000 Die Elemente des Arrays ReadBuffer sind nicht vom Typ WORD, DWORD oder BYTE.
0x0106 0000 Falscher Datentyp des WriteBuffers.
0x0107 0000 Die Elemente des Arrays WriteBuffer sind nicht vom Typ WORD, DWORD oder BYTE.
0x0108 0000 ReadBuffer ist zu klein. Verringern Sie die Anzahl der Elemente für MaxReadCount oder
vergrößern Sie den ReadBuffer.
0x0109 0000 WriteBuffer ist zu klein. Verringern Sie die Anzahl der Elemente für WriteCount oder vergrö-
ßern Sie den WriteBuffer.
0x010A 0000 ReadBuffer ist zu groß.

Zum Definieren der Größe des Zwischenspeichers siehe Kapi-


tel 5.5 „Größe des ReadBuffers / WriteBuffers festlegen“ .

8294_de_03 PHOENIX CONTACT 15 / 32


MODBUS/TCP

Fehlercodes des Ausgangs Status


Wert Bedeutung
0x010B 0000 WriteBuffer ist zu groß.

Zum Definieren der Größe des Zwischenspeichers siehe Kapi-


tel 5.5 „Größe des ReadBuffers / WriteBuffers festlegen“ .
0x0201 0000 Unbekannte Server-ID (nicht konfiguriert)
0x0202 xxxx Modbus-Protokoll-Fehlercode

Details zu den Fehlercodes des Modbus/TCP-Protokolls finden Sie im Doku-


ment „MODBUS APPLICATION PROTOCOL SPECIFICATION“.
Für aktuelle Versionen des Dokuments siehe modbus.org.
0x0203 0016 Zeitüberschreitung beim Empfangen der Antwort (Response) vom Modbus/TCP-Server.
0x0203 0019 Die Verbindung wurde durch den Modbus/TCP-Server beendet.
0x0203 001F Anfrage (Request) wurde nicht gesendet. Der Modbus/TCP-Server ist nicht erreichbar.
0x0301 0000 Zeitüberschreitung beim Empfangen der Antwort (Response) vom Modbus-Stack. Der
Modbus/TCP-Server ist nicht erreichbar.

5.4 Verwendung der Diagnosestruktur


MBT_STATION_DIAG

Nähere Informationen zur Programmierung in der


Funktionsbausteinsprache (FBD) finden Sie im
Schnelleinstieg UM QS DE PC WORX.
• Doppelklicken Sie auf den Eingangsparameter „IP“ des
Funktionsbausteins, um die Eigenschaften der Variable
festzulegen.
• Wählen Sie im Fenster „Eigenschaften: Variable“ den
Namen der zuvor angelegten Diagnosestruktur (hier:
„MB_DIAG“).

Bild 11 Anlegen der Variable MB_DIAG.IP (2)

Bild 10 Anlegen der Variable MB_DIAG.IP (1)

• Setzen Sie einen Punkt hinter den ausgewählten Na-


men und wählen Sie in der sich öffnenden Liste den
Eintrag „IP“.
Bild 12 Anlegen der Variable MB_DIAG.IP (3)

8294_de_03 PHOENIX CONTACT 16 / 32


MODBUS/TCP

• Bestätigen Sie Ihre Eingaben mit „OK“.


Dem Eingangsparameter „IP“ des Funktionsbausteins ist
nun die IP-Adresse der Diagnosestruktur „MB_DIAG“ zuge-
wiesen (siehe Bild 13).

Bild 14 Datentypen anlegen

• Wenn Sie die Datentypen definiert haben, wählen Sie


den Befehl „Code, Make“.
Nach dem Kompilieren können Sie die Datentypen im Vari-
ablenarbeitsblatt verwenden. In Bild 15 wird der zuvor an-
gelegte Datentyp „MODBUS_BUFFER_BSP1“ für den Ein-
gangs-/Ausgangsparameter „ReadBuffer“ verwendet.
• Doppelklicken Sie am Funktionsbaustein
MB_ASYNC_RW_1 auf den Eingangsparameter
„ReadBuffer“.
• Geben Sie im Fenster „Eigenschaften: Variable“ einen
Bild 13 Variable MB_DIAG.IP als „IP“ am Funktions- Namen für die Variable an (im Beispiel
baustein „Read_Buffer_1“).
• Wählen Sie in der Liste „Datentyp“ den zuvor angeleg-
• Legen Sie für den Eingangsparameter „UnitID“ die Va- ten Datentyp, den Sie verwenden möchten (im Beispiel
riable MB_DIAG.UnitID an. Gehen Sie dabei vor, wie „MODBUS_BUFFER_BSP1“).
bereits für die Variable MB_DIAG.IP beschrieben.

5.5 Größe des ReadBuffers / WriteBuffers fest-


legen
Die Größe der Parameter „ReadBuffer“ und „WriteBuffer“
können Sie individuell festlegen, indem Sie entsprechende
Datentypen definieren (hier: „ReadBuffer“ vom Datentyp
ARRAY OF BYTE, „WriteBuffer“ vom Datentyp ARRAY OF
WORD).

ReadBuffer und WriteBuffer dürfen jeweils maxi-


mal 250 Byte groß sein. Die Parameter dürfen
vom Datentyp BYTE, WORD, DWORD oder ein
Array dieser Datentypen sein.
• Doppelklicken Sie im Projektbaum-Fenster auf
„sys_flag_types“. Bild 15 Anlegen einer Variable
• Definieren Sie wie in Bild 14 dargestellt die gewünsch-
ten Datentypen und deren Größe. • Bestätigen Sie Ihre Eingaben mit „OK“.
Dem Eingangs-/Ausgangsparameter „ReadBuffer“ ist nun
die Variable „Read_Buffer_1“ zugewiesen.

8294_de_03 PHOENIX CONTACT 17 / 32


MODBUS/TCP

In Bild 17 sind beispielhaft zwei Modbus/TCP-Teilnehmer


dargestellt. Der Teilnehmer „# 1 Generic Modbus Device“ ist
ein Modbus/TCP-Server, der Teilnehmer „# 2 Generic Mod-
bus Device (Gateway)“ ist ein Gateway zur Umsetzung von
Modbus/TCP auf Modbus/RTU. Das Gateway fungiert im
Modbus/TCP-Netzwerk als Modbus/TCP-Server und im
Modbus/RTU-Netzwerk als Modbus/RTU-Master. Die ein-
zelnen Modbus/RTU-Teilnehmer (# 3 Generic Modbus De-
vice (RTU) etc.) stellen dabei die Modbus/RTU-Slaves dar
und werden über ihre UnitID adressiert.

Bild 16 Variable „Read_Buffer_1“ als „ReadBuffer“ am


Funktionsbaustein

Weitere Informationen zu anwenderdefinierten


Datentypen und deren Verwendung finden Sie in
der Online-Hilfe von PC Worx.

6 Betrieb von unterlagerten Modbus/


RTU-Teilnehmern über ein Gate- Bild 18 Einstellungen eines Modbus/RTU-Teilneh-
way mers

Diese Funktion ist verfügbar ab Für die azyklische Kommunikation mit den Modbus/RTU-
AUTOMATIONWORX Software Suite Teilnehmern wird der Funktionsbaustein MB_ASYNC_RW
Version 1.81 AddOn V1. verwendet, siehe hierzu Kapitel 5.2.

Über ein Gateway ist der Betrieb von unterlagerten


Modbus/RTU-Teilnehmern möglich. Hierzu müssen in
PC Worx alle Modbus/TCP- und Modbus/RTU-Teilnehmer
sowie das Gateway im Fenster „Busaufbau“ dargestellt wer-
den (siehe Bild 17).

Bild 17 Busaufbau mit Modbus/TCP-Teilnehmern und


unterlagerten Modbus/RTU-Teilnehmern

8294_de_03 PHOENIX CONTACT 18 / 32


MODBUS/TCP

7 Controller als Modbus/TCP-Server • Falls der Gerätekatalog nicht eingeblendet ist, blenden
Sie ihn über das Menü „Ansicht, Gerätekatalog“ ein.
konfigurieren
• Öffnen Sie den Gerätekatalog „Phoenix Contact, Gene-
Ab der Firmware-Version 4.40 können Controller ric, Server“.
des Typs ILC 1X1 auch als Modbus/TCP-Server • Fügen Sie den Controller als generischen
konfiguriert werden. Diese Funktion ist verfügbar Modbus/TCP-Server ein, indem Sie „Modbus Server“
ab AUTOMATIONWORX Software Suite auswählen.
Version 1.82 AddOn V1.

Kommunikationsverbindungen zu Modbus/TCP-
Clients
Die einzelnen Controller des Typs ILC 1X1 unterstützen
eine unterschiedliche Anzahl an Kommunikationsverbin-
dungen zu Modbus/TCP-Clients:

Controller Max. Anzahl an Kommunikations-


verbindungen zu Modbus/TCP-
Clients Bild 19 „Modbus Server“ auswählen
ILC 131 ETH
4
ILC 131 ETH/XC • Verschieben Sie den „Modbus Server“ bei gedrückter
ILC 151 ETH linker Maustaste in das Fenster „Busaufbau“ rechts ne-
6
ILC 151 ETH/XC ben das Symbol MODBUS, bis das Symbol „Einfügen
ILC 171 ETH 2TX 8 in untergeordneter Ebene“ erscheint.
ILC 191 ETH 2TX In Bild 20 ist der Busaufbau mit eingefügtem Modbus/TCP-
ILC 191 ME/AN 8 Server dargestellt.
ILC 191 ME/INC

7.1 Modbus/TCP-Server in PC Worx – Beispielpro-


jekt
Die Vorgehensweise zum Erstellen eines Modbus-Projekts
mit einem Controller als Modbus/TCP-Server ist prinzipiell
mit der im Kapitel 5.1 beschriebenen Vorgehensweise zum
Erstellen eines Modbus-Projekts mit einem Controller als
Modbus/TCP-Client identisch.
In diesem Kapitel werden ausschließlich die Unterschiede
in der Vorgehensweise näher beschrieben.
Bei identischer Vorgehensweise wird auf Kapitel 5.1 verwie- Bild 20 „Modbus Server“ eingefügt
sen.

7.1.1 Neues Projekt anlegen


Siehe hierzu Kapitel 5.1.1 Es kann nur ein Controller als generischer „Mod-
bus Server“ eingefügt werden.
7.1.2 Projektinformationen angeben Die IP-Einstellungen des eingefügten
Modbus/TCP-Servers entsprechen den IP-Ein-
Siehe hierzu Kapitel 5.1.2 stellungen, die Sie für den Controller bereits vor-
genommen haben.
7.1.3 IP-Einstellungen für Controller prüfen/ändern
Siehe hierzu Kapitel 5.1.3

7.1.4 Modbus/TCP-Server einfügen


• Stellen Sie sicher, dass Sie sich im Arbeitsbereich Bus-
konfiguration befinden.

8294_de_03 PHOENIX CONTACT 19 / 32


MODBUS/TCP

7.1.5 Einstellungen des Modbus/TCP-Servers än- den Prozessdaten-Watchdog zurück.


dern Der Prozessdaten-Watchdog kann nicht vom Modbus/TCP-
Server zurückgesetzt werden.
Nach dem Einfügen in den Busaufbau werden für den
Modbus/TCP-Server Default-Werte gesetzt. Diese können Bei lesenden Zugriffen auf diese Registeradresse wird der
Sie auf der Registerkarte „Modbus-Einstellungen“ ändern. aktuelle Zustand des Prozessdaten-Watchdogs
• Stellen Sie sicher, dass Sie sich im Arbeitsbereich Bus- (Bit 1 = 0: Watchdog hat nicht ausgelöst,
konfiguration befinden. Bit 1= 1: Watchdog hat ausgelöst) ausgelesen.
• Markieren Sie im Fenster „Busaufbau“ den „Modbus Prozessdaten-Watchdog-Trigger-Verhalten
Server“.
• Wählen Sie im Fenster „Gerätedetails“ die Registerkar- Für den Fall, dass der Prozessdaten-Watchdog ausgelöst
te „Modbus-Einstellungen“. hat, kann für den Modbus/TCP-Server ein Ersatzwertverhal-
ten eingestellt werden. Folgende Einstellungen sind mög-
• Ändern Sie entsprechend Ihrer Anforderungen die
lich:
Modbus-Einstellungen.
– „Eingänge auf 0 setzen“ (Default-Einstellung)
Eingänge werden auf Null gesetzt.
– „Letzten Wert halten“
Eingänge behalten ihren letzten Wert.
– „Eingänge übernehmen Schreibzugriffe“
Eingänge werden weiterhin aktualisiert. Der Zustand
des Prozessdaten-Watchdogs wird in der Diagnose-
struktur „NODE_STATUS_255“ unter „Flags“ darge-
stellt. Wenn der Watchdog ausgelöst hat, wird das
entsprechende Flag gesetzt. In diesem Fall müssen Sie
entscheiden, wie mit den Werten der Eingänge verfah-
ren werden soll und einen entsprechenden Algorithmus
programmieren.

Port
TCP/UDP-Port, über den die Kommunkation mit dem
Bild 21 Modbus-Einstellungen des Modbus/TCP-Ser- Modbus-Client erfolgt.
vers Standardmäßig wird Port 502 verwendet.

7.1.6 Kompilieren nach Fertigstellen der Busstruktur


Zu den Modbus-Einstellungen des Modbus/TCP-Servers
gehören: • Wählen Sie den Befehl „Code, Make“.

Prozessdaten-Watchdog-Trigger 7.1.7 Programm erstellen


Der Prozessdaten-Watchdog-Trigger gibt die zeitliche Peri- • Erstellen Sie das Programm.
ode an, in der spätestens ein erneuter Schreibzugriff auf Gehen Sie zum Programmieren des Beispielprogramms
den Modbus/TCP-Server erfolgen muss. entsprechend der Beschreibung im Schnelleinstieg
Die hier eingestellte Zeit sollte doppelt so groß wie die auf UM QS DE PC WORX vor.
dem Modbus/TCP-Client (siehe hierzu Kapitel 5.1.5) einge-
stellte Prozessdaten-Watchdog-Zeit sein. Die Zeit beginnt 7.1.8 Kompilieren nach Erstellen des Programms
zu laufen, nachdem der erste Schreibzugriff durch den
Modbus/TCP-Client erfolgt ist. • Wählen Sie den Befehl „Code, Make“.
Die Einstellung „0 ms“ bedeutet, dass der Prozessdaten-
7.1.9 Prozessdaten erstellen und Register definieren
Watchdog ausgeschaltet ist.
Für die erfolgreiche Kommunikation zwischen
Prozessdaten-Watchdog-Trigger-Register Modbus/TCP-Client(s) und Modbus/TCP-Server müssen
Registeradresse (Default-Wert: 1000) Sie auf der Client- und auf der Server-Seite Register für die
schreibenden und lesenden Zugriffe definieren. Hierfür
Ein schreibender Zugriff des Modbus/TCP-Clients auf das müssen Sie entsprechende Prozessdaten erstellen.
Bit 0 dieser Registeradresse setzt mit steigender Flanke

8294_de_03 PHOENIX CONTACT 20 / 32


MODBUS/TCP

Für den Modbus/TCP-Client müssen Sie zudem noch die


Modbus-Funktionscodes für den schreibenden und lesen-
den Zugriff festlegen, siehe hierzu Kapitel 5.1.9. Im Busaufbau von PC Worx werden die Modbus-
Funktionscodes FC05 und FC06 nur vom
Zum Erstellen der Prozessdaten und zum Definieren der Modbus/TCP-Server unterstützt.
Register auf der Server-Seite gehen Sie wie folgt vor:
• Stellen Sie sicher, dass Sie sich im Arbeitsbereich Bus-
konfiguration befinden.
• Markieren Sie im Fenster „Busaufbau“ den „Modbus
Server“.
• Wählen Sie im Fenster „Gerätedetails“ die Registerkar-
te „Modbus-Register“.
• Öffnen Sie per Rechtsklick das Kontextmenü des Fel-
des „Name“.
• Wählen Sie den Menüpunkt „Hinzufügen“. Bild 23 Prozessdaten erstellen und Register definie-
• Geben Sie im Feld „Name“ einen eindeutigen und aus- ren
sagekräftigen Namen für das Prozessdatum an.
• Wählen Sie den gewünschten Datentyp. Sofern Sie als Modbus/TCP-Client eine der in den „Bestell-
daten“ auf Seite 4 genannten Steuerungen und als
• Geben Sie die Register-Anzahl an.
Modbus/TCP-Server einen Controller des Typs ILC 1X1mit
• Wählen Sie die gewünschte Datenrichtung aus.
einer Firmware-Version ≥ 4.40 einsetzen, ist Folgendes zu
beachten:
Beachten Sie:
Wenn die Datentypen der definierten Register auf der Cli-
– Datenrichtung „IN“: ent- und Server-Seite nicht aufeinander abgestimmt sind,
Es werden Register angelegt, auf die ein Modbus/TCP- kommt es beim Lesen oder Schreiben von Registern zu
Client sowohl lesenden als auch schreibenden Zugriff einer gedrehten Byte-Reihenfolge.
hat.
In PC Worx werden solche Register als Eingangsvaria- ACHTUNG:
blen dargestellt. Bei der Verknüpfung einer Prozessvariable des
– Datenrichtung „OUT“ Datentyps Array [] of (D)WORD kann es zu einer
Es werden Register angelegt, auf die ein Modbus/TCP- gedrehten Byte-Reihenfolge kommen. Weitere
Client nur lesenden Zugriff hat. Informationen hierzu finden Sie im Kapitel 9.
In PC Worx werden solche Register als Ausgangsvari-
ablen dargestellt.

Controller (Server)

WORD Read
OUT
Input Registers FC04
0000hex ... ffffhex

WORD Read/Write
SPS- IN
Holding Registers FC03/FC16/FC06/FC23
Client(s)
0000hex ... ffffhex
Laufzeit
(eCLR) BIT
Discrete Inputs Read
OUT FC02
0000hex ... ffffhex

BIT Read/Write
IN Coils FC01/FC05/FC15
0000hex ... ffffhex

Bild 22 Datenrichtung bei interner und externer Kom-


munikation des Modbus/TCP-Servers
(ILC 1X1 ab FW 4.40)

8294_de_03 PHOENIX CONTACT 21 / 32


MODBUS/TCP

Beispiel: Es muss eine Prozessvariable des Datentyps WORD ange-


Bild 24 zeigt nicht aufeinander abgestimmte Registerdefini- legt und mit dem Prozessdatum Read_Register verknüpft
tionen auf der Server- und Client-Seite. werden (siehe hierzu Kapitel 7.1.10).
Wird nun der beim Client definierte Funktionscode ausge-
führt, wird vom Server das erste Element des WORD-Arrays
ausgelesen und in umgedrehter Byte-Reihenfolge in die für
den Client definierte Prozessvariable kopiert (siehe Bild 27).
PxC Client Modbus/TCP Frame PxC Server

WORD 0 Byte 0 Byte 1 WORD 0 Byte 0 Byte 1 Byte 1 Byte 0 WORD 0


Byte 3 Byte 2 WORD 1

Byte 5 Byte 4 WORD 2


Byte 7 Byte 6 WORD 3

Byte 9 Byte 8 WORD 4

Bild 27 Umgedrehte Byte-Reihenfolge in der Prozess-


variable des Clients

Um eine gedrehte Byte-Reihenfolge zu vermeiden, muss


bei der Verwendung von Arrays sowohl auf der Client- als
auch auf der Server-Seite ein WORD-Array definiert wer-
den.
Bild 24 Nicht aufeinander abgestimmte Registerdefi-
Hierzu muss im Beispiel auf der Client- und auf der Server-
nitionen
Seite auf der Registerkarte „Modbus-Register“ unter „An-
zahl“ mindestens der Wert „2“ eingegeben werden, siehe
Für das Register auf der Server-Seite wurde ein WORD-
Bild 28.
Array der Länge 5 angelegt (siehe hierzu Bild 25).

Bild 25 Datentyp des definierten Registers für den


Modbus-Server im Arbeitsbereich Prozessda-
tenzuordnung

Es muss eine Prozessvariable des Datentyps Array [0 ... 4]


of WORD angelegt und mit dem Prozessdatum
Word_Array_Register_Read verknüpft werden (siehe
hierzu Kapitel 7.1.10).
Für das Register auf der Client-Seite wurde ein einfacher,
einzelner WORD-Datentyp (kein Array) angelegt (siehe
hierzu Bild 26). Bild 28 Aufeinander abgestimmte Registerdefinitio-
nen

Beachten Sie:
Der gewählte Datentyp der Prozessvariable auf
Bild 26 Datentyp des definierten Registers für den der Server-Seite muss dem Datentyp auf der Cli-
Modbus-Client im Arbeitsbereich Prozessda- ent-Seite entsprechen (WORD-Array  WORD-
tenzuordnung Array oder WORD  WORD).
Ist dies nicht der Fall, kommt es zu einer gedreh-
ten Byte-Reihenfolge.

8294_de_03 PHOENIX CONTACT 22 / 32


MODBUS/TCP

PxC Client Modbus/TCP Frame PxC Server


Parameter Beschreibung
WORD 0 Byte 1 Byte 0 WORD 0 Byte 0 Byte 1 Byte 1 Byte 0 WORD 0
LastExceptionRegLength Länge des Registers, in dem
WORD 1 Byte 3 Byte 2 WORD 1 Byte 2 Byte 3 Byte 3 Byte 2 WORD 1 die letzte Ausnahme (Excep-
Byte 5 Byte 4 WORD 2 tion) aufgetreten ist
Byte 7 Byte 6 WORD 3
LastExceptionNode Server-Instanz (Node), auf
Byte 9 Byte 8 WORD 4
der die letzte Ausnahme (Ex-
Bild 29 Byte-Reihenfolge in der Prozessvariable des ception) aufgetreten ist
Clients bei abgestimmter Prozessvariablen- LastExceptionFunction Funktionsfeld der Anfrage
Verknüpfung unter Verwendung des Daten- (Request), bei der die letzte
typs Word-Array auf beiden Seiten Ausnahme aufgetreten ist
LastExceptionCode Ausnahmecode (Modbus Ex-
7.1.10 Variablen erzeugen und Prozessdaten zuord- ception code) der letzten auf-
nen getretenen Ausnahme
• Ordnen Sie die erstellten Prozessdaten den entspre- align Dient zur Speicherausrich-
chenden Variablen zu. tung
• Falls noch keine entsprechenden Variablen angelegt
sind, erzeugen Sie diese. Ein als Modbus/TCP-Server betriebener Control-
Informationen zur Zuordnung von Prozessdaten zu Variab- ler des Typs ILC 1X1 besitzt eine Server-Instanz
len und zur Erzeugung von Variablen finden Sie im (Node). Diese Server-Instanz besitzt die UnitID
Kapitel 5.1.10. 255.
In der Anfrage (Request) des Modbus/TCP-Cli-
7.1.11 Diagnose- und Kontrollvariablen erzeugen und ents kann die UnitID beliebig gewählt werden, um
Prozessdaten zuordnen auf bestimmte Register des Modbus/TCP-Ser-
vers zuzugreifen.
Die Diagnose- und Kontrollstruktur ist im Arbeits-
bereich IEC-Programmierung im Projektbaum- – Diagnosestruktur „MBS_NODE_STATUS“:
Fenster unter „Datentypen, sys_flag_types“ de-
klariert. Parameter Beschreibung
Für den Modbus-Server stellt PC Worx folgende Diagnose- ModbusRequestCnt Anzahl der empfangenen An-
und Kontrollstrukturen zur Verfügung: fragen (Requests) dieser Ser-
ver-Instanz (Node)
– Diagnosestruktur „MBS_SERVER_STATUS“:
ModbusExceptionCnt Anzahl der gesendeten Aus-
nahmen (Exceptions) dieser
Parameter Beschreibung Server-Instanz (Node)
AcceptCnt Anzahl bisheriger und aktuell Flags Wenn der Prozessdaten-
aufgebauter Verbindungen Watchdog ausgelöst hat, wird
AcceptErrorCnt Anzahl der Fehler während das Flag dieser Server-Ins-
des Verbindungsaufbaus tanz (Node) gesetzt
ReceiveErrorCnt Anzahl der Fehler beim Emp- (Bit 0 = 1).
fangen von Anfragen reserved Reserviert
ModbusRequesCnt Anzahl der empfangenen An-
fragen (Requests)
– Kontrollstruktur „MBS_SERVER_CONTROL“:
ModbusExceptionCnt Anzahl der gesendeten Aus-
nahmen (Exceptions)
Parameter Beschreibung
SocketErrorCode Fehlercode des Socket-Feh-
lers Flags Mit einer steigenden Flanke
an Bit 0 werden alle Parame-
ConnectedClients Anzahl der aktuell verbunde-
ter der Diagnosestrukturen
nen Modbus-Clients
zurückgesetzt.
LastExceptionRegister Register, in dem die letzte
Ausnahme (Exception) aufge-
treten ist

8294_de_03 PHOENIX CONTACT 23 / 32


MODBUS/TCP

Parameter Beschreibung • Fügen Sie über das Kontextmenü eine neue Variable
ein, die als Diagnosevariable der Struktur
reserved1 Reserviert
„SERVER_STATUS“ verwendet werden soll.
reserved2 Reserviert
• Wählen Sie für die Diagnosevariable den Typ
reserved3 Reserviert MBS_SERVER_STATUS aus.
• Fügen Sie über das Kontextmenü eine weitere Variable
Um die Diagnose- und Kontrollstrukturen nutzen zu können, ein, die als Diagnosevariable der Struktur
legen Sie zwei Diagnosevariablen und eine Kontrollvariable „MBS_NODE_STATUS“ verwendet werden soll.
an. • Wählen Sie für die Diagnosevariable den Typ
• Wechseln Sie in den Arbeitsbereich IEC-Programmie- MBS_NODE_STATUS aus.
rung. • Fügen Sie über das Kontextmenü eine weitere Variable
• Doppelklicken Sie im Projektbaum-Fenster auf „Global ein, die als Kontrollvariable der Struktur
Variables“. „SERVER_CONTROL“ verwendet werden soll.
Die globalen Variablen der Standard-Ressource werden • Wählen Sie für die Diagnosevariable den Typ
angezeigt. MBS_SERVER_CONTROL aus.

Bild 30 Diagnose- und Kontrollvariablen erzeugen

• Wechseln Sie in den Arbeitsbereich Prozessdatenzu-


ordnung und nehmen Sie die Zuordnung von Prozess-
daten zu den Kontroll- und Diagnosevariablen vor, wie
im Kapitel 5.1.10 auf Seite 10 beschrieben.
Das Ergebnis der Prozessdatenzuordnung ist in Bild 31 dar-
gestellt.

8294_de_03 PHOENIX CONTACT 24 / 32


MODBUS/TCP

Bild 31 Prozessdaten den Diagnose- und Kontrollvariablen zugeordnet

7.1.12 Zyklischen Task für die Aktualisierungszeit der für das PC Worx-Projekt stehen mehr Ressourcen zur Ver-
Modbus-Register definieren fügung.
Die Modbus-Register werden standardmäßig mit dem Stan- • Erstellen Sie einen zyklischen Task und legen Sie eine
dardtask (STD_TASK) aktualisiert. Der Standardtask wird angemessene Zykluszeit fest („Intervall“ im Fenster
dabei mit dem schnellstmöglichen Zyklus durchlaufen, „Task-Einstellungen“; empfohlene Einstellung:
wobei die Zykluszeit oft 4 ms beträgt. Hierdurch wird eine > 10 ms).
hohe CPU-Auslastung verursacht. Um die CPU-Auslastung Informationen zum Erstellen eines Tasks finden Sie im
zu verringern, können Sie einen zyklischen Task definieren, Schnelleinstieg UM QS DE PC WORX und in der On-
dessen Zykluszeit größer ist als die des Standardtasks. Da line-Hilfe von PC Worx.
die Modbus-Register innerhalb einer größeren Zykluszeit • Markieren Sie im Fenster „Busaufbau“ die Standard-
aktualisiert werden, wird die CPU weniger ausgelastet und Ressource und wählen Sie im Fenster „Gerätedetails“
für „E/A Aktualisierung mit Task“ den zuvor erstellten
zyklischen Task aus (siehe Bild 32).

Bild 32 Zyklischen Task für „E/A Aktualisierung mit Task“ auswählen

7.1.13 Projekt kompilieren


• Wählen Sie den Befehl „Code, Make“.

7.1.14 Projekt senden und Kaltstart durchführen


Siehe hierzu Kapitel 5.1.14

8294_de_03 PHOENIX CONTACT 25 / 32


MODBUS/TCP

8 Multi-Controller-Projekte konfigu- 8.4 Spezifisches Modbus-Device einfügen


rieren – Beispielprojekt Im Beispiel wird der Controller ILC 191 ME/AN
als Modbus/TCP-Server verwendet.
Ab der Firmware-Version 4.40 können Controller
Für die Kommunikation zwischen Modbus/TCP-
des Typs ILC 1X1 auch als Modbus/TCP-Server
Client (hier: ILC 131 ETH) und -Server sind be-
konfiguriert werden. Diese Funktion ist verfügbar
stimmte Einstellungen erforderlich. Diese Einstel-
ab AUTOMATIONWORX Software Suite
lungen werden in PC Worx über das spezifische
Version 1.82 AddOn V1.
Modbus-Device des als Modbus/TCP-Server ein-
In Multi-Controller-Projekten können Controller entweder gesetzten Controllers vorgenommen.
als Modbus/TCP-Clients, als Modbus/TCP-Server oder Das spezifische Modbus-Device des als
gleichzeitig als Modbus/TCP-Clients und Modbus/TCP- Modbus/TCP-Server eingesetzten Controllers
Server betrieben werden. muss in den Busaufbau eingefügt werden, damit
Der Busaufbau eines Multi-Controller-Projektes kann in eine Kommunikation zwischen Modbus/TCP-Cli-
einem PC Worx-Projekt abgebildet werden. ent und -Server erfolgen kann.
Bild 33 zeigt einen beispielhaften Client-Server-Aufbau. • Stellen Sie sicher, dass Sie sich im Arbeitsbereich Bus-
ILC 131 ETH ILC 191 ME/AN EEM-MA600
konfiguration befinden.
• Falls der Gerätekatalog nicht eingeblendet ist, blenden
Sie ihn über das Menü „Ansicht, Gerätekatalog“ ein.
Modbus/TCP Modbus/TCP
• Öffnen Sie den Gerätekatalog „Phoenix Contact,
ILC1xx, SPS“.
Client Server/Client Server
• Wählen Sie das spezifische Modbus-Device für den
Controller ILC 191 ME/AN „ILC 191 ME/AN (Modbus
Bild 33 Beispielhafter Client-Server-Aufbau
Device)“ aus.
Im Beispiel wird der Controller links im Bild als
Modbus/TCP-Client betrieben. Der Controller in der Bild-
mitte wird gleichzeitig als Modbus/TCP-Server (in Bezug
auf den Controller links im Bild) und Modbus/TCP-Client (in
Bezug auf das Energiemessgerät rechts im Bild) betrieben.
Nachfolgend wird das Beispiel schrittweise als PC Worx-
Projekt erstellt.
Die Vorgehensweise zum Erstellen eines Multi-Controller-
Projekts ist generell mit den in den Kapiteln 5.1 und 7.1 be-
schriebenen Vorgehensweisen identisch.
In diesem Kapitel werden ausschließlich die Unterschiede
in der Vorgehensweise näher beschrieben.
Bei identischer Vorgehensweise wird auf das jeweilige Ka-
pitel verwiesen. Bild 34 Spezifisches Modbus-Device „ILC 191 ME/AN
(Modbus Device)“ auswählen
8.1 Neues Projekt anlegen
• Legen Sie ein neues Projekt an und wählen Sie als Con- • Verschieben Sie das spezifische Modbus-Device „ILC
troller den ILC 131 ETH aus, siehe hierzu Kapitel 5.1.1. 191 ME/AN (Modbus Device)“ bei gedrückter linker
Maustaste in das Fenster „Busaufbau“ rechts neben
8.2 Projektinformationen angeben das Symbol MODBUS, bis das Symbol „Einfügen in un-
tergeordneter Ebene“ erscheint.
Siehe hierzu Kapitel 5.1.2
In Bild 35 ist der Busaufbau mit eingefügtem spezifischem
8.3 IP-Einstellungen für Controller prüfen/ändern Modbus-Device dargestellt.
Siehe hierzu Kapitel 5.1.3

8294_de_03 PHOENIX CONTACT 26 / 32


MODBUS/TCP

In Bild 36 ist der Busaufbau mit eingefügtem Controller


ILC 191 ME/AN dargestellt.

Bild 35 Spezifisches Modbus-Device „ILC 191 ME/AN


(Modbus Device)“ eingefügt

8.5 Einstellungen des spezifischen Modbus-De-


vice ändern
Nach dem Einfügen in den Busaufbau werden für jedes Bild 36 Controller ILC 191 ME/AN eingefügt
„Generic Modbus Device“ Default-Werte gesetzt. Diese
können Sie auf der Registerkarte „Modbus-Einstellungen“ 8.7 IP-Einstellungen für Controller prüfen/ändern
ändern.
Siehe hierzu Kapitel 5.1.3
Die Einstellungen des spezifischen Modbus-De-
vice sind für die Kommunikation zwischen Mod- 8.8 Modbus/TCP-Server einfügen
bus/TCP-Client (hier: ILC 131 ETH) und Modbus/ Im Beispiel soll der Controller ILC 191 ME/AN als
TCP-Server (hier: ILC 191 ME/AN) erforderlich. Modbus/TCP-Server in Bezug auf den ILC 131 ETH fungie-
• Stellen Sie sicher, dass Sie sich im Arbeitsbereich Bus- ren.
konfiguration befinden. Daher müssen Sie den Controller als generischen Modbus/
TCP-Server einfügen, siehe hierzu Kapitel 7.1.4.
• Markieren Sie im Fenster „Busaufbau“ das spezifische
Modbus-Device „ILC 191 ME/AN (Modbus Device)“. In Bild 37 ist der Busaufbau mit eingefügtem generischen
• Wählen Sie im Fenster „Gerätedetails“ die Registerkar- Modbus/TCP-Server dargestellt.
te „Modbus-Einstellungen“.
• Ändern Sie entsprechend Ihrer Anforderungen die
Modbus-Einstellungen.
Informationen zu den Modbus-Einstellungen finden Sie im
Kapitel 5.1.5.

8.6 Controller ILC 191 ME/AN einfügen


Nachdem Sie das spezifische Modbus-Device „ILC 191
ME/AN (Modbus Device)“ eingefügt haben, müssen Sie den
Controller ILC 191 ME/AN einfügen.
• Stellen Sie sicher, dass Sie sich im Arbeitsbereich Bus-
konfiguration befinden.
• Falls der Gerätekatalog nicht eingeblendet ist, blenden
Sie ihn über das Menü „Ansicht, Gerätekatalog“ ein.
• Öffnen Sie den Gerätekatalog „Phoenix Contact, Bild 37 „Modbus Server“ eingefügt
ILC1xx, SPS“.
• Wählen Sie den Controller „ILC 191 ME/AN Rev. >= 00/
4.40“ aus.
• Verschieben Sie den Controller „ILC 191 ME/AN Rev.
>= 00/4.40“ bei gedrückter linker Maustaste in das
Fenster „Busaufbau“.

8294_de_03 PHOENIX CONTACT 27 / 32


MODBUS/TCP

Die Busstruktur für das Beispielprojekt ist nun fertiggestellt.


Es kann nur ein Controller als generischer „Mod- 8.12 Kompilieren nach Fertigstellen der Busstruktur
bus Server“ eingefügt werden.
Die IP-Einstellungen des eingefügten • Wählen Sie den Befehl „Code, Make“.
Modbus/TCP-Servers entsprechen den IP-Ein-
stellungen, die Sie für den Controller bereits vor- 8.13 Programm erstellen
genommen haben. • Erstellen Sie das Programm.
Gehen Sie zum Programmieren des Beispielprogramms
8.9 Einstellungen des Modbus/TCP-Servers än- entsprechend der Beschreibung im Schnelleinstieg
dern UM QS DE PC WORX vor.
Siehe hierzu Kapitel 7.1.5
8.14 Kompilieren nach Erstellen des Programms
8.10 „Generic Modbus Device“ einfügen • Wählen Sie den Befehl „Code, Make“.
Im Beispiel soll der Controller ILC 191 ME/AN
8.15 Prozessdaten erstellen und Modbus-Funkti-
gleichzeitig als Modbus/TCP-Server (in Bezug
onscode zuweisen
auf den Controller ILC 131 ETH) und
Modbus/TCP-Client (in Bezug auf das Energie- • Erstellen Sie für das spezifische Modbus-Device des
messgerät EEM-MA400) betrieben werden (sie- Controllers ILC 191 ME/AN und für das „Generic Mod-
he Bild 33). bus Device“ die notwendigen Prozessdaten und wei-
Für die Kommunikation zwischen dem Controller sen Sie diesen den entsprechenden Modbus-
ILC 191 ME/AN und dem Energiemessgerät Funktionscode zu.
EEM-MA400 sind bestimmte Einstellungen erfor- Gehen Sie dabei vor, wie im Kapitel 5.1.9 beschrieben.
derlich.
Diese Einstellungen werden in PC Worx über das 8.16 Variablen erzeugen und Prozessdaten zuord-
„Generic Modbus Device“ vorgenommen. nen
• Erzeugen Sie für das spezifische Modbus-Device des
• Gehen Sie zum Einfügen des „Generic Modbus Device“
Controllers ILC 191 ME/AN und für das „Generic Mod-
vor, wie im Kapitel 5.1.4 beschrieben.
bus Device“ Variablen und ordnen Sie den Variablen
In Bild 38 ist der Busaufbau mit eingefügtem „Generic entsprechende Prozessdaten zu.
Modbus Device“ dargestellt. Gehen Sie dabei vor, wie im Kapitel 5.1.10 beschrie-
ben.

8.17 Diagnose- und Kontrollvariablen erzeugen und


Prozessdaten zuordnen
• Erzeugen Sie für das spezifische Modbus-Device des
Controllers ILC 191 ME/AN und für das „Generic Mod-
bus Device“ Diagnose- und Kontrollvariablen und ord-
nen Sie den Variablen entsprechende Prozessdaten
zu.
Gehen Sie dabei vor, wie im Kapitel 5.1.11 beschrie-
ben.

8.18 Prozessdaten erstellen und Register definieren


• Erstellen Sie für den Controller ILC 191 ME/AN Pro-
zessdaten und definieren Sie die erforderlichen Regis-
Bild 38 „Generic Modbus Device“ eingefügt ter.
Gehen Sie dabei vor, wie im Kapitel 7.1.9 beschrieben.
8.11 Einstellungen des „Generic Modbus Device“
ändern
Siehe hierzu Kapitel 5.1.5

8294_de_03 PHOENIX CONTACT 28 / 32


MODBUS/TCP

8.19 Variablen erzeugen und Prozessdaten zuord- 9 Besonderheiten beim Lesen und
nen
Schreiben von Arrays
• Erzeugen Sie für den Controller ILC 191 ME/AN Varia-
blen und ordnen Sie den Variablen entsprechende Pro- Falls Sie als Modbus/TCP-Client eine der in den „Bestellda-
zessdaten zu. ten“ auf Seite 4 genannten Steuerungen und als
Gehen Sie dabei vor, wie im Kapitel 7.1.10 beschrie- Modbus/TCP-Server ein Gerät eines anderen Herstellers
ben. (oder als Modbus/TCP-Server einen Controller des Typs
ILC 1X1 und als Modbus/TCP-Client ein Gerät eines ande-
8.20 Diagnose- und Kontrollvariablen erzeugen und ren Herstellers) verwenden, kommt es bei Verwendung von
Prozessdaten zuordnen WORD-Arrays beim Lesen/Schreiben zu einer Drehung der
Byte-Reihenfolge (Einstellung „Bytes vertauschen“ gleich
• Erzeugen Sie für den Controller ILC 191 ME/AN Diag- „nein“, siehe Kapitel 5.1.5).
nose- und Kontrollvariablen und ordnen Sie den Varia-
blen entsprechende Prozessdaten zu. 9.1 Allgemeine Beispiele
Gehen Sie dabei vor, wie im Kapitel 7.1.11 beschrie-
ben. Die nachfolgenden Beispiele zeigen, wie die übertragenen
Daten des Modbus/TCP-Frames in den Prozessvariablen
8.21 Zyklischen Task für die Aktualisierungszeit der des PC Worx-Projekts abgebildet werden.
Modbus-Register definieren
Beispiel 1
• Erstellen Sie für den Controller ILC 191 ME/AN einen
zyklischen Task. Prozessvariable des Datentyps WORD, Einstellung „Bytes
Gehen Sie dabei vor, wie im Kapitel 7.1.12 beschrie- vertauschen“ gleich „nein“.
ben.
PxC Client/Server Modbus/TCP Frame
8.22 Projekt kompilieren WORD 0 Byte 1 Byte 0 Byte 1 Byte 0 WORD 0

• Wählen Sie den Befehl „Code, Make“.


Bild 39 Prozessvariable des Datentyps WORD
8.23 Modbus/TCP-Server konfigurieren
• Nehmen Sie direkt am Modbus/TCP-Server (hier: Ener- Beispiel 2
giemessgerät EEM-MA600) alle erforderlichen Konfi-
Prozessvariable des Datentyps Array [0 ... 1] of WORD, Ein-
gurationen (zum Beispiel Einstellen von IP-Adresse
stellung Bytes vertauschen“ gleich „nein“.
und Prozessdaten-Watchdog) vor.
Die Informationen zur Konfiguration und Inbetriebnahme PxC Client/Server Modbus/TCP Frame
des Geräts finden Sie in der zugehörigen Dokumentation. WORD 0 Byte 0 Byte 1 Byte 1 Byte 0 WORD 0
WORD 1 Byte 2 Byte 3 Byte 3 Byte 2 WORD 1
8.24 Projekt senden und Kaltstart durchführen
Siehe hierzu Kapitel 5.1.14 Bild 40 Prozessvariable des Datentyps Array [0 ... 1]
of WORD

Beispiel 3
Prozessvariable des Datentyps WORD, Einstellung „Bytes
vertauschen“ gleich „ja“.

PxC Client/Server Modbus/TCP Frame

WORD 0 Byte 0 Byte 1 Byte 1 Byte 0 WORD 0

Bild 41 Prozessvariable des Datentyps WORD

8294_de_03 PHOENIX CONTACT 29 / 32


MODBUS/TCP

Beispiel 4 Modbus/TCP-Client ein Gerät eines anderen Herstellers


und als Modbus/TCP-Server eine der in den „Bestelldaten“
Prozessvariable des Datentyps Array [0 ... 1] of WORD, Ein-
auf Seite 4 genannten Steuerungen eingesetzt wird.
stellung „Bytes vertauschen“ gleich „ja“.

PxC Client/Server Modbus/TCP Frame 9.2.1 Beispiel 1:


Lesender Zugriff des Modbus/TCP-Clients
WORD 0 Byte 1 Byte 0 Byte 1 Byte 0 WORD 0
WORD 1 Byte 3 Byte 2 Byte 3 Byte 2 WORD 1 Der Modbus/TCP-Client soll bis zu vier Wörter des
Modbus/TCP-Servers lesen, beginnend mit der Adresse 0.
Die gelesenen Daten werden in PC Worx mit verschiedenen
Bild 42 Prozessvariable des Datentyps Array [0 ... 1]
Datentypen verknüpft.
of WORD
Konfiguration in PC Worx
Beispiel 5
Bild 45 zeigt die Konfiguration und die verwendeten Mod-
Prozessvariable des Datentyps DWORD, Einstellung Bytes bus-Funktionscodes in PC Worx.
vertauschen“ gleich „nein“.

PxC Client/Server Modbus/TCP Frame

Byte 1 Byte 0 WORD 0


DWORD 0 Byte 1 Byte 0 Byte 3 Byte 2
Byte 3 Byte 2 WORD 1

Bild 43 Prozessvariable des Datentyps DWORD Bild 45 Konfiguration und verwendete Modbus-Funk-
tionscodes der Modbus-Register
Beispiel 6
Prozessvariable des Datentyps Array [0 ... 1] of DWORD, Bild 46 zeigt die Deklaration der entsprechend notwendigen
Einstellung Bytes vertauschen“ gleich „nein“. Prozessvariablen.

PxC Client/Server Modbus/TCP Frame

DWORD 0 Byte 2 Byte 3 Byte 0 Byte 1 Byte 1 Byte 0 WORD 0

DWORD 1 Byte 6 Byte 7 Byte 4 Byte 5 Byte 3 Byte 2 WORD 1

Byte 5 Byte 4 WORD 2


Byte 7 Byte 6 WORD 3 Bild 46 Deklaration der notwendigen Prozessvariab-
len
Bild 44 Prozessvariable des Datentyps Array [0 ... 1]
of DWORD Bild 47 zeigt, wie die Datentypen „MB_Word“ und
„MB_2DWord“ definiert werden müssen.
9.2 Konkrete Fallbeispiele zu den allgemeinen Bei-
spielen im Kapitel 9.1
Die nachfolgenden konkreten Fallbeispiele aus PC Worx
zeigen die Verknüpfung der Daten eines Modbus/TCP-Te-
legramms (Modbus/TCP-Frame) mit den möglichen Pro- Bild 47 Definition der Datentypen „MB_2Word“ und
zessvariablen und deren Datentypen in PC Worx. „MB_2DWord“
In den Fallbeispielen wird als Modbus/TCP-Client eine der
in den „Bestelldaten“ auf Seite 4 genannten Steuerungen Bild 48 zeigt die Verknüpfung der Prozessvariablen mit den
eingesetzt und als Modbus/TCP-Server ein Gerät eines an- Modbus-Registern im Arbeitsbereich Prozessdatenzuord-
deren Herstellers. Es wird immer das Modbus/TCP-Tele- nung.
gramm betrachtet und nicht der Modbus/TCP-Server, da
sich die Bytereihenfolge von Modbus/TCP-Server zu Mod-
bus/TCP-Server unterscheiden kann.
Die in den Fallbeispielen dargestellten Bytereihenfolgen bei
der Verknüpfung von Daten eines Modbus/TCP-Tele-
gramms mit den möglichen Prozessvariablen und deren Bild 48 Verknüpfung der Prozessvariablen mit den
Datentypen in PC Worx gelten auch, wenn als Modbus-Registern

8294_de_03 PHOENIX CONTACT 30 / 32


MODBUS/TCP

Online-Werte im Betrieb 3. Verknüpfte Prozessvariablen im Watch-Fenster in


PC Worx für die Einstellung „Bytes vertauschen“ gleich
Bild 49 zeigt die Online-Werte im Betrieb. Dabei wird das
„ja“
Modbus/TCP-Telegramm für das zuletzt konfigurierte
Modbus-Register (Array [0 ... 3] of WORD, siehe Bild 45)
9.2.2 Beispiel 2:
dargestellt. Die drei anderen Modbus-Register des Bei-
Schreibender Zugriff des Modbus/TCP-Clients
spiels sind bezüglich ihrer Bytereihenfolge mit der Byterei-
henfolge in Bild 49 identisch. Der Modbus/TCP-Client greift schreibend auf den
Modbus/TCP-Server zu. Es sollen bis zu vier Wörter in das
① Modbus/TCP-Telegramm geschrieben werden.

Konfiguration in PC Worx
Bild 50 zeigt die Modbus-Register und die verwendeten
Modbus-Funktionscodes in PC Worx.

Bild 50 Konfiguration und verwendete Modbus-Funk-


tionscodes

② Bild 51 zeigt die Deklaration der entsprechend notwendigen


Prozessvariablen.

Bild 51 Deklaration der notwendigen Prozessvariab-


len

Bild 52 zeigt, wie die Datentypen „MB_Word“ und


„MB_2DWord“ definiert werden müssen.

Bild 52 Definition der Datentypen „MB_2Word“ und


„MB_2DWord“

Bild 53 zeigt die Verknüpfung der Prozessvariablen mit den


Modbus-Registern im Arbeitsbereich Prozessdatenzuord-
Bild 49 Online-Werte im Betrieb nung.

Legende:
1. Modbus/TCP-Telegramm in der Software Wireshark
(Software zur Analyse des Datenverkehrs im Netzwerk)
2. Verknüpfte Prozessvariablen im Watch-Fenster in
PC Worx für die Einstellung „Bytes vertauschen“ gleich Bild 53 Verknüpfung der Prozessvariablen mit den
„nein“ Modbus-Funktionscodes

8294_de_03 PHOENIX CONTACT 31 / 32


MODBUS/TCP

Online-Werte im Betrieb Bild 55 zeigt die Online-Werte im Betrieb für die Einstellung
„Bytes vertauschen“ gleich „ja“.
Bild 54 zeigt die Online-Werte im Betrieb für die Einstellung
„Bytes vertauschen“ gleich „nein“.



Bild 55 Online-Werte im Betrieb, Einstellung „Bytes


vertauschen“ gleich „ja“
Bild 54 Online-Werte im Betrieb, Einstellung „Bytes
vertauschen“ gleich „nein“
Legende:
Legende: 1. Feste Werte, die in PC Worx in die verschiedenen Pro-
zessvariablen geschrieben werden.
1. Feste Werte, die in PC Worx in die verschiedenen Pro-
zessvariablen geschrieben werden. 2. Feste Werte aus PC Worx, wie sie in das Modbus/TCP-
Telegramm geschrieben werden, dargestellt in der
2. Feste Werte aus PC Worx, wie sie in das Modbus/TCP-
Software Wireshark.
Telegramm geschrieben werden, dargestellt in der
Software Wireshark.

8294_de_03 PHOENIX CONTACT GmbH & Co. KG • Flachsmarktstraße 8 • 32825 Blomberg • Germany 32 / 32
phoenixcontact.com