Touchprobe-Eingänge

Inhalt dieses Abschnitts

Dieser Abschnitt enthält folgende Informationen

oTouchprobe-Funktion / Eingänge mit Zeitstempelung

oTouchprobe-Konfiguration und Startmechanismus

oKonfiguration der Flanke

oStart der Erfassung

oSchnittstelle IF_Touchprobe2

oBeispielimplementierung

Touchprobe-Funktion / Eingänge mit Zeitstempelung

Der Verweis auf Touchprobe-Eingänge bezieht sich auf die Touchprobe-Funktion in den PacDrive. Die TM5SDM8DTS_TSIOO- und TM5SDM8DTS_TSITSO-Profile konfigurieren die Moduleingänge als zeitgestempelte Eingänge zugunsten der Touchprobe-Funktion (weitere Informationen finden Sie im Hardwarehandbuch der Modicon TM5 E/A-Digitalmodule).

HINWEIS: Die Verweis im vorliegenden Dokument auf Touchprobe-Eingänge betrifft speziell die Konfiguration der physischen Eingänge als zeitgestempelte Eingänge.

Wenn ein TM5SDM8DTS_TSIOO- oder TM5SDM8DTS_TSITSO-Objekt in der Gerätebaum­struktur hinzugefügt wird, werden unter dem TM5SDM8DTS_TSIOO- bzw. unter dem TM5SDM8DTS_TSITSO-Objekt jeweils automatisch vier Unterobjekte hinzugefügt.

Jedes Unterobjekt entspricht einem Touchprobe-Eingang des Moduls:

oTP_0_x: physischer Modulkanal 1

oTP_1_x: physischer Modulkanal 2

oTP_2_x: physischer Modulkanal 5

oTP_3_x: physischer Modul Kanal 6

HINWEIS: An TM5SDM8DTS-Modulen mit einer Steuerung werden maximal 252 Touchprobe-Eingänge verwendet.

Jedes mit einem TM5SDM8DTS_TSIOO- oder TM5SDM8DTS _TSITSO-Konfigurationsprofil konfigurierte Modul unterstützt vier Touchprobe-Eingänge.

Dies führt zu einer Höchstzahl von 63 TM5SDM8DTS-Modulen mit einem TM5SDM8DTS_TSIOO- oder TM5SDM8DTS_TSITSO-Konfigurationsprofil innerhalb einer Anwendung.

Zeitstempelauflösung

Die Touchprobe-Werte werden mit 1 μs aufgelöst.

Parameter der TM5SDM8DTS_TSIOO-/TM5SDM8DTS_TSITSO-Touchprobe-Eingänge

oFür eine allgemeine Beschreibung der Parameter siehe Touchprobe-Eingänge.

oEine detaillierte Beschreibung der Parameter CaptureEdge, CaptureEdgeSet und CaptureEdgeSetDelayed finden Sie unter Konfiguration der Flanke.

oParameter CaptureValue

Das Verhalten des CaptureValue fällt je nach den verwendeten Geräten unterschiedlich aus:

oImplementierung für Touchprobes mit LMC, Antrieben (Lexium 52 und Lexium 62) und PacNet (BT-4 DIO): Wenn in einem Sercos III-Zyklus mehr als eine Flanke erkannt wird, wird die erste im CaptureValue berechnet.

oImplementierung für Touchprobes an TM5SDM8DTS_TSIOO oder TM5SDM8DTS_TSITSO: Wenn in einem Sercos III-Zyklus mehr als eine Flanke erkannt wird, wird die letzte im CaptureValue berechnet.

Wenn mehr als eine Flanke erkannt wird, kann dies unter Verwendung des Parameters CaptureCount ausgewertet werden. Dieser Parameter zeigt die Anzahl der während des letzten Sercos III-Zyklus erkannten Flanken an. Ist dieser Wert > 1, so weist dies darauf hin, dass CaptureCount-1 Flanken ignoriert wurden.

HINWEIS: Das Verhalten des CaptureValue fällt je nach den verwendeten Geräten unterschiedlich aus (wie oben beschrieben): Daher gibt es einige anwendungsbezogene Unterschiede zwischen diesen Geräten. Falls Sie das eine durch das andere austauschen, stellen Sie sicher, dass Sie die Anwendung bestätigen.

Einzelzyklus-Datenverlust (während Touchprobe)

Ein Einzelzyklus-Datenverlust während einer aktiven Touchprobe-Messung führt zu einem aufgeschobenen Upload des Zeitstempels, der vom Modul gemessen wurde. Das hat eine spätere Auswertung in der Steuerung zur Folge. Die Messung wird verzögert.

Wenn von der Hardware während der Einzelzyklus-Datenverlustzeit eine neue Flanke erkannt wird, geht die erste Erfassung verloren.

