FC_PhyEncGetPosition

 

FC_PhyEncGetPosition - Allgemeine Informationen

Übersicht

Typ

Funktion

Verfügbar ab

SystemInterface_1.32.6.0

Versionen:

Aktuelle Version

Aufgabe

Geberposition des physikalischen Gebers (SinCos-Geber) einlesen

Beschreibung

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.

Warning_Color.gifWARNUNG

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.

Schnittstelle

Eingang

Datentyp

Beschreibung

i_stEncId

ST_LogicalAddress

Logische Adresse des Gebers

Rückgabewert

Datentyp

Beschreibung

BOOL

TRUE: Auftrag wurde gestartet.

FALSE: Auftragsschnittstelle besetzt (erneut versuchen) oder Fehler.

Beispiel

 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