Sie sind auf Seite 1von 23

Festo EasyIP_3 Bibliothek

Inhaltsverzeichnis

1 Wichtige Hinweise

 

1

1.1

Bestimmungsgemäße Verwendung

1

1.1.1 Zielgruppe

1

 

1.1.2 Service

1

1.2 Sicherheitshinweise

1

1.3 Wichtige Benutzerhinweise

1

 

1.3.1

Gefahrenkategorien

1

1.4

Kennzeichnung spezieller Informationen

2

1.4.1

Piktogramme

2

1.4.2

Textkennzeichnungen

2

1.4.3

Weitere Konventionen

2

2 Übersicht

3

2.1 Unterstützte Operanden

3

2.2 Einbindung der Bibliothek

3

3 Initialisierung von EasyIP

4

3.1 Easy_SetIPAddr

5

3.2 Easy_SetTimeOut

6

4 Kommunikation über EasyIP

7

4.1 Kommunikationsfunktionen

7

4.2 Easy_S

 

7

4.3 Easy_R

8

4.4 Easy_SR

10

5 Intern genutzte Variablen und Konstanten

12

5.1 Globale Variablen

12

5.2 Globale Konstanten

13

6 Programmierung mit EasyIP

14

6.1 Beispiel

 

14

 

6.1.1 Funktionen zur Initialisierung

14

6.1.2 Initialisierung von EasyIP

14

6.2 Telegramm senden

14

 

6.2.1

Programm EasySend (PRG-ST)

14

6.3 Telegramm anfordern

15

 

6.3.1

Programm EasyRecv (PRG-ST)

15

6.4 Telegramm senden und anfordern

15

 

6.4.1

Programm EasySendRecv (PRG-ST)

15

6.5 Programmierhinweise

16

 

6.5.1 Zugriff auf Eingangs- und Ausgangsbereich

16

6.5.2 Beeinflussung durch die Adressierungsart

16

6.5.3 Wort-Adressierung

16

6.5.4 Beispiel von zwei Steuerungen mit Wort Adressierung

16

6.5.5 Byte-Adressierung

17

6.5.6 Beispiel von zwei Steuerungen mit Byte-Adressierung

17

6.5.7 Adressierungsart des CECC

17

7 Glossar

 

19

 

iii

Festo EasyIP_3 Bibliothek

1 Wichtige Hinweise

1.1 Bestimmungsgemäße Verwendung

Die beschriebenen Funktionsblöcke (FB) dieser Bibliothek dienen zur Steuerung und Parametrierung des zugehörigen Geräts. Mit ihrer Hilfe können Sie die vielfältigen Funktionen des jeweiligen Geräts komfortabel in ihr Programm einbinden. Die gleichzeitige Verwendung anderer Funktionsblöcke zur Steuerung desselben Geräts ist unzulässig. Beachten Sie die "Sicherheitstechnischen Hinweise" sowie den bestimmungsgemäßen Gebrauch der jeweiligen Geräte, Baugruppen und Module. Beim Anschluss handelsüblicher Zusatzkomponenten, wie Sensoren und Aktoren, sind die angegebenen Grenzwerte für Drücke, Temperaturen, elektrische Daten, Momente usw. einzuhalten.

1.1.1 Zielgruppe

Diese Beschreibung wendet sich ausschließlich an ausgebildete Fachleute der Steuerungs- und Automatisierungstechnik.

1.1.2 Service

