|
|
Bei Standard PC´s und Laptops
gehören serielle Schnittstellen ja eher zur aussterbenden Art. Moderne Laptops
kommen meistens gleich ohne jede serielle Schnittstelle daher. Dafür gibt es
dann USB Ports - möglichst viel und reichlich. Und wer will, kann mittels USB /
Seriell Adapter einen USB Port in eine serielle COM Schnittstelle verwandeln -
und so das breite Spektrum der seriellen Peripherie nutzen.Anders ist es bei industriell eingesetzten Systemen. 1) USB ist bisher wenig industrietauglich. Da kann man zwar darüber streiten - aber die herkömmliche USB Schnittstelle wurde nicht dafür ausgelegt in extremer Umgebung / Industrieumgebung betrieben zu werden. (Jedoch gibt es bereits erste Anbieter, die IP65 USB Adapter anbieten. Staub- und Wassergeschützt.) 2) Es gibt ein Riesenangebot an seriellen Peripheriekomponenten - zu günstigen Preisen. Da kann die USB Welt (bisher) nicht mithalten. Kleine Bondrucker, Barcocdeleser, elektronische Waagen und andere Messgeräte - serielle Ports sind hier bereits seit vielen Jahren Standard. USB nicht - und eine Vorhersage, ob das jemals kommt ist eher spekulativer Natur.
Als Beispiel
dient das
TRM/816. Ein extrem kleiner x86 PC
kompatibler Miniaturrechner komplett mit Tastatur und Display. Das Ding wird
unter Linux betrieben und ist vom Anwender vollständig frei programmierbar.
Standardmässig stehen beim TRM/816 bereits folgende Schnittstellen zur
Verfügung: Eine serielle COM Schnittstelle - nachfolgend COM1 genannt - ist für viele Anwendungen in der Praxis zu wenig. Beim TRM/xx kommt hinzu, dass die serielle COM1 Schnittstelle auch für einen seriellen Kommando Modus RCM (Remote Console Mode) verwendet. Der RCM ist für den Einstieg und für die Softareentwicklung superinteressant - kostet aber leider die serielle Schnittstelle. (Das kann man zwar ändern. Dann entfallen aber die tollen Handlingmöglichkeiten unter RCM.) Mittels RCM wird eine serielle Login Konsole auf die COM Schnittstelle gelegt: Hier kann ein Desktop PC mit Terminalprogramm (z.B. Hyperterminal, Minicom usw.) angeschlossen werden. Alle Boot- und Oberflächenmeldungen erscheinen auf dem Desktop Monitor. Über die Desktop Tastatur kann das Terminal komplett bedient werden - wie ein "richtiger" PC. Aufgabe ist es also, mehrere serielle COM Schnittstellen anzubieten - wenn möglich in unbegrenzter Anzahl.
Serielle Device Server - Schnittstellen satt... Die Antwort findet sich in seriellen Device Servern - kleinen Zusatzmodulen, die via Ethernet LAN mit dem TRM/xx verbunden werden und dann beliebig viele COM Ports in beliebigen RSxxx Pegeln anbieten. Ein Beispiel sei die Serie NPort 5xxx von MOXA. Diese Serie besteht aktuell aus folgenden Modulen: . NPort 5210: 2x RS232 Port, herausgeführt als RJ45. Sub-D 9pol
Adapterkabel Option. Die Besonderheit dieser Module ist schnell erklärt: Diese Module bieten auf der einen Seite, die seriellen Schnittstellen, die man benötigt. Auf der andere Seite steht ein Ethernet LAN Netzwerkanschluß zur Verfügung. Sie werden also einfach mit einer IP Adresse in ein TCP/IP Netzwerk gehängt - und die Software aus dem Industrieterminal kann diese Schnittstellen verwenden. Ganz wichtig: Die Module selbst müssen nicht programmiert werden. Sie enthalten bereits eine Firmware, die eine serielle / LAN Umsetzung selbständig realisiert. Der Terminal- oder Industrie PC Programmierer muss sich also keine Gedanken über die Programmierung der Module mehr machen.
Terminal mit 3, 5 oder X seriellen Schnittstellen
Die grösste Schwierigkeit separater IO Module ist typischerweise die Software. Bei den gewählten Moxamodulen NPort 5x ist das kein Problem: Im Lieferumfang des zusammengestellten Starter Kits (Startup Package) sind vorkonfigurierte Devicetreiber für die seriellen Module enthalten. Diese bestehen u.a. aus einem Linuxdaemon moxad. Dieser stellt die entfernten Schnittstellen als physikalische Devices /dev/moxa0 und /dev/moxa1 zur Verfügung. Der Applikationsprogrammierer auf dem TRM/xx merkt also keinen Unterschied, ob die seriellen COM Schnittstellen sich intern im System befinden oder als externe COM Module realisiert sind. Der Daemon sowie weitere spezielle NPort Dateien wurden speziell für die embedded Linux Versionen im TRM/xx compiliert, so dass er zusammen mit einer vorkonfigurierten Linuxversion einfach nutzbar ist. Zusätzlich wurden diverse Readme Dateien (Linux: HowTo) veröffentlicht, die das Laden und Installieren eines speziellen Linuximages mit installiertem Moxadaemon dokumentieren. Doch beginnen wir mit dem Anfang: Serielle Schnittstellen müssen konfiguriert werden, z.B. mit Baudrate (Übertragungsgeschwindigkeit), serieller Übertragungsparameter und natürlich auch mit der Vergabe eines Devicenamens.
Ethernet LAN - IP Adresse einstellen Der erste Schritt beim seriellen Modul ist die Netzwerk Grundkonfiguration. Hierbei wird dem Modul eine IP Adresse zugewiesen, damit es in unserem Class C IP Segment arbeiten kann. Eine Default IP Adresse des Moduls ist typischerweise rückseitig aufgedruckt oder in der Dokumentation enthalten. In unserem Fall ist die Default IP 192.168.127.254. Wie das Leben so spielt: Mit dem defaultmässig vorgegebenen Class C Netz 192.168.127.xxx können wir nichts anfangen. Wir arbeiten im Netz 192.168.000.xxx. Sie haben zwei Möglichkeiten
die IP Adresse des Moduls zu ändern: Konfiguration via Web Interface Dieser Weg ist recht einfach und sollte eigentlich allen bereits bekannt sein, die verschiedene Geräte in ihr LAN hängen: 1) Verbinden Sie das serielle Modul via Ethernet mit Ihrem Desktop PC. Am besten ist hierfür eine LAN Punkt-zu-Punkt Verbindung. Um sicherzustellen, dass man nicht in Konflikten mit einem u.U. bereits bestehenden Netzwerk gerät. 2) Konfigurieren Sie Ihren Desktop PC auf den Default IP Bereich des Moduls (aber bitte mit einer vom Modul abweichenden IP Adresse!). Wählen Sie für Ihren Desktop PC z.B. die IP Adresse 192.168.127.253. (Bei Windows via Systemsteuerung --> Netzwerk --> IP Konfigurieren bzw. bei Linux mittels ifconfig.) 3) Starten Sie auf dem Desktop
PC einen Browser und wählen Sie durch Eingabe von http://192.168.127.254 (==>
der Default IP Adresse des seriellen Moduls) eine http
Verbindung. Das IO Modul sollte sich jetzt im Webbrowser melden und Sie können
es im Menüpunkt Netzwerk wunschgemäß konfigurieren. Fertig. Ihr serielles Modul arbeitet jetzt mit der "richtigen" IP Adresse. Sie können es jetzt in Ihrem Netzwerk betreiben bzw. mit der weiteren Parameterkonfiguration fortfahren. Konfiguration via ARP Request Die ARP IP Konfiguration ist ein Tricky-Weg, der sich bei vielen IP Devices inzwischen durchsetzt. Klar ist es immer etwas umständlich, seinen eigenen Desktop auf den Default IP Bereich des Moduls zu setzen. Auch wenn es z.B. unter Windows XP und Linux mehr oder weniger einfach geht - wenn man schon ein Netzwerk hat, muß man sich zur Konfiguration abhängen und eine separate Punkt-zu-Punkt LAN Verbindung zwischen Modul und Desktop erzeugen. Wer will das schon bei jedem Modul machen? Die IP Konfiguration via ARP Request oder ARP Fake ist daher eine interessante Lösung. Dabei erspart man sich die IP Rekonfiguration des eigenen Rechners. 1) Das Modul wird einfach in das Netzwerk gehängt. 2) Auf Ihrem Desktop erweitern
Sie die interne ARP Tabelle um einen Eintrag für das serielle Module. Dieser ARP
Eintrag enthält: a) gewünschte
IP Adresse des Moduls, b) die aktuelle MAC Adresse des Moduls. (Das können Sie übrigens unter Windows oder Linux einfach eingeben. Ihr Desktop muss sich dazu lediglich im Netzwerk befinden. Ggf. kann die Parametersequenz etwas abweichen. Im Zweifelsfall die ARP Hilfe lesen oder ARP ohne Parameter aufrufen. Meistens kommt dann eine kleine Onlinehilfe.) 3) Eröffnen Sie anschließend
auf Ihrem Desktop PC eine
Telnet Session zur gewünschten IP Adresse des Moduls. Verwenden Sie dabei
unbedingt den Port 6000! Ihr Desktop versucht einen Telnet Verbindungsaufbau zum IO Modul - auf Port 6000. Das Modul erkennt die Verbindungsanfrage und erkennt auch die mitgelieferte IP Adresse. Es bootet neu - und verwendet ab sofort die neue IP Adresse. (Übrigens: eine funktionsfähige Telnetverbindung wird so nicht zustande gebracht. Diese Telnetanfrage dient lediglich dem Setzen der IP Adresse.) Fertig. Die weitere
Parameterkonfiguration wird nun mittels Browser und http-Verbindung
durchgeführt. Auf dem Desktop PC Browser starten und eingeben: Dieser Weg ist schnell und komfortabel. Er erspart Ihnen die IP Rekonfiguration Ihres PC. Sie können das serielle Modul gleich in Ihr Netzwerk integrieren, die IP Adresse setzen und weitere Konfigurationen dann bequem per Browser durchführen. Wir möchten Sie nicht mit Details aus dem ARP Protokoll (Adress Resolution Protokoll) langweilen. So viel sei nur gesagt: Ihr Desktop PC speichert in einer ARP Tabelle jeweils MAC Adressen und zugehörige IP Adressen. Durch den ARP -s Befehl erweitern Sie die Tabelle um einen Eintrag. Der Modulhersteller hat innerhalb der Firmware des Moduls eine kleine Software eingefügt, die auf Port 6000 nach einem Telnet Request "lauscht". Wenn ein Telnet Request erkannt wird, wird mitgelieferte IP Adresse als neue Zieladresse verwendet, d.h. das Modul erkennt, dass es zukünftig mit dieser IP Adresse arbeiten soll. Daher bootet es neu und verwendet ab sofort die neue IP Adresse. Wenn Sie mehr zu ARP wissen möchten: Auch wenn dieser Weg momentan immer häufiger zur einfachen IP Konfiguration verwendet wird: Bitte prüfen Sie, ob das gewählte IO Modul die Adresskonfiguration via ARP unterstützt. (Handbuch lesen oder Hersteller kontakten. Im Fall der in Verbindung mit einem TRM/xx angebotenen NPort Module ist das der Fall oder es wird in einer separaten Dokumentation ein Alternativweg erläutert!) Wichtiger Hinweis! Ein kleines aber feines Problem gibt es noch: Diese ARP Sache kann man immer nur einmalig durchführen. Wenn Sie dem Modul via ARP bereits eine IP Adresse zugewiesen haben und diese nochmals ändern möchten, müssen Sie das Modul zuvor mittels der RESET Taste auf die Werkseinstellung zurücksetzen!
Serielle Übertragungsparameter eingeben Serielle Schnittstellen im RS232 Format erfordern in den meisten Fällen eine Spezifizierung der Baudrate (Übertragungsgeschwindigkeit), Anzahl der Daten- und Stop- Bits, Parität usw. Die erforderlichen seriellen Übertragungsparameter entnehmen Sie bitte der Dokumentation Ihrer seriellen Device. Ein Barcodeleser wird z.B. häufig mit 115200 bps, 8 Datenbit, kein Stoppbit, keine Parität senden. Tragen Sie diese Parameter in der Onlinekonfigurationsmaske des seriellen Moduls ein. Wenn gewünscht, können Sie natürlich noch weitere Konfiguration im seriellen Modul eintragen. Die Module enthalten z.B. eine Uhrzeit, die Möglichkeit die IP Adresse via DHCP zu beziehen uvam. In der Praxis werden Sie das bei der Verbindung mit einem Linuxterminal eher selten verwenden: Sie haben die Rechnerintelligenz ja bereits im Terminal vorhanden und können diese durch Ihr Linuxprogramm im Terminal gemäß Ihren Anforderungen ausnutzen. Mit diesem Vorgehen erhalten Sie für Ihr Terminal serielle Schnittstellen - und zwar so viele, wie Sie möchten. Jetzt geht es darum, diese auch innerhalb Ihrer Applikation zu verwenden...
Serielle Schnittstellen programmieren Nun, wenn wir ehrlich sind: eigentlich wollen wir hier keine ausführliche Dokumentation liefern, wie man serielle Schnittstellen unter Linux programmiert. 1) Gibt es bereits haufenweise Dokumentationen zu diesem Thema, 2) werden diese Dokumentationen immer besser sein, als wir das hier umsetzen können. Hier sei nur so viel erwähnt: Serielle Schnittstellen werden innerhalb der Linuxprogrammierung als Device angesprochen. Die COM1 heisst z.B. /dev/ttyS0, die COM2 analog /dev/ttyS1. Im Fall der TRM/xx Systeme
in Verbindung mit dem seriellen Modul wurde eine kleine Konfigurationsdatei
definiert. Diese findet sich im TRM/xx unter Dort werden z.B. die IP Adresse des seriellen Moduls, sowie der Devicename eingetragen. In unserem Fall z.B. ttymoxa0 für die erste COM Schnittstelle bzw. ttymoxa1 für die zweite COM Schnittstelle im seriellen Modul. Innerhalb der Linuxapplikation können diese Schnittstellen dann durch Angabe von /dev/ttymoxa0 bzw. /dev/ttymoxa1 addressiert werden. Wie serielle Schnittstellen, die sich innerhalb des TRM/xx befinden. Allerdings hat man es beim seriellen Modul noch einfacher: Da die Übertragungsparameter bereits im Vorfeld definiert wurden (via HTTP Webbrowser), muss man dieses innerhalb der Applikation nicht mehr vollziehen. Wichtig: Nachdem man diese Datei auf dem TRM/xx geändert hat, muss sie zwingendermassen in das Flash oder in die aktuelle Linuxversion gespeichert werden, sonst geht sie beim nächsten Ausschalten verloren! Die TRM/xx bieten zu diesem Zweck einen EEPROM. Dort kann man hervorragend kurze Parameterdateien speicherresident abspeichern. Damit man diese Schnittstellen jedoch auch einfach in verschiedenen TRM/xx Systemen nutzen kann, sind vorkonfigurierte Linuxversionen bereits um die erforderlichen Devicetreiber der seriellen NPort Module erweitert. Einfach mal auf der CD ROM im Startup Package zum TRM/xx nachsehen. Dort erhalten Sie am schnellsten die Informationen, welche vorkonfigurierten Linuxversionen bereits mit der NPort Unterstützung geliefert werden - oder wie Sie diese Unterstützung selbst noch in Ihre Linuxversion für das TRM/xx nachträglich übersetzen und integrieren...
Die Überschrift zu diesem Absatz mag jetzt etwas platt erscheinen - inhaltlich erfüllt sie jedoch ihren Zweck. Dank serieller Device Server mit Linuxunterstützung können Terminals und Industrie PC´s schnell und problemlos via Ethernet Netzwerk "aufgerüstet" werden. Die Anzahl der Schnittstellen und weiteren Funktionalitäten ist unbegrenzt. Basis dieser Erweiterung ist einfach das Ethernet LAN Netzwerk. Natürlich kann man das LAN auch noch für weitere Module verwenden, z.B. um ein Terminal WLAN-fähig zu bekommen. Wer sich darüber noch informieren möchte: Zu diesem Thema empfehlen wir übrigens auch den folgenden Beitrag:
|
|
??.12.2004 Erster Textentwurf. Unvollständig Text: Hans-J. Walter. AE Art-Events. Weitere Texte zu diesem Thema führen wir hier nicht mehr auf. Einfach auf der Hauptseite für IT-BEITRÄGE nachsehen. Da gibt es Einiges zum diesem Thema... |
(c) hjw AE, Last Update: 17.07.2009. Alle Angaben ohne Gewähr
IT Lösungen für die Industrie: www.terminal-systems.de || IT Beiträge