Tutorial 3 - Pick & Place¶
Bild: Einfache Pick&Place Anlage in verschiedenen Ansichten
Information
In diesem Tutorial sollen Sie eine Pick&Place-Vorrichtung mit Blender erstellen. Die Anlage besteht nur aus einfachen Quader-Objekten. Die Namen bzw. die Bezeichnung der 3D-Objekte werden mit Skill-Namen ergänzt. Die Pick&Place-Anlage: Würfel werden von einem Transportband bis zum Greifer transportiert. Der Greifer fährt nach unten, der Magnet wird eingeschaltet und fährt wieder nach oben. Der Greifer fährt nach vorne zum 2. Transportband und legt dort den Würfel ab (Nach unten fahren und Magnet ausschalten, nach oben fahren und zurück fahren.) Das 2. Transportband transportiert den Würfel zur Ablagestelle. Die Datei wird in PLC-Lab 3D Studio importiert und konfiguriert. Im Anschluss erfolgt eine Simulation der Vorrichtung mit einem kleinen C# Skript.
Video: Pick&Place¶
Funktionsweise der Anlage im Video:
Dieses Tutorial als Video¶
Schauen Sie sich dieses Video aus, wenn Sie noch keine Erfahrung mit Blender haben:
Beschreibung der 3D-Szene¶
Im Bild unten links sehen Sie den Projektbaum mit den Objekten und rechts die 3D-Szene. Im Projektbaum sind die Eltern-Kind Beziehungen sichtbar. Die Pick&Place Vorrichtung besteht aus 2 Achsen (X,Y). Die Y-Achse (vertikale Achse) muss ein Kindobjekt der X-Achse (Horizontal) sein. Dies bedeutet, wenn sich die X-Achse nach vorne Richtung Transportband bewegt, bewegt sich die Y-Achse automatisch mit: Verkettete Bewegung.
| Nr | Objekt | Beschreibung | Abmessungen in mm |
|---|---|---|---|
| 1 | Conveyor{Conveyor}{Collider}{Y} | Transportband | 60x600x10 |
| 2 | Creator-Cube{Creator} | Erzeugt Würfel | 40x40x40 |
| 3 | Child-Cube{Player}{Collider} | Vorlage-Würfel | 40x40x40 |
| 1 | Conveyor{Conveyor}.003{Collider}{Y} | Transportband | 60x600x10 |
| 4 | Pick&Place-Base{Collider} | 70x70x40 | |
| 5 | Pick&Place-1{Collider} | 40x40x120 | |
| 6 | Pick&Place-2 X-Achse {Collider}M1{Drive-2-Point}{-z} | Bewegende X-Achse | 20x20x220 |
| 7 | Pick&Place-3 Y-Achse{Collider}M2{Drive-2-Point}{-z} | Bewegende Y-Achse | 10x10x65 |
| 8 | Pick&Place-4{Collider} | 20x20x6 | |
| 9 | Pick&Place-Magnet{Magnet} | Schaltbarer Magnet | 10x10x1 |
| 10 | Light-Sensor{LightBarrier} {-z} | Lichtsensor zur Erkennung eines Werkstücks an der Pick-Position. Wichtig: Da der Ursprung des Lichtstrahls mit dem Ursprung (Pivot-Point) des 3D-Objekts übereinstimmt, muss der Ursprung des 3D-Objekts an den Punkt verschoben werden, an dem der Lichtstrahl beginnen soll. | 1x1x50 |
| 11 | Ground{Collider}{sm-hide} | Boden | ca. 1000x1000x10 |
Die Objektnamen beinhalten folgende Skills, die beim Laden der Dateien in PLC-Lab 3D Studio hinzugefügt werden:
| Skill | Beschreibung | Bemerkung |
|---|---|---|
| {Collider} | 3D-Objekt soll ein Festkörper sein | Muss nicht mehr konfiguriert werden. |
| {Conveyor} | 3D-Objekt ist ein Transportband | Muss in PLC-Lab 3D Studio konfiguriert werden. |
| {Magnet} | 3D-Objekt ist ein Magnet | Muss in PLC-Lab 3D Studio konfiguriert werden. |
| {LightBarrier} | 3D-Objekt ist eine Lichtschranke/Licht-Sensor | Muss in PLC-Lab 3D Studio konfiguriert werden. |
| {Drive-2-Point} | 3D-Objekt soll sich linear bewegen, 2 Endpunkte | Muss in PLC-Lab 3D Studio konfiguriert werden. |
Der Greifer im Detail mit dem Magnet:
| Bild | Beschreibung |
|---|---|
![]() |
(1) Y-Achse (2) Magnet (3) Sensor (4) Transportband |
Erzeugung der 3D-Objekte¶
Erzeugen Sie zunächst alle notwendigen Quader. Sie sollten auch die Farben (Appearance) der Objekte festlegen. Die Abmaße finden Sie in der obigen Tabelle. Fügen Sie die Skills hinzu, um das Verhalten der 3D-Objekte zu bestimmen: Geben Sie die Skillnamen inkl. geschweifter Klammerung bei jedem 3D-Objekt an, damit die Skills erkannt werden. Der Skillname kann an beliebiger Stelle im Objektnamen stehen.
Texturierung
Fügen Sie den Namen der Farben bzw. des Materials "Metal" oder "Alu" hinzu, dann kann PLC-Lab 3D Studio das Erscheinungsbild entsprechend anpassen. Dieser String kann an beliebiger Stelle im Materialnamen stehen. Mehr zur Texturierung lesen Sie hier.
Hinweis
Referenzachse: Die Angaben {Y} oder {-z} sind keine Skills sondern eine Voreinstellung für den angegeben Skill. Mit {Y} wird beispielsweise die Bezugsachse voreingestellt auf die Y-Achse. Groß/Kleinschreibung wird ignoriert. Im Stop-Modus zeigt der PLC-Lab 3D Player die lokale Ausrichtung an, sofern der Skill eine Referenzachse hat – erkennbar an den Achsen X (rot), Y (grün) und Z (blau). So lässt sich die Einstellung einfach überprüfen.
Tipp
Häufig kommt es vor, dass man die 3D-Szene ändern und nochmals exportieren muss. PLC-Lab 3D Studio überwacht die vorhandene Exportdatei. Wenn diese sich ändert erscheint im Studio links neben den Kamerapositionen der Button Reload. Damit können Sie die aktualisierte Datei erneut laden. Der Run-Modus darf hierbei nicht aktiv sein.
Anordnung der 3D-Objekte¶
Platzieren Sie die einzelnen 3D-Objekte so, dass eine Anordnung zustande kommt, wie es in den Bildern zu sehen ist. Die genauen Abstände sind nicht wichtig.
Hierarchie der 3D-Objekte¶
Folgende Objekte benötigen eine Eltern-Kind Beziehung, damit die 3D-Simulation korrekt funktioniert:
- Der Vorlagewürfel (3) muss ein Kind-Objekt des Creators (2) sein
- Das Pick&Place Objekt muss hierarchisch aufgebaut sein: Die Objekte 8,9,10 müssen Kind-Objekte von (7) sein. (7) muss Kindobjekt von (6) sein. (6) muss Kind-Objekt von (5) sein. Und (5) muss Kindobjekt von (4) von. Dieser Zusammenhang ist in der Baumstruktur oben im Bild zu erkennen.
Projektordner erzeugen¶
Erzeugen Sie mit dem Windows-Explorer einen neuen Ordner mit einem beliebigen Namen. Hier werden alle Dateien für die 3D-Simulation abgelegt. Dies ist der Projektordner für dieses Beispiel.
Symbolikdatei¶
Erzeugen Sie eine Datei mit dem Namen station0.symbols.csv. Hier sind alle Variablen/Symbole entalten, die für die Simulation notwendig sind.
Der Inhalt der Datei:
I0.0;B0;BOOL;Cube is at pick position
I0.1;B1_0;BOOL;M1 is on max Position
I0.2;B1_1;BOOL;M1 is on min Position
I0.3;B2_0;BOOL;M2 is on max Position
I0.4;B2_1;BOOL;M2 is on min Position
Q0.0;M1_0;BOOL;M1 to max Position
Q0.1;M1_1;BOOL;M1 to min Position
Q0.2;M2_0;BOOL;M2 to max Position
Q0.3;M2_1;BOOL;M2 to min Position
Q0.4;Q1;BOOL;Conveyor 1 on
Q0.5;Q2;BOOL;Conveyor 2 on
Q0.6;Q3;BOOL;Magnet on
Speichern Sie die Datei ab.
Export der 3D Szene mit Blender¶
Exportieren Sie die 3D-Szene in Blender als FBX Datei. Bei den Export-Einstellungen ändern Sie die Einstellung Apply Scalings auf FBX Units Scale. Stellen Sie sicher, dass alle 3D-Objekte die Skalierung 1 aufweisen, und kopieren Sie die Datei in den neuen Ordner.
Import in PLC-Lab 3D Studio¶
Mit dem Button CAD oben links können Sie die FBX Datei mit PLC-Lab 3D Studio importieren. Nach dem Import stellen Sie die Kamera-Position so ein, dass Sie die Anlage gut überblicken können. Speichern Sie die Kamera-Position mit Shift + 1 auf Slot 1 ab. Sie können diese Kamera-Position wieder mit 1 abrufen.
Skill-Konfiguration¶
Info
Bei bestimmten Objekten muss die Referenzachse festgelegt werden. In diesen Fällen wird ein sogenannter Gizmo eingeblendet, der die lokalen Achsen X, Y und Z visualisiert. Anhand der farbigen Pfeile können Sie die jeweilige Achsrichtung leicht erkennen: Blau steht für die Z-Achse, Rot für die X-Achse und Grün für die Y-Achse. In der Auswahl stehen Ihnen auch die entsprechenden negativen Achsrichtungen zur Verfügung: Xn, Yn und Zn.
Bild: Achs-Ausrichtungen der Objekte. Bitte beachten Sie, dass der Würfel bei der Pick&Place Station noch entfernt werden muss, sonst wird der Sensor sofort betätigt und das Band stoppt. Der Würfel diente dazu, die Hub-Länge der Y-Achse besser einstellen zu können.
Achsausrichtungen der 3D-Objekte im Bild:
Einige Objekte haben eine Bezugsachse. Die korrekte Bezugsachse muss in den Skill-Einstellungen eingetragen werden. Beispiele:
| Nr | Beschreibung |
|---|---|
| 1 | X-Achse: Z-Ausrichtung (blauer Pfeil) |
| 2 | Y-Achse: negative Z-Ausrichtung (blauer Pfeil) |
| 3 | Licht-Sensor: negative Z-Ausrichtung (blauer Pfeil) |
| 4 | Band 1: Transportrichtung: negative Y-Ausrichtung (grüner Pfeil) |
| 5 | Band 2: Transportrichtung: negative Y-Ausrichtung (grüner Pfeil) |
Transportband 1¶
Bewegen Sie den Mauszeiger bei gedrückter Strg Taste über das Transportband, welches unter dem Greifer liegt. Wenn die Umrandung erscheint, klicken mit der linken Maustaste darauf. Daraufhin öffnen sich die Einstellungen des ersten Skills des 3D-Objektes.
Im Skill-Manager (1) wird das 3D-Objekt gefiltert (2), sodass nur dieses in der Liste steht. Bei (3) werden die vorhandenen Skills angezeigt. Das Transportband besitzt die Skills {Conveyor} und {Collider}. Nach dem Anklicken mit der Maus wird in den Eigenschaften (4) immer der 1. Skill des 3D-Objekts angezeigt. In diesem Fall ist der erste Skill {Conveyor}. Die Eigenschaften werden bei (4) angezeigt. Die Überschrift bei (4) ist ConveyorBeltProperties. So lässt sich kontrollieren, ob das Eigenschaftsfenster die erwarteten Skill-Eigenschaften anzeigt.
Test des Transportbandes: Die wichtigste Eigenschaft des Transportbandes ist die Bezugsachse. In (5) ist die Y-Achse voreingestellt. Jetzt testen wir, ob diese Einstellung korrekt ist: Stellen Sie das Device InternDevice (Auswahl rechts neben Run Button) ein und schalten Sie die Simulation auf Run. Ändern Sie die Einstellung MoveForward auf 1, damit das Transportband ständig eingeschaltet ist. Da das Band keine Textur hat, sehen wir nicht, ob das Transportband läuft. Klicken Sie auf den Vorlagewürfel, um einen Würfel auf das Band zu legen. Der Würfel sollte nun in irgendeine Richtung transportiert werden. Ändern Sie die Achseinstellung Axis solange, bis der Würfel in Richtung der Pick&Place Vorrichtung transportiert wird.
Weitere Einstellungen:
- MoveForward → Q1
- SpeedDefault → 10
Transportband 2¶
Stellen Sie nun das 2. Transportband ein.
- Axis → gleiche Einstellung wie beim 1. Transportband
- MoveBackward → Q2
- SpeedDefault → 16
Creator¶
Die Einstellungen des Creators (schwebender Würfel): Es sollen alle 5 Sekunden ein Würfel erzeugt und auf das Band gelegt werden. Wenn die max. Anzahl von 5 erreicht ist, dann soll der älteste Würfel entfernt werden.
- CreateNextItem → 1
- MaxNumberOfChilds → 5
- AutoDestroy → Ja
- CreateAlways → Ja
- PauseInSecondsAfterCreate → 5
Antrieb X-Achse¶
Beenden Sie den Run Modus, wenn er noch aktiv ist.
Die X-Achse bewegt den Greifer in Richtung von Band1 und Band2. Die Einstellungen des Antriebs für die X-Achse:
- Axis → siehe Achs-Visualisierung auf dem 3D-Objekt.
- ToMax → M1_0
- ToMin → M1_1
- IsAtMax → B1_0
- IsAtMin → B1_1
- DurationInSeconds → 0.5
- StrokeLength → 70 (Geben Sie hier den Wert in mm ein, der zu Ihrem Aufbau passend ist: die Y-Achse sollte dann mittig über dem 2. Band stehen.)
Tipp: Demomodus
Nachdem Sie die Adressen eingegeben haben, schalten Sie in den Einstellungen den Demomodus ein. Der Antrieb fährt dann immer wieder in die Min- und Max-Position. Sie können dann die Einstellungen schnell überprüfen.
Antrieb Y-Achse¶
Die Y-Achse bewegt den Greifer nach oben und nach unten. Die Einstellungen des Antriebs für die Y-Achse:
- Axis → siehe Achs-Visualisierung auf dem 3D-Objekt.
- ToMax → M2_0
- ToMin → M2_1
- IsAtMax → B2_0
- IsAtMin → B2_1
- DurationInSeconds → 0.5
- StrokeLength → 23 (Geben Sie hier den Wert in mm an, der zu Ihrem Aufbau passend ist. Das Magnet-Objekt soll in den Würfel eintauchen und das Ende der Y-Achse sollte auf dem Würfel aufliegen.)
Licht Sensor¶
Der Licht-Sensor liefert ein Bool Signal, wenn sich ein Würfel unter dem Greifer befindet. Die Einstellungen des Licht-Sensors:
- Axis → siehe Achs-Visualisierung auf dem 3D-Objekt.
- BoolValue → B0
- IsNC → Ausschalten
Nochmaliger Hinweis: Der Ursprung (Pivot-Point) des 3D-Objekts für den Licht-Sensor muss an den Punkt verschoben werden, an dem der Lichtstrahl beginnen soll. Dies ist wichtig, da der Ursprung des Lichtstrahls mit dem Ursprung des 3D-Objekts übereinstimmt.
Magnet (greifen)¶
Der ein- und ausschaltbare Magnet kann ein Würfel festhalten. Die Einstellungen des Magneten:
- OnOff → Q3
Das Steuerungsprogramm¶
In diesem Abschnitt wird das mechatronische Modell mit einem C#-Skript gesteuert. Alternativ können Sie auch ein SPS-Programm dafür erstellen.
Stellen Sie das Device CSharpScript (1) ein und drücken Sie rechts daneben den Button mit dem Schraubenschlüssel (2). Die Einstellungen (3) zu diesem Device werden angezeigt.
Prüfen Sie die Einstellungen:
| Einstellung | Wert | Kommentar |
|---|---|---|
| CSharpFile | Program.cs | Filename des C# Moduls mit der C#-Klasse. |
| Subfolder | MySkript | Dieses Verzeichnis soll für das C#-Projekt erzeugt werden. |
| ExecutingIntervalMS | 10 | Aufrufintervall in Millisekunden für das C#-Skript |
Der Editor Microsoft Code sollte bereits installiert sein und in der Einstellung PathCodeEditor (4) sollte der Pfad zum Editor eingestellt sein. Wobei dies keine Voraussetzung für die nachfolgende Simulation ist. Installation des Editors 'Microsoft Code'.
Drücken Sie den Button Erzeuge C#-Skript. (Im Bild ist der Button mit Öffne C# Projekt beschriftet, da das C#-Skript hier schon vorhanden war). Ein leeres C# Projekt inklusive den passenden Eingangs- und Ausgangsvariablen wird daraufhin angelegt. Entfernen Sie die vorhandene Funktion void MainPrg() in der Datei Program.cs komplett und fügen Sie stattdessen den fertigen Code ein. Speichern Sie die Datei Program.cs.
Nach Betätigen des Run-Buttons sollte die Anlage korrekt ablaufen. Es funktioniert nicht? Dann prüfen Sie diese Punkte..
Fertiger Code der Pick&Place Station:
int StepNr=0;
void MainPrg()
{
ConsoleString = "StepNr: " + StepNr.ToString();
if (StepNr==0){
Q1=true;
}
Q2=Q1;
if (StepNr==0 && B0){//Würfel erkannt
StepNr++;
Q1=false;
}
if (StepNr==1){
M2_0=true;//Y-Achse nach unten fahren
StepNr++;
}
if (StepNr==2 && B2_0){//Y-Achse ist unten
M2_0=false;
Q3=true;//magnet einschalten
StepNr++;
}
if (StepNr==3){
M2_1=true;//Y-Achse nach oben fahren
StepNr++;
}
if (StepNr==4 && B2_1){//Y-Achse ist oben
M2_1=false;
StepNr++;
}
if (StepNr==5){
M1_0=true;//X-Achse ausfahren
StepNr++;
}
if (StepNr==6 && B1_0){//X-Achse ist ausgefahren
M1_0=false;
M2_0=true;//Y-Achse nach unten fahren
StepNr++;
}
if (StepNr==7 && B2_0){//Y-Achse ist ausgefahren
M2_0=false;
M2_1=true;//Y-Achse nach oben fahren
Q3=false;//magnet aus
StepNr++;
}
if (StepNr==8 && B2_1){//Y-Achse ist eingefahren
M2_1=false;
M1_1=true;//X-Achse zur Ausgangspos. fahren
StepNr++;
}
if (StepNr==9 && B1_1){//X-Achse ist eingefahren
M1_1=false;
StepNr=0;//Vorgang beginnt von Neuem
}
}
Trouble-Shooting¶
Nach Betätigen des Run-Buttons sollte die Anlage korrekt ablaufen. In vielen Fällen funktioniert dies jedoch nicht sofort. Bitte prüfen Sie in diesem Fall folgende Punkte:
- Objektnamen und Skills
Verwenden Sie die vorgegebenen Objektnamen? Copy-Paste-Fehler? Eine Übersicht finden Sie in der Tabelle am Seitenanfang. - Skill- und Achs-Parameter
Stimmen alle Einstellungen Ihrer Skills und die Konfiguration der Achsen? - Würfel am Sensor?
Befindet sich noch ein Würfel direkt am Sensor der Pick-&-Place-Station? Entfernen Sie diesen mit Blender, bevor Sie die Simulation starten. - Licht-Sensor
Achten Sie darauf, dass der Licht-Sensor kein anderes Objekt berührt. Sonst liefert er ein Signal obwohl sich kein Würfel an der Pickup-Position befindet. - Parent-Child-Beziehungen
Sind die Parent-Child-Verknüpfungen für X-, Y-Achse und dem Creator/Child korrekt eingerichtet?