Für weitere Einzelheiten siehe Einzelzyklus-Datenverlust.

Touchprobe-Konfiguration und Startmechanismus

Für PacDrive 3 V4.2 werden eine neue Touchprobe-Konfiguration und ein neuer Startmecha­nismus eingeführt.

Dieser Mechanismus funktioniert generell für alle Touchprobe-Objekte im PacDrive 3-System.

Die neue allgemeine Lösung untergliedert die Funktionalität der alten FC_TPEdge()-Funktion in zwei Teile:

oKonfiguration der Flanke

oStart der Erfassung

HINWEIS: Die TM5SDM8DTS_TSIOO-/TM5SDM8DTS_TSITSO-Touchprobes sind nur mit diesem neuen Mechanismus verwendbar.

Die Verwendung der alten Methode (der Aufruf von FC_TPEdge() mit der logischen Adresse eines Touchprobe-Objekts des TM5SDM8DTS_TSIOO-/TM5SDM8DTS_TSITSO-Moduls) liefert -1 (i_stTPId invalid).

Konfiguration der Flanke

Die Konfiguration der Flanke wird von der Erfassungsstartfunktion untergliedert, da die für eine Flankenänderung benötigte Zeit von der zugrundeliegenden Hardware abhängt.

So fällt sie beispielsweise bei Touchprobe-Eingängen, die direkt mmit einer LMCx00C-Steuerung verbunden sind, und den TM5SDM8DTS_TSIOO-/TM5SDM8DTS_TSITSO-Touchprobe-Eingängen stark unterschiedlich aus.

Parameter

Ab PacDrive 3 V4.2 haben die Touchprobe-Objekte die folgenden neuen Parameter, um die Flanke zu konfigurieren, die nach dem Starten einer Erfassung erkannt wird:

Parameter

Bedeutung

Wert

CaptureEdge (AD)

Konfigurierte Flanke

Fallende Flanke / 0

Steigende Flanke / 1

Reserviert / 2

Läuft (wenn z. B. eine Servicekanal-Übertragung im Gang ist) / 3

Nicht funktionstüchtig (wenn z. B. eine Servicekanal-Übertragung gescheitert ist) / 4

Weist der Parameter CaptureEdge die Einstellung set non-operational / 4 auf, kann nicht bestimmt werden, welche Flanke aktiv ist, und der Aufruf von FC_TPEdgeStart() zeigt -6 an (Messung nicht möglich). Dieser Wert wird ebenfalls gesetzt, wenn CaptureEdgeSet in ungültigen CaptureStates verwendet wird (wenn CaptureState = active / 1 oder not ready / 5).

Parameter

Bedeutung

Wert

CaptureEdgeSet (EFC)

Flanke des jeweiligen Touchprobe-Eingangs

Kann online und offline eingestellt werden.

Fallende Flanke / 0

Steigende Flanke / 1 (Standard)

Wenn sich der Touchprobe-Eingang an einem TM5SDM8DTS_TSIOO / TM5SDM8DTS_TSITSO-Modul befindet, startet der Aufruf von CaptureEdgeSet eine asynchrone Task, die die Flanke am Modul über den Sercos III-Servicekanal setzt. Vergewissern Sie sich, dass das Ergebnis des CaptureEdge-Parameters CaptureEdgeSet entspricht. Eine Änderung der konfigurierten Flanke kann ca. 20 Sercos-Zyklen benötigen.

Wenn der CaptureState des Touchprobe-Eingangs den Status active / 1 oder not ready / 5 aufweist oder die CaptureEdge auf in progress / 3 steht, wird der neue Wert nicht in CaptureEdgeSet geschrieben. Dies kann durch Lesen von CaptureEdgeSet erkannt werden.

Parameter

Bedeutung

Wert

CaptureEdgeSetDelayed (AD)

Verzögerung bei Änderung der CaptureEdge

TRUE, wenn die Änderung der Flanke nicht direkt in der Hardware eingestellt wird.

Dies ist der Fall bei Touchprobe-Objekten des TM5SDM8DTS_TSIOO-/TM5SDM8DTS_TSITSO-Moduls.

False / 0

True / 1

FC_GetIdentificationMandatoryItfByLogAddr()

Die Parameter sind Teil einer neuen Schnittstelle, IF_Touchprobe2.

Um die Verwendung von Schnittstellen für den Kunden zu vereinfachen, ist die neue Funktion FC_GetIdentificationMandatoryItfByLogAddr() verfügbar:

FUNCTION FC_ GetIdentificationMandatoryItfByLogAddr :
GetIdentificationMandatoryItfByLogAddr
VAR_INPUT
  i_stLogAdr : ST_LogicalAddress;
END_VAR

