ConvertPosToDcTime

ConvertPosToDcTime 1:

Dieser Funktionsblock konvertiert eine NC-Achsposition in eine zugehörige 32 Bit Distributed Clock System Time (d. h. derjenige Zeitpunkt, zu dem genau diese NC Achsposition erreicht wurde bzw. erreicht wird).

VAR_INPUT

VAR_INPUT
    nAxisId         : UDINT;
    nSubIdx         : UDINT;
    fPosition       : LREAL;
END_VAR

nAxisId

ID der NC-Achse.

nSubIdx

Diese 32 Bit Eingangsgröße setzt sich aus zwei verschiedenen Informationen zusammen und unterteilt sich 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.

fPosition

NC-Achsposition, die in die korrespondierende 32 Bit Distributed Clock System Time (T_DCTIME32) umgerechnet wird.
Liegt die zur Position zugehörige DC System Time außerhalb des erwarteten Zeitfensters von ± 2.147 Sekunden wird diese Umrechnung mit einer Fehlernummer abgelehnt.

 

VAR_OUTPUT

VAR_OUTPUT
    dcTime  : T_DCTIME32;(* 32 bit distributed clock time *)
    iErr    : UDINT;
END_VAR

dcTime

Liefert die zum Eingang fPosition zugehörige 32 Bit Distributed Clock System Time (T_DCTIME32).

iErr

Liefert im Fehlerfall eine Fehlernummer, z.B.
- Fehler 0x4012: Achs-ID ist nicht erlaubt bzw. Achse ist im System nicht vorhanden,
- Fehler 0x4361: Zeitbereichsüberschreitung (Zukunft),
- Fehler 0x4362: Zeitbereichsüberschreitung (Vergangenheit),
- Fehler 0x4363: Position ist mathematisch nicht zu ermitteln.

 

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 )