Steuern über Ethernet

Anleitung für die Kommunikation über Ethernet mit dem Chip WIZ5500


Technischer Bericht, 2016

19 Seiten, Note: 1,0


Leseprobe

Steuern über Ethernet, real und konkret

In [1], [2] und [3] wurde gezeigt, wie man eine Steuerung vom PC aus über USB aufbaut. In diesem Aufsatz wird nun alternativ statt einer USB-Verbindung eine Ethernet-Verbindung verwendet. Ähnlich wie beim USB stehen auch für Ethernet Chips zur Verfügung, die die Kommunikation vereinfachen sollen. Dazu gehört der Chip WIZ5500 der koreanischen Firma „WIZnet“, der auf dem Modul WIZ550io verbaut ist. Dieser ermöglicht einen vereinfachten Datenaustausch über Ethernet. Die Inbetriebnahme des Chips ist aber nicht ganz einfach. Die verfügbaren Unterlagen sind eher kryptisch und wenig konkret.

Ziel in diesem Aufsatz ist es, durch Übersenden eines Bytes vom PC an eine Platine, die Zustände eines Mikrocontroller-Ports zu steuern. So ähnlich, wie es auch in [1], [2] und [3] über USB gemacht wurde. Im Fachjargon spricht man auch von einer "Socket-raw"-Verbindung.

Ethernet

Bei einer Ethernet-Verbindung werden die Signale differenziell über verdrillte Leitungen ("twisted pairs") übertragen. Für Senden (Tx) und Empfangen (Rx) gibt es jeweils ein eigenes Adernpaar. Die Einspeisung auf die Leitung erfolgt mit Hilfe von Signalübertragern – also gleichspannungsfrei.

Jeder Teilnehmer in einem Ethernet-Verbund hat eine global einmalige Adresse, die sogenannte MAC-Adresse (MAC steht für Media Access Control) . Anhand dieser Adresse ist jeder Teilnehmer eindeutig identifizierbar.

Der Datenaustausch über Ethernet geschieht mit Hilfe von Protokollen. Die beiden bekanntesten sind UDP (User Datagram Protocol) und TCP/IP (Transmission Control Protocol / Internet Protocol). Die Datenübertragung mit Hilfe von UDP ist schnell, aber ungesichert. TCP/IP enhält viele Sicherheitsmechanismen. Die Datenübertragung per TCP/IP ist aber gerade deshalb langsamer als beim UDP aber auch die am weitesten verbreitete Verbindungsart. Beim TCP/IP-Protokoll erhält jeder Teilnehmer neben der MAC-Adresse noch eine Netzwerkadresse (IP-Adresse). Diese ist 4- oder 6 Byte lang. Der Verbindungsaufbau geschieht über sogenannte „Socketverbindungen“. Es können mehrere Sockets gleichzeitig eine Verbindung eingehen, so dass ein Gerät gleichzeitig mit mehreren anderen Geräten im Netz Daten austauschen kann. Real fließt der Datenverkehr über einen Speicherbereich des Arbeitsspeichers, der über eine Portnummer festgelegt ist. Einige Portnummern sind fest vergeben. Diese sollten für eine angepaßte eigene Verbindung nicht benutzt werden. Dazu gehört z.B. der Port 23, der für Telnet reserviert ist, der Port 25, der für SMTP reserviert ist und der Port 5000, der für GSM-Kommunikation reserviert ist. Eine Liste der reservierten Ports findet man in [8].

Bis dass die Verbindung zwischen zwei Geräten aufgebaut ist wird zwischen Server und Client unterschieden. Will ein Client eine Verbindung mit einem Server aufbauen, dann legt er zunächst eine beliebige initiale Sequenznummer (SeqClient) fest. Darüber hinaus bestimmt der Client eine Puffergröße für den Datenempfang (das Empfangsfenster, WinClient) und wählt eine dynamische Portnummer als lokale Adresse für die TCP-Verbindung. Nach diesen Vorbereitungen sendet der Client ein TCP-Paket mit gesetztem SYN -Bit und den zuvor definierten Werten. Beim Verbindungsaufbau enthält das übermittelte Datenpaket in jede Richtung jeweils den Raum für ein Nutzdatenbyte, damit der Verbindungsaufbau bestätigt werden kann. Zusammengefaßt sieht das wie folgt aus:

