ConvertDcTimeToPos

ConvertDcTimeToPos 1:

Dieser Funktionsblock konvertiert eine 32 Bit Distributed Clock System Time in eine zugehörige NC Achsposition (d.h. diejenige NC Achsposition, die genau zu diesem Zeitpunkt vorgelegen hat bzw. vorliegen wird).

VAR_INPUT

VAR_INPUT
    nAxisId : UDINT;
    nSubIdx : UDINT;
    dcTime  : T_DCTIME32;(* 32 bit distributed clock time *)
END_VAR

nAxisId

ID der NC-Achse.

nSubIdx

Diese 32 Bit Eingangsgröße beinhaltet zwei verschiedene Informationen und unterteilt sich somit in zwei 16 Bit Werte:
Das LowWord (die niederwertigsten 16 Bit) beinhaltet den Sub-Index zum relativen Adressieren eines Encoder-Unterelementes an einer Achse. Der Sub-Index wird von Null an gezählt. Für den typischen Fall einer Achse mit genau einem Encoder ist der Sub-Index Null richtig.
Das HighWord (die höchstwertigen 16 Bit) beinhaltet ein Steuerwort (Bitmaske), das die Art der Positionsberechnung beeinflusst (z.B. den Inter- bzw. Extrapolationstyp). Die Bitmaske 0x0001 bedeutet, dass die Soll-Beschleunigung der Achse mit in die Berechnung einbezogen werden soll.

dcTime

32 Bit Distributed Clock System Time (T_DCTIME32). Diese Eingangsgröße wird in die korrespondierende NC-Achsposition umgerechnet.
Diese 32 Bit Zeit darf nur im zeitlichen Nahbereich von ± 2.147 Sekunden um die aktuelle Systemzeit verwendet wird, da sie nur hier eindeutig ist. Innerhalb des FB's kann diese Voraussetzung nicht überprüft werden.

 

VAR_OUTPUT

VAR_OUTPUT
    fPosition : LREAL;
    iErr      : UDINT;
END_VAR

fPosition

Liefert die zur dcTime korrespondierende NC Achsposition. Hierbei handelt es sich um eine um die Skalierung und Offset verrechnete NC-Achsposition mit z.B. der physikalischen Einheit Grad oder mm.

iErr

Liefert im Fehlerfall eine Fehlernummer, z.B. Fehler 0x4012 (Achs-ID ist nicht erlaubt bzw. Achse ist im System nicht vorhanden).

 

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS Bibliotheken

TwinCAT v2.11.0 Build >= 1524 oder höher

PC oder CX (x86, ARM)

TcEtherCAT.Lib
( Standard.Lib; TcBase.Lib; TcSystem.Lib, TcUtilities.Lib werden automatisch eingebunden )