06 festo easyip.lib de

18
Die Bibliothek Festo_EasyIP.lib

Upload: fernando-pastrana

Post on 09-Jul-2016

14 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 06 Festo EasyIP.lib De

Die Bibliothek Festo_EasyIP.lib

Page 2: 06 Festo EasyIP.lib De

ii

Inhaltsverzeichnis

1  Die Bibliothek Festo_EasyIP.lib ......................................................................................................... 1 1.1  Was ist EasyIP? ........................................................................................................................... 1 1.2  Initialisierung von EasyIP ............................................................................................................. 2 

1.2.1  Programme und Funktionen zur Initialisierung von EasyIP ............................................ 2 1.2.2  Easy_SetIPAddr ............................................................................................................. 3 1.2.3  Easy_SetTimeOut .......................................................................................................... 3 

1.3  Kommunikationsfunktionen .......................................................................................................... 4 1.3.1  Funktionen zur Kommunikation via EasyIP .................................................................... 4 1.3.2  Easy_S .......................................................................................................................... 4 1.3.3  Easy_R .......................................................................................................................... 5 1.3.4  Easy_SR ........................................................................................................................ 7 

1.4  Intern genutzte Variablen, Konstanten und Hilfsfunktionen .......................................................... 9 1.4.1  Globale Variablen ........................................................................................................... 9 1.4.2  Globale Konstanten ..................................................................................................... 10 1.4.3  IPFrom4Chars .............................................................................................................. 11 

1.5  Programmierung ........................................................................................................................ 12 1.5.1  Initialisierung ................................................................................................................ 12 1.5.2  Telegramm senden ...................................................................................................... 13 1.5.3  Telegramm anfordern ................................................................................................... 13 1.5.4  Programmierhinweise .................................................................................................. 14 

2  Index .................................................................................................................................................. 15 

3  Glossar .............................................................................................................................................. 16 

Page 3: 06 Festo EasyIP.lib De

1

1 Die Bibliothek Festo_EasyIP.lib

1.1 Was ist EasyIP? 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.

Unterstützte Operanden

Beschreibung unterstützt Zugriff über Operandentyp Größe des Bereiches

Merker ja %MW 1 [Zielsystem Einstellungen] [Speicheraufteilung] [Memory]

Eingänge ja %IW 2 [Zielsystem Einstellungen] [Speicheraufteilung] [Input]

Ausgänge ja %QW 3 [Zielsystem Einstellungen] [Speicheraufteilung] [Output]

Register nein -- 4 --

Timer nein -- 5 --

Zeichenketten ja Stringtabelle 11 Globale deklarierte Konstante: MAX_STRING

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

Version 0.0.2, 09.07.2009, de 0612VV VORSERIE

Page 4: 06 Festo EasyIP.lib De

Die Bibliothek Festo_EasyIP.lib

2

1.2 Initialisierung von EasyIP

1.2.1 Programme und Funktionen zur Initialisierung von EasyIP Die Bibliothek Festo_EasyIP.lib beinhaltet alle Funktionen, damit eine CoDeSys Steuerung EasyIP verwenden kann. Daher müssen Sie die Bibliothek Festo_EasyIP.lib mit Hilfe des Bibliotheksverwalters in ihr Projekt einbinden (siehe Befehl [Fenster] [Bibliotheksverwalter]). 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 Easy_Server() angehängt werden. 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 wird mit der Funktion Easy_SetIPAddr dem Index der IP-Tabelle (Shortcutliste) die IP-Adresse der Remotestation zugeordnet. Mit der Funktion Easy_SetTimeOut kann der Timeout eingestellt werden, mit dem eine Kommunikation zwischen 2 EasyIP-Stationen überwacht werden soll.

Übersicht

Baustein Beschreibung

Easy_SetIPAddr Diese Funktion fügt die IP-Adressen der anderen Teilnehmer in die IP-Tabelle ein.

Easy_SetTimeOut Diese Funktion setzt die Timeoutzeit als Vielfaches der eingestellten Taskzykluszeit.

Page 5: 06 Festo EasyIP.lib De

Die Bibliothek Festo_EasyIP.lib

3

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

Input-Variable Datentyp Beschreibung

TableIndex WORD Index in der IP-Shortcuttable. 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