Client ( Server-IP-Adresse und Server-Portnummer, SYN, SeqClient ) → Server

Der Server sendet als Antwort ein TCP-Paket mit seiner eigenen Sendesequenznummer (SeqServer), einer Bestätigungsnummer (a ck), seiner Empfangsfenstergröße (Win) und gesetztem SYN -Bit. Außerdem bestätigt er in demselben Paket den Empfang des Verbindungsaufbauwunsches des Clients durch ein gesetztes ACK -Bit.

Client ← Server ( Client-IP-Adresse und Client-Portnummer, SYN, ACK, SeqServer, ack=SeqClient+1 )

Nach dem Erhalt dieser Antwort vom Server, sendet der Client ein Paket mit einer Bestätigung von einem Byte (a ck=SeqServer+1) und der Sequenznummer seq=SeqClient+1 sowie das gesetzte Aknowledge-Bit (ACK).

Client ( Server-IP-Adresse und Server-Portnummer, ACK, seq=SeqClient+1, ack=SeqServer+1 ) → Server

Damit ist der Verbindungsaufbau bestätigt und fertig. Man bezeichnet diesen Ablauf auch als SYN-ACK-Handshake und es steht die TCP-Verbindung zur bidirektionalen Kommunikation zur Verfügung. Ab jetzt wird nicht mehr zwischen Server und Client unterschieden. Beide Kommunikationspartner sind gleichberechtigt und können gleichzeitig senden und empfangen.

Im Bild 1 ist ein Verbindungsaufbau zwischen zwei Geräten im Ethernet zu sehen, wie er von dem Programm „WireShark“ aufgezeichnet wurde. In Zeile 1 erkennt man die Anfrage des Clients mit der IP-Adresse 192.168.1.3 an den Server mit der IP-Adresse 192.168.1.2 und der Portnummer 5001. Die Sequenznummer ist 0. Das Bufferfenster (Win) ist 2048 Byte groß. In Zeile 2 sieht man die Antwort des Servers und in Zeile 3 das Aknowledge des Clients. Damit ist die Verbindung aufgebaut.

In Zeile 4 sendet der Client ein Byte an den Server. Der Server bestätigt den Erhalt des Bytes in Zeile 5. Man erkennt auch hier: AckServer = SeqClient + übertragene Bytes (hier 1 Byte). Das Gleiche passiert nochmal in Zeile 6 und Zeile 7.

In der Zeile 8 möchte der Client die Verbindung beenden. Er setzt das FIN-Bit. Der Server antwortet mit dem ACK-Bit. Damit ist die Verbindung ordnungsgemäß beendet.

Client oder Server ( IP-Adresse und Portnummer, FIN, SeqClientServer ) → Gegenstelle

Client bzw. Server ← Gegenstelle ( IP-Adresse und Portnummer, FIN, ACK, ack=SeqClientServer+1, SeqGegenstelle )

Client bzw. Server ( IP-Adresse und Portnummer, ack=SeqGegenstelle+1 ) → Gegenstelle

Abbildung in dieser Leseprobe nicht enthalten

Bild 1: Aufzeichnung einer Kommunikation über Ethernet durch das Programm „WireShark“.

Zeile 1 bis 3: Verbindungsaufbau.

Zeile 4 bis 7: Datenaustausch.

Zeile 8 bis 9: Verbindungsabbau.

Unter dem Internet-Protokoll TCP/IP erfolgt, wie bereits erwähnt, der Datenaustausch über Socketverbindungen. Jeder Socket verfügt über getrennte Speicherbereiche für Senden und Empfangen. Nachdem zwei Geräte eine Ethernet-Verbindung aufgebaut haben, können die Daten über den Socket übertragen (lesend, schreibend) werden. Mit Hilfe der Socket-Technik kann über mehrere „Kanäle“ gleichzeitg und unabhängig voneinander Datenübertragung stattfinden.

