Anleitung Legoteilzählmaschine: Unterschied zwischen den Versionen
Zeile 132: | Zeile 132: | ||
Jedes Legoteil besitzt eine individuelle Legoteile-ID. Diese kann dem Deckblatt des jeweiligen Kasten entnommen werden (vgl. Abbildung 11). | Jedes Legoteil besitzt eine individuelle Legoteile-ID. Diese kann dem Deckblatt des jeweiligen Kasten entnommen werden (vgl. Abbildung 11). | ||
[[Datei:BasissetTeileIDs.jpg|thumb | [[Datei:BasissetTeileIDs.jpg|thumb|800px| Abb. 11: Das Deckblatt des Basissets (45544)]] | ||
Eine enthält die Informationen, welche Teile händisch sortiert werden müssen. Wird also ein kompletter Kasten sortiert, so müssen zuerst die händisch sortierten Teile rausgesucht werden und über die Bilder auf dem Deckblatt die zugehörgen ID's ermittelt werden. Danach können in dem Prozess zum Starten der Sortierung die gezählten Mengen in die Oberfläche eingetragen werden (vgl. Abbildung 9). Nach dem Beenden der Sortierung werden die händisch gezählten Mengen auf die autpmatisch gezählten Mengen addiert und man kann eine komplette Inventur-/Fehlteilliste erhalten | Eine enthält die Informationen, welche Teile händisch sortiert werden müssen. Wird also ein kompletter Kasten sortiert, so müssen zuerst die händisch sortierten Teile rausgesucht werden und über die Bilder auf dem Deckblatt die zugehörgen ID's ermittelt werden. Danach können in dem Prozess zum Starten der Sortierung die gezählten Mengen in die Oberfläche eingetragen werden (vgl. Abbildung 9). Nach dem Beenden der Sortierung werden die händisch gezählten Mengen auf die autpmatisch gezählten Mengen addiert und man kann eine komplette Inventur-/Fehlteilliste erhalten |
Version vom 25. Januar 2019, 11:41 Uhr
Dies ist ein Unterartikel von der Legoteil-Zählmaschine, welcher die Anleitung für die Maschine beschreibt.
Eine Video-Anleitung ist auf Youtube zu finden.
Einschalten und Starten des Programms
Vor dem Starten der Legoteil-Zählmaschine müssen einige Voraussetzungen erfüllt sein. Es gilt zu prüfen,
ob alle benötigten Komponenten mit dem Rechner verbunden sind, von dem das Programm gestartet werden soll.
Schnittstellen vorbereiten
1. Stromkabel der Anlage in die Steckerleiste 1 neben dem PC einstecken (vgl. Abbildung 1 und 4)
2. USB-Kabel zum Arduino im Schaltschrank an den PC LAB01-16 anschließen (vgl. Abbildung 1)
3. USB-Kabel zur Webcam in der Separierungseinheit an den PC LAB01-16 anschließen (vgl. Abbildung 1)
4. USB-Kabel zur Webcam in der Erkennungseinheit an den PC LAB01-16 anschließen (vgl. Abbildung 1)
5. Sub-D Stecker zur Sortiereinheit zusammen stecken (Schaltschrank und Sortiereinheit) (vgl. Abbildung 2)
Im Regelfall sollten alle Verbindungen so vorbereitet sein.
-
Abb. 1: Kabelanschlüsse
-
Abb. 2: Sub-D Stecker
Energieversorgung
6. Der Druckluftregler 1 muss auf 4-5 bar eingestellt werden (vgl. Abbildung 3). Er befindet sich an dem Versorgungsgerüst.
7. Steckdosenleiste 1 links neben dem Bildschirm muss aktiviert sein (grüner Schalter muss leuchten) (vgl. Abbildung 4)
8. Not-Aus Schalter neben dem Schaltschrank muss deaktiviert sein (durch Drehen entriegeln) (vgl. Abbildung 5)
9. Hauptschalter am Schaltschrank einschalten (vgl. Abbildung 6)
-
Abb. 3: Druckluftregler
-
Abb. 4: Steckerleiste
-
Abb. 5: Not-Aus Schalter
-
Abb. 6: Hauptschalter Schaltschrank
Systemstart
10. PC hochfahren
11. Anmelden mit .\hshl-user
12. Matlab Startdatei befindet sich im Ordner: D:\SVN\Sortiermaschine\SRC\Matlab\START.m
12.1 Doppelklick auf die Start.m Datei
13. Programm ausführen (RUN)
Die GUI öffnet sich und die Maschine ist startbereit.
Falls Probleme mit der Arduino Kommunikation oder der Kamerabelegung entstehen, bitte in dem Absatz Fehlerbehebung nachlesen.
Das weitere Vorgehen ist in der GUI-Anleitung beschrieben.
Anleitung zur Bedienung des GUI
Sortierfunktion starten
Nach dem Starten des Programmes erscheint das Hauptfenster (vgl. Abbildung 7), in dem zwischen Sortierung, Anlernen und Baukasten bearbeiten gewählt werden kann.
Ein Klick auf den Button Teile sortieren ruft das nächste Auswahlmenü auf (vgl. Abbildung 8). Dort können die Baukästen ausgewählt werden, in die später sortiert werden soll. Es kann zurzeit zwischen den Sets 45544 (Grundset) und 45560 (Erweiterung) gewählt werden.
Nach dem Auswählen eines Kastens erscheint eine Tabelle (vgl. Abbildung 9). Unter dem Reiter Legoteil ID sind die einzelnen Teile mit der entsprechenden Seriennummer hinterlegt. Unter dem Reiter Soll-Anzahl steht die Soll-Anzahl des jeweiligen Teiles in dem gewählten Kasten und bei Gezählt sind die von Hand abgezählten Teile einzutragen (siehe Kapitel Teile vorsortieren). Dies bietet sich für große Teile wie Motoren und den EV3 Hauptstein an. Die eingetragenen Zahlen werden am Ende in der Inventurliste zu der Anzahl der automatisch erkannten Teile addiert.
Ein Klick auf den Button Programm beenden beendet das Programm nach der Abfrage, ob auch wirklich beendet werden soll. Zurück zum Hauptmenü führt zurück zu dem Startbildschirm des Programmes und mit Sortierung starten kann die aktuelle Auswahl gespeichert und das Sortieren gestartet werden. Nach einer zu bestätigenden Warnmeldung zur Lautstärke und dem Hinweis zum entfernen von der Anlage nimmt die Maschine ihre Arbeit auf.
Zuerst wird die Kamerakalibrierung ausgeführt. Hierbei werden die beiden Kameras parametriert und anschließend ein Testbild mit einem Kalibrierbild vergleichen um sicherzustellen, dass alle Parameter korrekt gesetzt sind. Es kann vorkommen, dass die Kalibrierung ein bis zwei Minuten in Anspruch nimmt, sollte aber im Regelfall nach 10-20 Sekunden beendet sein. Falls die Kalibrierung nicht erfolgreich durchläuft oder für längere Zeit keinen Fortschritt erzieht, bitte in dem Absatz Fehlerbehebung nachlesen.
Nach der Kalibrierung wird das Sortierungshauptfenster geöffnet, wo Informationen zu den erkannten Teilen und die Bilder der Kameras angezeigt werden (vgl. Abbilgung 10). Außerdem nimmt die Anlage nun ihren Betriebszustand auf und die Förderbänder starten.
Element | Funktion |
1 | Zeigt das Auflichtbild des Legoteiles, welches aktuell erkannt wird |
2 | Zeigt das Durchlichtbild des Legoteiles mit den erkannten Löchern |
3 | Zeigt die ermittelten Merkmale des Legoteiles und die daraus resultierende Legoteile-ID |
4 | Zeigt ein farbiges Livebild des Förderbandes in der Seperierung |
5 | Zeigt ein Livebild der Seperierung in binärform, wo alle erkannten Teile auf dem Förderband angezeigt werden und die Ansteuerung der Luftdüsen visualisiert wird |
Mit der Taste Esc kann die Sortierung wieder beendet werden. Ein letztes Fenster bestätigt das Beenden und ermöglicht, die automatisch generierten Inventur- und Fehlteillisten zu öffnen. Für mehr Information siehe Absatz Fehlteilliste.
Teile händisch vorsortieren
Jedes Legoteil besitzt eine individuelle Legoteile-ID. Diese kann dem Deckblatt des jeweiligen Kasten entnommen werden (vgl. Abbildung 11).
Eine enthält die Informationen, welche Teile händisch sortiert werden müssen. Wird also ein kompletter Kasten sortiert, so müssen zuerst die händisch sortierten Teile rausgesucht werden und über die Bilder auf dem Deckblatt die zugehörgen ID's ermittelt werden. Danach können in dem Prozess zum Starten der Sortierung die gezählten Mengen in die Oberfläche eingetragen werden (vgl. Abbildung 9). Nach dem Beenden der Sortierung werden die händisch gezählten Mengen auf die autpmatisch gezählten Mengen addiert und man kann eine komplette Inventur-/Fehlteilliste erhalten
Inventur- und Fehlteillisten
Teach-In von neuen Teilen
Wenn die Maschine nicht zählen und sortieren, sondern neue Teile eingeteacht werden sollen, kann dies über dem Hauptbildschirm über den Button Teile einteachen angewählt werden.
Das neue Fenster fragt den Benutzer nach einer Lego-ID, diese ist auf den Deckblättern des Legokastens zu finden. Unter dieser ID werden die Merkmale des entsprechenden Legoteils gespeichert. Es ist empfehlenswert, das gleiche Legoteil mehrmals in verschiedenen Positionen anzulernen. Dafür kann die gleiche ID einfach erneut eingegeben werden, nachdem das vorherige Teil gespeichert wurde.
Nach der Eingabe der ID erscheint ein neues Fenster.
In dem Fenster ist die Aufnahme der Kamera zu sehen. In der Abbildung oben sieht man das Legoteil, das gerade angelernt werden soll. Um ein verwertbares Bild zu erhalten, muss zunächst die Enter-Taste gedrückt werden. Anschließend kann das Teil mit der Leertaste ausgewertet werden. Es erscheint folgendes neues Fenster:
In dem Fenster ist das Binärbild des Legoteils zu sehen. An dieser Stelle kann überprüft werden, ob das Teil mit den Einstellungen gut erkannt wird. Es kann bei vereinzelten Teilen dazu kommen, dass sie nicht hundertprozentig erkannt werden. Dabei ist es trotzdem möglich, dass genug Informationen gesammelt wurden, um eine eindeutige Identifzierung gewährleisten zu können. Bei Unsicherheiten kann das Teil über die Sortierfunktion getestet werden und im Einzelfall über die Verwertbarkeit entschieden werden. Sollte das Legoteil nicht sicher erkannt werden, kann es vorsortiert und die Anzahl per Hand eingetragen werden.
Nachdem das Teil mit der Leertaste ausgewertet wurde, wird es in der SQL-Datenbank gespeichert und kann sofort erkannt werden, vorausgesetzt, dass ausreichend Positionen angelernt wurden.
System beenden
Wenn der Vorgang "Teile sortieren" aktiv ist kann über die esc Taste die Maschine gestoppt werden. Für alle anderen Systemzustände gibt es den "Beenden" button.
Nach dem Drücken des ESC Buttons zum Abbruch muss das Programm im Moment gegebenenfalls bei einem neuen Start einmal mit ctrl + c unterbrochen und erneut gestartet werden, da sonst die Arduino-Ansteuerung und damit die Kamerakalibrierung fehlschlägt.
Teach-In von neuen Sets
Neue Sets können über die Funktion "Baukasten bearbeiten" in dem Haupt-GUI hinzugefügt werden.
In dem Feld "Baukasten-ID" wird die neue Set-ID eingegeben. Im nächsten Feld "Anzahl der Teile im Baukasten" wird die Anzahl der benötigten IDs eingetragen. Mit Drücken des Buttons "Speichern & weiter" wird eine entsprechende Anzahl an Zeilen zur Verfügung gestellt, in die dann die Merkmale eingetragen werden können. Eine Änderung ist noch möglich, dazu einfach erneut den Button "Speichern & weiter", der jetzt seinen Namen geändert hat.
In dem Berich Datenbank pflegen kann entweder die aktuelle Datenbank über den Knopf "Datenbank abspeichern" exportiert und somit lokal abgespeichert oder über den Knopf "Datenbank laden" eine lokal gespeicherte Datenbank importiert und in den MySQL Server eingefügt werden.
System beenden
Wenn der Vorgang "Teile sortieren" aktiv ist kann über die esc Taste die Maschine gestoppt werden. Für alle anderen Systemzustände gibt es den "Beenden" button.
Nach dem Drücken des ESC Buttons zum Abbruch muss das Programm im Moment gegebenenfalls bei einem neuen Start einmal mit ctrl + c unterbrochen und erneut gestartet werden, da sonst die Arduino-Ansteuerung und damit die Kamerakalibrierung fehlschlägt.
Löschen von Teilen und Sets
Das Löschen von Teilen und Sets funktioniert über das Feld "Bestehenden Baukasten bearbeiten". Dazu wird der entsprechende Baukasten ausgewählt, anschließend kann zusätzlich die ID des zu löschenden Teils markiert werden. Das Teil kann dann wahlweise nur aus dem Bausatz gelöscht werden oder komplett, also aus allen Bausätzen und aus der Merkmalsdatenbank. Wurde "Baukasten löschen" ausgewählt, wird der Baukasten mit allen Teilen gelöscht, die IDs der Teile bleiben jedoch in der Merkmalsdatenbank erhalten.
Bearbeiten von bestehenden Einträgen
Im letzten Feld können die bestehenden Einträge bearbeitet werden. Die Funktion ist zum aktuellen Zeitpunkt noch nicht implementiert, so dass der Button "Änderungen speichern" keine Auswirkung hat.
Zugriff auf die SQL-Datenbank
Die Teile, sowie Informationen über die Kästen und deren Inhalte sind in der SQL-Datenbank hinterlegt. Zugreifen kann man auf diese über das XAMPP Control Panel under dem Punkt Admin der MySQL-Zeile.
Es öffnet sich ein Fenster in Firefox. Auf der linken Seite sind die Datenbanken kasten, kastendetails und legoteileliste zu finden.
[5]
Nützliche SQL-Befehle
Die Datenbankverbindung wird gesetzt mit dem Befehl
DatenbankVerbindung = database.ODBCConnection('Lego','root','');
Der auszuführende Befehl kann als String gespeichert werden, hier in sqlquery. Der Befehl exec sendet dann den Befehl an die Datenbank und speichert den Rückgabewert in curs, der mit fetch ausgelesen wird. Mit curs.Data kann auf den Rückgabewert der SQL-Datenbank zugegriffen werden.
sqlquery = strcat('Select LegoteileID from kasten where KastenID = ', num2str(Grundset));
curs = exec(DatenbankVerbindung, sqlquery);
curs = fetch(curs);
GrundsetIDs = curs.Data;
Nützliche Befehle, um die Datenbank zu manipulieren und Werte zu erhalten:
- Eintrag aus Datenbank beziehen
SELECT 'Ausgabe Gewünschter Spaltenname' FROM 'Gewünschte Datenbank(kasten, kastendetails, legoteileliste)' WHERE 'Eingabe Gewünschte Spalte' = 'Abfrage des gewünschten Eintrags'
'Select LegoteileID from kasten where KastenID = 45544'
- Eintrag in Datenbank bearbeiten
UPDATE 'Spaltenname' SET 'Gewünschtes Set' WHERE 'Gewünschter Spaltenname'
'UPDATE legoteileliste SET kasten WHERE id=2456'
Fehler beheben
SQL Datenbank starten
Falls sich nach dem Start z.B. "Teilesortieren" das Fenster XAMPP Control Panel nicht öffnet ist der SQL Server nicht betriebsbereit.
In diesem Fall muss das Programm "XAMPP" über die Windows-Startleiste gestartet werden. Alle Einstellungen müssen wie in der Abbildung _ vorgenommen werden.
Kamerabilder vertauscht
Falls die Kamerabilder der Vorsortierung und der Bilderkennungsbox vertauscht sind können die KameraIDs in folgenden Dateien neu zugewiesen werden:
KameraKalibrierungBild.m Zeile 41 KameraKalibrierungSep.m Zeile 31
Kommunikationsproblem mit dem Arduino
Falls ein Kommunikationsfehler mit dem Arduino auftritt:
ComPort in folgenden Dateien ändern: InitialisierungKamerasArduino.m Zeile 33 Port = 'COM3'; ManuellerStopp.m Zeile 19 Port = 'COM3';
System neu aufsetzen
In dem Fall, dass das System neu aufgestzt werden muss wurde folgende Anleitung erstellt:
D:\SVN\Sortiermaschine\Dokumentation\33_Datenbank\Datenbank mit Matlab verbinden.docx