FC_TPEdge - Allgemeine Informationen
Typ |
Funktion |
Verfügbar ab |
SystemInterface_1.32.6.0 |
Versionen: |
Aktuelle Version |
Position für ein Ereignis in einer Eingabedatei aufzeichnen (TouchProbe = TP); Beispiel: Druckmarke.
Positionsmessung über eine Flanke an einem Messeingang. Der verwendete Digitaleingang muss als Touchprobe-Eingang vor dem Sercos-Phasenhochlauf konfiguriert werden. Mit dem Aufruf der Funktion wird die Positionsmessung gestartet. Wird ein gültiges Messergebnis erkannt, wird dies über den Parameter CaptureOK des Messeingangs zurückgemeldet.
HINWEIS: Die Funktion ist "flankengetriggert" und somit einmal pro Arbeitstakt aufzurufen.
Das Ereignis oder Signal wird über den Messsensor (wie den Druckmarkensensor) an einem Messeingang in das PacDrive-System eingetragen.
Über die Funktion FC_TPEdge() werden der Messeingang (i_stTPId), die Flanke (i_xPosEdge), die Positionsquelle (i_stDevId), der Positionstyp (i_diParType) und das Positionsfenster (i_lrLowLimit und i_lrHighLimit) festgelegt. Liegt das Ergebnis der Messung außerhalb des Positionsfensters, wird die Messung vom System verworfen und auf eine gültige Messung gewartet.
Beim Aufruf der Funktion FC_TPEdge() wird der Zustand des Parameters CaptureOk des Messeingangs auf FALSE und der Parameter CaptureValue des Messeingangs auf 0 gesetzt.
HINWEIS: Wird die Funktion in einer extern ereignisgesteuerten Task aufgerufen, muss die Priorität (Systempriorität VxWorks) der Task, in der die Funktion aufgerufen wird, >32 sein.
HINWEIS: Informationen zum Mindestintervall zwischen zwei Messimpulsen (bei Verwendung von LXM62DxS mit Onboard-E/A) finden Sie unter "Abstand zweier Messimpulse".
DevId |
Bedeutung |
Unterstützt durch ParType. |
---|---|---|
ANTRIEBSVERSTÄRKER |
Achse |
Ja |
L_ENC |
Logischer Geber |
Ja |
SENC |
Summengeber |
Nr. |
HINWEIS: ParType 0 bis 6 sind nur dann verfügbar, wenn OnBoard I/O-Touchprobes, DRIVE oder L_ENC als Positionsquelle verwendet werden.
ParType |
Bedeutung |
Unterstützt durch DevId |
---|---|---|
0 |
Position |
ANTRIEBSVERSTÄRKER |
L_ENC |
||
1 |
RefPosition |
ANTRIEBSVERSTÄRKER |
2 |
MechPosition |
ANTRIEBSVERSTÄRKER |
3 |
RefMechPosition |
ANTRIEBSVERSTÄRKER |
4 |
ShaftMechPosition |
ANTRIEBSVERSTÄRKER |
5 |
ShaftMechRefPos |
ANTRIEBSVERSTÄRKER |
6 |
PositionWithoutDelay |
L_ENC |
HINWEIS: Verschieben von CaptureValue. Bei einer Drehzahlveränderung verschiebt sich CaptureValue aufgrund von Verzögerungen im System.
Um dies zu kompensieren, sollte Folgendes berücksichtigt werden:
0 / Position: TP SensorDelay = TP HW Delay - ShaftDelay (ANTRIEBSVERSTÄRKER)
0 / Position: TP SensorDelay = TP HW Delay (L_ENC)
1 / RefPosition: TP SensorDelay = TP HW Delay - ShaftRefDelay
2 / MechPosition: TP SensorDelay = TP HW Delay - ShaftDelay
3 / RefMechPosition: TP SensorDelay = TP HW Delay - ShaftRefDelay
4 / ShaftMechPosition: TP SensorDelay = TP HW Delay
5 / ShaftMechRefPosition: TP SensorDelay = TP HW Delay
6 / PositionWithoutDelay: TP SensorDelay = TP HW Delay
HINWEIS: Die Funktion FC_TPEdge() kann nur in Sercos Phase 4 platziert und verwendet werden. Wenn die Funktion Phase 4 verlässt, müssen die TouchProbes reaktiviert werden, wenn Phase 4 erneut erreicht wird.
Eingang |
Datentyp |
Beschreibung |
---|---|---|
i_stTPId |
ST_LogicalAddress |
Messeingang |
i_stDevId |
ST_LogicalAddress |
Positionsquelle |
i_diParType |
DINT |
Positionstyp |
i_xPosEdge |
BOOL |
Flanke |
i_lrLowLimit |
LREAL |
Unterer Grenzwert Positionsfenster |
i_lrHighLimit |
LREAL |
Oberer Grenzwert Positionsfenster |
Datentyp |
Beschreibung |
---|---|
DINT |
0: OK. -1: i_stTPId ungültig. -2: i_stDevId ungültig. -3: i_diParTyp ungültig. -5: Messung nicht möglich, da sich der Sercos-Bus nicht in Phase 4 befindet. -6: Messung nicht möglich. -7: Messung nicht möglich, da der Messeingang nicht aktiviert ist. |
CASE diState OF
1:
diResult:=FC_TPEdge(
i_stTPId:=TP.stLogicalAddress,
i_stDevId:= Encoder.stLogicalAddress,
i_diParType:= 0,
i_xPosEdge:= TRUE,
i_lrLowLimit:= -MAXX,
i_lrHighLimit:= MAXX );
diState:=2;
2:
IF TP.CaptureOk = TRUE THEN
lrTP_Pos:= TP.CaptureValue;
...
END_IF
END_CASE