Das Modul

Die Kommunikation über Ethernet ist komplex. Es gibt aber Chips, die den Zugang zum Ethernet vereinfachen, indem sie einige Funktionen selbständig ausführen. Dazu gehört der eingangs erwähnte Chip WIZ5500 der Firma WIZnet. Dieses Chip gibt es auch auf einem Modul mit dem Namen WIZ550io. Dieses Modul hat bereits eine Ethernet Anschlussbuchse (RJ45) mit integrierten Signalübertragern auf der Platine (Bild 2). Das Modul hat außerdem den Vorteil, dass man es nicht unbedingt konfigurieren muss. Für eine Direktverbindung zwischen Platine und einem PC (z.B. bei Steuer- und Regelaufgaben via Ethernet) ist dies sehr praktisch, denn bei diesem Anwendungsfall benötigt man keine spezielle IP-Adresse, da es ja nur eine direkte Verbindung zwischen zwei Geräten gibt – die Teilnehmer somit bekannt und nicht wählbar sind.

Das Modul erledigt das Protokollhandling bei der Ethernet-Kommunikation. Für die Verwendung benötigt man noch einen Mikrocontroller der über eine SPI-Verbindung mit dem Modul kommuniziert. Über diese SPI-Verbindung läuft dann auch der Datenaustausch über Ethernet. Grundsätzliches zum SPI-Interface findet man z.B. in [3] und [4].

Bild 2: Das Modul WIZ550io auf einer Versuchsplatine mit angeschlossenem Netzwerkkabel, Spannungsversorgung und Programmieradapter(für den Mikrocontroller auf der Versuchtsplatine über Flachbandkabel).

Im Bild 3 ist die Pinbelegung des Moduls zu erkennen. Für den Betrieb benötigt man einen Mikrocontroller mit SPI-Interface. Zu den SPI-Anschlüssen gehören:

– Master Out Slave In, MOSI
– Master In Salve Out, MISO
– der SPI-Takt, SCLK
– ChipSelect, SCSn

Die zugehörigen Anschlüsse befinden sich im Bild 3 auf der linken Seite innerhalb der Leiste J1. Es sind grundsätzlich zwei Betriebsarten zu unterscheiden:

a) Betrieb mit variabler Anzahl zu übertragender Bytes
b) Betrieb mit festgelegter Anzahl zu übertragender Bytes (1 Byte, 2 Byte oder 4 Byte)

Im Falle b) ist die ChipSelect-Leitung nicht erforderlich. Der zugehörige Pin (Pin 6 von J1 gemäß Bild 3) kann deshalb dauerhaft mit GND verbunden werden.

Im Bild 3 findet man auf der rechten Seite die Anschlussleiste J2. Dort gibt es den Pin 3 (RSTn). Dieser Pin liegt normalerweise auf High-Potential (3,3V). Zieht man diesen Pin für mindestens 500µs auf Low-Potential (0V), wird ein Reset ausgeführt und das Modul initialisiert sich selbst. Ist dieser Vorgang abgeschlossen, springt der Pin 2 (RDY) von Low auf High. Man kann durch Abfragen dieses Pins prüfen, ob der Initialisierungsvorgang abgeschlossen ist. Laut Datenblatt ist dies spätestens nach 50 ms der Fall.Will man den Abschluss der Initialisierung nicht über den Pin 2 abfragen, dann kann man auch einfach 50 ms (bzw. besser mehr als 50 ms) nach dem Absenden des Reset-Pulses warten. Im Datenblatt [5] wird eine Wartezeit von 150 ms empfohlen. Es bietet sich im einfachsten Fall eine for-next-Warteschleife an. Nach dem Initialisierungsvorgang ist das Modul über die IP-Adresse 192.168.1.2 (Subnet-Mask: 255.255.255.0) ansprechbar.

