Dienstag, 18. Oktober 2011

Profibus in der Praxis

PROFIBUS Netze können auf der Basis von


  • ·        geschirmten, verdrillten Zweidrahtleitungen (Wellenwiderstand 150 Ω)
  • ·        geschirmten, verdrillten Zweidrahtleitungen eigensicher (mit PROFIBUS–PA)
  • ·        Lichtwellenleitern
  • ·        drahtlos (Infrarot–Technik)

ausgeführt werden.
Die verschiedenen Kommunikationsnetze können sowohl unabhängig voneinander
eingesetzt werden, als auch, je nach Bedarf, miteinander kombiniert werden. Von einigen Herstellern gibt es inzwischen auch Funkkomponenten, die PROFIBUS DP und PROFISAFE bittransparent übertragen können. Die entspchenden Normen und Standards können über die Website der PNO http://www.profibus.com/community/regional-pi-associations/germany/ abgerufen werden.

9.1.1    Installation von Busleitungen
Hier sei auf die Montagenorm MO 1 als auch auf  die Installationshinweise von Herstellern  oder der PNO verwiesen. Grundsätzlich gilt für die Installation aber immer:
-         Nur geeignete Betriebsmittel einsetzen
-         Massung und Potentialausgleich beachten
-         räumliche Trennung zwischen Leitungen unterschiedlicher Spannungsebenen

9.2       Elektrische Eigenschaften des Profibus
Die seriellen Daten werden ohne Massebezug als Spannungsdifferenz zwischen zwei korrespondierenden Leitungen übertragen. Für jedes zu übertragende Signal existiert ein Aderpaar, das aus einer invertierten und einer nicht invertierten Signalleitung besteht. Die invertierte Leitung wird in der Regel durch den Index "A" oder "-" gekennzeichnet, während die nicht invertierte Leitung mit "B" oder "+" bezeichnet wird. Der Empfänger wertet lediglich die Differenz zwischen beiden Leitungen aus, so daß Gleichtakt-Störungen auf der Übertragungsleitung nicht zu einer Verfälschung des Nutzsignals führen. RS485-Sender stellen unter Last Ausgangspegel von ±2V (Inzwischen bis zu ±7V) zwischen den beiden Ausgängen zur Verfügung; die Empfängerbausteine erkennen Pegel von ±200mV (RS 485-Richtlinie) noch als gültiges Signal.



Die Zuordnung Differenzspannung zwischen A und B zu logischem Zustand ist nach der Profibusrichtlinie wie folgt definiert:
A - B < -0,3V = OFF = Logisch 1
A - B > +0,3V = ON = Logisch 0


Prinzipieller Busaufbau mit realen Elementen



Ein realer RS-485-Transceiver (Maxim MAX14770E) hat einen Eingangswiderstand von 48 kW.  Bei der  Definition des Profibusses wurde ein standardisierter Eingangswiderstand von 12 kW für die Transceiver als sog. Unitload festgelegt. Diese Unitload führt in Verbindung mit den anderen elektrischen Daten zu der Festlegung, dass an einem Bussegment maximal 32 Teilnehmer sicher betrieben werden können. Das heisst aber im Umkehrschluss, dass bei modernen Bauteilen durchaus auch mehr Teilnehmer betrieben werden können.
Vorsicht: Dies erklärt auch, warum nach einer Busstörung und Wechsel des ausgefallenen Teilnehmers der Bus wieder läuft, obwohl die Ursache woanders liegt.
In den folgenden Oszillogrammen sind typische Kurvenformen für RS-485-Kommunikation aufgezeichnet.







Beispiel: Gegeben ist ein Netzwerk mit 32 Teilnehmern und folgenden Daten:

Profibusleitung 02YS(ST)CY, abgeschirmt, Isolation PE

A/mm2                         2 x 0,32 (AWG 22)
Aderdurchmesser         0,64 mm
DC in pF/m                  30
DR in Ohm/m               0,11 (Hin- und Rückleiter berücksichtigt)


Montag, 17. Oktober 2011

Eine kleine Zusammenfassung

In der Zusammenfassung finden wir nochmal das ISO/OSI Kommunikationsmodell, die Datenübertragung und -sicherung wird detailliert angesprochen.

Zusätzlich findet sich noch ein Aufgabenkatalog und Rechenbeispiele zu seriellen Signalen auf Leitungen.

Dienstag, 4. Oktober 2011

Nützliche DOS-Befehle

arp:
Befehl "arp" zeigt Einträge des ARP-Cache (Address Resolution Protocol) an oder ändert solche Einträge. Dieser Cache enthält Tabellen, in denen IP-Adressen und deren zugehörige physische Ethernet- oder Token Ring-Adressen gespeichert sind. Für jeden Ethernet- oder Token Ring-Netzwerkadapter, der im Computer installiert ist, gibt es eine eigene Tabelle. arp ohne Parameter zeigt die Hilfe an.

Parameter:

arp -d IP_Adr [Schnittst] 
arp -a [IP_Adr] [-N Schnittst] 
arp -s IP_Adr Eth_Adr [Schnittst]

-d <delete> Löscht einen Eintrag mit einer bestimmten IP-Adresse, wobei IP-Adr die IP-Adresse ist. Wenn Sie einen Eintrag aus einer Tabelle für eine bestimmte Schnittstelle löschen möchten, verwenden Sie den Parameter IP-Adr_Schnittst, wobei IP-Adr_Schnittst die IP-Adresse ist, die der Schnittstelle zugewiesen ist. Wenn Sie alle Einträge löschen möchten, verwenden Sie anstelle von IP-Adr_Schnittst das Platzhalterzeichen Sternchen (*).  
-a Zeigt die aktuellen ARP-Cachetabellen für alle Schnittstellen an. Wenn Sie den ARP-Cacheeintrag für eine bestimmte IP-Adresse anzeigen möchten, verwenden Sie arp -a mit dem Parameter IP-Adr, wobei IP-Adr eine IP-Adresse ist.  
-g Identische Funktion wie -a. 
-s <set> Fügt einen statischen Eintrag in den ARP-Cache ein, der die IP-Adresse IP-Adr auf die physikalische Adresse EtherAdr abbildet. Wenn Sie einen statischen ARP-Cacheeintrag zur Tabelle für eine bestimmte Schnittstelle hinzufügen möchten, verwenden Sie den Parameter IP-Adr_Schnittst, wobei IP-Adr_Schnittst die IP-Adresse ist, die der Schnittstelle zugewiesen ist. 


