Suchen

Linux als guter Integrator in der Automatisierungstechnik

Autor / Redakteur: Andreas Klinger* / Johann Wiesböck

Will man Linux in der Automatisierung einsetzen, steht einem eine große Anzahl an unterschiedlichen Schnittstellen mit erprobten und stabilen Treibern zur Verfügung. Dadurch kann Linux hervorragend als Integrator zwischen unterschiedlichen Bussystemen eingesetzt werden.

Firmen zum Thema

Produktschneider: Die relative Lage des Bildes wird vermessen und das Schneidemesser so gesteuert, dass immer genau zwischen zwei Bildern geschnitten wird.
Produktschneider: Die relative Lage des Bildes wird vermessen und das Schneidemesser so gesteuert, dass immer genau zwischen zwei Bildern geschnitten wird.
(Bild: IT Klinger)

Angefangen von der Echtzeitfähigkeit, über die Verfügbarkeit vom Sourcecode und damit der Unabhängigkeit von einem Betriebssystemhersteller bis hin zu den Lizenzkosten gibt es viele Gründe, Linux in der Automatisierungstechnik einzusetzen. Ein ganz wichtiger Aspekt ist die Verfügbarkeit einer großen Anzahl an unterschiedlichen Schnittstellen mit erprobten und stabilen Treibern dazu. Im folgenden Artikel wird genau dieser Gesichtspunkt anhand eines einfachen und anschaulichen Beispiels näher beleuchtet.

In einem lebensmittelverarbeitenden Betrieb soll ein Produkt auf einem Förderband geprägt werden, abkühlen, in kleinere Teile geschnitten und gestapelt werden. Unmittelbar nach dem Auftragen auf das Förderband ist das Produkt noch warm und es wird ein lustiges Bild oder auch das Firmenlogo darauf eingeprägt. Dies passiert bei der im Bild mit "1" markierten Prägewalze. Anschließend kühlt das Produkt ab. Da es sich um ein fließendes Produkt handelt, ändern sich dabei die Abmessungen sowohl in der Länge als auch in der Breite. Daher ist es nicht möglich das Schneidemesser am Ende des Förderbandes im Gleichtakt mitlaufen zu lassen. Irgendwann wird das eingeprägte Bild nicht mehr in der Mitte liegen oder gar zerschnitten sein.

Aus diesem Grunde wird die relative Lage des Bildes vermessen und das Schneidemesser so gesteuert, dass immer genau zwischen zwei Bildern geschnitten wird. Dass es dann vorkommen kann, dass einzelne geschnittene Produkte dann etwas größer oder kleiner sind kann innerhalb gewisser Grenzen toleriert werden.

Der Messvorgang läuft nun so ab, dass an der Position "2" ein Inkrementalgeber Interrupts an unser Embedded-Linux-System liefert. Damit weiß die Steuerung wo sich das Förderband befindet. Der Steuerungsrechner generiert wieder einen Trigger für die Kamera (Position "3"), damit diese ein Bild aufnimmt. Die Kamera liefert dann die Lage des Bildes mittels eines TCP/IP-Telegrammes an das Linux-System zurück. Der Rechner weiß dadurch die Position des Bildes relativ und kann das Schneidemesser (Position "4") dann entsprechend steuern.

Verarbeitung der TCP-Telegramme unmittelbar nach Empfang

Bei dem konkreten Projekt stellte sich heraus, dass die Kommunikation mittels TCP/IP zu langsam ist und das Messergebnis erst vorliegt, wenn das Bild schon bei der Messerwalze vorbei ist. Der Entwickler wich daher von der Konvention, Socket-Server im Userspace zu implementieren ab und baute den zeitkritischen Kommunikationspart als Kernel-Treiber. Damit erfolgt die Verarbeitung der TCP-Telegramme im Interrupt-Kontext unmittelbar nach Empfang durch die Netzwerkkarte und somit wesentlich schneller als beim Warten darauf im Userspace mittels poll().

Dieses Implementierungsdetail soll hier nicht als die Ideallösung für alle TCP-Probleme dargestellt werden. Vielmehr geht es darum zu zeigen, wie flexibel man auf auftretende Probleme während der Projektlaufzeit reagieren kann, wenn man im Besitz des vollen Sourcecodes ist und damit alle Freiheiten der Implementierung innehat.

In diesem Anwendungsbeispiel haben wir es lediglich mit drei Kommunikationspartner für den Steuerungsrechner zu tun. Die Herausforderung liegt dabei oftmals darin unterschiedliche Schnittstellen zu verwenden. Genau hier hat Linux den großen Vorteil, dass bereits eine riesige Auswahl an Bussystemen und Protokollen implementiert, getestet und produktiv ist.

Angefangen von den unterschiedlichsten Netzwerkprotokollen, über Feldbusse, CAN, USB, UART, SPI, I²C und vielen weiteren gibt es kaum etwas, das in Linux noch nicht implementiert ist. Dadurch kann Linux hervorragend als Integrator zwischen unterschiedlichen Bussystemen eingesetzt werden. Aber auch die Kommunikation mit Datenbank-Servern oder ERP-Systemen ist für Linux kein Problem, kommt es doch aus der Welt der Serversysteme.

Mehr Infos und den Kontakt zum Autor und Linux-Experten Andreas Klinger finden Sie unter www.it-klinger.de. Sie können Ihn auch kennenlernen als Referent der bekannten Linux-Woche (in März, Juli und Oktober) oder als Sprecher auf der Automatisierungsveranstaltung ASE-Kongress im September und dem Embedded-Software-Familientreffen ESE Kongress im Dezember.

* Andreas Klinger ist selbständiger Linux-Trainer und Referent der Embedded Linux Woche sowie mehrfacher Gewinner des Best Speaker Awards auf dem ESE Kongress.

(ID:46555847)