Skip to content

Tutorial 3 - Pick & Place

Blender Logo PLC-Lab 3D Studio Logo

Einfache Pick&Place Anlage in verschiedenen Ansichten 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.

Pick&Place Anlage

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
Pick&Place Anlage (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.

Einstellungen des Transportbandes

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:

  • MoveForwardQ1
  • SpeedDefault10

Transportband 2

Stellen Sie nun das 2. Transportband ein.

  • Axis → gleiche Einstellung wie beim 1. Transportband
  • MoveBackwardQ2
  • SpeedDefault16

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.

Die Einstellungen des Creators

  • CreateNextItem1
  • MaxNumberOfChilds5
  • AutoDestroyJa
  • CreateAlwaysJa
  • PauseInSecondsAfterCreate5

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:

Die Einstellungen der X-Achse

  • Axis → siehe Achs-Visualisierung auf dem 3D-Objekt.
  • ToMaxM1_0
  • ToMinM1_1
  • IsAtMaxB1_0
  • IsAtMinB1_1
  • DurationInSeconds0.5
  • StrokeLength70 (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:

Die Einstellungen der Y-Achse

  • Axis → siehe Achs-Visualisierung auf dem 3D-Objekt.
  • ToMaxM2_0
  • ToMinM2_1
  • IsAtMaxB2_0
  • IsAtMinB2_1
  • DurationInSeconds0.5
  • StrokeLength23 (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:

Die Einstellungen des Licht Sensors

  • Axis → siehe Achs-Visualisierung auf dem 3D-Objekt.
  • BoolValueB0
  • 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:

Die Einstellungen des Magneten

  • OnOffQ3

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?