ftp:
Befehl "ftp" überträgt Dateien zu und von einem Computer, der einen FTP-Serverdienst (File Transfer Protocol), z.B. Internet-Informationsdienste (IIS), ausführt. Ftp kann interaktiv oder im Batchmodus verwendet werden, indem ASCII-Textdateien verarbeitet werden.


Parameter:

! - Escape zur Shell, zurück mit "exit" 
$ - Makro ausführen 
? - gleicher Befehl wie "help", ruft die Hilfe auf 
account - Account Kommando zum Server schicken 
append - An Datei anhängen 
ascii - ASCII-Übertragungs-Modus einstellen 
bell - Tonausgabe wenn Kommando ausgeführt 
binary - Binär-Übertragungs-Modus einstellen 
bye - FTP-Sitzung beenden und Verlassen 
cd - Remote Arbeitsverzeichnis wechseln 
cdup - Remote Arbeitsverzeichnis zum Erlternverz. wechseln 
chmod - Rechte an Remote-Datei ändern 
close - Verbindung zum Remote-Host trennen 
cr - Umschaltung 
debug - Umschaltung und Setzen des Debugger-Modus 
del | delete - Remote-Datei löschen 
dir - Inhalt von Remote-Verzeichnis anzeigen 
disconnect - FTP-Sitzung abbrechen 
form - FTP-Format setzen
get - Datei empfangen 
glob - glob aus/an 
hash - hash an/aus, Parameter für die Verbindungsgeschwindigkeit 
help - Hilfe Anzeigen 
idle - Systembereitschaft bei Nichteingabe Zeitlimit 900-7200Sek 
lcd - Lokales Arbeitsverzeichnis wechseln 
ls - Inhalt des Remote-Verzeichnisses anzeigen 
macdef - Makro definieren 
mdelete - mehrere Dateien löschen 
mdir - zeigt Inhalt mehrerer Remote-Verzeichnisse an 
mget - mehrere Dateien empfangen 
mkdir - Verzeichnis auf Remote-Maschine erstellen 
mls - zeigt Inhalt mehrerer Remote-Verzeichnisse an 
mode - Setzt FTP-Modus 
modtime - Zeigt Zeit der letzten Änderung einer Remote-Datei 
mput - Mehrere Dateien senden 
newer - empfängt Remote-Datei wenn neuer als lokale Datei 
nlist - zeigt Inhalt von Remote-Verzeichnissen 
open - Verbindung zum Remote-Host aufbauen 
prompt - erzwingt interaktiven Prompt für mehrere Kommandos 
put - Datei senden 
pwd - Arbeitsverzeichnis auf Remote-Maschine anzeigen 
quit - FTP beenden 
recv - Datei empfangen 
rename - Dateiname ändern 
restart - Neustart von File-Transfer 
rhelp - Hilfe vom Remote Server 
rmdir - Verzeichnis auf Remote entfernen 
rstatus - Statusanzeige der Remote-Maschine 
send - Datei senden 
size - Dateigröße von Remote-Datei 
status - Aktuellen Status anzeigen 
struct - FTP-Struktur setzen 
system - Anzeige des Remote-Systemtypes 
tenex - Setzt Tenex Dateiübertragungs-Typ 
trace - startet die Pakteverfolgung, an/aus 
type - FTP-Typ setzen 
user - Neue User-Information senden 
verbose - Umschalten auf Verbose Modus


ipconfig:
"ipconfig" zeigt alle aktuellen Konfigurationswerte des TCP/IP-Netzwerkes an und aktualisiert DHCP- (Dynamic Host Configuration Protocol) und DNS-Einstellungen (Domain Name System). Ohne Parameter zeigt ipconfig die IP-Adresse, die Subnetzmaske und das Standardgateway für jeden Adapter an.
Parameter:
ipconfig/ALL - Alle Informationen werden angegeben. 
ipconfig/Batch [Datei] - In die hier angegebene Datei (diese muss zuvor angelegt werden) werden die IP Daten geschrieben. Gibt stattdessen ./WINIPCFG.OUT ein, so befindet sich diese Datei dann im Verzeichnis /Windows. 
ipconfig/renew_all - Aktualiesiert alle Adapter. 
ipconfig/release_all - Gibt alle Adapter frei. 
ipconfig/renew N - Aktualiesiert Adapter N. 
ipconfig/release N - Gibt Adapter N frei.


nbtstat:
"nbtstat" zeigt NetBIOS über TCP/IP-Protokollstatistiken (NetBT), NetBIOS-Namentabellen sowohl für den lokalen Computer als auch für den Remotecomputer und den NetBIOS-Namenzwischenspeicher an. Nbtstat ermöglicht das Aktualisieren des NetBIOS-Namenzwischenspeichers und der im WINS (Windows Internet Name Service) registrierten Namen. Wenn nbtstat ohne Parameter verwendet wird, wird die Hilfe angezeigt.

Parameter:

nbtstat -a <adapter status> Zeigt die NetBIOS-Namentabelle eines Remotecomputers an. 
nbtstat -A <Adapter status> Zeigt die NetBIOS-Namentabelle eines Remotecomputers an. 
nbtstat -c <cache> Zeigt den Inhalt des NetBIOS-Namenzwischenspeichers. 
nbtstat -n <names> Zeigt die NetBIOS-Namentabelle des lokalen Computers an. 
nbtstat -r <resolved> Zeigt NetBIOS-Namensauflösungsstatistiken an. 
nbtstat -R <Reload> Löscht den Inhalt des NetBIOS-Namenzwischenspeichers und lädt dann erneut die durch #PRE gekennzeichneten Einträge aus der Datei Lmhosts.  
nbtstat -S <Sessions> Zeigt NetBIOS-Client- und -Serversitzungen an. 
nbtstat -s <sessions> Zeigt NetBIOS-Client- und -Serversitzungen an und versucht dabei, die Ziel-IP-Adresse in einen Namen zu konvertieren.