Diese Funktion gibt die Schnittstelle IF_IdentificationMandatory eines Objekts mit der logischen Adresse i_stLogAdr zurück.

Dies erleichtert die Arbeit mit der neuen Schnittstelle, inbesondere in bereits vorhandenen Bibliotheken, wenn nur logische Adressen verwendet werden.

Die Funktion durchsucht die Gerätebaumstruktur, bis das Objekt mit der logischen Adresse i_stLogAdr gefunden wird. Sobald das Objekt gefunden wurde, gibt die Funktion IF_Identi­ficationMandatory dieses Objekt zurück, andernfalls gibt sie 0 zurück.

Start der Erfassung

Für den Start der Erfasung ist die neue Funktion FC_TPEdgeStart() verfügbar.

Die Parameter der neuen Funktion sind genau dieselben wie von FC_TPEdge(), aber ohne den Parameter i_xPosEdge, der die erfasste Flanke gesetzt hat. Das neue FC_TPEdgeStart() ist mit den Touchprobe-Typen im System abrufbar:

FUNCTION FC_TPEdgeStart : DINT
VAR_INPUT
  i_stTPId : ST_LogicalAddress;
  i_stDevId : ST_LogicalAddress;
  i_diParType : DINT;
  i_lrLowLimit : LREAL;
  i_lrHighLimit : LREAL;
END_VAR

Schnittstelle IF_Touchprobe2

Ab PacDrive 3 V4.2 implementieren die Touchprobe-Objekte die neue Schnittstelle IF_Touch­probe2 (SystemConfigurationItf).

Parameter

Die Schnittstelle stellt folgende Parameter bereit:

oCaptureEdge

oCaptureEdgeSet

oCaptureEdgeSetDelayed

Methoden

Darüber hinaus werden von der Schnittstelle folgende drei Methoden bereitgestellt:

TPEdgeStart(): Diese Methode ruft die Funktion FC_TPEdgeStart() mit der ST_Logica­lAddress des Objekts als i_stTPId auf.

METHOD TPEdgeStart : DINT
VAR_INPUT
  i_stDevId : ST_LogicalAddress;
  i_diParType : DINT;
  i_lrLowLimit : LREAL;
  i_lrHighLimit : LREAL;
END_VAR

TPOff (): Diese Methode ruft die Funktion FC_TPOff () mit der ST_LogicalAddress des Objekts als i_stTPId auf.

METHOD TPOff : DINT
VAR_INPUT
END_VAR

TPReset (): Diese Methode ruft die Funktion FC_TPReset () mit der ST_LogicalAddress des Objekts als i_stTPId auf.

METHOD TPReset : DINT
VAR_INPUT
END_VAR

Beispielimplementierung

PROGRAM SR_TouchprobeExample
VAR
  iState : INT := STATE_INIT;
  stLogicalAddr : ST_LogicalAddress; // Logical Address of TP object
  ifIM : IF_IdentificationMandatory := 0;
  ifTP2 : IF_Touchprobe2 := 0;
  diResult : DINT := 0;
  xResult : BOOL := FALSE;
END_VAR
-----------------------------------------------------------------------
CASE iState OF
  STATE_INIT:
     stLogicalAddr := TP_0_1.stLogicalAddress;
     ifIM := FC_GetIdentificationMandatoryItfByLogAddr(stLogicalAddr);
     iState := STATE_CHANGE_EDGE;
  STATE_CHANGE_EDGE:
     xResult := __QUERYINTERFACE(ifIM, ifTP2);
     IF (xResult) THEN
        ifTP2.CaptureEdgeSet := 0; // 0 = falling edge
        IF (0 <> ifTP2.CaptureEdgeSet) THEN
            iState := STATE_ERROR; // Set was not possible because of wrong state
        END_IF
        iState := STATE_WAIT_CHANGE_EDGE;
     ELSE

       iState := STATE_ERROR; // should never happen!
     END_IF
  STATE_WAIT_CHANGE_EDGE:
     IF (0=ifTP2.CaptureEdge) THEN // 0 = falling edge
        iState := STATE_START_CAPTURE;
     END_IF
     IF (4=ifTP2.CaptureEdge) THEN // 4 = set failed
        iState := STATE_ERROR;
     END_IF
  STATE_START_CAPTURE:
     // Start capture of RefPosition between 0 and 360
      diResult := FC_TPEdgeStart(ifIM.stLogicalAddress, DRV_Lexium62.stLogicalAddress, 1, 0, 360);
     IF (0=diResult) THEN
        iState := STATE_TOUCHPROBE_ACTIVE;
     ELSE
        iState := STATE_ERROR;
     END_IF
  STATE_TOUCHPROBE_ACTIVE:
     ; // Touchprobe start successful

  STATE_ERROR:
     ; // ERROR occurred during edge set
END_CASE