FC_DrvEncSetPosition

 

FC_DrvEncSetPosition - Allgemeine Informationen

Übersicht

Typ

Funktion

Verfügbar ab

SystemInterface_1.32.6.0

Verwendet von:

oPDL_FB_SetDriveEncoder

Versionen:

Aktuelle Version

Aufgabe

Absolute Geberposition dauerhaft ändern.

Beschreibung

Durch diese Funktion wird die Geberposition auf einen vorgegebenen absoluten Positionswert gesetzt. Das Koordinatensystem des Gebers wird verschoben. Hierzu ist ein Schreibvorgang in den nicht flüchtigen Speicher des Gebers erforderlich. Für den Schreibzugriff werden einige Millisekunden benötigt. Mit der Funktion FC_DrvEncPositionGetState() kann festgestellt werden, ob der Schreibvorgang abgeschlossen ist.

Je nach Objektparameter EncoderMode (falls verfügbar) wird die neue Position auf den Motorgeber (EncoderMode = "Verwenden Sie nur den Motorgeber") oder den Maschinengeber (EncoderMode = "Der Maschinengeber wird nur für die Positionssteuerung verwendet.") gesetzt.

Die Position i_lrPosition muss bestimmte Kriterien erfüllen. Es wird zwischen Singleturn- und Multiturngebern unterschieden. Die Singleturngeber erkennen eine Auflösung innerhalb einer Umdrehung. Multiturngeber erweitern die Positionsgrenzen und besitzen einen ansprechbaren Bereich zwischen 0 und 4096 Umdrehungen. Innerhalb dieser definierten Grenzen (absoluter Verfahrbereich des Gebers) kann die Position gesetzt werden.

Nachden ein Antrieb mit Spannung versorgt oder zurückgesetzt wurde, wird der absolute Wert des SinCos-Gebers gelesen. Dieser Wert bildet die Istposition. Wird der Positionsbereich unter- oder überschritten, tritt für den Absolutwert des Gebers ein Positionssprung bis zum entsprechenden Bereich auf (1 Umdrehung oder 4096 Umdrehungen). Dieser Positionssprung tritt im Objektparameter MechPosition nicht auf, wenn der Antrieb bewegt wird, da der absolute Geberwert erst nach dem Einschalten oder Zurücksetzen ausgewertet wird. Danach wird der Antrieb inkrementell verfahren.

In Bezug auf virtuelle Achsen hat diese Funktion keine Auswirkungen.

Ab Version V1.50.1.x dauert der Aufruf der Funktion länger, da nun das vollständige Schreiben des neuen Werts für die Geberposition ins Motortypenschild abgewartet wird. Beim Lesen des Status mit der Funktion FC_DrvEncPositionGetState tritt deshalb der Wert 1 (= Motortypenschild wird gerade programmiert) nicht mehr auf. Der Rückgabewert gibt aber nach wie vor an, ob die Programmierung erfolgreich war.

Die Laufzeit der Funktion kann mehrere hundert Millisekunden betragen.

Schnittstelle

Eingang

Datentyp

Beschreibung

i_stAxisID

ST_LogicalAddress

Logische Adresse des Antriebs

i_lrPosition

LREAL

Geberposition

Rückgabewert

Datentyp

Beschreibung

DINT

0: Fehlerfreier Betrieb.

-1: i_stAxisID falsch.

-2: Ungültige Position.

-3: Achse ist virtuell.

-4: Achse ist deaktiviert.

Beispiele

Setzen Sie die Geberposition auf 360 Einheiten.

FeedConstant = 360 Einheiten/Umdrehung

EncoderType = 16#22; d. h. SinCos-Singleturn

Die Ergebnisse in einer EncoderPosition von 0 ... 360 Einheiten.

EncoderPosition 360 entspricht EncoderPosition von 0. Die Auflösung des Gebers ist 219 Stufen pro Umdrehung. Dies führt zu einer maximalen EncoderPosition von:

FeedConstant * (Anzahl der Umdrehungen – 2-19)

Anzahl der Umdrehungen:

oSingleturn = 1

oMultiturn = 4096

Gehen Sie in diesem Fall wie folgt vor:

360 Einheiten/Umdrehung * (1 Umdrehung - 2-19 Umdrehungen) = 359.9993134 Einheiten.

 FC_DrvEncSetPosition(i_stAxisID:=Axis.LogAdr, i_lrPosition:=0);