netstat:
Zeigt folgende Informationen an: aktive TCP-Verbindungen, Anschlüsse, an denen der Computer empfangsbereit ist, Ethernet-Statistiken, die IP-Routingtabelle, IPv4-Statistiken (für die Protokolle IP, ICMP, TCP und UDP) sowie IPv6-Statistiken (für die Protokolle IPv6, ICMPv6, TCP über IPv6 sowie UDP über IPv6). Ohne Verwendung von Parametern zeigt netstat aktive TCP-Verbindungen an.

Parameter:

-a - Zeigt alle aktiven TCP-Verbindungen sowie die TCP- und UDP-Anschlüsse an, an denen der Computer empfangsbereit ist. 
-e - Zeigt Ethernet-Statistiken an, beispielsweise die Anzahl gesendeter und empfangener Bytes und Pakete. 
-n - Zeigt aktive TCP-Verbindungen an. Die Adressen und Anschlussnummern werden jedoch in numerischer Form angezeigt, und es wird nicht versucht, Namen zu ermitteln.  
-o - Zeigt aktive TCP-Verbindungen an und enthält die Prozess-ID (PID) für jede Verbindung.  
-p - Zeigt Verbindungen für das in Protokoll angegebene Protokoll an. Mögliche Werte für Protokoll sind hier tcp, udp, tcpv6 oder udpv6.  
-s - Zeigt Statistiken nach Protokollen an. Standardmäßig werden Statistiken für die Protokolle TCP, UDP, ICMP und IP angezeigt. 
-r - Zeigt den Inhalt der IP-Routingtabelle an. Dieser Parameter entspricht dem Befehl route print. 


ping:
"ping" überprüft Konnektivität mit einem anderen TCP/IP-Computer auf IP-Ebene durch Senden von ICMP-Echoanforderungen (Internet Control Message Protocol, Internet Control Message-Protokoll). Der Empfang entsprechender Echoantworten wird zusammen mit Zeitangaben angezeigt. Ping ist der wichtigste TCP/IP-Befehl für das Durchführen von Problembehandlungen für Konnektivität, Erreichbarkeit und Namenauflösung. Wenn ping ohne Parameter verwendet wird, wird die Hilfe angezeigt.
Parameter:
-t - Gibt an, dass ping fortfährt, bis zu einer Unterbrechung Echoanforderungen an das Ziel zu senden.  
-a - Gibt an, dass an der Ziel-IP-Adresse umgekehrte Namenauflösung durchgeführt wird.  
-n - Gibt an, wie viele Echoanforderungen gesendet werden sollen. Der Standardwert ist 4.  
-l - Gibt die Länge des Datenfeldes in den gesendeten Echoanforderungen in Bytes an. Der Standardwert ist 32. Die maximale Länge beträgt 65.527. 
-f - Gibt an, dass Echoanforderungen mit auf 1 festgelegtem Flag Nicht fragmentieren im IP-Header gesendet werden.  
-i - Gibt den Wert des TTL-Feldes im IP-Header für gesendete Echoanforderungen an. Der Standardwert ist der Standard-TTL-Wert für den Host. Für Hosts unter Windows XP ist dies normalerweise 128. Der Höchstwert für TTL ist 255.  
-v - Gibt den Wert des TOS-Feldes (Type of Service) im IP-Header für gesendete Echoanforderungen an. Der Standardwert ist 0. TOS wird als Dezimalwert zwischen 0 und 255 angegeben.  
-r - Gibt an, dass die Recordrouteoption im IP-Header verwendet wird, um den von der Echoanforderung und der entsprechenden Echoantwort genommenen Pfad aufzuzeichnen.  
-s - Gibt an, dass die Internetzeitstempeloption im IP-Header verwendet wird, um für jeden Hop den Eintreffzeitpunkt der Echoanforderung und der entsprechenden Echoantwort aufzuzeichnen. Für Anzahl ist ein Mindestwert von 1 und ein Höchstwert von 4 zulässig.  
-j - Gibt an, dass die Echoanforderungsnachrichten die Option Loose Source Route im IP-Header mit den in Hostliste angegebenen temporären Zieladressen verwenden.  
-k - Gibt an, dass die Echoanforderungsnachrichten die Option Strict Source Route im IP-Header mit den in Hostliste angegebenen temporären Zieladressen verwenden. 
-w - Gibt an, wie lange, in Millisekunden, auf die Echoantwort gewartet werden soll, die einer bestimmten zu empfangenden Echoanforderung entspricht. 


telnet:
Durch das Zusammenwirken von Telnet-Client und Telnet-Server wird Benutzern die Kommunikation mit einem Remotecomputer ermöglicht. Mit Telnet-Client können Benutzer eine Verbindung mit einem Remotecomputer aufbauen und über ein Terminalfenster einen Datenaustausch mit diesem durchführen. Über Telnet-Server können sich Benutzer von Telnet-Client auf dem Telnet-Servercomputer anmelden und im Zeichenmodus arbeitende Anwendungen auf diesem ausführen. Telnet-Server fungiert dabei als Gateway, über das Telnet-Clients miteinander kommunizieren können. Telnet-Server, der zum Lieferumfang von Windows XP gehört, unterstützt maximal zwei Telnet-Clients gleichzeitig. Werden zusätzliche Lizenzen benötigt, steht Ihnen Telnet-Server im Rahmen des Produkts Microsoft Windows-Dienste für UNIX zur Verfügung. 

tracert:
Dieser Befehl legt den Pfad zu einem Ziel fest, indem er ICMP-Echoanforderungsnachrichten (Internet Control Message Protocol) mit inkrementell ansteigenden TTL-Werten (Time-To-Live) an das Ziel sendet. Der angezeigte Pfad ist eine Liste benachbarter Routerschnittstellen der Router im Pfad zwischen einem Quellenhost und einem Ziel. Die benachbarte Schnittstelle ist die Schnittstelle desjenigen Routers, der dem sendenden Host im Pfad am nächsten liegt. Sind keine Parameter angegeben, zeigt tracert die Hilfe an.

Parameter:

