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
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 – –
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.
tem) durchgeführt.
Projekt kompilieren
ONLINE
Modbus/TCP-Server
konfigurieren
Betrieb (Ende)
8294C001
1
Wenn Sie einen Controller des Typs 1X1 ab Firmware-Version 4.40
verwenden, wird anstatt des Symbols MODBUS_CLT das Symbol
MODBUS angezeigt.
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.
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-
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.
• 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.
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“).
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.
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.
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
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.
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:
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.
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
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.
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.
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).
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
Beispiel 3
Prozessvariable des Datentyps WORD, Einstellung „Bytes
vertauschen“ gleich „ja“.
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.
Konfiguration in PC Worx
Bild 50 zeigt die Modbus-Register und die verwendeten
Modbus-Funktionscodes in PC Worx.
③
„MB_2DWord“ definiert werden müssen.
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
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“.
①
①
②
②
8294_de_03 PHOENIX CONTACT GmbH & Co. KG • Flachsmarktstraße 8 • 32825 Blomberg • Germany 32 / 32
phoenixcontact.com