Hinweis: Obwohl JavaScript für diese Website nicht unbedingt erforderlich ist, werden Ihre Interaktionsmöglichkeiten mit den Inhalten eingeschränkt sein. Bitte aktivieren Sie JavaScript für das volle Erlebnis.

Python zur Steuerung von CD/DVD-Verpackungshardware

Einleitung

Diese Geschichte handelt von der Anwendung von Python in der automatisierten CD/DVD-Disc-Verpackungsindustrie. Auf dem Großhandelsmarkt werden CD/DVD-Discs in Einheiten von 10, 20 oder 50 Stück in einer schrumpffolienverpackten Bulk-Packung verkauft. Das Zählen von Stapeln von Discs für diese Packungen ist arbeitsintensiv und erfordert mehrere Schritte:

  1. das Aufnehmen einer geschätzten Anzahl von Discs aus einem großen Stapel,
  2. das Überprüfen der Richtigkeit der Anzahl der Discs mit einem Disc-Zähler,
  3. das Hinzufügen oder Entfernen von Discs, um die erforderliche Anzahl zu erreichen, und
  4. das Senden der Discs an eine Verpackungsmaschine

Um den Verpackungsprozess kostengünstig zu gestalten, wird ein automatischer CD/DVD-Disc-Partitioner eingesetzt, um die oben genannten Schritte durchzuführen.

Acqutek Corporation wurde von Micro Image Precision Co. Ltd beauftragt, die Steuerungssoftware für diese Partitioner-Maschine zu entwickeln. Das Projekt war zeitkritisch, mit weniger als 4 Monaten für die Fertigstellung. Darüber hinaus gab es anfangs keine harte Spezifikation, und die Anforderungen änderten sich von Zeit zu Zeit mit dem gleichzeitig fortschreitenden mechanischen Design des Partitioners.

Um die Bedürfnisse des Kunden zu erfüllen und die dynamischen Anforderungen des Projekts zu bewältigen, benötigten wir eine schnelle und flexible Möglichkeit, die Software für das System zu entwickeln. Nach der Untersuchung verfügbarer Technologien entschieden wir uns für Python. Die interaktive Natur dieser objektorientierten Sprache, ihre Eignung für schnelles Prototyping und ihre umfangreichen Standardbibliotheken machten sie ideal für ein Projekt mit sich schnell ändernden Anforderungen.

Hardware des CD/DVD-Disc-Partitioners

Der von Micro Image Precision Co. entwickelte CD/DVD-Disc-Partitioner besteht aus sechs Disc-Zähl- und Greifmaschinen. Jede davon kann eine feste Anzahl von Discs von einer Eingangsspindel aufnehmen, die Discs nach vorne bewegen und sie auf einer leeren Spindel freigeben. Die sechs Spindeln bewegen sich auf einem Förderband zwischen den Disc-Zählern, das sie zu dem Punkt bringt, an dem sie der Verpackungsmaschine zugeführt werden.

Overview of CD/DVD partitioner

Die Komponenten des CD/DVD-Disc-Partitioners, wobei grüne Scheiben die Luftzylinder darstellen, die verwendet werden, um Spindeln stationär zu halten, während sich das Förderband kontinuierlich darunter bewegt Vergrößern

Front of CD/CVD partitioner

Die Vorderseite des CD/DVD-Disc-Partitioners Vergrößern

Side of CD/CVD partitioner with touch screen

Die Seite des CD/DVD-Disc-Partitioners. Das Touchscreen-Bedienfeld befindet sich in der oberen linken Ecke Vergrößern

Der Hauptcomputer kommuniziert über RS-485-Verbindungen mit den sechs CD/DVD-Disc-Partitionern und steuert die Luftzylinder auf dem Förderband über digitale E/A-Busse.

Architektur der Steuerungssoftware

Die Steuerungssoftware ist in fünf Hauptkomponenten unterteilt: die zentrale Steuerlogik, die Fehlerbehandlung, die digitale E/A-Schnittstelle, der RS-485-Serienkommunikator und die grafische Benutzeroberfläche (GUI).

Die Komponente für die Steuerungslogik ist für die Steuerung, Koordination und Überwachung der Produktionsprozesse zuständig. Abhängig von Ereignissen aus der GUI und Signalen aus anderen Teilen der Maschine sendet sie eine Befehlssequenz an die Zähl- und Greifmaschinen sowie an die Luftzylinder auf dem Förderband.

Die digitale E/A-Schnittstelle bietet verschiedene Methoden für die Steuerungslogik, um den Status von Sensoren abzurufen und die Auf- und Abbewegung der Luftzylinder auf dem Förderband zu steuern.

Der RS-485-Serienkommunikator bietet Methoden zum Senden von Befehlen an den Disc-Partitioner und zum Empfangen von Antworten von diesem.

Die GUI-Komponente bietet Benutzeroberflächen für Bediener, um die Maschine einzurichten, zu testen, zu debuggen, zu starten, zu pausieren und zu stoppen.

Main entry menu

Hauptmenü. Dies ist das erste Menü, das nach dem Hochfahren des Systems auf dem Touchpanel angezeigt wird. Vergrößern

Setup operation mode menu