Über Pin 5 (INTn) meldet das Modul einen Interrupt. Dieser kann ausgelöst werden durch Ereignisse wie z.B. Timeouts oder ein Wake on Lan (WOL). Tritt ein Interrupt auf, dann zieht das Chip diesen Pin auf Low-Potential. Die Nutzung der Interrupts ist natürlich nicht zwingend erforderlich. In der hier beschriebenen Applikation werden Interrupts nicht verwendet.

Abbildung in dieser Leseprobe nicht enthalten

Bild 3: Pinbelegung des Moduls WIZ550io in Draufsicht (Quelle: [5]).

Ethernet und Mikrocontroller

Im Bild 4 ist die Verbindung zwischen Ethernet-Modul und Mikrocontroller abgebildet. Im hier beschriebenen Beispiel wurde der Mikrocontroller MSP430F5659 verwendet. Die SPI-Verbindung läuft über Port 8, die drei übrigen Steuersignale (INTn, RSTn, RDY) werden über Port 9 aktiviert. Dieser Aufbau wurde im Bild 2 praktisch umgesetzt. Man erkennt im Schaltbild auch zwei Leuchtdioden, die über Widerstände gegen +3,3V geschaltet sind und für die Signalisierung bestimmter Betriebszustände verwendet werden können.

Je nach verwendetem Mikrocontroller bzw. verwendeter Konfiguration, können die Pullup-Widerstände (R8 bis R11) entfallen. Auch im hier beschriebenen Design wären die Widerstände nicht unbedingt erforderlich, da im verwendeten Mikrocontroller Pullup-Widerstände integriert sind, die aktiviert werden können. Allerdings werden deren Werte nur im Zusammenhang mit den Schmitt-Trigger-Inputs angegeben und zwar mit 20 kΩ bis 50 kΩ.

Bild 4: Die Verbindung zwischen Ethernet-Modul und Mikrocontroller besteht aus maximal 7 Leitungen (zuzüglich Masse). Hier im Beispiel mit dem Mikrocontroller MSP430F5659 wird der SPI-Bus über Port 8 bedient. Die übrigen drei Kontrolleitungen werden über Port 9 angesteuert.

Nach dem Startvorgang ist für die Kommunikation über Ethernet der auf dem Modul verbaute Chip WIZ5500 zuständig. Für die Programmierung ist deshalb dessen Datenblatt relevant. Die Inbetriebnahme des Moduls erfolgt durch Konfiguration der Register des Chips WIZ5500. Für die in diesem Beispiel verwendete Direktverbindung zwischen PC und Platine entfallen die Einstellungen für eine bestimmte IP-Adresse und Subnet-Mask.

[...]

Ende der Leseprobe aus 19 Seiten

Details

Titel
Steuern über Ethernet
Untertitel
Anleitung für die Kommunikation über Ethernet mit dem Chip WIZ5500
Hochschule
Rheinisch-Westfälische Technische Hochschule Aachen
Note
1,0
Autor
Jahr
2016
Seiten
19
Katalognummer
V510142
ISBN (eBook)
9783346089878
ISBN (Buch)
9783346089885
Sprache
Deutsch
Anmerkungen
Diese Arbeit zeigt ganz konkret und im Detail, wie die Kommunikation über Ethernet mit dem Chip WIZ5500 funktioniert. Dies erspart dem Techniker viel Zeit, denn es entfällt das Deuten von Datenblatt-Inhalten und der Aufbau von Testschaltungen.
Schlagworte
steuern, ethernet, anleitung, kommunikation, chip, wiz5500
Arbeit zitieren
Dipl.-Ing.(TU/TH) Franz Peter Zantis (Autor), 2016, Steuern über Ethernet, München, GRIN Verlag, https://www.grin.com/document/510142

Kommentare

  • Noch keine Kommentare.
Im eBook lesen
Titel: Steuern über Ethernet



Ihre Arbeit hochladen

Ihre Hausarbeit / Abschlussarbeit:

- Publikation als eBook und Buch
- Hohes Honorar auf die Verkäufe
- Für Sie komplett kostenlos – mit ISBN
- Es dauert nur 5 Minuten
- Jede Arbeit findet Leser

Kostenlos Autor werden