Seite 1 von 1

Simple Frage zu Programmablauf

Verfasst: 03 Feb 2015, 16:15
von thomas004
Hallo Forum!

Auf dem Gebiet der Robo-Programmierung bin ich immer noch Laie, obwohl ich mittlerweile schon einige Robo-Modelle gebaut habe (Modelle aus Baukästen und auch selbst ausgedacht). Ich bewege mich zumeist im Level 1, und das reicht mir bislang auch völlig aus! :)

Aktuell versuche ich mich an einer kleinen Farbsortier-Anlage mit Förderband. Die Hardware steht und funktioniert auch ganz gut. Nun habe ich eine Frage zum Programmablauf:

Die Werkstücke werden aus einem Reservoir automatsich auf das Förderband transportiert. Es folgt eine Lichtschranke mit Farbsensor. Wenn der Sensor die Farbe weiß erkennt, wird das Werkstück an einer weiteren Station seitlich vom Band geschoben. Bei schwarzen Werkstücken fallen diese am Bandende einfach runter. So weit nix Besonderes ... ;)

Das Programm in Robo Pro ist streng linear von oben nach unten aufgebaut. Wenn der Sensor ein weißes Werkstück erkennt, folgt im Programm das Herunter-Schieben vom Band, erst danach springt das Programm wieder nach oben und der Sensor wird im Programm wieder abgefragt! Das Herunter-Schieben dauert aber eine Weile (1-2 Sekunden), so dass es passieren kann, dass während dieser Zeit ein Werkstück den Farbsensor passiert, ohne dass dieser die Farbe erkennt! :roll:

Ich würde das Programm nun gern so abändern, dass der Sensor quasi permanent die Farbe abfragt, ohne durch den Programmablauf zeitlich eine Pause zu machen. Wenn er die Frabe weiß erkennt, soll er quasi nur das Startsignal abgeben, das Werkstück herunter zu schieben, aber dann sofort weiter sensieren. Versteht Ihr, was ich meine?

Wie löse ich das denn möglichst einfach? Ein zweiter Programmzweig parallel zum Hauptprogramm? Oder muss ich über Unterprogramme gehen? Und wie löse ich, dass der Sensor nur das Startsignal an den zweiten Programmzweig gibt ("Jetzt das Werkstück herunter schieben!")? Welche Funktion eignet sich dafür?

Bitte bedenken: Bin Anfänger auf Level 1 ... :cry:

Danke für Eure Hilfe!

Gruß, Thomas

Re: Simple Frage zu Programmablauf

Verfasst: 03 Feb 2015, 18:06
von steffalk
Tach auch!

Eine ganz einfache Lösung wäre ja, während des Schiebens den Förderbandmotor auszuschalten, und ihn erst hinterher wieder einzuschalten.

Ansonsten hast Du ganz richtig erkannt, dass da zwei Prozesse parallel arbeiten müssten. Einer misst ständig (bei ständig laufendem Band), der andere wirft aus. Da gibt's dann zwei Aufgaben:

a) Wie bekommt der Auswurfprozess mit, dass er auswerfen soll? Das ginge über eine gemeinsam verwendete Variable, die der Messprozess z.B. auf 1 setzt ("ein Teil ist auszuwerfen"), und der Auswurfprozess wartet auf die 1, wirft aus, und setzt dann auf 0 zurück ("aktuell ist nichts auszuwerfen"). Beide Prozesse rennen ständig ein einer Schleife, um ihre Arbeit zu machen. Beide werden im Hauptprogramm gestartet.

b) ABER: Ich frage Dich: Wenn der Auswerfer gerade am Auswerfen ist und schon ein weiteres Teil hereinkommt, blockiert die Auswurfmechanik dann nicht sowieso die Messstation? Und wenn da ein auszuwerfende Teil ankommt, während der Auswurf noch läuft, spätestens dann musst Du ja doch das Band anhalten, damit die beiden Prozesse aufeinander warten können, oder?

Gruß,
Stefan

Re: Simple Frage zu Programmablauf

Verfasst: 04 Feb 2015, 12:31
von thomas004
Hallo Stefan!

Danke für Deine ausführliche Antwort!

Das Förderband halte ich zum Auswerfen bereits an! Aber zwischen Auswerfer und der Lichtschranke davor sind einige Zentimeter Platz, und es kann passieren, dass dann schon wieder ein Werkstück die Lichtschranke passiert hat und daher die Farbe nicht gemessen wird ...

Die Idee, als Verknüpfer zwischen den beiden Prozessen eine Variable zu nehmen, klingt interessant! Das werde ich mal probieren! Hatte zwar bislang noch keine Variablen in der Anwendung, aber das scheint mir machbar ...

Zur letzten Frage: Die Messstation liegt räumlich deutlich vor dem Ausschieber. Ich steuere das über eine Zeitkonstante, dass z.B. 0,7 sek nach dem Passieren des Sensors das Band stoppt und der Ausschieber aktiviert wird.

Gruß, Thomas