Conveyor Tracking

Piit278

Level-2
Beiträge
140
Reaktionspunkte
17
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Tag,

Ich bin momentan dabei einen Delta Picker zu programmieren welcher ein Bauteil von einer Linearachse während der Bewegung vom Werkstückträger nimmt.
Die Linearachse ist schon vorhanden jedoch der Delta Picker wird noch mit dem KSC Tool von Siemens mit virtuellen Achsen in der Simotion simuliert.

Die verwendete Steuerung ist eine Simotion P320-4 V4.4 mit CU320-2PN und Sinamics S120 Leistungsteilen.

Ablauf:

Ein Bauteil wird bearbeitet am "Nullpunkt", siehe Schema.
An diesem ist die aktuelle Achsposition 0.
Das OCS habe Ich für diesen Punkt definiert, dieser ist bei X=300; Y=-765;Z=-1000 und Yaw =90°.
Wenn Ich über die Bahnsteuertafel meinen Virtuellen Delta Picker auf die Position X=300; Y=-765; Z= -1000 bewege bin Ich genau am Linearnullpunkt.
Die nötigen Verschaltungen der Achsen in Simotion Scout wurde ebenfalls schon erledigt.
Nach der Bearbeitung fährt die Linearachse zum anderen Ende (2000mm) um dort wieder neu bestückt zu werden.
Nach der Bearbeitung und während des verfahrens zur Neubestückung soll mit Hilfe des Delta-Pickers das Bauteil vom Werkstückträger genommen werden.

Momentan sieht das Programm folgendermaßen aus.

Nach der Allgemeinen Achsfreigabe usw. definiere Ich das OCS.

Code:
RetDint :=_setPathObjectOcs(
        pathObject := Delta_3D
        ,ocsNumber := 1
         ,trackingIn := Linear_Axis
         ,ocsSettingType := DIRECT
         ,x := 300.0
         ,y := -765.0
         ,z := -1000.0
        // ,roll := 0.0
        // ,pitch := 0.0
         ,yaw := 90
         ,nextCommand := WHEN_COMMAND_DONE
        // ,commandId := (0,0)

Danach warte Ich darauf bis die Achse mit dem WT zur Abholstation fährt.
Wenn Ich diesen Befehl aufrufe wird der Picker auf die Linearachse Synchronisiert, und der Picker fährt mit der Achse mit.
Jedoch habe Ich noch einen Versatz zwischen meiner Picker Position und der Linearachse.


Code:
RetDint :=_enablePathObjectTrackingSuperimposed(
        pathObject := Delta_3D
        ,ocsNumber := 1
         ,synchronizingMode := ON_POSITION
         ,position := 1000.0
         ,nextCommand := SYNCHRONIZED


Nachdem der befehl den Status "SYNCHRONIZED" erreicht hat folgt eine Relativbewegung im OCS zum Trägermittelpunkt.
Die X Position ist die Position welche mir anzeigt, wie weit der Picker von der Achse entfernt ist (Delta_3D.ocs[1].x.position) .
Und Z wird um 200mm nach unten gefahren.

Code:
RetDINT :=
    _movePathLinear(
        pathObject := Delta_3D
         ,pathPlane := X_Y_Z
         ,pathMode := RELATIVE
         ,x := Delta_3D.ocs[1].x.position *-1
         ,y := 0.0
         ,z := -200
         ,velocity := 1000.0
         ,nextCommand := WHEN_MOTION_DONE
         ,csType := OCS
         ,csNumber := 1
);



Nachfolgend wird dann das Bauteil aufgenommen und ausgeschleust.

Nun zu meinen Fragen,
Ist es so der richtige Weg um ein sogenanntes Conveyor Tracking zu programmieren ?
In der Simulation sieht es schon gut aus, jedoch wäre Ich für weitere Denkanstöße und Beiträge sehr dankbar.

Warum habe Ich bei dem befehl "_enablePathObjectTrackingSuperimposed" beim Aufsynchronisieren einen Versatz zwischen Deltapickerposition und Linearachsposition ?

Ist es also so, dass bei synchronizingMode := ON_POSITION der Picker wartet bis die Leitachse eine Bestimmte Position erreicht hat und ab dann wird Synchron mitgefahren ?
Und bei synchronizingMode := IMMEDIATELY wird quasi sofort Synchron mitgefahren sobald der Befehl abgesetzt wurde ?

Gibt es eine Möglichkeit ohne Verfahrbefehl mit dem Delta Picker Synchron über dem Werkstückträger zu fahren oder ist es immer so, dass Ich zuerst Synchronisieren muss und danach
einen Verfahrbefehl im OCS abgeben muss um zum WT Mittelpunkt zu fahren ?

Die Handling Advanced Bibliothek habe ich mir bereits angesehen, jedoch darf diese nicht verwendet werden.



Im Handbuch zu den Befehlen wird auf den Status folgendermaßen eingegangen:


Synchronisierstatus

Der Synchronisierstatus is SYNCHRONIZED, wenn

- keine Bewegung im BCS aktiv ist, die Geschwindigkeit der überlagernden
Aufsynchronisierbewegung gleich der Geschwindigkeit des Förderbandes ist und der durch das Synchronisieren entstandene Positionsversatz der Synchronisierbewegung wieder ausgeglichen wurde.

- eine Bewegung im BCS aktiv ist, die Geschwindigkeit der überlagernden
Aufsynchronisierbewegung gleich der Geschwindigkeit des Förderbandes ist und der durch das Synchronisieren entstandene Positionsversatz der Synchronisierbewegung wieder ausgeglichen wurde.



Mit freundlichen Grüßen
 

Anhänge

  • Schema.PNG
    Schema.PNG
    89,4 KB · Aufrufe: 44
Hallo Piit278,

Ich kenne mich nicht so gut mit Siemens, aber ich habe mit CoDeSys komplette Steuerung für Delta Roboter gemacht (Kinematik + Bahnplanner + Conveyor Tracking).
Die Idee ist die Bewegung teilen. Ein Teil ist die Bewegung zwischen 2 fixe Punkte (aktuelle Position des Roboters und die aktuelle Position des Produkts in Zeit=0). Ab diesem Moment
versucht der Roboter "aufholen" um die Geschwindigkeit und die Position des Produkts zu erreichen. Da muss man auch wissen was ist die Verspätung im System (3 oder 4 Zyklen)
um die richtige aktuelle Position zu haben.

Gruss,

leo
 
Zurück
Oben