-d - Verhindert, dass tracert die IP-Adressen von Zwischenroutern in ihre Namen auflöst.  
-h - Gibt an, wie viele Hops im Pfad bei der Suche nach dem Ziel maximal durchlaufen werden sollen.  
-j - Gibt an, dass Echoanforderungsnachrichten die Option Loose Source Route im IP-Header mit den in Hostliste angegebenen Zwischenzielen verwenden. 
-w - Gibt die Zeit in Millisekunden an, die auf den Empfang der ICMP-Zeitüberschreitungsnachricht oder -Echoantwortnachricht zu einer bestimmten Echoanforderungsnachricht gewartet werden soll. 



� u r c ��� (�� n>
Dieser Befehl legt den Pfad zu einem Ziel fest, indem er ICMP-Echoanforderungsnachrichten (Internet Control Message Protocol) mit inkrementell ansteigenden TTL-Werten (Time-To-Live) an das Ziel sendet. Der angezeigte Pfad ist eine Liste benachbarter Routerschnittstellen der Router im Pfad zwischen einem Quellenhost und einem Ziel. Die benachbarte Schnittstelle ist die Schnittstelle desjenigen Routers, der dem sendenden Host im Pfad am nächsten liegt. Sind keine Parameter angegeben, zeigt tracert die Hilfe an.

Parameter:

-d - Verhindert, dass tracert die IP-Adressen von Zwischenroutern in ihre Namen auflöst.  
-h - Gibt an, wie viele Hops im Pfad bei der Suche nach dem Ziel maximal durchlaufen werden sollen.  
-j - Gibt an, dass Echoanforderungsnachrichten die Option Loose Source Route im IP-Header mit den in Hostliste angegebenen Zwischenzielen verwenden. 
-w - Gibt die Zeit in Millisekunden an, die auf den Empfang der ICMP-Zeitüberschreitungsnachricht oder -Echoantwortnachricht zu einer bestimmten Echoanforderungsnachricht gewartet werden soll. 

Dieser Befehl legt den Pfad zu einem Ziel fest, indem er ICMP-Echoanforderungsnachrichten (Internet Control Message Protocol) mit inkrementell ansteigenden TTL-Werten (Time-To-Live) an das Ziel sendet. Der angezeigte Pfad ist eine Liste benachbarter Routerschnittstellen der Router im Pfad zwischen einem Quellenhost und einem Ziel. Die benachbarte Schnittstelle ist die Schnittstelle desjenigen Routers, der dem sendenden Host im Pfad am nächsten liegt. Sind keine Parameter angegeben, zeigt tracert die Hilfe an.

Parameter:
-d - Verhindert, dass tracert die IP-Adressen von Zwischenroutern in ihre Namen auflöst.  
-h - Gibt an, wie viele Hops im Pfad bei der Suche nach dem Ziel maximal durchlaufen werden sollen.  
-j - Gibt an, dass Echoanforderungsnachrichten die Option Loose Source Route im IP-Header mit den in Hostliste angegebenen Zwischenzielen verwenden. 
-w - Gibt die Zeit in Millisekunden an, die auf den Empfang der ICMP-Zeitüberschreitungsnachricht oder -Echoantwortnachricht zu einer bestimmten Echoanforderungsnachricht gewartet werden soll. 

Der ASCII-Code

ASCII-Code - Technische Grundlage für Datenaustausch
ASCII als kleinster gemeinsamer Nenner
Der ASCII-Code ist eine standardisierte Zeichen-Definition für den Datenaustausch zwischen (westlichen) Informatik-Systemen. ASCII bedeutet ausgeschrieben «American Standard Code for Information Interchange». Es ist sozusagen «der kleinste gemeinsame Nenner» aller Informatik-Systeme. ASCII wurde 1968 mit der Intention oder Absicht entwickelt, Datenübertragungen zwischen divergierenden Hardware- und Softwaresystemen zu standardisieren.

Standard ASCII-Code
Alle Zeichen im Bereich von 0 bis 127 gehören zum Standard ASCII-Zeichensatz. Dieser Standardzeichensatz von 0 bis 127 ist in der IT-Welt normiert und stark verankert. Die Zeichen werden aus einem 1 Byte dargestellt, das heisst es sind maximal 256 Zeichen möglich, auf PC-Systemen kommt der erweiterte ASCII-Zeichensatz (0 bis 255) zum Einsatz.

Die ASCII-Zeichen 0 bis 32 werden als Steuerzeichen bzw. Formatierungszeichen für Ein- und Ausgabegeräte verwendet.

Erweiterter ASCII-Code
Jede Zusammenstellung Zeichen (Zeichensatz), der den ASCII-Werten zwischen dezimal 128 und 255 (hexadezimal 80 bis FF) zugeordnet ist, basiert auf dem erweiterten ASCII-Code. Die Zuordnung spezifischer Zeichen zu den erweiterten ASCII-Codes variieren zwischen Computern und zwischen Programmen, Schriften oder grafischen Zeichensätzen.

Erweitertes ASCII erhöht auch die möglichen Funktionen, da sich mit den 128 zusätzlichen Zeichen z. B. Akzentbuchstaben, deutsche Umlaute, grafische Zeichen und spezielle Symbole (EUR-Zeichen usw.) darstellen lassen.




ASCII-Tabelle
Aus technischen Gründen steht die ASCII-Tabelle an dieser Stelle als Grafik zur Verfügung. In dieser Form können alle Zeichen ohne Interpretationsprobleme dargestellt werden. Diese Tabelle stellt den erweiterten ASCII-Code für die Codeseite 850 dar:






Sonderzeichen der ASCII-Tabelle
In der ASCII-Tabelle (siehe Grafik) sind verschiedene Sonderzeichen eingetragen die unter anderem zur Geräte-Steuerung verwendet werden können.

Formatierungszeichen für Geräte
  • 127 = BS: Backspace, Rückschritt
  • 009 = HT: Horizontal Tab, Tabulator in Zeilenrichtung
  • 010 = LF: Line Feed, Zeilenwechsel
  • 011 = VT: Vertical Tab, Tabulator in Spaltenrichtung
  • 012 = FF: Form Feed, Blatt wird vom Drucker ausgegebene («Seitenvorschub»)
  • 013 = CR: Carriage Return, Wagenrücklauf oder Zeilenumbruch
Andere ASCII-Zeichen für Geräte
  • 007 = BEL: Bell, Signalzeichen
  • 017 - 020 = DC1, DC2, DC3, DC4:  Keine ASCII-Verwendung, DC1 und DC3 werden oft von XON und XOFF und anderen Software-Handshaking-Schematas  verwendet.
Steuerzeichen für die Datenübertragung
  • 001 = SOH: Start of Header
  • 002 = STX: Start of Text
  • 003 = ETX: End of Text
  • 004 = EOT: End of Transmission
  • 005 = ENQ: Enquiry
  • 006 = ACK: Acknowledge
  • 021 = NAK: Negative Acknowledge
  • 022 = SYN: Synchronous Idle
  • 023 = ETB: End of Transmission Block
Steuerzeichen für Geräte
  • 000 = NUL: Null
  • 016 = DEL: Delete
  • 024 = CAN: Cancel
  • 025 = EM: End of Medium
  • 026 = SUB: Substitute
Trennzeichen für Informationen
  • 028 = FS: File Separator
  • 029 = GS: Group Separator
  • 030 = RS: Record Separator
  • 031 = US: Unit Separator
Steuerzeichen für Code-Erweiterung
  • 015 = SI: Shift In
  • 014 = SO: Shift Out
  • 027 = ESC: Escape



RS 232 Praxis

RS 232 im Test

Gegeben ist folgende Hardwarestruktur:
























Über die USB-Schnittstelle des Rechners sollen über eine einfache Benutzeroberfläche Daten an die RS232-Schnittstelle des ComServers (WSEB1-Webserver-Evaluationboard für Digi Connect ME) geschickt werden und vom Rechner wieder empfangen werden.

Die Schnittstelle des Rechners wird über ein USB-RS232-Kabel an den RS232-Port des ComServers angeschlossen.

Der ComServer ist über eine gekreuzte Ethernetleitung mit der Rechner zurück verbunden.

Wie können die entsprechenden Schnittstellen ermittelt werden?
Wie kann die Kommunikation erfolgen?
Welche Werkzeuge stehen für diese Aufgaben innerhalb Windows zur Verfügung?

Ein Ausflug zu USB

USB-Interface


Einleitung

Das USB-Interface wurde vor Jahren von Intel entworfen, um viele bisher am PC verwendeten Interfaces (RS232, Parallelport, PS2) durch eine einheitliche moderne Schnittstelle abzulösen. Obwohl USB vor allem am Anfang der Firewire-Konkurenz (Apple) hoffnungslos unterlegen war, hat es sich im PC-Sektor durch die Marktdominanz von Intel durchgesetzt.
Es ist in diesem Rahmen weder nötig noch möglich, USB im erschöpfend im Detail zu behandeln. HUBs wrden ignoriert, statt dessen tun wir so, als ob der USB-Controller 127 Anschlussbuchsen für USB-Geräte hat. Für den Bastler/Anwender sind HUBs nur wenig mehr als "Verteilerdosen" mit zwei Ausnahmen: Jeder Hub benötigt eine eigene Adresse, und sie haben einen gewissen Einfluss auf die Stromversorgung der USB-Geräte.

Der Universal Serial Bus feierte gerade sein 15-jähriges Jubiläum: USB 1.0 wurde erstmalig im Januar 1996 der Öffentlichkeit präsentiert. Er sollte eine kostengünstige und schnelle Alternative zu den damals sehr beliebten seriellen und parallelen Transfer-Protokollen bieten. Ein kleines Update auf USB 1.1 erfolgte wenige Zeit danach im September 1998. Etwa zwei Jahre später, im April 2000, gab es dann mit USB 2.0 den ersten großen Versionssprung vor dem Komma. USB 2.0 war viele Jahre der unangefochtene, aber auch unveränderte, Standard in der Anbindung von Computer-Peripherie. Dem massiv wachsenden Bedarf schnellerer Datenübertragung wird erst die jüngste Weiterentwicklung des USB-Standards gerecht, die im November 2008 in Form des USB 3.0 Standards vorgestellt wurde.
Im Zuge der USB-Updates wurden immer wieder neue Marketing-Bezeichnungen für die Leistungsfähigkeiten von USB-Geräten eingeführt. Kunden wurden – und werden noch heute – mit den Begriffen Low-Speed, Full-Speed, High-Speed und SuperSpeed konfrontiert, die aber zu einiger Verwirrung führen können. Die folgende Tabelle zeigt, welche Geschwindigkeiten der jeweilige USB Standard beherrschen sollte.



Nach und nach sind die beliebten Bastler-Schnittstellen (RS232 und Parallelport) aus den PCs verschwunden. Die meisten Laptops haben schon keine 'Legacy'-Interfaces mehr. Darum wird der Druck immer größer, sich nach einer Alternative umzusehen. Eine Möglichkeit ist der Umstieg auf USB.


Grundlagen






 USB ist ein sternförmiges Netz von Geräten (Device), die alle von einem Controller (im PC) verwaltet werden. (Auch wenn die Verkabelung baumförmig vorgenommen werden kann, ist der logische Aufbau doch sternförmig.) Der Controller hat allein das Recht, die Kommunikation zwischen ihm und dem Device zu steuern. Er kann Daten in einen Pufferspeicher des Device schreiben, und er kann Daten aus einem Pufferspeicher im Device auslesen. Das Device kann dagegen nicht selbständig dem Controller melden, dass es Daten haben will oder dass es Daten für den Controller hat. Es gibt auch keinen Interupt, den das Device auslösen könnte (auch wenn es eine Betriebsart mit diesem Namen gibt). Wie ist unter diesen Bedingungen ein Datenfluss vom Device zum Controller möglich?



Beim Reset des USB-Busses (oder beim Anstecken an den Bus), meldet sich jedes Device beim Controller mit der fiktiven Adresse 0 an. Der Controller gibt dem Device eine richtige Adresse (1..127) und liest die Konfiguration aus dem Device aus. In dieser Konfiguration gibt das Device an, wieviele Pufferspeicher  (genannt Endpunkte) es besitzt, wie groß diese Puffer sind (max. 64 Byte) und ob das für den Controller Lesepuffer (In) oder Schreibpuffer (Out) sind. Außerdem wird dem Controller gesagt, wie häufig er prüfen soll, ob im Lesepuffer Daten für ihn bereitliegen. Der Controller muss also alle Lesepuffer pollen (immer wieder abfragen)! Für Geräte, die vom PC eine schnelle Reaktion erfordern (z.B. die Maus), muss dieses Abfragen (Pollen) mehrere 100 mal pro Sekunde erfolgen.
Die Konfiguration enthält noch viele andere Informationen (z.B. über den Strombedarf).




Interfaces
Die meisten USB-Geräte (Device) haben nur eine Funktion. So ist ein Memorystick z.B. nur ein Massenspeichergerät und nichts anderes. Ein USB-Lautsprecher ist nur ein USB-Audiogerät.
Einige Device haben aber auch mehrere ganz unterschiedliche Funktionen. Ein via USB angeschlossener externer CD-Brenner ist sowohl eine Massenspeichergerät (zum Lesen und Schreiben von Dateien), wie auch ein Audiogerät (beim Abspielen von Musik-CDs) als auch ein Video-Gerät (beim Abspeilen von Video-CDs).
Für jede seiner Funktionen hat ein Device genau ein Interface. Der Memorystick hat also (wie die meisten Devices) ein Interface, ein USB-CD-Brenner z.B. drei Interfaces.





Endpunkte
Jedes Interface hat einen oder mehrere Endpunkte (Endpoint). Das sind Pufferspeicher, in die der USB-Controller Daten hineinschreiben kann (out-Endpoint) oder herauslesen kann (in-Endpoint).
 

Damit der Controller die Configuration auslesen kann, besitzt jedes Interface einen Lesepuffer Nr. 0 (Endpunkt 0), der für die Konfiguration zuständig ist. Dieser ist der einzige Endpunkt, der sowohl ausgelesen wie auch beschrieben werden kann, alle anderen Endpunkte beherrschen nur eine Datenrichtung.
Der Endpunkt 0 kann auch für den Datentransfer mitbenutzt werden, er bietet aber nur eine geringe Datenrate von 800 Byte/s. Besser ist es zusätzliche Endpunkte zu benutzen. 
Jeder Endpunkt ist im Device natürlich in Hardware realisiert, und so ist die maximale Anzahl der verfügbaren Endpunkte von der im Device vorhandenen Hardware abhängig. Low-Speed-Devices haben maximal 4 Endpunkte, USB2.0 Devices können bis zu 32 Endpunkte haben.
Begriffe:
  • Device-Treiber
    das ist der USB-Treiber im PC
  • Device-Controller
    das ist die Firmware im USB-Gerät (z.B. im PIC)
  • Controller
    das ist das USB-Interface im PC
  • Device
    das ist das USB-Gerät, das an den PC angesteckt wird

Ein Endpunkt ist eigentlich nur ein Pufferspeicher, auf den sowohl der USB-Controller, wie auch das USB-Device (also der Device-Controller) Zugriff haben. Das möchte ich am Beispiel eines Chipkartenlesegerätes verdeutlichen.


Beispiel:
Das Chipkartenlesegeräte wird an den Bus angesteckt. Da eine der USB-Datenleitungen einen Pull-Up-Widerstand besitzt, erkennt der Controller (eigentlich der Hub) das, und spricht das Gerät mit der Device-Adresse 0 an. Aus dem Endpunkt 0 liest der Controller die Konfiguration des Device aus. In dieser Konfiguration steht, dass das Device zusätzlich einen Endpunkt 1 (out) und einen Endpunkt 2 (in) besitzt, wie oft die in-Endpunkte (0 und 2) auf neue Daten geprüft werden sollen, wie groß die Pufferspeicher in den Endpunkten sind und (indirekt) welcher Treiber im PC für dieses Device benutzt werden soll. Der Controller weist dem Gerät eine echte Adresse zu, und prüft, ob der Treiber installiert ist. Falls nicht, dann fordert es den Benutzerer zur Treiberinstallation auf.
Der Benutzer startet irgentwann später auf dem PC das Programm für den Kartenleser, und will Daten aus der Karte auslesen. Einen entsprechenden Befehl sendet das Programm an den Device-Treiber. Dieser schreibt nun durch den Controller einen entsprechenden Befehl in den Endpunkt 1 des Device.
Das Schreiben in den Endpunkt 1 löst im Device-Controller einen Interupt aus. Der Device-Controller liest den Endpunkt 1 aus, und findet darin den Befehl zum Auslesen der Chipkarte. Er liest die Chipkarte aus, und schreibt soviel  Kartendaten in den Pufferspeicher des Endpunkt 2 wie hinein passen.
Der USB-Controller fragt regelmäßig alle Endpunkte ab. Als er nun routinemäßig auch den Endpunkt 2 des Kartenlesers abfragt, findet er darin neue Daten vor, die er aus dem Endpunk 2 ausliest, und dem Devicetreiber übergibt. Dieser liefert die Daten beim PC-Programm ab. Das Auslesen des Endpunkt kann im Device-Controller einen Interrupt auslösen, damit der Device-Controller weitere Daten in den Endpunkt 2 schreiben kann...
 

Endpunkte-Betriebsarten

Endpunkte sind wie schon gesagt Pufferspeicher im USB-Device, die dem Datentransfer zwischen dem USB-Bus und dem Device-Controller dienen. Da aber eine USB-Tastatur, eine USB-Festplatte oder ein USB-Lautsprecher ganz unterschiedliche Ansprüche an Datenrate und Echtzeitverhalten stellen, gibt es 4 verschiedene Betriebsarten. Jeder Endpunkt unterstützt genau eine Betriebsart.
 

Control

Wird vor allem für Steuerungszwecke benutzt. Hat höchste Priorität und Fehlerschutz (verlorene Daten werden wiederholt, bis sie empfangen wurden).
Wird vor allem für die Initialisierung benutzt, kann aber auch allgemein verwendet werden, um kleine Datenmengen zu übertragen.
Alle USB-Geräte müssen diesen Mode beherrschen.
 

Interrupt

Wird vor allem für Geräte mit kleinem Datenaufkommen benutzt (z.B. Tastatur), die wenige Daten schnell und regelmäßig zum PC übertragen müssen.
 

Isochronous (nur USB 2.0)

Wird vor allem benutzt, wenn kontinuierlich große Datenmengen einer konstanten Datenrate übermittelt werden müssen. Es gibt keinen Schutz for Datenverlust.
Eine typische Anwendung wäre z.B. USB-Lautsprecher.
 

Bulk (nur USB 2.0)

Eine vor allem für Massenspeicher geeignete Betriebsart. Sie erlaubt ein hohes Datenaufkommen, und die fehlerfreie Übertragung ist garantiert. Allerdings kann es etwas dauern, bis die Daten ankommen.
 



Transfer Type
Control
Interrupt
Isochronous
Bulk
USB 1.1
X
X
-
-
USB2.0
X
X
X
X
Datenbytes/Millisekunde pro Transfer, maximum possible per pipe (full speed)
832, in dreizehn 64-Byte Transfers
64
1023
1216, in neunzehn 64-Byte Transfers
Datenbytes/Millisekunde pro Transfer, maximum possible per pipe (low speed)
24, in drei 8-Byte Transfers
0.8, 8 Bytes in 10 ms
verboten
verboten
Für diesen Typ insgesamt reservierte Bandbreite, max %
10%
90%
Int & Iso zusammen
90%
Int & Iso zusammen
keine
Fehlerkorrektur?
ja
ja
nein
ja
Garantierte Datenrate?
nein
ja
ja
nein
garantierte Latezzeit?
(max. Zeit zwischen Transfers)
nein
ja
ja
nein

 

Stromversorgung

Ein großer Vorteil von USB gegenüber RS232 ist die Möglichkeit, ein Device über das USB-Kabel auch mit Strom zu versorgen. Maximal steht einem Device 0,5A zur Verfügung, das sind bei der Versorgungsspannung von 5V immerhin 2,5 W.
Um für bis zu 127 Devices genug Reserven zu haben, müsste der PC über 60A in Bereitschaft halten, das wäre natürlich absurd. Um mit den begrenzten Stromrecourcen zu wirtschaften, legt der Controller fest, wieviel Strom ein Device wirklich bekommen kann, und er kann ein Device auch vollständig von der Stromversorgung abschneiden, wenn nicht genügend Strom zur Verfügung steht.
Einem Device, das sich gerade am Bus anmeldet, stehen pauschal 100 mA zur Verfügung. Das Device muss also eine Betriebsart (eine Konfiguration) beherrschen, in der es nicht mehr als 100mA verbraucht. Ob es in dieser Betriebsart seine eigentliche Funktion als Kartenleser, Festplatte oder was auch immer erfüllen kann, steht auf einem anderen Blatt.
Ist für den regulären Betrieb ein höherer Stromverbrauch nötig, dann muss das Device dafür eine andere Konfiguration kennen, darf diese aber nicht selbständig einnehmen.
Nachdem sich das Device am Bus angemeldet hat, (und dabei höchstens 100mA verbraucht) kann der Device-Treiber im PC versuchen, das Device in die alternative Konfiguration umzuschalten, in der es seine Funktion erfüllen kann, aber auch mehr Strom verbraucht. Der Controller (mit den HUBs) entscheidet, ob genug Strom zur Verfügung steht. Wenn ja, dann schaltet er das Device in die alternative Konfiguration um, wenn nicht, dann verweigert er das. Das Device funktioniert dann zwar nicht, aber es wird auch eine Überlastung der Stromversorgung vermieden.
Verbraucht ein Device unerlaubt mehr Strom, als ihm zusteht, dann wird es (lt. Spezifikation) vom Controller 'zur Strafe' abgeschaltet.
 

Konfigurationen

Ein Device besteht aus einem oder mehreren Interfaces mit jeweils wieder einem oder mehreren Endpunkten. Jeder Endpunkt hat eine bestimmte Betriebsart, Puffergröße u.s.w.
Die Summe dieser Einstellungen ist die Konfiguration des Device.
Ein Device kann aber auch unterschiedliche Konfigurationen haben, zwischen denen der Device-Treiber umschalten kann.
Beispiel:
Ein Microdrive (Minifestplatte) sei in einem externen Gehäuse mit USB-Anschluss eingebaut, um als externe Festplatte zu dienen. Die Speisung des Microdrives soll über den USB-Bus erfolgen. Mit nur 100 mA kann man aber das Microdrive nicht 'hochdrehen'. Zuerst muss ein höherer Strom vom Controller genehmigt werden.
Diese externe Festplatte sollte zwei unterschiedliche Konfigurationen beherrschen:
Konfiguration 1:
  • max. 100mA Strombedarf
  • 1 Interface mit 1 Endpunkt
  • nur der Endpunkt 0

Konfiguration 2:
  • max. 250mA Strombedarf
  • 1 Interface mit 3 Endpunkten
  • Endpunkt 0 zur Steuerung
  • Endpunkt 1 als IN-Endpunkt zum Lesen vom Microdrive
  • Endpunkt 2 als OUT-Endpunkt zum Schreiben auf das Microdrive
Nach dem Anstecken des Microdrive an den USB-Bus, geht das Device zunächst in die Konfiguration 1 und nimmt die Adresse 0 an. Die Festplatte bleibt abgeschaltet, um den Stromverbrauch im Limit zu halten. Damit sind auch keine extra-Endpunkte für den Datentransfer zur oder von der Festplatte nötig.
Der Controller erkennt, das ein neues Device angesteckt wurde, und liest dessen Konfiguration aus. Daher weiss er, welcher Treiber für das Device zuständig ist. Der Controller ruft den Treiber, und dieser muss nun versuchen, die Festplatte in Betrieb zu nehmen. Dazu ist das Umschalten in die Konfiguration 2 nötig. Der Treiber 'beantragt' also beim Controller das Umschalten in die 2. Konfiguration. Der Controller prüft, ob am Bus ausreichend Stromreserven bestehen. Wenn ja, dann schaltet er das Device in die Konfiguration 2 um.
Nun darf das Device 250 mA verbrauchen, und startet die Festplatte. Außerdem werden die Endpunkte 1 und 2  zum Datenaustausch eingerichtet.
Die gesamte Struktur des USB-Devices wird mit sogenannten Deskriptoren beschrieben. Das sind kleine Datensätze von wenigen Byte, die der Controller aus dem Device auslesen kann. Diese Deskriptoren enthalten alle Daten über das Device, seine Configurationen sowie deren Interfaces und Endpoints.
 

Reichweiten

Auch der USB Standard definiert Längenbeschränkungen. In der folgenden Tabelle sind diese Maximallängen für USB 1.1, USB 2.0 und USB 3.0 aufgeführt:




USB 3.0 gibt keine konkrete Spezifikation der maximal erlaubten Längen, empfiehlt jedoch drei Meter. Die in der Tabelle aufgeführten maximalen Gesamtlängen können durch die Aneinanderreihung von sechs Kabeln über fünf sog. Hubs erreicht werden. Um über die maximale Gesamtlänge hinauszugehen, wird spezielle Hardware benötigt, bspw. Repeater Extension Cables oder USB Bridges. Für den USB 3.0 Standard existieren bereits Lösungen, die Kabel mit eigener Elektronik einsetzen, um mit einem einzigen Kabel auf bis zu 20 Meter Länge zu kommen.
Der USB 2.0 Standard verlangt für Full-/High-Speed-Kabel vier Leitungen, jeweils zwei für Daten und zwei für die Stromübertragung, plus einer äußeren Abschirmung.
Demgegenüber werden für Super-Speed-Kabel nach USB 3.0 Standard insg. zehn Leitungen nebst Abschirmung benötigt: Zwei Leitungen für die Stromübertragung und ein nicht abgeschirmtes verdrilltes Leitungspaar (UTP-unshielded twisted pair) für die Rückwärtskompatibilität zu High-Speed und niedrigeren Transferraten. Zusätzlich zwei abgeschirmte Differentialpaare (SDP-shielded differential pairs), die jeweils drei Leitungen enthalten: Zwei für Daten und eine Erdleitung (drain wire). Die beiden SDPs werden für die Super-Speed-Datenübertragung verwendet und ermöglichen den gleichzeitigen bidirektionalen Datenfluß durch das Kabel.

 

USB-Treiberzuordnung unter Windows

Woher weiss das Betriebssysten (z.B. Windows) welchen Treiber es für ein bestimmtes USB-Device verwenden muss?

Jeder Hersteller von USB-Geräten muss sich bei USB-Org registrieren lassen (kostet 2000 Euro) und erhält dafür eine 16-Bit lange Identifikationsnummer, die Vendor-ID (VID). (Es kann also weltweit nur 65000 Hersteller von USB-Geräten geben) Diese Vendor-ID trägt er in die Konfiguration seiner USB-Geräte ein. Außerdem vergibt der Hersteller nun noch für jeden Gerätetyp, den er herstellt, eine weitere 16-Bit-Produktkennung (product identifier - PID). Auch die trägt er in die Konfiguration des Gerätes ein.

Bei der Installation eines Treibers im Betriebssystem wird nicht nur der Treiber übergeben, sondern auch ein *.inf-File. In diesem File steht, für welche Kombination von VID&PID dieser Treiber zu verwenden ist.

Wird ein USB-Gerät an den PC gesteckt, dann liest das Betriebssystem die Konfiguration mit VID&PID aus. Nun schaut es nach, ob diese VID&PID-Angabe in einem *.inf-File vorkam. Wenn ja, dann wird der zugehörige Treiber geladen. Falls nicht, dann wird der User zur Installation eines zu VID&PID passenden Treibers aufgefordert.

Die VID&PID-Kombination des Device legt also fest, welchen Treiber das Betriebssystem verwenden soll.


Für den Bastler ergibt sich nun ein Problem: Er wird sich nicht für 2000 Euro registrieren lassen wollen. Man kann aber auch nicht einfach irgendeine fremde VID&PID verwenden. Falls die zufällig zu einem bereits installierten Gerät/Treiber passen sollte, funktioniert nichts mehr.

Wer Microchip-PICs für Basteleien oder eine Kleinserie benutzen will, kann bei Microchip eine einzelne VID&PID beantragen. Er erhält dann eine individuelle PID mit der VID von Microchip. Es gibt auch Firmen, die bei USB.Org eine VID erstehen, und dann kleine VID&PID-Gruppen weiterverkaufen (z.B. 10 VID&PIDs für 20 Pfund).

Wer FTDI-Chips, IOWarriors oder USB4all benutzt, muss sich hier keine Gedanken machen. Diese Chips kommen mit ihren festen VID&PIDs, und benutzen immer den selben Treiber.



USB Stecker und Buchsen

Der Universal Serial Bus Standard kennt eine ganze Reihe verschiedener Stecker- und Buchsenformen und mit der Einführung von USB 3.0 wird es nicht unbedingt übersichtlicher. Hier alle Stecker-Typen des USB Standards.



Und die zugehörigen Buchsen.




In der folgenden Tabelle sind alle bekannten Standard USB 2.0 und 3.0 Stecker- und Buchsentypen so dargestellt, daß die zulässigen Steckkombinationen deutlich werden.



Ein Lesebeispiel: Als einziger der USB 3.0 Stecker kann nur der Std A (Type A) Stecker in eine USB 2.0 Std A Buchse gesteckt werden. Dies gilt allerdings für keinen anderen Stecker-Typ des USB 3.0 Standards, da nur der Std A Stecker Abwärtskompatibel zu USB 2.0 Buchsen gestaltet wurde oder werden konnte. Im englischen Wikipedia-Artikel zum Universal Serial Bus sind die oben gezeigten Stecker- und Buchsentypen, allerdings ohne USB 3.0, gut aufbereitet in Tabellenform unter Host Interface receptableshttp://stick-test.de/images/link_ext.gif mit Bildern dargestellt.
Im folgenden Bild sind die drei USB 3.0 Stecker abgebildet.



Aufgrund der Tatsache, daß für USB 3.0 insgesamt zehn Leitungen für die Datenübertragung benötigt werden, hat sich das Steckerlayout für Std B und Micro B geändert: Dem Std B wurde ein Mini B zusätzlich aufgeflanscht während der Micro B seine Erweiterung in der Horizontalen erfuhr, indem links des ursprünglichen USB 2.0 Micro B Steckers ein zusätzlicher Mini B Stecker platziert wurde.