Menü zum Einrichten des Betriebsmodus. Bediener können dieses Bedienfeld verwenden, um die Anzahl der Discs für jede Packung einzustellen. Vergrößern

Operation menu

Betriebsmenü. Bediener können dieses Panel verwenden, um das Förderband zu initialisieren, zu starten, zu pausieren, zurückzusetzen und zu leeren. Das Panel zeigt auch alle Warn- oder Fehlermeldungen an, die von anderen Teilen der Maschine gesendet werden. Vergrößern

Engineer mode

Ingenieurmodus. Ingenieure können dieses Panel verwenden, um den Status jedes Sensors abzurufen, Luftzylinder und den Förderbandmotor zu steuern und Befehle an eine Zähl- und Greifmaschine für Wartungs- oder Fehlerbehebungszwecke zu senden. Vergrößern

Implementierung

Das Python-Modul threading erwies sich als sehr wichtiges Werkzeug für die Handhabung von Nebenläufigkeit in der Steuerungslogik. Threads werden verwendet, um gleichzeitig den Produktionsprozess zu überwachen, Ereignisse von der GUI zu beobachten und Fehlermeldungen von anderen Teilen der Maschine zu erkennen.

Die digitale E/A-Schnittstelle und der RS-485-Serienkommunikator waren in C geschriebene Bibliotheken. SWIG wurde verwendet, um diese schnell aus Python-Code aufrufbar zu machen.

Die GUI-Komponenten des CD/DVD-Partitioners wurden mit Tkinter erstellt, das ein einfaches, aber sehr zuverlässiges Toolkit für die GUI-Entwicklung bietet.

cx_Freeze wurde verwendet, um die Python-Steuerungssoftware zu einem ausführbaren Programm zu verpacken.

Auf Hardware-Ebene wird eineJUKI-740E(K6 400MHz CPU und 64MB RAM) CPU-Karte für den Hauptcomputer verwendet. Das Betriebssystem istLinux-Kernel 2.4.18und die Systemsoftware umfasst BusyBox, einen minimierten X11-Fensterserver, einen Touchpanel-Daemon und einen Netzwerktreiber.

All dies passt auf einen 64-MB-Flash-Speicherstick. Obwohl es möglich wäre, die Größe des Root-Dateisystems weiter zu reduzieren, war dies für dieses Projekt nicht notwendig.

Simulator

Ein Simulator wurde in den frühen Phasen des Projekts entwickelt, bevor die eigentliche Maschine verfügbar war. Dies bot dem Entwickler eine grafische Animation der Bewegung der Spindeln, Luftzylinder und des Status der Sensoren.

Der Simulator ermöglichte es dem Softwareentwickler, mit der Entwicklung der Steuerungssoftware zu beginnen, bevor das Hardware-Design und die Montage abgeschlossen waren. Er diente auch als bequemes Mittel zum Debuggen und Belastungstesten der Steuerungssoftware.

ML500 simulator

ML500-Simulator. Eine rote Scheibe repräsentiert eine Spindel mit geladenen Discs. Eine grüne Scheibe repräsentiert eine leere Spindel, die auf Beladung wartet. Ein kleiner blauer vertikaler Balken repräsentiert einen Luftzylinder und ein kleines rotes Quadrat repräsentiert einen Sensor zur Erkennung der Position der Spindeln. Die schwarzen und grünen Quadrate repräsentieren die Signale; schwarz bedeutet, dass das Signal aus ist, und grün bedeutet, dass das Signal an ist. Vergrößern

Die vom Simulator angezeigte grafische Animation wurde mit dem Modul pygame erstellt. Der Simulator erwies sich als sehr realistisch; Code, der darauf lief, konnte mit sehr geringen Modifikationen auf den Hauptcomputer hochgeladen werden. Nur das simulierte E/A-Modul wird durch das reale E/A-Modul ersetzt.

Schlussfolgerung

Die Steuerungssoftware des CD/DVD-Disc-Partitioners wurde von einem Entwickler in etwa 4 Monaten fertiggestellt. Der Softwareentwicklungsprozess verlief fast parallel zum Hardwareentwicklungsprozess. Am Ende des Projekts bestand die Steuerungssoftware alle Feldtests und läuft reibungslos in der Produktion.

Das Projekt wurde fast zu 100 % in Python entwickelt. Dies zeigt, dass Python nicht nur ein Spielzeug ist. Es ist eine mächtige Waffe zur Lösung realer Probleme.

Zu Beginn des Projekts wurde eine Bedenken geäußert: Würde Python schnell genug sein, um die Echtzeitanforderungen des Produktionsprozesses zu bewältigen? Im CD/DVD-Partitioner arbeiten Python und Linux perfekt, solange die schnellste erforderliche Reaktionszeit größer als 1 Millisekunde ist. Für schnellere Anwendungen kann ein Echtzeit-Betriebssystem erforderlich sein, um ausreichend schnelle und präzise Reaktionszeiten zu gewährleisten.

Über die Autoren

Jau-Ann Chen ist Linux-Berater und Systemanalytiker für die Automatisierungsindustrie. Er spezialisiert sich auf Simulation, Embedded Linux und Anwendungen zur digitalen Bildverarbeitung.