Bitte wenden Sie sich bei technischen Problemen an Ihren lokalen Service von Festo (http://www.festo.com).

1.2 Sicherheitshinweise

Bei der Inbetriebnahme und Programmierung von Positioniersystemen sind unbedingt die in den Beschreibungen und Bedienungsanleitungen zu den eingesetzten Komponenten gegebenen Sicherheitsvorschriften zu beachten. Der Anwender hat dafür Sorge zu tragen, dass sich niemand im Einflussbereich der angeschlossenen Aktoren bzw. der Achssysteme aufhält. Der mögliche Gefahrenbereich muss durch geeignete Maßnahmen wie Absperrungen oder Warnhinweise gesichert werden.

Warnung Pneumatische und elektrische Achsen können mit großer Kraft und Geschwindigkeit verfahren. Kollisionen können zu Pneumatische und elektrische Achsen können mit großer Kraft und Geschwindigkeit verfahren. Kollisionen können zu schweren Verletzungen oder zur Zerstörung von Bauteilen führen.

Stellen Sie sicher, dass niemand in den Einflussbereich der Achsen sowie anderer angeschlossener Aktoren greifen kann und sich keine Gegenstände im Verfahrbereich befinden, solange das System an Energiequellen angeschlossen ist.

Warnung Fehler bei der Parametrierung können Personen- und Sachschäden verursachen. Fehler bei der Parametrierung können Personen- und Sachschäden verursachen.

Geben Sie den Regler nur dann frei, wenn das Achssystem fachgerecht installiert und parametriert ist.

1.3 Wichtige Benutzerhinweise

1.3.1 Gefahrenkategorien

Dieses Dokument enthält Hinweise auf mögliche Gefahren, die bei unsachgemäßem Einsatz des Produkts auftreten können. Diese Hinweise sind mit einem Signalwort (Warnung, Vorsicht, usw.) gekennzeichnet, grau hinterlegt und zusätzlich durch ein Piktogramm gekennzeichnet. Folgende Gefahrenhinweise werden unterschieden:

Warnung bedeutet, dass bei Missachten schwerer Personen- oder Sachschaden entstehen kann. bedeutet, dass bei Missachten schwerer Personen- oder Sachschaden entstehen kann.

schwerer Personen- oder Sachschaden entstehen kann. Vorsicht bedeutet, dass bei Missachten Personen- oder

Vorsicht bedeutet, dass bei Missachten Personen- oder Sachschaden entstehen kann. bedeutet, dass bei Missachten Personen- oder Sachschaden entstehen kann.

bei Missachten Personen- oder Sachschaden entstehen kann. Hinweis bedeutet, dass bei Missachten Sachschaden entstehen

Hinweis bedeutet, dass bei Missachten Sachschaden entstehen kann. bedeutet, dass bei Missachten Sachschaden entstehen kann.

Missachten Personen- oder Sachschaden entstehen kann. Hinweis bedeutet, dass bei Missachten Sachschaden entstehen kann. 1

1

Festo EasyIP_3 Bibliothek

1.4 Kennzeichnung spezieller Informationen

Informationen über die Darstellung von Gefahrenhinweisen finden Sie unter "Wichtige Benutzerhinweise".

1.4.1 Piktogramme

Folgende Piktogramme kennzeichnen Textstellen, die spezielle Informationen enthalten.

Information: Empfehlungen, Tipps und Verweise auf andere Informationsquellen.Textstellen, die spezielle Informationen enthalten. Zubehör: Angaben über notwendiges oder sinnvolles Zubehör

Zubehör: Angaben über notwendiges oder sinnvolles Zubehör zum Festo Produkt.Tipps und Verweise auf andere Informationsquellen. Umwelt: Informationen zum umweltschonenden Einsatz von Festo

Umwelt: Informationen zum umweltschonenden Einsatz von Festo Produkten.notwendiges oder sinnvolles Zubehör zum Festo Produkt. 1.4.2 Textkennzeichnungen 1. Ziffern kennzeichnen

1.4.2 Textkennzeichnungen

1. Ziffern kennzeichnen Tätigkeiten, die in der angegebenen Reihenfolge durchzuführen sind.

Der Auflistungspunkt kennzeichnet Tätigkeiten, die in beliebiger Reihenfolge durchgeführt werden können.

Weiße PunkteSpiegelstriche kennzeichnen allgemeine Aufzählungen.

1.4.3 Weitere Konventionen

[Projekt] [Neu]

Menüeinträge sind in eckigen Klammern eingerahmt, z. B. öffnet im Menü [Projekt] der

Befehl [Neu

]

ein neues Projekt.

"OK"

Namen von Fenstern, Dialogen und Schaltflächen, z. B. "Meldefenster", "Projekt dearchivieren", "OK" sowie Bezeichnungen werden in Anführungszeichen dargestellt.

CTRL

Namen von Tasten auf der PC-Tastatur werden im Text mit Großbuchstaben dargestellt (z. B. EINGABETASTE, STRG, C, F1, usw.).

CTRL+C

Für einige Funktionen müssen zwei Tasten gleichzeitig gedrückt werden. Halten Sie z. B. die STRG-Taste gedrückt und drücken Sie zusätzlich die C-Taste. Dies wird im Text mit STRG+C beschrieben.

Wird einfach von "Klicken" oder "Doppelklick" gesprochen, so ist immer die linke Maustaste gemeint. Falls die rechte Maustaste benutzt werden soll, wird ausdrücklich darauf hingewiesen.

2

Festo EasyIP_3 Bibliothek

2

Übersicht

EasyIP ist ein proprietäres Ethernetprotokoll von Festo. EasyIP ermöglicht eine einfache Vernetzung verschiedener Steuerungen von Festo. EasyIP ist ein UDP basierendes Punkt zu Punkt Ethernetprotokoll und verwendet den Port 995. EasyIP Steuerungen sind normalerweise sowohl Client als auch Server. Es können aber auch Geräte ohne Serverfunktionalität wie z. B. Diagnosegeräte oder Visualisierungscomputer an EasyIP teilnehmen. Da es im EasyIP-Netzwerk keine logischen Verbindungen gibt, können theoretisch beliebig viele Geräte daran teilnehmen. Die Anzahl der gleichzeitig gesendeten Pakete bzw. durch den Server zu bearbeitenden Pakete wird nur durch die Performance der Hardware bestimmt. EasyIP ist als IEC-Bibliothek implementiert. Die folgende Tabelle zeigt, welche Operanden in EasyIP definiert sind, und welche in Verbindung mit einer auf CoDeSys basierenden Steuerung via EasyIP ausgetauscht werden können.

2.1 Unterstützte Operanden

Beschreibung

unterstützt

Zugriff über

Operandentyp

Größe des Bereiches

Merker

ja

%MW

1

Globale Variablen

"MaxFlags"

Eingänge

ja

%IW

2

Globale Variablen

"MaxInp"

Ausgänge

ja

%QW

3

Globale Variablen

"MaxOutp"

Register

nein

--

4

--

Timer

nein

--

5

--

Zeichenketten

ja

Stringtabelle

11

Globale Konstanten

"MAX_STRING"

Beachten Sie, dass das EasyIP Protokoll hauptsächlich mit 16 Bit Worten (= 2 Byte) arbeitet.

hauptsächlich mit 16 Bit Worten (= 2 Byte) arbeitet. Nutzen Sie zur Kopplung CoDeSys-kompatibler Steuerungen (z.

Nutzen Sie zur Kopplung CoDeSys-kompatibler Steuerungen (z. B. mehrerer Festo CoDeSys Controller) den Netzwerkvariablenaustausch (siehe Online-Hilfe, Stichwort "Netzwerkvariablen").

2.2 Einbindung der Bibliothek

Die Bibliothek Festo_EasyIP_3 finden Sie bei CoDeSys V3 pbF im Bereich "Bibliotheksverwalter".

Verwenden Sie zur Einbindung der Bibliothek das Kommando "Bibliothek hinzufügen". Alle Elemente aus dieser Bibliothek sind dem Namensraum "EasyIP" zugeordnet.

3

Festo EasyIP_3 Bibliothek

3 Initialisierung von EasyIP

Um EasyIP auf einer CoDeSys Steuerung verwenden zu können, muss in der Taskkonfiguration eine zyklische Task (z. B. 10 ms) angelegt werden. An diese Task muss das Programm EasyIP.Easy_Server() angehängt werden.

muss das Programm EasyIP.Easy_Server() angehängt werden. Bild: Taskkonfiguration Easy_Server (Beispiel) Das Programm

Bild: Taskkonfiguration Easy_Server (Beispiel)

Das Programm Easy_Server beinhaltet neben dem EasyIP-Stack die Initialisierungs- und Deinitialisierungsfunktionen. Beim Start des IEC-Projektes wird automatisch die Initialisierung durchgeführt, wobei ein neuer Socket geöffnet und an den UDP Port 995 gebunden wird. Beim Stoppen des IEC-Projektes wird der Socket wieder geschlossen. Nach der Initialisierung von EasyIP stehen folgende Funktionsblöcke zur Verfügung.

Funktionsblock

Beschreibung

Easy_SetIPAddr

Zuordnung der IP-Adresse der Remotestation auf den Index der IP-Tabelle (Shortcutliste).

Easy_SetTimeOut

Einstellung des Timeout, mit dem eine Kommunikation zwischen 2 EasyIP- Stationen überwacht wird. Diese Funktion setzt die Timeoutzeit als Vielfaches der eingestellten Taskzykluszeit.

4

Festo EasyIP_3 Bibliothek

3.1

Easy_SetIPAddr

Mit dem Funktionsblock Easy_SetIPAddr wird dem Index der IP-Tabelle (Shortcutliste) die IP-Adresse einer Remotestation zugeordnet. Die IP-Tabelle lässt 32 Remotestationen zu. Die Kommunikations- funktionen verwenden den Index (Shortcut) aus der IP-Tabelle zur Kommunikation mit einer Remote- station.

der IP-Tabelle zur Kommunikation mit einer Remote- station. Bild: Funktionsblock Easy_SetIPAddr Input-Variable

Bild: Funktionsblock Easy_SetIPAddr

Input-Variable

Datentyp

Beschreibung

TableIndex

WORD

Index in der IP-Shortcuttabelle. Zulässiger Wertebereich

0

31

(Konstante MAXIPTABLEINDEX).

BYTE1

BYTE

IP-Adresse Teil 1 (nnn.xxx.xxx.xxx)

BYTE2

BYTE

IP-Adresse Teil 2 (xxx.nnn.xxx.xxx)

BYTE3

BYTE

IP-Adresse Teil 3 (xxx.xxx.nnn.xxx)

BYTE4

BYTE

IP-Adresse Teil 4 (xxx.xxx.xxx.nnn)

Output-Variable

Datentyp

Beschreibung

Easy_SetIPAddr

BOOL

FALSE = Bearbeitung war erfolgreich, IP-Adresse wurde am vorgegebenen Index in die Tabelle eingefügt TRUE = Fehler, Ungültiger Index

5

Festo EasyIP_3 Bibliothek

3.2

Easy_SetTimeOut

Dieser Funktionsblock dient zur Einstellung des Timeout, mit dem eine Kommunikation zwischen 2 EasyIP-Stationen überwacht wird. Die Standardeinstellung ist 1, der Grundtakt ist die Taskzykluszeit des Programms Easy_Server(). Der Parameter der Funktion ist ein Multiplikator für die Standardeinstellung. Die Timeoutzeit berechnet sich also wie folgt:

Timeoutzeit = TimeOut * Taskzykluszeit

sich also wie folgt: Timeoutzeit = TimeOut * Taskzykluszeit Bild: Funktionsblock Easy_SetTimeout Input-Variable

Bild: Funktionsblock Easy_SetTimeout

Input-Variable

Datentyp

Beschreibung

TimeOut

WORD

Timeoutzeit in Vielfachen der Taskzykluszeit des Programms Easy_Server(); Zulässiger Wertebereich 1 65535

Output-Variable

Datentyp

Beschreibung

Easy_SetTimeOut

WORD

Liefert immer 0.

6

Festo EasyIP_3 Bibliothek

4 Kommunikation über EasyIP

4.1 Kommunikationsfunktionen

Zur Kommunikation von IEC-Programmen direkt mit den in der IP-Tabelle eingetragenen Remotestationen stehen folgende Kommunikationsfunktionen zur Verfügung. Zur Auswahl der Remotestation wird nicht die IP-Adresse der Remotestation verwendet, sondern der Index (Shortcut) aus der IP-Tabelle an dem die IP- Adresse eingetragen wurde.

Funktionen

Beschreibung

Easy_S

Die Funktion sendet ein EasyIP -Paket an einen EasyIP-Teilnehmer.

Easy_R

Die Funktion sendet eine Anforderung an einen Teilnehmer.

Easy_SR

Die Funktion sendet Daten und eine Anforderung an einen EasyIP-Teilnehmer.

4.2 Easy_S

Sendet ein EasyIP-Telegramm mit Daten an eine Remotestation.

Sendet ein EasyIP-Telegramm mit Daten an eine Remotestation. Bild: Funktionsblock Easy_S Input-Variable Datentyp

Bild: Funktionsblock Easy_S

Input-Variable

Datentyp

Beschreibung

 

TableIndex

WORD

Index in der IP-Shortcuttabelle. Zulässiger Wertebereich

0

31.

(Konstante MAXIPTABLEINDEX).

OpType

WORD

Operandentyp. Verfügbare Operanden sind der Tabelle "Unterstützte Operandentypen" zu entnehmen.

NumToSend

WORD

Anzahl der zu sendenden Datenwörter (16Bit). Zulässiger

Wertebereich 0

255,

für Operandentyp String

(STRING_SIZE+1)/2.

OpOffLoc

WORD

Offset im lokalen EasyIP-Speicher, bei Strings Index in der Stringtabelle.

OpOffRem

WORD

Zieloffset EasyIP-Speicher der Remotestation, bei Strings Index in der Stringtabelle.

Status

INT

–1 = Senden ohne Bestätigung, kein Timeout.

>

–1 = Offset im Merkerbereich (%MWx) an dem der

Kommunikationsstatus gespeichert wird (siehe Tabelle Kommunikationsstatus).

Output-Variable

Datentyp

Beschreibung

 

Easy_S

WORD

0 = Bearbeitung war erfolgreich.

>

0 = Fehlercode (siehe Tabelle Fehlercode).

7

Festo EasyIP_3 Bibliothek

Kommunikationsstatus

0

OK, Paket wurde von der Remotestation beantwortet.

1

Falscher Operandentyp. Operandentyp wird vom Remote nicht unterstützt.

2

Falscher Offset. Speicherbereichsüberschreitung beim Remote.

4

Falsche Anzahl Operanden. Anzahl der Daten ist zu groß.

128

Timeout. Keine Antwort vom Remote in der Timeoutzeit erhalten.

65535

Auf der angegebenen IP läuft noch eine Kommunikation.

Fehlercode

0

OK

99

Überschreitung des EasyIP Datenspeichers.

100

EasyIP ist nicht installiert.

102

Ungültiger Tabellenindex.

103

Ungültige IP-Adresse.

112

Falscher Operandentyp.

113

Überschreitung der EasyIP Datenpaketgröße.

115

Wartet auf Antwort vom Server.

117

Paket konnte nicht gesendet werden.

4.3

Easy_R

Sendet ein EasyIP-Telegramm zum Anfordern von Daten an eine Remotestation.

zum Anfordern von Daten an eine Remotestation. Bild: Funktionsblock Easy_R Input-Variable Datentyp

Bild: Funktionsblock Easy_R

Input-Variable

Datentyp

Beschreibung

 

TableIndex

WORD

Index in der IP-Shortcuttabelle. Zulässiger Wertebereich

0

31

(Konstante MAXIPTABLEINDEX).

OpType

WORD

Operandentyp. Verfügbare Operanden sind der Tabelle "Unterstützte Operandentypen" zu entnehmen.

NumToRequest

WORD

Anzahl der anzufordernden Datenwörter (16Bit). Zulässiger

Wertebereich 0

255,

für Operandentyp String

(STRING_SIZE+1)/2.

OpOffLoc

WORD

Offset im lokalen EasyIP-Speicher, bei Strings Index in der Stringtabelle.

OpOffRem

WORD

Zieloffset EasyIP-Speicher der Remotestation, bei Strings Index in der Stringtabelle.

Status

INT

–1 = Senden ohne Bestätigung, kein Timeout. > –1 = Offset im Merkerbereich (%MWx) an dem der Kommunikationsstatus gespeichert wird (siehe Tabelle Kommunikationsstatus).

8

Festo EasyIP_3 Bibliothek

Output-Variable

Datentyp

Beschreibung

Easy_R

WORD

0 = Bearbeitung war erfolgreich. > 0 = Fehlercode (siehe Tabelle Fehlercode).

Kommunikationsstatus

0

OK, Paket wurde von der Remotestation beantwortet.

1

Falscher Operandentyp. Operandentyp wird vom Remote nicht unterstützt.

2

Falscher Offset. Speicherbereichsüberschreitung beim Remote.

4

Falsche Anzahl Operanden. Anzahl der Daten ist zu groß.

128

Timeout. Keine Antwort vom Remote in der Timeoutzeit erhalten.

65535

Auf der angegebenen IP läuft noch eine Kommunikation.

Fehlercode

0

OK

99

Überschreitung des EasyIP Datenspeichers.

100

EasyIP ist nicht installiert.

102

Ungültiger Tabellenindex.

103

Ungültige IP-Adresse.

112

Falscher Operandentyp.

113

Überschreitung der EasyIP Datenpaketgröße.

115

Wartet auf Antwort vom Server.

117

Paket konnte nicht gesendet werden.

9

Festo EasyIP_3 Bibliothek

4.4

Easy_SR

Sendet ein EasyIP-Telegramm zum Senden und Anfordern von Daten an eine Remotestation.

zum Senden und Anfordern von Daten an eine Remotestation. Bild: Funktionsblock Easy_SR Input-Variable Datentyp

Bild: Funktionsblock Easy_SR

Input-Variable

Datentyp

Beschreibung

 

TableIndex

WORD

Index in der IP-Shortcuttabelle. Zulässiger Wertebereich

0

31

(Konstante MAXIPTABLEINDEX).

OpTypeSend

WORD

Operandentyp; verfügbare Operanden sind der Tabelle "Unterstützte Operandentypen" zu entnehmen.

NumToSend

WORD

Anzahl der zu sendenden Datenwörter (16 Bit). Zulässiger

Wertebereich 0

255,

für Operandentyp String

(STRING_SIZE+1)/2.

OpOffLocSend

WORD

Offset im lokalen EasyIP-Speicher, bei Strings Index in der Stringtabelle.

OpOffRemSend

WORD

Zieloffset EasyIP-Speicher der Remotestation, bei Strings Index in der Stringtabelle.

OpTypeReq

WORD

Type der angeforderten Operanden; verfügbare Operanden sind der Tabelle "Unterstützte Operandentypen" zu entnehmen.

NumToRequest

WORD

Anzahl der anzufordernden Operanden. Zulässiger Wertebereich 0

OpOffLocReq

WORD

Offset im lokalen EasyIP-Speicher, bei Strings Index in der Stringtabelle.

OpOffRemReq

WORD

Zieloffset EasyIP-Speicher der Remotestation, bei Strings Index in der Stringtabelle.

Status

INT

–1 = Senden ohne Bestätigung, kein Timeout.

>

–1 = Offset im Merkerbereich (%MWx) an dem der

Kommunikationsstatus gespeichert wird (siehe Tabelle Kommunikationsstatus).

Output-Variable

Datentyp

Beschreibung

 

Easy_SR

WORD

0 = Bearbeitung war erfolgreich.

>

0 = Fehlercode (siehe Tabelle Fehlercode).

Kommunikationsstatus

0

OK, Paket wurde von der Remotestation beantwortet.

1

Falscher Operandentyp. Operandentyp wird vom Remote nicht unterstützt.

2

Falscher Offset. Speicherbereichsüberschreitung beim Remote.

4

Falsche Anzahl Operanden. Anzahl der Daten ist zu groß.

10

Festo EasyIP_3 Bibliothek

Kommunikationsstatus

128

Timeout. Keine Antwort vom Remote in der Timeoutzeit erhalten.

65535

Auf der angegebenen IP läuft noch eine Kommunikation.

Fehlercode

0

OK

99

Überschreitung des EasyIP Datenspeichers.

100

EasyIP ist nicht installiert.

102

Ungültiger Tabellenindex.

103

Ungültige IP-Adresse.

112

Falscher Operandentyp.

113

Überschreitung der EasyIP Datenpaketgröße.

115

Wartet auf Antwort vom Server.

117

Paket konnte nicht gesendet werden.

11

Festo EasyIP_3 Bibliothek

5 Intern genutzte Variablen und Konstanten

5.1 Globale Variablen

In der Bibliothek Festo_EasyIP sind folgende globale Variablen für interne Funktionen der Bibliothek angelegt und können nicht verändert werden.

Bezeichner

Datentyp

Wert

Beschreibung

IPTable

ARRAY[0 MAXIPTABLEINDEX] OF DINT

 

EasyIP Adresstabelle (Zuordnung der Kurzadressen zu den IP- Adressen)

EasyIPInit

INT

0

EasyIP Initialisierungsstatus

EasySockDesc

DINT

0

EasyIP Socket descriptor (wird von der Bibliothek beim Öffnen des Sockets zugewiesen)

EasyState

ARRAY[0 MAXIPTABLEINDEX] of EasyStatus

 

EasyIP- Statusfeld für jede IP- Adresse

TimeOutTime

UINT

1

EasyIP-Timeout Zeit (wird durch die Timeout Funktion gesetzt)

MaxFlags

DWORD

 

Größe des Merkerbereichs (wird beim Initialisieren des Easy_Server Programms gesetzt)

MaxInp

DWORD

 

Größe des Eingangsbereichs (wird beim Initialisieren des Easy_Server Programms gesetzt)

MaxOutp

DWORD

 

Größe des Ausgangsbereichs (wird beim Initialisieren des Easy_Server Programms gesetzt)

pFlag

DWORD

 

Zeiger auf den Anfang (Offset 0) des Merkerbereichs (wird beim Initialisieren des Easy_Server Programms gesetzt)

pInput

DWORD

 

Zeiger auf den Anfang (Offset 0) des Eingangsbereiches (wird beim Initialisieren des Easy_Server Programms gesetzt)

pOutput

DWORD

 

Zeiger auf den Anfang (Offset 0) des Ausgangsbereiches (wird beim Initialisieren des Easy_Server Programms gesetzt)

StringTable

ARRAY[0 MAX_STRING_IDX] OF STRING(STRING_SIZE)

 

String-Tabelle

UdpRcvBuffer

ARRAY [0

1023]

OF BYTE

 

Empfangspuffer für UDP-Paket

UdpRcvBufferSize

DINT

1000

Größe des Empfangspuffers

UdpSendBuffer

ARRAY[0

1023]

OF BYTE

 

Sendepuffer für UDP-Packet

UdpSendBufferSize

DINT

1000

Größe des Sendepuffers

BigEndian

BOOL

FALSE

Byte-Reihenfolge des Zielsystems (wird beim Initialisieren des Easy_Server Programms gesetzt)

NonBlockingSocket

BOOL

TRUE

Ändert den Modus des Sockets auf nicht blockierend.

12

Festo EasyIP_3 Bibliothek

5.2 Globale Konstanten

In der Bibliothek Festo_EasyIP sind folgende Konstanten für interne Funktionen der Bibliothek angelegt und können nicht verändert werden.

Name

Typ

Wert

Beschreibung

EASY_IP_PORT

UINT

995

EasyIP-Port.

MAXIPTABLEINDEX

INT

31

Größe der EasyIP-Adresstabelle.

EASY_IP_HDR

DINT

20

Größe des EasyIP-Paket Headers.

MAXEASYDATA

INT

256

Größe des EasyIP-Paket Datenspeichers.

WORD_SIZE

INT

2

Größe eines Datenwortes.

STRING_SIZE

WORD

256

Länge eines Strings in Byte.

MAX_STRING

 

50

Maximale Anzahl von Strings (Größe der Stringtabelle).

MAX_STRING_IDX

WORD

49

Maximaler Index innerhalb der Stringtabelle.

13

Festo EasyIP_3 Bibliothek

6 Programmierung mit EasyIP

6.1 Beispiel

Das Füllen der IP-Tabelle mit der Funktion Easy_SetIPAddr und das Setzen der Timeoutzeit mit der Funktion Easy_SetTimeout sollten zu Beginn des IEC-Programmes einmal ausgeführt werden. Eine Wort- Adressierung beider Steuerungen wird vorausgesetzt (Kapitel Beeinflussung durch die Adressierungsart)

(  Kapitel Beeinflussung durch die Adressierungsart) Hinweis Um EasyIP auf einer CoDeSys Steuerung verwenden zu

Hinweis Um EasyIP auf einer CoDeSys Steuerung verwenden zu können, muss in der Taskkonfiguration eine zyklische Task angelegt werden, an die das Programm EasyIP.Easy_Server() gehängt werden muss.

6.1.1 Funktionen zur Initialisierung

Zur Initialisierung des Servers müssen die Initialisierungsbausteine einmalig aufgerufen werden. Dies kann z. B. in einer Initialisierungsroutine erfolgen.

6.1.2 Initialisierung von EasyIP

IF NOT init THEN

init:=TRUE;

(*Index 0 der IP-Tabelle mit der IP-Adresse einer Remotestation füllen *)

EasyIP.Easy_SetIPAddr(0,192,168,0,2);

(*Index 1 der IP-Tabelle mit der IP-Adresse einer Remotestation füllen *)

EasyIP.Easy_SetIPAddr(1,192,168,0,3);

(*Timeoutzeit der EasyIP-Kommunikation vergrössern (10*Taskzykluszeit) *)

EasyIP.Easy_SetTimeout(10);

END_IF

Im Beispiel wird der Kurzadresse 0 (Index 0 in der IP-Tabelle) die IP-Adresse 192.168.0.2 zugewiesen. Der Kurzadresse 1 (Index 1 in der IP-Tabelle) wird die IP-Adresse 192.168.0.3 zugewiesen. Alle weiteren Funktionen verwenden die Kurzadressen, um die richtigen IP-Adressen (Remotesteuerung) anzusprechen.

6.2 Telegramm senden

Im folgenden Beispiel wird ein Merker (Operandentyp 1) in jedem Zyklus um 1 erhöht und an die Remotestation mit der Kurzadresse 0 (IP = 192.168.0.2) gesendet. Der Merker liegt an der Adresse %MW500 und wird an die Adresse %MW520 der Remotestation geschrieben. Der Status der Kommunikation wird auf das Merkerwort %MW600 geschrieben.

6.2.1 Programm EasySend (PRG-ST)

PROGRAM EasySend

VAR

Merker AT %MW500: WORD;

(*Merkervariable *)

CommStatus AT %MW600:

(*Kommunikationsstatus *)

WORD;

FunktionsStatus: WORD;

(*Rückgabewert der Funktion Easy_SR*)

END_VAR

Merker:= Merker +1;

(*Erhöhe den Merker um 1*)

FunktionsStatus := EasyIP.Easy_S(0,1,1,500,520,600);

 

(*Sende 1 Merkerwort von Adresse %MW500 an die Adresse %MW520 der Remotestation *)

14

Festo EasyIP_3 Bibliothek

6.3 Telegramm anfordern

Beim Anfordern von Werten, die in den Eingangsbereich geschrieben werden sollen, ist immer ein Zeiger nötig, da kein Schreiben auf Eingänge aus der Applikation zulässig ist. Im Beispiel wird ein Eingangswert von der Adresse %IW2 der Remotestation angefordert und in das Eingangswort %IW10 geschrieben. Zu beachten ist hierbei, dass das Eingangswort %IW10 in der Steuerungskonfiguration durch kein E/A-Modul belegt ist.

6.3.1 Programm EasyRecv (PRG-ST)

PROGRAM EasyRecv

VAR

pEingang: POINTER TO WORD;

(*Zeigervariable*)

CommStatus AT %MW600: WORD;

(*Kommunikationsstatus*)

FunktionsStatus: WORD;

(*Rückgabewert der Funktion Easy_SR*)

END_VAR

pEingang := pInput + 20;

(*Addiere Offset von 20 Bytes im Eingangsbereich = IW10*)

pEingang^ := pEingang^ +1;

(*Erhöhe den Inhalt von pEingang um 1*)

FunktionsStatus := EasyIP.Easy_R(0,2,1,10,2,600);

 

(*Fordere 1 Eingangswort von Adresse %IW2 der Remotestation an und schreibe es an die Adresse %IW10 lokal *)

6.4 Telegramm senden und anfordern

Diese Funktion ermöglicht das gleichzeitige Senden und Anfordern von Daten zu/von einer Remotestation. Beim Anfordern von Werten, die in den Eingangsbereich geschrieben werden sollen, ist immer ein Zeiger nötig, da die IEC kein Schreiben auf Eingänge aus der Applikation zulässt. Im Beispiel wird ein Eingangswert von der Adresse %IW2 der Remotestation angefordert und in das Eingangswort %IW10 geschrieben. Zu beachten ist hierbei, dass das Eingangswort %IW10 in der Steuerungskonfiguration durch kein E/A-Modul belegt ist. Gleichzeitig wird das Ausgangswort %QW3 an das Ausgangswort %QW10 der Remotestation geschrieben. Der Kommunikationsstatus wird in das Merkerwort %MW600 geschrieben.

6.4.1 Programm EasySendRecv (PRG-ST)

PROGRAM EasySendRecv

VAR

pEingang: POINTER TO WORD;

(*Zeigervariable*)

Ausgang AT %QW3: WORD;

(*Definiere Ausgang*)

CommStatus AT %MW600: WORD;

(*Kommunikationsstatus*)

FunktionsStatus: WORD;

(*Rückgabewert der Funktion Easy_SR*)

END_VAR

pEingang := pInput + 20;

(*Addiere Offset von 20 Bytes im Eingangsbereich = IW10*)

pEingang^ := pEingang^ +1;

(*Erhöhe den Inhalt von pEingang um 1*)

FunktionsStatus := EasyIP.Easy_SR(0,3,1,3,10,2,1,10,2,600);

 

(*Sende 1 Ausgangswort von Adresse %QW3 an die Adresse %QW10 der Remotestation und fordere 1 Eingangswort von Adresse %IW2 der Remotestation an und schreibe es an die Adresse %IW10 lokal. Der Kommunikationsstatus wird auf %MW600 geschrieben*)

15

Festo EasyIP_3 Bibliothek

6.5

Programmierhinweise

6.5.1 Zugriff auf Eingangs- und Ausgangsbereich

Beim Zugriff auf den Eingangs- und Ausgangsbereich ist unter bestimmten Umständen nur der Zugriff über Zeiger möglich. Dies ist in folgenden Fällen notwendig:

schreibender Zugriff auf einen Eingang

Wortzugriff auf 2 nacheinander in der Steuerungskonfiguration angelegte Ausgänge/Eingänge Dazu gibt es globale Variablen, die den Anfang des Eingangs,- Ausgangs- und des Merkerbereichs beinhalten.

6.5.2 Beeinflussung durch die Adressierungsart

Je nach Adressierungsart sind die Offsetwerte der Merker-, Eingangs- und Ausgangsbereiche unterschiedlich zu interpretieren. Generell ist zu beachten, dass die Bibliothek Festo_EasyIP_3 mit Schwerpunkt für den Einsatz auf Wort- adressierten Geräten entwickelt worden ist. Feststellung der Adressierungsart während der Laufzeit

PROGRAM PLC_PRG

VAR

(* TRUE if "Byte adressing mode" is activated *)

xByteAligned : BOOL;

END_VAR

(* (ADR(%MW2) - ADR(%MW0) = 2 for byte alignment / 4 for word alignment *) xByteAligned := NOT(DWORD_TO_BOOL((ADR(%MW2) - ADR(%MW0) - 2))):

6.5.3 Wort-Adressierung

Ist die Option "Byte-Adressierung" deaktiviert, so liegt eine sogenannte Wort-Adressierung der Steuerung vor.

%IB0

%IB1

%IB2

%IB3

%IB4

%IB5

%IB6

%IB7

%IB

%IB

%IB

%IB

8188

8189

8190

8191

%IW0

%IW1

%IW2

%IW3

%IW4094

%IW4095

%ID0

%ID1

%ID2047

 

6.5.4 Beispiel von zwei Steuerungen mit Wort Adressierung

Der Funktionsaufruf

Easy_R(0,

(* index of the remote station's IP address *)

1,

(* operand type: memory word *)

2,

(* number of words to receive = 4 bytes *)

800,

(* offset of first word to be received in local station *)

600,

(* offset of first word in remote (target) station *)

1000);

(* offset for communication status in local station *)

ist dabei auf zwei Steuerungen mit Wort-Adressierung wie folgt zu interpretieren:

Auslesen von 4 Bytes (= 2 Worte) vom Zielgerät (IPTables[0]) beginnend mit dem Offset %MW600 (= %MB1200) auf der Remote Station. Die empfangenen Daten werden beginnend mit dem Offset %MW800 (= %MB1600) auf dem lokalen Gerät gespeichert. Der aktuelle Kommunikationsstatus wird vom EasyIP-Stack auf das Merkerwort %MW1000 (= %MB2000) geschrieben.

Als Resultat stehen auf dem lokalen Merkerwort

%MW800 (= %MB1600) die Remote Daten von %MW600 (= %MB1200) und auf

%MW801 (= %MB1602) die Remote Daten von %MW601 (= %MB1202) zur Verfügung.

16

Festo EasyIP_3 Bibliothek

6.5.5 Byte-Adressierung

Ist die Option "Byte-Adressierung" aktiviert, so liegt eine sogenannte Byte-Adressierung der Steuerung vor.

%IB0

%IB1

%IB2

%IB3

%IB4

%IB5

%IB6

%IB7

%IB

%IB

%IB

%IB

8188

8189

8190

8191

%IW0

%IW2

%IW4

%IW6

%IW8188

%IW8190

 

%IW1

%IW3

%IW5

 

%IW8189

 

%ID0

%ID4

%ID8188

 
 

%ID1

 

%ID8189

 
 

%ID2

 

%ID8190

 

%ID3

   

6.5.6 Beispiel von zwei Steuerungen mit Byte-Adressierung

Der Funktionsaufruf

Easy_R(0,

(* index of the remote station's IP address *)

1,

(* operand type: memory word *)

2,

(* number of words to receive = 4 bytes *)

800,

(* offset of first word to be received in local station *)

600,

(* offset of first word in remote (target) station *)

1000);

(* offset for communication status in local station *)

ist dabei auf zwei Steuerungen mit Byte-Adressierung wie folgt zu interpretieren:

Auslesen von 4 Bytes (= 2 Worte) vom Zielgerät (IPTables[0]) beginnend mit dem Offset %MW1200 (= %MB1200) auf der Remote Station. Die empfangenen Daten werden beginnend mit dem Offset %MW1600 (= %MB1600) auf dem lokalen Gerät gespeichert. Der aktuelle Kommunikationsstatus wird vom EasyIP-Stack auf das Merkerwort %MW2000 (= %MB2000) geschrieben.

Als Resultat stehen auf dem lokalen Merkerwort

%MW1600 (= %MB1600) die Remote Daten von %MW1200 (= %MB1200) und auf

%MW1602 (= %MB1602) die Remote Daten von %MW1202 (= %MB1202) zur Verfügung.

6.5.7 Adressierungsart des CECC

Daten von %MW1202 (= %MB1202) zur Verfügung. 6.5.7 Adressierungsart des CECC Der CECC arbeitet mit Word-Adressierung.

Der CECC arbeitet mit Word-Adressierung.

17

7

Glossar

E

 

EasyIP: Das EasyIP-Protokoll ermöglicht den einfachen Austausch von Daten zwischen Steuerungen. EasyIP ist ein UDP basierendes Punkt zu Punkt Ethernetprotokoll und verwendet den Port 995. EasyIP Steuerungen sind normalerweise sowohl Client als auch Server. Es können aber auch Steuerungen ohne Serverfunktionalität wie z.B. Diagnosegeräte oder Visualisierungscomputer an EasyIP teilnehmen. Da es im EasyIP-Netzwerk keine logischen Verbindungen gibt, können theoretisch beliebig viele Steuerungen daran teilnehmen. Die Anzahl der gleichzeitig gesendeten Pakete bzw. durch den Server zu bearbeitenden Pakete wird nur durch die Performance der Hardware bestimmt.

I

 

IP-Adresse: Mit einer IP-Adresse wird sowohl ein Netzwerk als auch ein einzelner Teilnehmer im Netzwerk adressiert. Dazu enthält die IP-Adresse die Net-ID (gibt die Adresse eines Netzwerkes an) und die Host-ID (gibt die Adresse eines einzelnen Teilnehmers in diesem Netzwerk an). Welche der Zahlen einer IP-Adresse nun die Net-ID und die Host-ID darstellen, wird durch die Angabe der so genannten Netzmaske bestimmt.

T

 

TCP/IP: Kombination der Protokolle TCP und IP, das meistverwendete Protokoll bei der Kommunikation über Ethernet.

U

UDP: Ein minimales, verbindungsloses Netzwerkprotokoll, das im Vergleich zu TCP einen geringeren Protokoll-Overhead aufweist. Das hat den Vorteil einer schnelleren Datenübertragung. Aufgrund der fehlenden Rückmeldung muss die korrekte Übermittlung aber z. B. durch ein Anwenderprogramm sichergestellt werden.

19