7 Benötigter Quellcode für die EasyIP @CHIP-RTOS

Werbung
EasyIP für @CHIP-RTOS-Applikationen
Beck IPC GmbH
Garbenheimer Str. 36 - 38
35578 Wetzlar/Germany
Phone +49 (0) 64 41-9 05-0
Fax
+49 (0) 64 41-9 05-2 45
Web
www.beck-ipc.com
EasyIP
für
Version
V. 1.1
@CHIP-RTOS Applikationen
Datum
02.11.2004
Autor
hine
EasyIP
Seite 1 von 25
EasyIP für @CHIP-RTOS-Applikationen
INHALT
1
Allgemein .......................................................................................... 3
2
Funktionsweise ................................................................................. 4
3
Datenstruktur .................................................................................... 5
4
Adressierung der Partnerstation ....................................................... 6
5
Server- und Client Funktionen .......................................................... 7
6
Programmierung ............................................................................... 8
7
Benötigter Quellcode für die EasyIP @CHIP-RTOS Applikation ...... 9
8
Referenz ......................................................................................... 10
9
EasyIP Client-Funktionen ............................................................... 10
9.1
EasyIP Server-Funktionen ........................................................... 20
10.1
Einführung .................................................................................................. 20
10.1.1 EipStartServer ......................................................................................... 20
10.1.2 EipStopServer ......................................................................................... 21
11
11.1
Protokollbeschreibung ................................................................. 22
Paketaufbau................................................................................................ 22
11.2
Erläuterungen zu den einzelnen Feldern ................................................... 23
11.2.1 Senden von Daten .................................................................................. 23
11.2.2 Anfragen von Daten ................................................................................ 23
11.2.3 Senden und Anfragen von Daten............................................................ 23
11.2.4 Informationspakete ................................................................................. 24
12
EasyIP
www.beck-ipc.com
Einführung ...................................................................................................... 10
9.2
Funktionsbeschreibungen .............................................................................. 11
9.2.1
Easy_SR ................................................................................................. 11
9.2.2
Easy_R .................................................................................................... 13
9.2.3
Easy_S .................................................................................................... 14
9.2.4
IP_Table_Set .......................................................................................... 15
9.2.5
IP_Table_Get .......................................................................................... 16
9.2.6
SaveIptable ............................................................................................. 17
9.2.7
LoadIptable ............................................................................................. 18
9.2.8
IPFrom4Chars ......................................................................................... 19
10
Web
Historie ........................................................................................ 25
Seite 2 von 25
Version
V. 1.1
Datum
02.11.2004
Autor
hine
EasyIP für @CHIP-RTOS-Applikationen
1
Allgemein
EasyIP ermöglicht den Austausch von SPS-Operanden (Eingangswerte,
Ausgangswerte, Merker, Register) zwischen mehreren Steuerungen.
Die Datenübertragung erfolgt dabei über Ethernet auf Basis der
Protokolle IP und UDP. EasyIP verwendet dabei UDP - Datagramme auf
Port 995.
EasyIP ist ein Punkt - zu - Punkt - Protokoll, bei dem ein Client Daten
sendet oder anfordert und ein Server die Daten bestätigt oder die
Anfrage beantwortet. Wenn der Server die Anfrage nicht verarbeiten
kann (Datenblock zu groß, falscher Operandentyp etc.), sendet er ein
Fehler-Paket an den Client.
Web
www.beck-ipc.com
Da keine logischen Verbindungen benötigt werden, ist die Anzahl der
Clients und Server in einem Netzwerk theoretisch unbegrenzt. Die
Menge der gleichzeitig zu verarbeitenden Datenpakete ist nur durch die
Leistung der beteiligten Geräte oder die verwendete Software
beschränkt.
Im Normalfall ist eine EasyIP - Steuerung sowohl Client als auch Server.
Geräte,
die
nur
Client-Funktion
haben,
könnten
z.B.
Visualisierungsrechner oder Diagnosesysteme sein.
EasyIP steht für verschiedene Betriebssysteme zur Verfügung, so dass
der Datenaustausch zwischen verschiedenen Typen von Steuerungen
möglich ist. Zu den unterstützten Systemen gehören Festo FST,
Codesys und @Chip-RTOS. Außerdem kann EasyIP mit wenig Aufwand
in Windows- und Linux - Anwendungen integriert werden. EasyIP für
@CHIP-RTOS (BCxxx) wird als C-Quelltext geliefert und beim
Kompilieren in das Anwendungsprogramm eingebunden.
Ein Easy-IP Beispiel im Source-Code ist auf der Download-Seite des
IPC@CHIP unter http://www.beck-ipc.com/ipc erhältlich.
EasyIP
Seite 3 von 25
Version
V. 1.1
Datum
02.11.2004
Autor
hine
EasyIP für @CHIP-RTOS-Applikationen
2
Funktionsweise
Der übliche Datenfluss zum Senden von Daten (Client an Server) ist:
1. Client sendet Daten
2. Server empfängt Daten
3. Können die Daten vom Server verarbeitet werden, sendet der
Server ein Bestätigungspaket. Können die Daten nicht verarbeitet
werden, sendet der Server ein Fehlerpaket.
4. Client empfängt Antwort des Servers
Web
www.beck-ipc.com
Der Datenfluss zum Anfordern von Daten (Client fordert Daten von
Server an) ist:
1. Client sendet Anforderungs-Paket
2. Server empfängt Anforderung
3. Wenn Anforderung vom Server ausgeführt werden kann, sendet
der Server ein Paket mit den angeforderten Daten.Wenn nicht,
sendet er ein Fehlerpaket
4. Client empfängt Antwort des Servers
Version
V. 1.1
Datum
Der Datenfluss zum gleichzeitigen Senden und Anfordern von Daten ist:
1. Client sendet Daten-/Anforderungs-Paket
2. Server empfängt Daten und Anforderung
3. Wenn gesendete Daten vom Server nicht verarbeitet werden
konnten, sendet er ein Fehlerpaket. Wenn die Anforderung vom
Server ausgeführt werden kann, sendet er ein Paket mit den
angeforderten Daten. Wenn die Anforderung vom Server nicht
ausgeführt werden kann, sendet er ein Fehlerpaket
4. Client empfängt die Antwort des Servers
EasyIP
Seite 4 von 25
02.11.2004
Autor
hine
EasyIP für @CHIP-RTOS-Applikationen
3
Datenstruktur
EasyIP ist auf die Verwendung mit SPS-Betriebssystemen ausgerichtet
und stellt daher einen genau definierten Datenbereich zur Verfügung.
Angelehnt an die Festo Steuerungen mit FST-Betriebssystem besteht
der Datenbereich aus:
1.
2.
3.
4.
10000 Merkerworten (MW)
256 Eingangsworten (IW)
256 Ausgangsworten (OW)
256 Registern (R)
Web
www.beck-ipc.com
Im C-Programm auf dem RTOS-Betriebssystem werden an Stelle dieser
Operanden globale Variablenfelder bereit gestellt, die wie folgt definiert
sind:
unsigned
unsigned
unsigned
unsigned
int
int
int
int
uEipMW[10000];
uEipIW[256];
uEipOW[256];
uEipR[256];
//
//
//
//
Merkerworte
Eingangsworte
Ausgangsworte
Register
Version
V. 1.1
Datum
Der Benutzer kann durch Zeiger auf einzelne Feldelemente
anschaulichere Namen für Teile dieser Datenfelder festlegen, z.B.
02.11.2004
Autor
hine
unsigned int* DatenAusAndererSteuerung;
DatenAusAndererSteuerung = &uEipMW[789];
EasyIP
Seite 5 von 25
EasyIP für @CHIP-RTOS-Applikationen
4
Adressierung der Partnerstation
EasyIP verwaltet eine Liste (Variablenfeld) mit den IP-Adressen der
Partnerstationen. Diese Liste kann entweder vom Anwendungsprogramm selbst gefüllt werden (über die Funktionen IP_Table_Set und
IP_Table_Get oder durch direktes Schreiben in das Variablenfeld) oder
aus einer .ini-Datei gelesen werden (über die Funktionen SaveIptable
und LoadIptable). Um die Übersicht zu erhalten und gegenseitiges
Überschreiben von Tabelleneinträgen zu vermeiden, sollten niemals
beide Methoden kombiniert werden.
Ist die IP-Kurzwahlliste gefüllt, können die Partnerstationen in den
Sende-/ Empfangsfunktionen einfach über ihren Tabellenindex
angesprochen werden.
Die Liste kann in der EasyIP-Implementierung für BCxxx bis zu 32
Einträge (0 bis 31) umfassen.
int IP_Table_Set(unsigned
unsigned
unsigned
unsigned
unsigned
unsigned
int iReadWrite,
int iIndex,
char cByte1,
char cByte2,
char cByte3,
char cByte4)
Web
www.beck-ipc.com
Version
V. 1.1
Datum
02.11.2004
int IP_Table_Get(unsigned
unsigned
unsigned
unsigned
unsigned
unsigned
EasyIP
int iReadWrite,
int Index,
char *cByte1,
char *cByte2,
char *cByte3,
char *cByte4)
Autor
hine
Seite 6 von 25
EasyIP für @CHIP-RTOS-Applikationen
5
Server- und Client Funktionen
Die EasyIP-Servertask beantwortet Anfragen entfernter EasyIP-Clients
und überwacht den Zustand der lokalen Anfragen, die über die ClientFunktionen Easy_S und Easy_R an andere Server gerichtet wurden, auf
Fehler und Timeouts. Die Servertask muss deshalb immer gestartet
werden, wenn EasyIP benutzt werden soll. Zum Start der Servertask
dient die Funktion EipStartServer, zum Stoppen EipStopServer. EasyIP
ist nur innerhalb des Programms (.exe) verfügbar, das den Server
gestartet hat, und der Server darf auch nur innerhalb eines Programms
gestartet werden.
Die Multitasking-Fähigkeiten des Betriebssystems werden dadurch nicht
eingeschränkt, weil dieses eine Programm durchaus weitere Tasks
erzeugen kann, die alle Zugriff auf EasyIP und die globalen EasyIPVariablenfelder haben. Lediglich der Start mehrerer .exe-Dateien, die
EasyIP enthalten, ist nicht zulässig. Während die Servertask im
Hintergrund läuft, kann das Anwendungsprogramm mit Hilfe der ClientFunktionen aktiv Daten zu anderen Steuerungen, auf denen ein EasyIPServer läuft, senden und von diesen empfangen. Zu den ClientFunktionen gehören z.B. Easy_S (senden) und Easy_R (empfangen).
void huge EipServerTask(void)
Web
www.beck-ipc.com
Version
V. 1.1
Datum
02.11.2004
int EipStartServer(unsigned char cCycleMs)
//Milliseconds server sleeps before checking
Autor
hine
int Easy_S(unsigned int uTableIndex,
unsigned int uOpType,
unsigned int uNumToRequest,
unsigned int uOpOffLoc,
unsigned int uOpOffRem,
int *iStatus)
int Easy_R(unsigned int uTableIndex,
unsigned int uOpType,
unsigned int uNumToRequest,
unsigned int uOpOffLoc,
unsigned int uOpOffRem,
int *iStatus)
EasyIP
Seite 7 von 25
EasyIP für @CHIP-RTOS-Applikationen
6
Programmierung
Die Verwendung von EasyIP in einem eigenen Programm läuft also wie
folgt ab:
1. Initialisierung
Laden der IP-Kurzwahlliste (im Programm oder aus einer iniDatei) Starten der Servertask
2. Betrieb
Daten
zu
anderen
Stationen
senden
mit
Easy_S
Daten von anderen Stationen anfordern mit Easy_R
Daten senden und gleichzeitig andere Daten anfordern mit
Easy_SR
Im Hintergrund beantwortet die EasyIP-Servertask die Anfragen
der anderen Stationen
3.
Ende
Beenden der Servertask. Beenden des Anwendungsprogramms
Der Aufruf einer Client-Funktion startet eine Anfrage an den Server
einer anderen Steuerung.
Nachdem die Client-Funktion die Anfrage abgesendet hat,
überwacht die lokale Servertask den Zustand der Anfrage und nimmt
die eintreffende Antwort des entfernten Servers entgegen. Trifft die
Antwort nicht rechtzeitig (vor Ablauf des Timeout-Zählers) ein oder
enthält die eintreffende Antwort einen Fehlercode der entfernten
Station, wird dieser Fehlercode in der vorher von der Client-Funktion
als Zeiger übergebenen Variablen abgelegt.
Dieser Mechanismus ermöglicht dem Anwenderprogramm nach dem
Start einer Anfrage ein sofortiges Weiterarbeiten, ohne auf die
Antwort der entfernten Station warten zu müssen; es kann aber auch
aktiv auf die Antwort warten, indem es die Statusvariable überwacht.
Zur gleichen Zeit kann zu jeder Partnerstation in der IP-Tabelle nur
eine Anfrage aktiv sein.
EasyIP
Seite 8 von 25
Web
www.beck-ipc.com
Version
V. 1.1
Datum
02.11.2004
Autor
hine
EasyIP für @CHIP-RTOS-Applikationen
7
Benötigter Quellcode für die EasyIP @CHIP-RTOS
Applikation
Diese Dateien müssen in das Projektverzeichnis auf der Festplatte
kopiert werden:
easyip.c
easyip.h
eipserv.c
eipserv.h
Web
In das Projekt selbst sind folgende Dateien aufzunehmen:
www.beck-ipc.com
eipserv.c
easyip.c
für die EasyIP-Funktionen.
Version
CLib200L.lib aus dem Verzeichnis CLib
V. 1.1
für den Aufruf von @CHIP-RTOS Betriebssystem-Funktionen, die von
EasyIP benötigt werden.
Datum
02.11.2004
Autor
hine
In das Anwendungsprogramm muss schließlich nur die Anweisung
#include "easyip.h"
aufgenommen werden.
EasyIP
Seite 9 von 25
EasyIP für @CHIP-RTOS-Applikationen
Falls Sie Borland C++ 5.02 benutzen, wird Ihr Projektfenster also wie
folgt aussehen:
Achten Sie ebenfalls darauf, den
Prozessortyp richtig einzustellen
(bei Borland C: Options | Project |
16-bit Compiler | Processor
„80186“) sowie die DebugInformationen auszuschalten, um
die exe-Datei zu verkleinern (bei
Borland C: Options | Project |
Linker | General „Include debug
information“ ausschalten)
Web
www.beck-ipc.com
Version
V. 1.1
Datum
8
02.11.2004
Referenz
Für detaillierte Informationen zu den einzelnen Funktionen und deren
Verwendung beachten Sie bitte das entsprechende Kapitel dieser
Dokumentation.
9
EasyIP Client-Funktionen
9.1
Einführung
Die Client-Funktionen werden von einem EasyIP-Client (in diesem Fall
die lokale Station) aufgerufen, um auf einen EasyIP-Server (entfernte
Station) zuzugreifen. Es können Daten von diesem Server angefordert
(Request-Funktion Easy_R) und zu ihm gesendet werden (SendFunktion Easy_S). Die Funktion Easy_SR kombiniert Senden und
Empfangen in einem Vorgang.
Zusätzlich sind einige Hilfsfunktionen vorhanden, um Einträge in die IPKurzwahlliste vorzunehmen oder die Kurzwahlliste aus einer Datei zu
lesen oder in eine Datei zu schreiben.
EasyIP
Seite 10 von 25
Autor
hine
EasyIP für @CHIP-RTOS-Applikationen
9.2
Funktionsbeschreibungen
9.2.1
Easy_SR
Sendet Daten zu einer anderen Steuerung und fordert mit demselben
Paket Daten von dieser Steuerung an.
Deklaration:
int Easy_SR(unsigned int uTableIndex,
unsigned int uOpTypeSend,
unsigned int uNumToSend,
unsigned int uOpOffLocSend,
unsigned int uOpOffRemSend,
unsigned int uOpTypeReq,
unsigned int uNumToRequest,
unsigned int uOpOffLocReq,
unsigned int uOpOffRemReq,
int* iStatus)
Web
www.beck-ipc.com
Rückgabewert:
0: kein Fehler , nicht 0: Fehler (siehe Fehlertabelle)
Version
V. 1.1
Parameter:
uTableIndex
Index der IP-Adresse der entfernten Station (mit der Daten ausgetauscht
werden sollen) in der IP-Kurzwahlliste.
uOpTypeSend
Typ der Operanden, die gesendet werden sollen:
1: Merkerwort
2: Eingangswort
3: Ausgangswort
4: Register
uNumToSend
Anzahl der zu sendenden Datenworte (höchstens 256)
uOpOffLocSend
Offset (Nummer) des ersten zu sendenden Datenwortes in der lokalen
Station.
uOpOffRemSend
Ziel-Offset des ersten gesendeten Datenwortes in der entfernten
Station.
uOpTypeReq
Operandentyp, der angefordert werden soll. Operandentypen siehe
uOpTypeSend.
uNumToRequest
Anzahl der anzufordernden Datenworte (höchstens 256)
uOpOffLocReq
Ziel-Offset des ersten angeforderten Datenwortes in der lokalen Station.
EasyIP
Seite 11 von 25
Datum
02.11.2004
Autor
hine
EasyIP für @CHIP-RTOS-Applikationen
uOpOffRemReq
Offset des ersten anzufordernden Datenwortes in der entfernten Station.
*iStatus
Zeiger auf eine int-Variable, in der der Status der Kommunikation mit
dieser Partnerstation gespeichert wird. Diese Variable wird im
Hintergrund aktualisiert:
-1: Paket zum Server gesendet, noch keine Bestätigung empfangen,
noch kein Timeout
0: OK, Bestätigung von entfernter Station empfangen
Web
1: Fehlerhafter Operandentyp. Dieser Operandentyp wird von der
entfernten Station nicht unterstützt.
www.beck-ipc.com
2: Fehlerhafter Offset. Die Partnerstation lässt diese Operandennummer
nicht zu. Wahrscheinlich ist der Offset zu groß.
4: Fehlerhafte Operandenanzahl. Die Partnerstation lässt diese
Operandenanzahl nicht zu. Wahrscheinlich ist die Anzahl zu groß.
128: Timeout. Partnerstation hat nicht oder nicht innerhalb der
vorgegebenen Zeit geantwortet. (Diese Zeit wird in EIPSERV.H als
Vielfaches (Voreinstellung 12) der lokalen Server-Zyklenzeit definiert.
Die Server-Zyklenzeit wird beim Aufruf der Funktion EipStartServer als
Parameter eingestellt.)
Version
V. 1.1
Datum
02.11.2004
Autor
hine
EasyIP
Seite 12 von 25
EasyIP für @CHIP-RTOS-Applikationen
9.2.2
Easy_R
Fordert Daten von einer anderen Steuerung an.
Deklaration:
int Easy_R(unsigned int uTableIndex,
unsigned int uOpType,
unsigned int uNumToRequest,
unsigned int uOpOffLoc,
unsigned int uOpOffRem,
int * iStatus)
Web
www.beck-ipc.com
Rückgabewert:
0: kein Fehler, nicht 0: Fehler (siehe Fehlertabelle)
Parameter:
uTableIndex
Index der IP-Adresse der entfernten Station (von der Daten angefordert
werden sollen) in der IP-Kurzwahlliste.
uOpType
Typ der Operanden, die angefordert werden sollen:
1: Merkerwort
2: Eingangswort
3: Ausgangswort
4: Register
uNumToRequest
Anzahl der anzufordernden Datenworte (höchstens 256)
uOpOffLoc
Ziel-Offset (Nummer) des ersten anzufordernden Datenwortes in der
lokalen Station.
uOpOffRem
Offset des ersten anzufordernden Datenwortes in der entfernten Station.
*iStatus
Zeiger auf eine int-Variable, in der der Status der Kommunikation mit
dieser Partnerstation gespeichert wird. Diese Variable wird im
Hintergrund aktualisiert. Die möglichen Statuswerte sind bei der
Funktion EasySR beschrieben.
Bemerkung:
Intern ruft die Funktion Easy_R die Funktion Easy_SR auf, wobei alle
Parameter, die sich auf das Senden von Daten beziehen, auf 0 gesetzt
werden.
EasyIP
Seite 13 von 25
Version
V. 1.1
Datum
02.11.2004
Autor
hine
EasyIP für @CHIP-RTOS-Applikationen
9.2.3
Easy_S
Sendet Daten zu einer anderen Steuerung.
Deklaration:
int Easy_S(unsigned int uTableIndex,
unsigned int uOpType,
unsigned int uNumToSend,
unsigned int uOpOffLoc,
unsigned int uOpOffRem,
int * iStatus)
Web
www.beck-ipc.com
Rückgabewert:
0: kein Fehler, nicht 0: Fehler (siehe Fehlertabelle)
Parameter:
uTableIndex
Index der IP-Adresse der entfernten Station (zu der Daten gesendet
werden sollen) in der IP-Kurzwahlliste.
uOpType
Typ der Operanden, die gesendet werden sollen:
1: Merkerwort
2: Eingangswort
3: Ausgangswort
4: Register
uNumToSend
Anzahl der zu sendenden Datenworte (höchstens 256)
uOpOffLoc
Offset des ersten zu sendenden Datenwortes in der lokalen Station.
uOpOffRem
Ziel-Offset (Nummer) des ersten gesendeten Datenwortes in der
entfernten Station.
*iStatus
Zeiger auf eine int-Variable, in der der Status der Kommunikation mit
dieser Partnerstation gespeichert wird. Diese Variable wird im
Hintergrund aktualisiert. Die möglichen Statuswerte sind bei der
Funktion EasySR beschrieben.
Bemerkung:
Intern ruft die Funktion Easy_S die Funktion Easy_SR auf, wobei alle
Parameter, die sich auf das Anfordern von Daten beziehen, auf 0
gesetzt werden.
EasyIP
Seite 14 von 25
Version
V. 1.1
Datum
02.11.2004
Autor
hine
EasyIP für @CHIP-RTOS-Applikationen
9.2.4
IP_Table_Set
Trägt eine IP-Adresse in die IP-Kurzwahlliste ein. Jede Adresse kann
dann über ihren Listenindex angesprochen werden.
Beispiel für die IP-Liste:
Index
0
1
IP-Adresse
192.168.0.1
192.168.0.2
Web
Deklaration:
int IP_Table_Set(unsigned
unsigned
unsigned
unsigned
unsigned
unsigned
www.beck-ipc.com
int iReadWrite,
int iIndex,
char cByte1,
char cByte2,
char cByte3,
char cByte4)
Version
Rückgabewert:
0: kein Fehler
(-1): Fehler (z.B. unzulässig hoher Tabellenindex)
V. 1.1
Datum
02.11.2004
Parameter:
Autor
iReadWrite
muss auf 1 gesetzt werden (Kompatibilität mit FST-Steuerungen)
iIndex
Index des Listeneintrags, der geschrieben werden soll
cByte1 bis cByte4
IP-Adresse in der Reihenfolge cByte1.cByte2.cByte3.cByte4
Bemerkung:
Statt diese Funktion zu verwenden, können Sie die IP-Adresse als
unsigned long int auch direkt in das Array lIpable schreiben. Beachten
Sie dabei aber unbedingt die Reihenfolge: Byte 4 ist das höchstwertige,
Byte 1 das niederwertigste Byte innerhalb des unsigned long int
(Network Byte Order).
Der niedrigste Tabellenindex ist 0, der höchste 31.Damit kann die
Tabelle 32 Einträge umfassen.
EasyIP
Seite 15 von 25
hine
EasyIP für @CHIP-RTOS-Applikationen
9.2.5
IP_Table_Get
Liest eine IP-Adresse aus der IP-Kurzwahlliste aus.
Deklaration:
int IP_Table_Get(unsigned
unsigned
unsigned
unsigned
unsigned
unsigned
int iReadWrite,
int iIndex,
char * cByte1,
char * cByte2,
char * cByte3,
char * cByte4)
Web
www.beck-ipc.com
Rückgabewert:
0: kein Fehler
(-1): Fehler (z.B. unzulässig hoher Tabellenindex)
Parameter:
Version
V. 1.1
iReadWrite
muss auf 2 gesetzt werden (Kompatibilität zu FST-Steuerungen)
02.11.2004
iIndex
Index des Listeneintrags, der ausgelesen werden soll.
Autor
*cByte1 bis *cByte4
Zeiger auf 4 Variablen vom Typ unsigned char, die die vier Bytes der IPAdresse aufnehmen sollen. Die Reihenfolge ist:
cByte1.cByte2.cByte3.cByte4
EasyIP
Datum
Seite 16 von 25
hine
EasyIP für @CHIP-RTOS-Applikationen
9.2.6
SaveIptable
Speichert die IP-Kurzwahlliste in der Datei „iptable.ini“. Ist die Datei
bereits vorhanden, wird sie überschrieben.
Deklaration:
int SaveIptable(void)
Web
Rückgabewert:
0: kein Fehler
(-1): Datei konnte nicht zum Schreiben geöffnet werden
www.beck-ipc.com
Bemerkung:
SaveIptable speichert alle Adressen, die nicht 0.0.0.0 sind. Das Format
der Datei iptable.ini ist bei der Funktion LoadIptable beschrieben.
Version
V. 1.1
Datum
02.11.2004
Autor
hine
EasyIP
Seite 17 von 25
EasyIP für @CHIP-RTOS-Applikationen
9.2.7
LoadIptable
Lädt die IP-Kurzwahlliste aus der Datei „iptable.ini“.
Deklaration:
int LoadIptable(void)
Rückgabewert:
0: kein Fehler, Datei korrekt geladen
(-1): Datei konnte nicht geöffnet werden. Möglicherweise wurde die
Datei nicht gefunden.
2: Datei konnte nicht geschlossen werden.
3: Lesefehler. Die Datei enthält ungültige Daten.
Web
www.beck-ipc.com
Bemerkung:
Die Datei iptable.ini muss den folgenden Aufbau haben:
1=222.222.222.222
2=5.5.5.5
3=100.100.100.100
wobei 1, 2, 3 die Listenindizes sind und 222.222.222.222, 5.5.5.5,
100.100.100.100 die dazugehörigen IP-Adressen.
Alle Listenpositionen, die nicht in der Datei definiert sind, bleiben
unverändert.
Wenn das Dateiformat nicht mit diesen Vorgaben übereinstimmt, ist das
Verhalten dieser Funktion möglicherweise nicht definiert.
EasyIP
Seite 18 von 25
Version
V. 1.1
Datum
02.11.2004
Autor
hine
EasyIP für @CHIP-RTOS-Applikationen
9.2.8
IPFrom4Chars
Wandelt eine als 4 Einzelbytes vorliegende IP-Adresse in einen
unsigned long int (DWORD) um.
Deklaration:
unsigned long int IPFrom4Chars(char
char
char
char
cByte1,
cByte2,
cByte3,
cByte4)
Web
www.beck-ipc.com
Rückgabewert:
Die IP-Adresse als unsigned long int in „Network Byte Order“, wobei
Byte1 das höchstwertige und Byte4 das niederwertigste Byte ist.
Parameter:
Version
V. 1.1
cByte1 bis cByte4
IP-Adresse in der Reihenfolge cByte1.cByte2.cByte3.cByte4
Datum
02.11.2004
Autor
hine
EasyIP
Seite 19 von 25
EasyIP für @CHIP-RTOS-Applikationen
10
EasyIP Server-Funktionen
10.1 Einführung
Die Server-Funktionen starten und stoppen den EasyIP-Server. Wenn
der Server auf einer Steuerung läuft, können andere Steuerungen Daten
von dieser Steuerung anfordern und an diese Steuerung senden.
Außerdem wird der Server zur Unterstützung der Client-Funktionen
benötigt, um die Antworten anderer Stationen auszuwerten, nachdem
eine Client-Funktion aufgerufen wurde. Der Server muss also immer
gestartet werden, wenn EasyIP genutzt werden soll.
Der Server läuft als eigenständige Betriebssystem-Task im Hintergrund.
Web
www.beck-ipc.com
10.1.1 EipStartServer
Startet die EasyIP-Server-Task.
Version
Deklaration:
V. 1.1
int EipStartServer(unsigned char cCycleMs)
Datum
02.11.2004
Rückgabewert:
Autor
0: Kein Fehler. Server erfolgreich gestartet.
(-1): Fehler. Server konnte nicht gestartet werden. Möglicherweise läuft
der Server bereits.
Parameter:
cCycleMs
Millisekunden, die der Server schläft, bevor er erneut prüft, ob Daten
verarbeitet werden müssen. Empfohlener Wert: 10 ms.
EasyIP
Seite 20 von 25
hine
EasyIP für @CHIP-RTOS-Applikationen
10.1.2 EipStopServer
Stoppt die EasyIP-Server-Task
Deklaration:
int EipStopServer(void)
Web
Rückgabewert:
www.beck-ipc.com
0: kein Fehler. Server erfolgreich gestoppt.
(-1): Fehler. Server konnte nicht gestoppt werden. Möglicherweise läuft
der Server nicht.
Version
V. 1.1
Datum
02.11.2004
Autor
hine
EasyIP
Seite 21 von 25
EasyIP für @CHIP-RTOS-Applikationen
11
Protokollbeschreibung
Die folgende EasyIP-Protokollbeschreibung hilft Ihnen bei der
Entwicklung eigener EasyIP-Funktionen und bei der Integration von
EasyIP in andere Programme und Plattformen. Weiterhin gehen aus der
Protokollbeschreibung einige zusätzliche Möglichkeiten hervor, die mit
den bisher beschriebenen Grundfunktionen nicht ausgenutzt werden
können.
Web
11.1 Paketaufbau
Jedes EasyIP-Paket beginnt mit dem folgenden Kopf (Header):
Größe
1 Byte
1 Byte
Bezeichnung
Flags
Fehler
4 Bytes
Paketzähler
1 Byte
1 Byte
reserviert
Datentyp (Senden)
2 Bytes
2 Bytes
1 Byte
1 Byte
Größe (Senden)
Offset (Senden)
reserviert
Datentyp (Anfrage)
2 Bytes
2 Bytes
2 Bytes
Größe (Anfrage)
Server-Offset (Anfrage)
Client-Offset (Anfrage)
EasyIP
Bemerkungen
Bit 0: Informationspaket (Anfrage oder
Antwort)
Bit 1...2: Bitoperationen (Bitoperationen
nur beim Senden, nicht beim Anfragen
von Daten. Siehe nähere Erklärung zu
Bitoperationen)
Bit 6: Keine Antwort senden
Bit 7: Antwortpaket
Nur in Antwortpaketen benutzt
0: Kein Fehler
1: Operandentyp-Fehler
2: Offset-Fehler (Operandennummer
falsch)
4: Größenfehler (zu viele Operanden)
16: nicht unterstützt
Vom Client gesetzt, vom Server
unverändert kopiert
muss 0 sein
Operandentyp, einige Typen werden
möglicherweise nicht unterstützt:
1: Merkerwort
2: Eingangswort
3: Ausgangswort
4: Register
5: Timer
11: Zeichenkette
Anzahl der gesendeten Datenworte
Ziel-Offset im Server
muss 0 sein
Operandentyp, einige Typen werden
möglicherweise nicht unterstützt (siehe
Datentyp (Senden) für eine Liste der
Typen)
Anzahl der angeforderten Datenworte
Offset der angeforderten Daten im Server
Ziel-Offset der angeforderten Daten im
Client
Seite 22 von 25
www.beck-ipc.com
Version
V. 1.1
Datum
02.11.2004
Autor
hine
EasyIP für @CHIP-RTOS-Applikationen
Dem Kopf folgen (optional) die Nutzdaten:
Größe
N*2 Bytes
Bezeichnung
Daten
Bemerkungen
Daten, die vom Client gesendet wurden
oder angeforderte Daten vom Server
Bei der Benutzung von Zeichenketten (in der BCxxx-RTOS-Version
nicht unterstützt) haben die Größe-Felder eine andere Bedeutung: Sie
geben die Anzahl der Zeichen in der Zeichenkette an. Die Zeichenketten
müssen C-Stil haben, d.h. ein NUL-Byte als Endekennzeichen.
11.2 Erläuterungen zu den einzelnen Feldern
Web
www.beck-ipc.com
11.2.1 Senden von Daten
Wenn der Client einen Datenblock zum Server sendet, werden die
folgenden Felder benutzt: Paketzähler, Datentyp (Senden), Größe
(Senden) und Offset (Senden). Die übrigen Felder sollen 0 sein.
Der Server setzt das Antwort-Flag (Bit 7 im Feld Flags), kopiert den
Paketzähler und setzt das Fehler-Feld, falls Fehler aufgetreten sind.
Version
V. 1.1
11.2.2 Anfragen von Daten
Datum
Wenn der Client eine Anfrage sendet, um Daten vom Server abzurufen,
werden die folgenden Felder benutzt: Paketzähler, Datentyp (Anfrage),
Größe (Anfrage), Server-Offset (Anfrage), Client-Offset (Anfrage). Die
übrigen Felder sollen 0 sein.
Der Server setzt das Antwort-Flag (Bit 7 im Flags-Feld), kopiert
Paketzähler, Datentyp (Anfrage), Größe (Anfrage), Server-Offset
(Anfrage) und Client-Offset (Anfrage) und setzt das Fehler-Feld, falls
Fehler aufgetreten sind. Wenn die Anfrage erfüllt werden konnte, enthält
das Antwortpaket zusätzlich die angeforderten Daten.
11.2.3 Senden und Anfragen von Daten
Eine Kombination von Senden und Anfragen ist ebenfalls möglich: Ein
Client kann in einem Paket sowohl Daten senden als auch anfordern.
Das Antwortpaket, das vom Server gesendet wird, ist in diesem Fall
sowohl Bestätigung der gesendeten Daten als auch Datenpaket.
EasyIP
Seite 23 von 25
02.11.2004
Autor
hine
EasyIP für @CHIP-RTOS-Applikationen
11.2.4 Informationspakete
Wenn Bit 0 im Feld Flags gesetzt ist, handelt es sich bei dem
entsprechenden Paket um ein Informationspaket. Die Steuerung, die
Informationen anfordert, setzt das Informations-Flag und den 4-BytePaketzähler. Alle anderen Felder sollen 0 sein.
Die Steuerung, die die Anfrage empfängt, setzt in ihrer Antwort ebenfalls
das Informations-Flag und das Antwort-Flag, kopiert den Paketzähler
und setzt die Größe (Anfrage) auf 38.
Im Datenfeld werden die folgenden Daten gesendet:
Web
www.beck-ipc.com
Größe
2 Bytes
Bezeichnung
Art der Information
2 Bytes
Steuerungs-Typ
2 Bytes
Steuerungs-Revision
high
Steuerungs-Revision low
EasyIP-Revision high
EasyIP-Revision low
Größe von Operandentyp
N
2 Bytes
2 Bytes
2 Bytes
N*2 Bytes
Bemerkungen
Art des Informationspakets
1: Paket mit Steuerungs- und
Operanden-Informationen
Typ der Steuerung
1: FST
2: MWT
3: DOS
etc.
siehe unten
siehe unten
siehe unten
siehe unten
0, wenn dieser Operandentyp nicht
verfügbar ist, sonst Anzahl der
unterstützten Operanden dieses Typs
Die Tabelle der Operandengröße listet die Informationen für die
Operandentypen 1 bis 32 auf. Beispiel: Eine Steuerung mit RTOSBetriebssystem (z.B. BCxxx) Version 1.01 und EasyIP-Revision 1.0 hat
Steuerungs-Typ 3, Steuerungs-Revision high 1, Steuerungs-Revision
low 1, EasyIP-Revision high 1 und EasyIP-Revision low 0. Die
Operandengrößen sind 10000, 256, 256, 256, 0, 0, ..., 0.
EasyIP
Seite 24 von 25
Version
V. 1.1
Datum
02.11.2004
Autor
hine
EasyIP für @CHIP-RTOS-Applikationen
Bit-Operationen:
Normalerweise speichert ein EasyIP-Server beim Empfang von Daten
diese nur in den Operanden ab. Um einzelne Bits ändern zu können
(z.B. Bit 5 in Merkerwort 25 setzen und alle anderen Bits unverändert
lassen), können Bit-Operatoren mit den Daten gesendet werden.
Bitoperationen können über die Bits 1 und 2 im Flag-Feld wie folgt
ausgewählt werden:
Operation
normal
bitweises ODER
bitweises UND
bitweises XOR
Bit 1
0
1
0
1
Bit 2
0
0
1
1
Web
www.beck-ipc.com
Beispiel:
Möchten Sie Bit 2 setzen, senden Sie ODER mit dem Wert 4.
Möchten Sie Bit 3 löschen, senden Sie UND mit dem Wert FFF7h.
Version
V. 1.1
Datum
02.11.2004
12
Ver.
1.0
1.1
EasyIP
Autor
Historie
Datum
17.06.2002
02.11.2004
hine
Autor
dtr
hine
Änderungen
erste Version
Corporate Design / Version für Demo 1.0
Seite 25 von 25
Herunterladen