1.2.3 Easy_SetTimeOut Mit dieser Funktion wird der Timeout eingestellt, mit dem eine Kommunikation zwischen 2 EasyIP-Stationen überwacht wird. Die Defaulteinstellung ist 1, der Grundtakt ist die Taskzykluszeit des Programms Easy_Server(). Der Parameter der Funktion ist ein Multiplikator für die Defaulteinstellung. Die Timeoutzeit berechnet sich also wie folgt: Timeoutzeit = TimeOut * Taskzykluszeit

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.

Page 6: 06 Festo EasyIP.lib De

Die Bibliothek Festo_EasyIP.lib

4

1.3 Kommunikationsfunktionen

1.3.1 Funktionen zur Kommunikation via EasyIP Mit den folgenden Kommunikationsfunktionen kann aus dem IEC-Programm direkt mit den in der IP-Tabelle eingetragenen Remotestationen kommuniziert werden. 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.

Übersicht

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.

1.3.2 Easy_S Sendet ein EasyIP-Telegramm mit Daten an eine Remotestation.

Input-Variable Datentyp Beschreibung

TableIndex WORD Index in der IP-Shortcuttable. 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).

Kommunikationsstatus

0 OK, Paket wurde von der Remotestation beantwortet.

Page 7: 06 Festo EasyIP.lib De

Die Bibliothek Festo_EasyIP.lib

5

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.

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

Input-Variable Datentyp Beschreibung

TableIndex WORD Index in der IP-Shortcuttable. 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).

Page 8: 06 Festo EasyIP.lib De

Die Bibliothek Festo_EasyIP.lib

6

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.

Page 9: 06 Festo EasyIP.lib De

Die Bibliothek Festo_EasyIP.lib

7

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

Input-Variable Datentyp Beschreibung

TableIndex WORD Index in der IP-Shortcuttable. 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..255.

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).

Page 10: 06 Festo EasyIP.lib De

Die Bibliothek Festo_EasyIP.lib

8

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.

Page 11: 06 Festo EasyIP.lib De

Die Bibliothek Festo_EasyIP.lib

9

1.4 Intern genutzte Variablen, Konstanten und Hilfsfunktionen

1.4.1 Globale Variablen In der Bibliothek Festo_EasyIP.lib 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 Merkerbereiches (wird beim Initalisieren des Easy_Server Programms gesetzt)

MaxInp DWORD Größe des Eingangsbereiches (wird beim Initalisieren des Easy_Server Programms gesetzt)

MaxOutp DWORD Größe des Ausgangsbereiches (wird beim Initalisieren des Easy_Server Programms gesetzt)

pFlag DWORD Zeiger auf den Anfang (Offset 0) des Merkerbereiches (wird beim Initalisieren des Easy_Server Programms gesetzt)

pInput DWORD Zeiger auf den Anfang (Offset 0) des Eingangsbereiches (wird beim Initalisieren des Easy_Server Programms gesetzt)

