FC_PhyEncGetPosition - Allgemeine Informationen
Typ |
Funktion |
Verfügbar ab |
SystemInterface_1.32.6.0 |
Versionen: |
Aktuelle Version |
Geberposition des physikalischen Gebers (SinCos-Geber) einlesen
Mit dieser Funktion wird die tatsächliche absolute Position (InitPosition) des physikalischen Gebers (P_ENC) gelesen, und die EncoderPosition wird aktualisiert. Die Funktion setzt nur einen Auftrag ab. Dieser Auftrag wird von einer Systemtask abgearbeitet. Dabei kommuniziert diese Task mit dem physikalischen Geber über die serielle Schnittstelle.
|
UNGÜLTIGES LESEN DER POSITION |
Stellen Sie sicher, dass sich der Geber während des Lesevorgangs nicht bewegt. |
Die Nichtbeachtung dieser Anweisungen kann Tod, schwere Verletzungen oder Sachschäden zur Folge haben. |
Verwenden Sie die Funktion FC_PhyEncGetCmdState(), um festzustellen, ob der Auftrag abgearbeitet ist.
Eingang |
Datentyp |
Beschreibung |
---|---|---|
i_stEncId |
ST_LogicalAddress |
Logische Adresse des Gebers |
Datentyp |
Beschreibung |
---|---|
BOOL |
TRUE: Auftrag wurde gestartet. FALSE: Auftragsschnittstelle besetzt (erneut versuchen) oder Fehler. |
PROGRAM PLC_PRG
VAR CONSTANT
c_diErrorState: DINT := 50000;
END_VAR
VAR
diState : DINT := 10;
xPhyEncGetPositionResult: BOOL;
xGetCmd2Result : BOOL;
TONInst:TON;
q_sErrorText:STRING;
END_VAR
CASE diState OF
10:
xPhyEncGetPositionResult := FC_PhyEncGetPosition(PMEnc.stLogicalAddress);
TONInst(IN := FALSE, PT := t#5s);
TONInst(IN := TRUE, PT := t#5s);
IF xPhyEncGetPositionResult = FALSE THEN
q_sErrorText:=' FC_PhyEncGetPosition failed';
diState := c_diErrorState;
ELSE
diState := 20;
END_IF
20:
TONInst(IN := TRUE, PT := t#5s);
xGetCmd2Result := PhyEncGetCmdState2( PMEnc.stLogicalAddress );
IF xGetCmd2Result = TRUE THEN
diState := 30;
END_IF
IF TONInst.Q THEN
q_sErrorText:=' FC_PhyEncGetPosition timeout';
diState := c_diErrorState;
END_IF
c_diErrorState:;
END_CASE