Twincat 3 CiA402 / DS402 Antrieb refenzieren

Donny

Level-2
Beiträge
13
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

Ich arbeite aktuell an einem Projekt mit Twincat 3 4024.35 und SEW Antrieben mit CiA402/DS402 Profil und nutze die mc2_tc2 Bibliothek zur Achansteuerung.

grafik1.png

Soweit kann ich alle meine gewünschten Funktionen umsetzen, nur beim Referenzieren der Achse habe ich noch ein Problem, bei dem ich nicht weiter komme.
Ich möchte aktuell sowohl das lokale Homing im Frequenzumrichter, als auch das Referenzieren der NC-Achse ausführen, da der Antrieb über einen Absolutwertgeber verfügt.
Die NC-Achse lässt sich problemlos durchführen, nur die lokale Referenzfahrt im Frequenzumrichter möchte nicht starten.

Ich versetze die Achse über einen Write Operationmode Befehlmit dem Wert "DriveOperationMode_DriveBasedHoming dezimal: 38" in den Zustand homing dezimal 6.
Der Umrichter meldet daraufhin homing mode zurück, was er ebenfalls in SEW Engineering Software Movisuite ebenfalls meldet.
grafik2.png

Als Referenzfahrttyp sende ich den Wert 37 auf dem PD "homing method" für ein "homing on current position", welches ebenfalls erfolgreich vom Frequenzumrichter in der SEW Software angezeigt wird.

Nun fehlt nur noch der Befehl, das "homing" tatsächlich auch zu starten.
In der Dokumentation von SEW steht, dass die Referenzfahrt nicht mehr gesondert gestartet werden muss, leider ist dies nicht der Fall.
Auch ein Freigeben über MC_Power ändert nichts.
grafik4.png

Laut Aufbau des Steuerwortes zwischen NC-Achse und Frequenzumrichter muss ich wohl das Bit 4 beschreiben.

Weiß jemand, wie man dies realisiert?

Das Beschreiben des Objekts "ControlDWord" Axisref-Struktur mit 0x39
(Bit 0-2 Freigaben + Bit 5 HomingSensor) hat leider keine Wirkung auf das tatsächlich zur Achse geschickte PD.
grafik3.png

Über Rückmeldung würde ich mich seh freuen.
 

Anhänge

  • 1685090468625.png
    1685090468625.png
    209,2 KB · Aufrufe: 3
Ich glaube, Du schießt über das Ziel weit hinaus.
Wenn Du einen Absolutgeber hast, warum willst Du referenzieren? Reichte der Weg des Absolutgebers nicht für die gesamte Strecke? Dann müsstest Du so verfahren.
Wenn der Absolutgeber aber für die gesamte Strecke reicht, dann braucht Du nichts referenzieren. Die Position passt Du entweder im Umrichter mit einem Offset an, oder wenn das nicht geht, trägst Du den Offset in den Encodereinstellungen in den NC ein. Fertig.

Warum willst Du überhaupt die Position des Umrichtes mit der NC-Achse synchronisieren? Lass den Umrichter quasseln, was der will, die Position der NC-Achse reicht in der Regel völlig aus. Übrigens: Synchronisiert wird einmal beim Start, plus Encoderoffset.

In den Prozessabbild zwischen NC-Achse und Umrichter solltest Du nix schreiben, das machen die selbst untereinander aus.
 
Hallo @asci25 ,

Das kann durchaus sein, dass ich über das Ziel hinaus schieße.

Grundsätzlich möchte ich eigentlich nur, dass der Bediener im Fall einer Anlagenwartung die Antrieb über die Bedienoberfläche neu referenzieren kann.
Ansonsten soll die Anlage mit dem letzten gültigen Referenzoffset aufwachen, welches ihr bei der letzten Referenzierung übergeben wurde.

Aktueller Istzustand:

Ich referenziere die NC-Achse in meinem Programm mit folgendem Aufruf: (Beispieloffset 61mm)grafik11.jpg
Der Antrieb meldet referenziert + Istposition 61 mm.
Zudem ist in der Konfiguration NC-Achse/Enc ein passender Offset (orangene Schrift) hineingeschrieben worden.
grafik12.jpg

Schalte ich die Anlage aus und wieder ein, so ist die NC-Achse nicht mehr referenziert.
Die Istposition entspricht dem Rohwert des Frequenzumrichters und der zuvor gemeldete Online Wert für den Positionsoffset ist 0.

Sollzustand:

Ich referenziere die NC-Achse in meinem Programm.
Die NC-Achse meldet mir referenziert und die Istposition springt auf den vorgegebenen Wert.

Nach Aus- und Wiedereinschalten ist die Achse immer noch referenziert.
Die Istposition ist weiterhin der zuvor vorgegebene Wert bzw. der vorgegebene Positionsoffset ist immer noch gültig.

Ändern der Einstellung NC-Achse/Enc/Referenz System:

Egal welche Einstellung ich im Bereich NC-Achse/Enc vornehme, das Verhalten ist immer gleich.
Nach einem Anlagenstart ist die NC-Achse nicht referenziert und tunnelt 1:1 den Rohwert des Gebers (natürlich skaliert, aber mit Referenzoffset = 0) durch.
grafik10.png
Habe die Einstellungen "Absolute", "Absolute Multiturn" und "Absolute Singleturn" durchprobiert, es ändert am Verhalten nichts.

Hardware:

Es handelt sich um SEW Servoantriebe mit einem AK1H - laut meiner Googlesuche handelt es sich um Hiperface Absolutwertgeber Multiturn.
Da der Antrieb sich seine Position ausfallsicher merkt, scheint diese Angabe also zu passen.
 
Du kannst den Online-Encoderoffset, den orangen Wert, in der SPS mit dem MC_ReadParameter (Tc2_Mc2 / ParameterNumber:=MC_AxisParameter.AxisEncoderOffset) lesen und mit dem MC_WriteParameterPersistent dann in die linke Spalte (Offline aber als Start-Parameter, ist nicht sichtbar im Projekt) schreiben. Du musst aber bedenken, dass, wenn du die Konfiguration aktivierst, immer der alte Wert aus dem Projekt den Online-Wert überschreibt.

Was der SEW-Umrichter macht, brauchst Du dabei nicht zu beachten.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
@asci25: Habe deinen Vorschlag im Programm umgesetzt und das, was ich sehe, gefällt mir.
Mir war nicht bewusst, dass ich mit diesem Vorgehen die NC-Achse auslesen und beschreiben kann.
Damit funktioniert mein Referenzieren wie gewünscht.
Ich bedanke mich recht herzlich für deinen Ratschlag und hoffe die Beiträge helfen zukünftigen Lesern ebenfalls.
 
Zurück
Oben