pOutput DWORD Zeiger auf den Anfang (Offset 0) des Ausgangsbereiches (wird beim Initalisieren 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

UdpSendBuffer ARRAY[0..1023] OF BYTE Sendbuffer for UDP-Packet

Page 12: 06 Festo EasyIP.lib De

Die Bibliothek Festo_EasyIP.lib

10

Bezeichner Datentyp Wert Beschreibung

UdpSendBufferSize DINT 1000

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, kann im Systemereignis 'Start' überschrieben werden.

1.4.2 Globale Konstanten In der Bibliothek Festo_EasyIP.lib sind folgenden 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.

Magic WORD 1234 Wird zur Prüfung der Byte-Reihenfolge (BigEndian oder LittleEndian) des Prozessors verwendet.

Page 13: 06 Festo EasyIP.lib De

Die Bibliothek Festo_EasyIP.lib

11

1.4.3 IPFrom4Chars Diese Funktion wird intern von Funktionen der Bibliothek Festo_EasyIP.lib genutzt. Sie wandelt eine in mehreren Bytes gespeicherte IP-Adresse in das Datenformat DWORD um.

Input-Variable Datentyp Beschreibung

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

IPFrom4Chars DWORD In DWORD gepackte IP-Adresse für die Socketfunktion. Im DWORD wird die Reihenfolge der Bytes gedreht zurückgeliefert (siehe folgendes Bild).

DWORD

BYTE4 BYTE3 BYTE2 BYTE1

Page 14: 06 Festo EasyIP.lib De

Die Bibliothek Festo_EasyIP.lib

12

1.5 Programmierung

1.5.1 Initialisierung Das Füllen der IP-Tabelle mit der Funktionen Easy_SetIPAddr und das Setzen der Timeoutzeit mit der Funktion Easy_SetTimeout sollten zu Beginn des IEC-Programmes einmal ausgeführt werden. Hierzu kann ein Baustein an das Systemereignis start gehängt werden.

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

Bausteine zur Initalisierung Mit der Taskkonfiguration können Sie den möglichen Systemereignissen sehr einfach Bausteine zuordnen.

1. Um eine Funktion an ein Systemereignis zu hängen, wählen Sie in der ersten Spalte das Kontrollkästchen vor dem Ereignis. Dort erscheint dann ein Haken.

2. Tragen Sie in der Spalte "aufgerufene POU" einen Bausteinnamen ein und bestätigen Sie die Eingabe mit Enter.

3. Um den Baustein im Projekt anzulegen, klicken Sie auf die Schaltfläche "Baustein erzeugen". Daraufhin erscheint der Baustein im Object Organizer und enthält im Deklarationsteil automatisch die Definitionen der für das Ereignis eventuell nötigen Übergabeparameter.

Bild: Konfiguration von System-Ereignissen (Beispiel)

Initialisierungen durchführen Im Initialisierungsbaustein können dann die Funktionen Easy_SetIPAddr und Easy_SetTimeout aufgerufen werden.

Page 15: 06 Festo EasyIP.lib De

Die Bibliothek Festo_EasyIP.lib

13

Beispiel: Initialisierung von EasyIP Easy_SetIPAddr(0,192,168,0,2); (*Index 0 der IP-Tabelle mit der IP-Adresse einer Remotestation füllen*)

Easy_SetIPAddr(1,192,168,0,3); (*Index 1 der IP-Tabelle mit der IP-Adresse einer Remotestation füllen*)

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

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 richtige IP-Adresse (Remotesteuerung) anzusprechen.

1.5.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.

Beispiel: Telegramm senden - EasySend (PRG-ST) PROGRAM EasySend

VAR

Merker AT %MW500: WORD; (*Merkervariable *)

CommStatus AT %MW600: WORD; (*Kommunikationsstatus *)

FunktionsStatus: WORD; (*Rückgabewert der Funktion Easy_SR*)

END_VAR

Merker:= Merker +1; (* Erhöhe den Merker um 1 *)

FunktionsStatus := Easy_S(0,1,1,500,520,600); (*sende 1 Merkerwort von Adresse %MW500 an die Adresse %MW520 der Remotestation *)

1.5.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.

Beispiel: Telegramm anfordern - 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 := 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 *)

Page 16: 06 Festo EasyIP.lib De

Die Bibliothek Festo_EasyIP.lib

14

Senden und anfordern in einem Telegramm 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.

Beispiel: Telegramm senden und anfordern - EasySendRecv (PRG-ST) PROGRAM EasySendRecv

VAR

pEingang: POINTER TO WORD; (*Zeigervariable*)

Ausgang AT %QW3: WORD; (* Analoger Ausgang in Steuerungskonfiguration definiert *)

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 := 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*)

1.5.4 Programmierhinweise

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 in der Globalen Variablenliste Variablen, die den Anfang des Eingangs,- Ausgangs- und des Merkerbereiches beinhalten.

Page 17: 06 Festo EasyIP.lib De

15

2 Index

D Deinitialisierung durchführen ..................... 12

E Easy_R ........................................................ 5 Easy_S ........................................................ 4 Easy_SetIPAddr ........................................... 3 Easy_SetTimeOut ........................................ 3 Easy_SR ...................................................... 7

F Fehlercode ........................................... 4, 5, 7

G Globale Konstanten ................................... 10 Globale Variablen ........................................ 9

I Initialisierung und Deinitialisierung ............... 2

Initialisierung von EasyIP ............................. 2 IPfromChars ............................................... 11

K Kommunikationsstatus ......................... 4, 5, 7

P Programmierhinweise ................................. 12 Programmierung mit EasyIP ....................... 12

S Senden und anfordern in einem Telegramm12

T Telegramm anfordern ................................. 12 Telegramm senden .................................... 12

U Unterstützte Operanden ............................... 1

Page 18: 06 Festo EasyIP.lib De

16

3 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.