TS5065 | TwinCAT PLC Motion Control XFC
Home


Vorwort

TS5065 | TwinCAT PLC Motion Control XFC
Vorwort
Vorwort
Weiterführende Informationen
•
Hinweise zur Dokumentation
•
Sicherheitshinweise


Hinweise zur Dokumentation

Vorwort [image] Hinweise zur Dokumentation
Hinweise zur Dokumentation
Diese Beschreibung wendet sich ausschließlich an ausgebildetes Fachpersonal der Steuerungs- und Automatisierungstechnik, das mit den geltenden nationalen Normen vertraut ist.
Zur Installation und Inbetriebnahme der Komponenten ist die Beachtung der nachfolgenden Hinweise und Erklärungen unbedingt notwendig.
Das Fachpersonal hat sicherzustellen, dass die Anwendung bzw. der Einsatz der beschriebenen Produkte alle Sicherheitsanforderungen, einschließlich sämtlicher anwendbaren Gesetze, Vorschriften, Bestimmungen und Normen erfüllt.
Disclaimer
Diese Dokumentation wurde sorgfältig erstellt. Die beschriebenen Produkte werden jedoch ständig weiter entwickelt.
Deshalb ist die Dokumentation nicht in jedem Fall vollständig auf die Übereinstimmung mit den beschriebenen Leistungsdaten, Normen oder sonstigen Merkmalen geprüft.
Falls sie technische oder redaktionelle Fehler enthält, behalten wir uns das Recht vor, Änderungen jederzeit und ohne Ankündigung vorzunehmen.
Aus den Angaben, Abbildungen und Beschreibungen in dieser Dokumentation können keine Ansprüche auf Änderung bereits gelieferter Produkte geltend gemacht werden.
Marken
Beckhoff®, TwinCAT®, EtherCAT®, Safety over EtherCAT®, TwinSAFE®, XFC®und XTS® sind eingetragene und lizenzierte Marken der Beckhoff Automation GmbH.
Die Verwendung anderer in dieser Dokumentation enthaltenen Marken oder Kennzeichen durch Dritte kann zu einer Verletzung von Rechten der Inhaber der entsprechenden Bezeichnungen führen.
Patente
Die EtherCAT Technologie ist patentrechtlich geschützt, insbesondere durch folgende Anmeldungen und Patente:
EP1590927, EP1789857, DE102004044764, DE102007017835
mit den entsprechenden Anmeldungen und Eintragungen in verschiedenen anderen Ländern.
Die TwinCAT Technologie ist patentrechtlich geschützt, insbesondere durch folgende Anmeldungen und Patente:
EP0851348, US6167425 mit den entsprechenden Anmeldungen und Eintragungen in verschiedenen anderen Ländern.
EtherCAT® ist eine eingetragene Marke und patentierte Technologie lizensiert durch die Beckhoff Automation GmbH, Deutschland
Copyright
© Beckhoff Automation GmbH & Co. KG, Deutschland.
Weitergabe sowie Vervielfältigung dieses Dokuments, Verwertung und Mitteilung seines Inhalts sind verboten, soweit nicht ausdrücklich gestattet.
Zuwiderhandlungen verpflichten zu Schadenersatz. Alle Rechte für den Fall der Patent-, Gebrauchsmuster- oder Geschmacksmustereintragung vorbehalten.


Sicherheitshinweise

Vorwort [image] Sicherheitshinweise
Sicherheitshinweise
Sicherheitsbestimmungen
Beachten Sie die folgenden Sicherheitshinweise und Erklärungen!
Produktspezifische Sicherheitshinweise finden Sie auf den folgenden Seiten oder in den Bereichen Montage, Verdrahtung, Inbetriebnahme usw.
Haftungsausschluss
Die gesamten Komponenten werden je nach Anwendungsbestimmungen in bestimmten Hard- und Software-Konfigurationen ausgeliefert. Änderungen der Hard- oder Software-Konfiguration, die über die dokumentierten Möglichkeiten hinausgehen, sind unzulässig und bewirken den Haftungsausschluss der Beckhoff Automation GmbH & Co. KG.
Qualifikation des Personals
Diese Beschreibung wendet sich ausschließlich an ausgebildetes Fachpersonal der Steuerungs-, Automatisierungs- und Antriebstechnik, das mit den geltenden Normen vertraut ist.
Erklärung der Symbole
In der vorliegenden Dokumentation werden die folgenden Symbole mit einem nebenstehenden Sicherheitshinweis oder Hinweistext verwendet. Die Sicherheitshinweise sind aufmerksam zu lesen und unbedingt zu befolgen!
GEFAHR
Akute Verletzungsgefahr!
Wenn der Sicherheitshinweis neben diesem Symbol nicht beachtet wird, besteht unmittelbare Gefahr für Leben und Gesundheit von Personen!
WARNUNG
Verletzungsgefahr!
Wenn der Sicherheitshinweis neben diesem Symbol nicht beachtet wird, besteht Gefahr für Leben und Gesundheit von Personen!
VORSICHT
Schädigung von Personen!
Wenn der Sicherheitshinweis neben diesem Symbol nicht beachtet wird, können Personen geschädigt werden!
Achtung
Schädigung von Umwelt oder Geräten
Wenn der Hinweis neben diesem Symbol nicht beachtet wird, können Umwelt oder Geräte geschädigt werden.
Hinweis
Tipp oder Fingerzeig
Dieses Symbol kennzeichnet Informationen, die zum besseren Verständnis beitragen.


Übersicht

Übersicht
Übersicht
Die Bibliothek TcMC2 XFC erleichtert die zeitgenaue Erfassung von Achspositionen und die positionsgenaue Ausgabe von Digitalsignalen in Verbindung mit EtherCAT-XFC-Klemmen (Zeitstempel-Klemmen und Oversampling-Klemmen).
Voraussetzung ist eine hochgenaue Totzeitkompensation der Achsen, die ab TwinCAT 2.11 für EtherCAT- und Sercos-Antriebe zur Verfügung steht.
So kann jederzeit ein genauer Zusammenhang zwischen Zeit und Position hergestellt werden.
Wichtige Anwendungsfälle sind die Erfassung von Latch-Positionen (Touch Probe bzw. Messtaster-Funktion) und die Realisierung digitaler Nockenschaltwerke. Hierfür stellt die Bibliothek verschiedene Funktionsbausteine bereit.


Totzeitkompensation

Totzeitkompensation
Totzeitkompensation
Voraussetzung für die hochgenaue Umrechnung von Positionen in Zeiten und umgekehrt ist eine exakte Totzeitkompensation der Achsen. Ab TwinCAT 2.11 steht eine solche Totzeitkompensation für EtherCAT- und Sercos-Achsen zur Verfügung, die weitestgehend automatisch arbeitet. Dennoch kann eine manuelle Konfiguration notwendig sein, um beispielsweise antriebsinterne Totzeiten auszugleichen.
Unterstützung der Distributed Clocks
Die Unterstützung der Distributed Clocks muss bei EtherCAT-Antrieben zunächst wie folgt aktiviert werden:
1.
Rufen Sie den Dialog EtherCAT "Advanced Settings" des Antriebs auf.
sysman ax5000 advanced.gif
2.
Aktivieren Sie den Schalter "Include DC Shift Times".
⇨
Die Zeitinformationen werden in den Info-Daten ("InfoData") des Antriebs zur Verfügung gestellt und später mit der NC-Achse verknüpft.
sysman ax5000 shifttimes.gif
"DcInputShift" ist die Zeit, die benötigt wird, um Statusinformationen, wie z. B. die Istposition eines Antriebs, in die Steuerung zu übertragen. Also die Zeit zwischen der Erfassung und der Auswertung dieser Daten.
"DcOutputShift" ist die Zeit für die Ausgabe der Prozessdaten an den Antrieb, d.h. für den Zeitverzug zwischen Berechnung und Wirkung dieser Daten.
Die Zeitinformationen werden dynamisch vom System bereitgestellt und werden von der NC zur Totzeitkompensation einer Achse verwendet.
Für Sercos-Achsen werden die Zeiten DcInputShift und DcOutputShift von der Sercos-Karte zur Verfügung gestellt und müssen nicht konfiguriert werden. Beim Verknüpfen eines Antriebs mit einer NC-Achse werden diese Zeiten ebenfalls verknüpft.
sysman sercos dcshift.gif
Kompensation der Encoder-Totzeit
Die Totzeitkompensation für die Datenerfassungsseite aktivieren Sie auf dem Reiter "Time Compensation" des Achs-Encoders. Dadurch wird die vom System bereit gestellte Totzeit aus DcInputShift zur Kompensationsberechnung verwendet.
In besonderen Fällen, wenn es beispielsweise durch die verwendete Hardware zu zusätzlichen Totzeiten kommt, kann es notwendig sein, weitere Zeiten zu konfigurieren.
Der Wert "Encoder Delay in Cycles" gibt zusätzliche Verzögerungen um ganze I/O-Zyklen an. Diese Zeit ist demnach keine feste Größe, sondern ändert sich mit der Zykluszeit.
Der Wert “Additional Drive Delay“ ist ein fester Zeitwert in µs, der durch die verwendete Hardware verursacht wird.
Kompensation der Antriebs-Totzeit
Die Totzeitkompensation in Ausgaberichtung aktivieren Sie auf dem Reiter "Time Compensation" des Drives der NC-Achse. Dadurch wird die vom System bereitgestellte Zeit DcOutputShift Kompensationsberechnung verwendet.
Auch hier können in besonderen Fällen weitere Zeiten konfiguriert werden.
Der Wert "Task Delay in Cycles" wird durch die Einstellung der Taskkonfiguration verursacht. Abhängig vom eingestellten Timing der Tasks kann sich die Totzeit um einen Zyklus verlängern.
Der Wert "Drive Delay in Cycles" gibt zusätzliche Verzögerungen um ganze I/O-Zyklen an, die durch den Antrieb verursacht werden.
Der Wert "Additional Drive Delay" ist ein fester Zeitwert in µs, der durch die verwendete Hardware verursacht wird.
Auswirkung der Totzeitkompensation
Durch die Totzeitkompensation werden alle zyklisch mit der SPS ausgetauschten Daten der NC (NcToPlc) auf den aktuellen Zeitpunkt umgerechnet. Insbesondere Istposition, Sollposition und Schleppfehler der Achse beziehen sich auf den gerade aktuellen Zeitpunkt und spiegeln die physikalische Position der Achse zu diesem Zeitpunkt wider. Sie können damit durch die SPS für weitere hochgenaue Zeit- und Positionsberechnungen herangezogen werden. (Siehe insbesondere die Basisfunktionen XFC_GetCurDcTaskTime , XFC_TimeOfPosition und XFC_PositionAtTime.)


Basisfunktionen

Basisfunktionen
Basisfunktionen
Weiterführende Informationen
•
XFC_GetCurDcTaskTime
•
XFC_ExtendDcTime
•
XFC_PositionAtTime
•
XFC_TimeOfPosition
•
XFC_TimeToPosition
•
XFC_TimeToModuloPosition


XFC_GetCurDcTaskTime

Basisfunktionen [image] XFC_GetCurDcTaskTime
XFC_GetCurDcTaskTime
Die Funktion XFC_GetCurDcTaskTime ermittelt die Zeit des Beginns des aktuellen SPS-Zyklus.
Die Funktion optimiert die Aufrufe der Systemfunktion F_GetCurDcTaskTime, indem mehrere Anfragen innerhalb eines SPS-Task-Zyklus mit derselben Zeit beantwortet werden, ohne die Systemfunktion jeweils erneut aufzurufen.
Rückgabewert
FUNCTION XFCF_GetCurDcTaskTime : T_DCTIME
Rückgabewert der Funktion
Vollständige 64 Bit Distributed Clock System Time. Zeitpunkt des Anfangs des aktuellen SPS-Zyklus (Zyklus der Task, die diese Funktion aufruft.)


XFC_ExtendDcTime

Basisfunktionen [image] XFC_ExtendDcTime
XFC_ExtendDcTime
Die Funktion XFC_ExtendDcTime erweitert einen 32 Bit Zeitstempel auf 64 Bit.
Die Erweiterung auf einen vollständigen Zeitstempel setzt voraus, dass der 32 Bit Zeitstempel im aktuellen Zeitbereich gültig ist. Es ist nicht möglich, einen Zeitstempel der mehr als etwa +/- 2 Sekunden vor oder nach dem aktuellen Zeitpunkt gültig ist, fehlerfrei zu erweitern.
Eingänge
VAR_INPUT
TimeStamp32 : T_DCTIME32;
END_VAR
TimeStamp32
Distributed Clock System Time.
TimeStamp32 enthält die unteren 32 Bit der vollständigen DcTime und deckt damit einen Zeitbereich von +/- 2 Sekunden um den aktuellen Zeitpunkt ab.
Rückgabewert
FUNCTION XFCF_ExtendDcTime : T_DCTIME
Rückgabewert der Funktion
Vollständige 64 Bit Distributed Clock System Time.


XFC_PositionAtTime

Basisfunktionen [image] XFC_PositionAtTime
XFC_PositionAtTime
XFC_PositionAtTime berechnet eine Achsposition, welche zu einer gegebenen Zeit gültig sein wird bzw. gültig gewesen ist.
Die Funktion extrapoliert die Position bezogen auf die aktuelle Position und Dynamik. Eine genaue Extrapolation ist nur über einen kurzen Zeitraum möglich, da sich die Dynamik der Achse ändern kann.
Der Funktionsbaustein benötigt genau einen Aufruf, um das Ergebnis bereitzustellen. Er kann also ähnlich wie eine Funktion verwendet werden, gibt aber neben der Position eventuell auch einen Fehler zurück. Dieser Fehler muss ausgewertet werden, um sicherzustellen, dass die berechnete Position gültig ist.
Eingänge
VAR_INPUT
DcTime : T_DCTIME32;
Options : ST_NcTimeConversionOptions;
END_VAR
DcTime | Distributed Clock System Time. DcTime enthält die unteren 32 Bit der vollständigen DcTime und deckt damit einen Zeitbereich von +/- 2 Sekunden um den aktuellen Zeitpunkt ab. Um einen möglichst genauen Positionswert zu berechnen, sollte die Zeit sehr nahe an der aktuellen Zeit liegen, also möglichst nur wenige SPS- bzw. NC-Zyklen in der Zukunft oder in der Vergangenheit.
Options | Datenstruktur mit Optionen für die Extrapolation der Position.
Options. | SubIndex | Für Achsen mit mehr als einem Encoder kann in SubIndex der Index (0..9) des Encoders angegeben werden, auf den sich die Position bezieht.
Options. | InterpolationOptions | 0: Die Extrapolation der Position wird mit der aktuellen Geschwindigkeit durchgeführt, ohne die aktuelle Beschleunigung zu berücksichtigen. 1: Die Beschleunigung der Achse wird in die Extrapolation der Position einbezogen.
Options. | CompensationTime | zusätzliche Kompensationszeit.
Ausgänge
VAR_OUTPUT
Position : LREAL;
Error : BOOL;
ErrorID : UDINT;
END_VAR
Position | Extrapolierte Position, die zum vorgegebenen Zeitpunkt DcTime erreicht sein wird bzw. erreicht wurde.
Error | Wird im Fehlerfall TRUE.
ErrorID | Liefert bei einem gesetzten Error-Ausgang die Fehlernummer
Ein/Ausgänge
VAR_IN_OUT
Axis : AXIS_REF;
END_VAR
Axis
Achsdatenstruktur
Die Achsdatenstruktur vom Typ AXIS_REF adressiert eine Achse eindeutig im System. Sie enthält unter anderem den aktuellen Status der Achse, wie Position, Geschwindigkeit oder Fehlerzustand.


XFC_TimeOfPosition

Basisfunktionen [image] XFC_TimeOfPosition
XFC_TimeOfPosition
XFC_TimeOfPosition berechnet den Zeitpunkt, zu dem eine Achse an einer vorgegebenen Position sein wird bzw. gewesen ist.
Die Funktion extrapoliert den Zeitpunkt bezogen auf die aktuelle Position und Dynamik. Eine genaue Extrapolation ist nur über einen kurzen Zeitraum möglich, da sich die Dynamik der Achse ändern kann.
Der Funktionsbaustein benötigt genau einen Aufruf, um das Ergebnis bereitzustellen. Er kann also ähnlich wie eine Funktion verwendet werden, gibt aber neben der Zeit eventuell auch einen Fehler zurück. Dieser Fehler muss ausgewertet werden, um sicherzustellen, dass die berechnete Zeit DcTime gültig ist.
Eingänge
VAR_INPUT
Position : LREAL;
Options : ST_NcTimeConversionOptions;
END_VAR
Position | Absolute Achsposition
Options | Datenstruktur mit Optionen für die Extrapolation der Position.
Options. | SubIndex | Für Achsen mit mehr als einem Encoder kann in SubIndex der Index (0..9) des Encoders angegeben werden, auf den sich die Position bezieht.
Options. | InterpolationOptions | 0: Die Extrapolation der Position wird mit der aktuellen Geschwindigkeit durchgeführt, ohne die aktuelle Beschleunigung zu berücksichtigen. 1: Die Beschleunigung der Achse wird in die Extrapolation der Position einbezogen.
Options. | CompensationTime | zusätzliche Kompensationszeit
Ausgänge
VAR_OUTPUT
DcTime : T_DCTIME32;
Error : BOOL;
ErrorID : UDINT;
END_VAR
DcTime | Distributed Clock System Time zu der die Position erreicht sein wird bzw. zu der sie erreicht wurde. DcTime enthält die unteren 32 Bit der vollständigen DcTime und deckt damit einen Zeitbereich von +/- 2 Sekunden um den aktuellen Zeitpunkt ab.
Error | Wird im Fehlerfall TRUE.
ErrorID | Liefert bei einem gesetzten Error-Ausgang die Fehlernummer
Ein/Ausgänge
VAR_IN_OUT
Axis : AXIS_REF;
END_VAR
Axis
Achsdatenstruktur
Die Achsdatenstruktur vom Typ AXIS_REF adressiert eine Achse eindeutig im System. Sie enthält unter anderem den aktuellen Status der Achse, wie Position, Geschwindigkeit oder Fehlerzustand.


XFC_TimeToPosition

Basisfunktionen [image] XFC_TimeToPosition
XFC_TimeToPosition
XFC_TimeToPosition berechnet die Zeitdauer, innerhalb derer eine Achse eine Position erreichen wird bzw. die Zeitdauer, die vergangen ist, seit die Achse diese Position passiert hat.
Die Funktion extrapoliert den Zeitpunkt bezogen auf die aktuelle Position und Dynamik. Eine genaue Extrapolation ist nur über einen kurzen Zeitraum möglich, da sich die Dynamik der Achse ändern kann.
Der Funktionsbaustein benötigt genau einen Aufruf, um das Ergebnis bereitzustellen. Er kann also ähnlich wie eine Funktion verwendet werden, gibt aber neben der Zeit eventuell auch einen Fehler zurück. Dieser Fehler muss ausgewertet werden, um sicherzustellen, dass die berechnete Zeitdauer gültig ist.
Eingänge
VAR_INPUT
Position : LREAL;
Options : ST_NcTimeConversionOptions;
END_VAR
Position | Absolute Achsposition
Options | Datenstruktur mit Optionen für die Extrapolation der Position.
Options. | SubIndex | Für Achsen mit mehr als einem Encoder kann in SubIndex der Index (0..9) des Encoders angegeben werden, auf den sich die Position bezieht.
Options. | InterpolationOptions | 0: Die Extrapolation der Position wird mit der aktuellen Geschwindigkeit durchgeführt, ohne die aktuelle Beschleunigung zu berücksichtigen. 1: Die Beschleunigung der Achse wird in die Extrapolation der Position einbezogen.
Options. | CompensationTime | zusätzliche Kompensationszeit
Ausgänge
VAR_OUTPUT
Duration : DINT;
TimeOfPosition : T_DCTIME32;
Error : BOOL;
ErrorID : UDINT;
END_VAR
Duration | Zeitdauer in Nanosekunden, nach der die Position erreicht sein wird (> 0) bzw. seit dem die Position passiert wurde (< 0). Duration ist ein Differenzwert aus zwei Variablen des Typs T_DCTIME32 Distributed Clock System Time.
TimeOfPosition | Distributed Clock System Time zu der die Position erreicht sein wird bzw. zu der sie erreicht wurde. DcTime enthält die unteren 32 Bit der vollständigen DcTime und deckt damit einen Zeitbereich von +/- 2 Sekunden um den aktuellen Zeitpunkt ab.
Error | Wird im Fehlerfall TRUE.
ErrorID | Liefert bei einem gesetzten Error-Ausgang die Fehlernummer
Ein/Ausgänge
VAR_IN_OUT
Axis : AXIS_REF;
END_VAR
Axis
Achsdatenstruktur
Die Achsdatenstruktur vom Typ AXIS_REF adressiert eine Achse eindeutig im System. Sie enthält unter anderem den aktuellen Status der Achse, wie Position, Geschwindigkeit oder Fehlerzustand.


XFC_TimeToModuloPosition

Basisfunktionen [image] XFC_TimeToModuloPosition
XFC_TimeToModuloPosition
XFC_TimeToModuloPosition berechnet die Zeitdauer, innerhalb derer eine Achse eine Position erreichen wird bzw. die Zeitdauer, die vergangen ist, seit die Achse diese Position passiert hat. Die Position ist in diesem Fall die in Fahrtrichtung nächstliegende Modulo-Position.
Die Funktion extrapoliert den Zeitpunkt bezogen auf die aktuelle Position und Dynamik. Eine genaue Extrapolation ist nur über einen kurzen Zeitraum möglich, da sich die Dynamik der Achse ändern kann.
Der Funktionsbaustein benötigt genau einen Aufruf, um das Ergebnis bereitzustellen. Er kann also ähnlich wie eine Funktion verwendet werden, gibt aber neben der Zeit eventuell auch einen Fehler zurück. Dieser Fehler muss ausgewertet werden, um sicherzustellen, dass die berechnete Zeitdauer gültig ist.
Eingänge
VAR_INPUT
Position : LREAL;
ModuloFactor : LREAL;
Options : ST_NcTimeConversionOptions;
END_VAR
Position | Absolute Achsposition
ModuloFactor | Modulo-Teiler, der für die Berechnung verwendet werden soll. ModuloFactor kann mit dem Modulo-Faktor der Achse identisch sein, z. B. 360. Es kann aber auch ein davon abweichender Faktor verwendet werden.
Options | Datenstruktur mit Optionen für die Extrapolation der Position.
Options. | SubIndex | Für Achsen mit mehr als einem Encoder kann in SubIndex der Index (0..9) des Encoders angegeben werden auf den sich die Position bezieht.
Options. | InterpolationOptions | 0: Die Extrapolation der Position wird mit der aktuellen Geschwindigkeit durchgeführt, ohne die aktuelle Beschleunigung zu berücksichtigen. 1: Die Beschleunigung der Achse wird in die Extrapolation der Position einbezogen.
Options. | CompensationTime | zusätzliche Kompensationszeit
Ausgänge
VAR_OUTPUT
Duration : DINT;
AbsolutePosition : LREAL;
TimeOfPosition : T_DCTIME32;
Error : BOOL;
ErrorID : UDINT;
END_VAR
Duration | Zeitdauer in Nanosekunden, nach der die Position erreicht sein wird. Duration ist ein Differenzwert aus zwei Variablen des Typs T_DCTIME32 Distributed Clock System Time.
AbsolutePosition | Absolute Position (nicht modulo), die mit der Modulo-Position und der ermittelten Zeit korrespondiert.
TimeOfPosition | Distributed Clock System Time, zu der die Position erreicht sein wird bzw. zu der sie erreicht wurde. DcTime enthält die unteren 32 Bit der vollständigen DcTime und deckt damit einen Zeitbereich von +/- 2 Sekunden um den aktuellen Zeitpunkt ab.
Error | Wird im Fehlerfall TRUE.
ErrorID | Liefert bei einem gesetzten Error-Ausgang die Fehlernummer
Ein/Ausgänge
VAR_IN_OUT
Axis : AXIS_REF;
END_VAR
Axis
Achsdatenstruktur
Die Achsdatenstruktur vom Typ AXIS_REF adressiert eine Achse eindeutig im System. Sie enthält unter anderem den aktuellen Status der Achse, wie Position, Geschwindigkeit oder Fehlerzustand.


Nockenschaltwerk

Nockenschaltwerk
Nockenschaltwerk
Weiterführende Informationen
•
MC_DigitalCamSwitch
•
MC_DigitalCamSwitch_MultiEdge
•
XFC_PositionCam
•
XFC_TimeCam
•
XFC_BreakCam


MC_DigitalCamSwitch

Nockenschaltwerk [image] MC_DigitalCamSwitch
MC_DigitalCamSwitch
MC_DigitalCamSwitch ist ein digitales Nockenschaltwerk mit einer oder mehreren Nocken auf einer digitalen Ausgabespur.
Durch entsprechende Parametrierung können Positions-, Zeit- und Bremsnocken realisiert werden. Weitere Ausgabespuren werden mit unabhängigen Instanzen des Funktionsbausteins realisiert.
Die Output-Datenstruktur enthält neben dem Schaltzustand des digitalen Ausgangs genaue Zeitinformationen über die nächsten Schaltvorgänge. Mit dieser Information kann die eigentliche Ausgabe an einer XFC-Ausgangsklemme mit einem nachgeschalteten Funktionsbaustein erfolgen (XFC_EL2252 oder XFC_EL2262).
Eingänge
VAR_INPUT
Enable : BOOL;
Options : ST_CamSwitchOptions;
END_VAR
Enable | Über den Eingang Enable wird das Nockenschaltwerk aktiviert. Der Ausgangszustand bleibt unverändert, solange Enable FALSE ist.
Options | Optionale Parameter
Options. | EncoderIndex | Wenn mehr als ein Encoder mit der Achse verbunden ist, kann der Encoder-Index [0..9] hier festgelegt werden. Der erste Encoder hat den Index 0.
Options. | UseAcceleration | UseAcceleration kann TRUE gesetzt werden, um die Beschleunigung der Achse in die Positions-Berechnungen mit einzubeziehen. UseAcceleration kann von Vorteil sein, wenn die Sollwerte der Beschleunigung verwendet werden können. Bei Encoder-Achsen, die ein verrauschtes Positionssignal liefern, ist UseAcceleration eventuell von Nachteil, da auch die Beschleunigung fehlerhaft ist.
Ausgänge
VAR_OUTPUT
InOperation : BOOL;
Busy : BOOL;
Error : BOOL;
ErrorID : UDINT;
END_VAR
InOperation | InOperation ist TRUE, solange das Nockenschaltwerk aktiv ist und die Nockenspur gemäß der Nockenparametrierung berechnet wird.
Busy | Busy ist TRUE solange die Funktion des Bausteins nicht beendet ist.
Error | Wird im Fehlerfall TRUE.
ErrorID | Liefert bei einem gesetzten Error-Ausgang die Fehlernummer
Ein/Ausgänge
VAR_IN_OUT
Axis : AXIS_REF;
Switches : CAMSWITCH_REF;
Output : OUTPUT_REF;
TrackOptions : TRACK_REF;
END_VAR
Axis | Achsdatenstruktur
Switches | Die Datenstruktur Switches enthält einen Verweis auf die Parametrierung aller Nocken auf der Nockenspur.
Output | Die Datenstruktur Output enthält den berechneten Zustand des digitalen Ausgangs und die zugehörigen Zeitstempel für die Ausgabe an einer digitalen XFC Ausgangsklemme
TrackOptions | Die Datenstruktur TrackOptions enthält die Parametrierung der Nockenspur.
Die Achsdatenstruktur vom Typ AXIS_REF adressiert eine Achse eindeutig im System. Sie enthält unter anderem den aktuellen Status der Achse, wie Position, Geschwindigkeit oder Fehlerzustand.
Beispiel für zwei digitale Nockenspuren
Mit den Nockendaten ergeben sich die folgenden Schaltdiagramme. Die Schaltfolge wird ohne jegliche Zeitkompensation und Hysterese dargestellt und ist aufgrund der Nockendaten für beide Fahrtrichtungen unterschiedlich.
Schaltfolge für positive Fahrrichtung
Schaltfolge für negative Fahrrichtung


MC_DigitalCamSwitch_MultiEdge

Nockenschaltwerk [image] MC_DigitalCamSwitch_MultiEdge
MC_DigitalCamSwitch_MultiEdge
MC_DigitalCamSwitch_MultiEdge ist ein digitales Nockenschaltwerk mit einer oder mehreren Nocken auf einer digitalen Ausgabespur. Der Funktionsbaustein ergänzt den Baustein MC_DigitalCamSwitch um die Eigenschaft, mehrere Schaltvorgänge während eines SPS-Zyklus durchführen zu können. Die Schaltvorgänge werden durch Positionsnocken definiert. Weitere Ausgabespuren werden mit unabhängigen Instanzen des Funktionsbausteins realisiert.
Die Output-Datenstruktur enthält neben dem Schaltzustand des digitalen Ausgangs genaue Zeitinformationen über die nächsten Schaltvorgänge. Mit dieser Information kann die eigentliche Ausgabe an einer XFC-Multitimestamp-Ausgangsklemme mit einem nachgeschalteten Funktionsbaustein erfolgen (XFC_EL1259_MultiEdge, XFC_EL2212_MultiEdge oder XFC_EL2258_MultiEdge).
HINWEIS! Zeitnocken und Bremsnocken können mit dem Baustein MC_DigitalCamSwitch_MultiEdge nicht verwendet werden. Klemmen ohne Multitimestamp-Funktionalität sind in Verbindung mit diesem Baustein nicht geeignet.
Eingänge
VAR_INPUT
Enable : BOOL;
Options : ST_CamSwitchOptions;
END_VAR
Enable | Über den Eingang Enable wird das Nockenschaltwerk aktiviert. Der Ausgangszustand bleibt unverändert, solange Enable FALSE ist.
Options | Optionale Parameter
Options. | EncoderIndex | Wenn mehr als ein Encoder mit der Achse Verbunden ist, kann der Encoder-Index [0..9] hier festgelegt werden. Der erste Encoder hat den Index 0.
Options. | UseAcceleration | UseAcceleration kann TRUE gesetzt werden, um die Beschleunigung der Achse in die Positions-Berechnungen mit einzubeziehen. UseAcceleration kann von Vorteil sein, wenn die Sollwerte der Beschleunigung verwendet werden können. Bei Encoder-Achsen, die ein verrauschtes Positionssignal liefern, ist UseAcceleration eventuell von Nachteil, da auch die Beschleunigung fehlerhaft ist.
Ausgänge
VAR_OUTPUT
InOperation : BOOL;
Busy : BOOL;
Error : BOOL;
ErrorID : UDINT;
END_VAR
InOperation | InOperation ist TRUE, solange das Nockenschaltwerk aktiv ist und die Nockenspur gemäß der Nockenparametrierung berechnet wird.
Busy | Busy ist TRUE solange die Funktion des Bausteins nicht beendet ist.
Error | Wird im Fehlerfall TRUE.
ErrorID | Liefert bei einem gesetzten Error-Ausgang die Fehlernummer
Ein/Ausgänge
VAR_IN_OUT
Axis : AXIS_REF;
Switches : CAMSWITCH_REF;
Output : OUTPUT_REF_MULTIEDGE;
TrackOptions : TRACK_REF;
END_VAR
Axis | Achsdatenstruktur
Switches | Die Datenstruktur Switches enthält einen Verweis auf die Parametrierung aller Nocken auf der Nockenspur.
Output | Die Datenstruktur Output enthält den berechneten Zustand des digitalen Ausgangs und die zugehörigen Zeitstempel für die Ausgabe an einer digitalen XFC Ausgangsklemme
TrackOptions | Die Datenstruktur TrackOptions enthält die Parametrierung der Nockenspur.
Die Achsdatenstruktur vom Typ AXIS_REF adressiert eine Achse eindeutig im System. Sie enthält unter anderem den aktuellen Status der Achse, wie Position, Geschwindigkeit oder Fehlerzustand.


XFC_PositionCam

Nockenschaltwerk [image] XFC_PositionCam
XFC_PositionCam
XFC_PositionCam realisiert eine Positionsnocke, die einen digitalen Ausgang positionsabhängig ein- und ausschaltet.
Im Gegensatz zum digitalen Nockenschaltwerk MC_DigitalCamSwitch schaltet der Funktionsbaustein genau eine Nocke auf einer digitalen Ausgangsspur. Der Baustein ist damit einfacher parametrierbar, kann aber nicht eingesetzt werden, wenn mehrere Nocken auf einer Ausgangsspur notwendig sind.
Die Output-Datenstruktur enthält neben dem Schaltzustand des digitalen Ausgangs genaue Zeitinformationen über die nächsten Schaltvorgänge. Mit dieser Information kann die eigentliche Ausgabe an einer XFC-Ausgangsklemme mit einem nachgeschalteten Funktionsbaustein erfolgen (XFC_EL2252 oder XFC_EL2262).
Eingänge
VAR_INPUT
FirstOnPosition : LREAL;
LastOnPosition : LREAL;
Modulo : BOOL;
ModuloFactor : LREAL := 360;
OnCompensation : LREAL;
OffCompensation : LREAL;
Options : ST_CamSwitchOptions;
END_VAR
FirstOnPosition | Erste Position ab der die Nocke eingeschaltet ist.
LastOnPosition | Letzte Position bis zu der die Nocke eingeschaltet ist. Die Nockenfunktion ist invertiert, wenn LastOnPosition < FirstOnPosition
Modulo | Wenn Modulo TRUE ist, werden alle Positionen modulo interpretiert. Die Nockenfunktion wird dadurch zyklisch wiederholt. Zur Berechnung des Modulo-Zyklus wird der Parameter ModuloFactor verwendet.
ModuloFactor | ModuloFactor gibt die Länge eines Modulo-Zyklus in der Positionseinheit der Achse an und wird nur verwendet, wenn Modulo TRUE ist.
OnCompensation | Kompensationszeit für die steigende Flanke der Nocke in [s]. Der Schaltzeitpunkt wird bei negativen Werten vonOnCompensation vorgezogen und sonst verzögert. Der hier parametrierte Wert OnCompensation hat Vorrang vor TRACK_REF.
OffCompensation | Kompensationszeit für die fallende Flanke der Nocke in [s]. Der Schaltzeitpunkt wird bei negativen Werten vonOffCompensation vorgezogen und sonst verzögert. Der hier parametrierte Wert OffCompensation hat Vorrang vor TRACK_REF.
Options | Optionale Parameter
Options. | EncoderIndex | Wenn mehr als ein Encoder mit der Achse Verbunden ist, kann der Encoder-Index [0..9] hier festgelegt werden. Der erste Encoder hat den Index 0.
Options. | UseAcceleration | UseAcceleration kann TRUE gesetzt werden, um die Beschleunigung der Achse in die Positions-Berechnungen mit einzubeziehen. UseAcceleration kann von Vorteil sein, wenn die Sollwerte der Beschleunigung verwendet werden können. Bei Encoder-Achsen, die ein verrauschtes Positionssignal liefern, ist UseAcceleration eventuell von Nachteil, da auch die Beschleunigung fehlerhaft ist.
Ein/Ausgänge
VAR_IN_OUT
Output : OUTPUT_REF;
Axis : AXIS_REF;
END_VAR
Output | Die Datenstruktur Output enthält den berechneten Zustand des digitalen Ausgangs und die zugehörigen Zeitstempel für die Ausgabe an einer digitalen XFC Ausgangsklemme
Axis | Achsdatenstruktur
Die Achsdatenstruktur vom Typ AXIS_REF adressiert eine Achse eindeutig im System. Sie enthält unter anderem den aktuellen Status der Achse, wie Position, Geschwindigkeit oder Fehlerzustand.
Wirkungsweise der Zeitkompensation


XFC_TimeCam

Nockenschaltwerk [image] XFC_TimeCam
XFC_TimeCam
XFC_TimeCam realisiert eine Zeitnocke, die einen digitalen Ausgang positionsabhängig einschaltet und nach einer Zeit ausschaltet.
Im Gegensatz zum digitalen Nockenschaltwerk MC_DigitalCamSwitch schaltet der Funktionsbaustein genau eine Nocke auf einer digitalen Ausgangsspur. Der Baustein ist damit einfacher parametrierbar, kann aber nicht eingesetzt werden, wenn mehrere Nocken auf einer Ausgangsspur notwendig sind.
Die Output-Datenstruktur enthält neben dem Schaltzustand des digitalen Ausgangs genaue Zeitinformationen über die nächsten Schaltvorgänge. Mit dieser Information kann die eigentliche Ausgabe an einer XFC-Ausgangsklemme mit einem nachgeschalteten Funktionsbaustein erfolgen (XFC_EL2252 oder XFC_EL2262).
Eingänge
VAR_INPUT
FirstOnPosition : LREAL;
Duration : LREAL;
Modulo : BOOL;
ModuloFactor : LREAL := 360;
OnCompensation : LREAL;
OffCompensation : LREAL;
Options : ST_CamSwitchOptions;
END_VAR
FirstOnPosition | Erste Position, ab der die Nocke eingeschaltet ist.
Duration | Einschaltdauer der Nocke in [s].
Modulo | Wenn Modulo TRUE ist, werden alle Positionen modulo interpretiert. Die Nockenfunktion wird dadurch zyklisch wiederholt. Zur Berechnung des Modulo-Zyklus wird der Parameter ModuloFactor verwendet.
ModuloFactor | ModuloFactor gibt die Länge eines Modulo-Zyklus in der Positionseinheit der Achse an und wird nur verwendet, wenn Modulo TRUE ist.
OnCompensation | Kompensationszeit für die steigende Flanke der Nocke in [s]. Der Schaltzeitpunkt wird bei negativen Werten von OnCompensation vorgezogen und sonst verzögert. Der hier parametrierte Wert OnCompensation hat Vorrang vor TRACK_REF.
OffCompensation | Kompensationszeit für die fallende Flanke der Nocke in [s]. Der Schaltzeitpunkt wird bei negativen Werten von OffCompensation vorgezogen und sonst verzögert. Der hier parametrierte Wert OffCompensation hat Vorrang vor TRACK_REF.
Options | Optionale Parameter
Options. | EncoderIndex | Wenn mehr als ein Encoder mit der Achse verbunden ist, kann der Encoder-Index [0..9] hier festgelegt werden. Der erste Encoder hat den Index 0.
Options. | UseAcceleration | UseAcceleration kann TRUE gesetzt werden, um die Beschleunigung der Achse in die Positions-Berechnungen mit einzubeziehen. UseAcceleration kann von Vorteil sein, wenn die Sollwerte der Beschleunigung verwendet werden können. Bei Encoder-Achsen, die ein verrauschtes Positionssignal liefern, ist UseAcceleration eventuell von Nachteil, da auch die Beschleunigung fehlerhaft ist.
Ein/Ausgänge
VAR_IN_OUT
Output : OUTPUT_REF;
Axis : AXIS_REF;
END_VAR
Output | Die Datenstruktur Output enthält den berechneten Zustand des digitalen Ausgangs und die zugehörigen Zeitstempel für die Ausgabe an einer digitalen XFC-Ausgangsklemme
Axis | Achsdatenstruktur
Die Achsdatenstruktur vom Typ AXIS_REF adressiert eine Achse eindeutig im System. Sie enthält unter anderem den aktuellen Status der Achse, wie Position, Geschwindigkeit oder Fehlerzustand.
Wirkungsweise der Zeitkompensation


XFC_BreakCam

Nockenschaltwerk [image] XFC_BreakCam
XFC_BreakCam
XFC_BreakCam realisiert eine Bremsnocke, die einen digitalen Ausgang positionsabhängig ausschaltet, sobald die Bremsfreigabe BreakRelease entzogen wird.
Die Output-Datenstruktur enthält neben dem Schaltzustand des digitalen Ausgangs genaue Zeitinformationen über die nächsten Schaltvorgänge. Mit dieser Information kann die eigentliche Ausgabe an einer XFC-Ausgangsklemme mit einem nachgeschalteten Funktionsbaustein erfolgen (XFC_EL2252 oder XFC_EL2262).
Eingänge
VAR_INPUT
BreakRelease : LREAL;
LastOnPosition : LREAL;
Modulo : BOOL;
ModuloFactor : LREAL := 360;
OffCompensation : LREAL;
Options : ST_CamSwitchOptions;
END_VAR
BreakRelease | Bremsfreigabe. Solange BreakRelease TRUE ist, bleibt die Nocke aktiv. Nachdem BreakRelease FALSE wird, wird die Nocke an der Position LastOnPosition ausgeschaltet.
LastOnPosition | Letzte Position bis zu der die Nocke eingeschaltet ist.
Modulo | Wenn Modulo TRUE ist, werden alle Positionen modulo interpretiert. Die Nockenfunktion wird dadurch zyklisch wiederholt. Zur Berechnung des Modulo-Zyklus wird der Parameter ModuloFactor verwendet.
ModuloFactor | ModuloFactor gibt die Länge eines Modulo-Zyklus in der Positionseinheit der Achse an und wird nur verwendet, wenn Modulo=TRUE ist.
OffCompensation | Kompensationszeit für die fallende Flanke der Nocke in [s]. Der Schaltzeitpunkt wird bei negativen Werten vonOffCompensation vorgezogen und sonst verzögert. Der hier parametrierte Wert OffCompensation hat Vorrang vor TRACK_REF.
Options | Optionale Parameter
Options. | EncoderIndex | Wenn mehr als ein Encoder mit der Achse verbunden ist, kann der Encoder-Index hier festgelegt werden.
Options. | UseAcceleration | UseAcceleration kann TRUE gesetzt werden, um die Beschleunigung der Achse in die Positions-Berechnungen mit einzubeziehen. UseAcceleration kann von Vorteil sein, wenn die Sollwerte der Beschleunigung verwendet werden können. Bei Encoder-Achsen, die ein verrauschtes Positionssignal liefern, ist UseAcceleration eventuell von Nachteil, da auch die Beschleunigung fehlerhaft ist.
Ein/Ausgänge
VAR_IN_OUT
Output : OUTPUT_REF;
Axis : AXIS_REF;
END_VAR
Output | Die Datenstruktur Output enthält den berechneten Zustand des digitalen Ausgangs und die zugehörigen Zeitstempel für die Ausgabe an einer digitalen XFC-Ausgangsklemme.
Axis | Achsdatenstruktur
Die Achsdatenstruktur vom Typ AXIS_REF adressiert eine Achse eindeutig im System. Sie enthält unter anderem den aktuellen Status der Achse, wie Position, Geschwindigkeit oder Fehlerzustand.
Wirkungsweise der Zeitkompensation


Touch Probe

Touch Probe
Touch Probe
Weiterführende Informationen
•
XFC_TouchProbe


XFC_TouchProbe

Touch Probe [image] XFC_TouchProbe
XFC_TouchProbe
Der Baustein XFC_TouchProbe erfasst eine Achsposition zum Zeitpunkt der Flanke eines digitalen Eingangssignals (Messtasterfunktion).
Das digitale Eingangssignal wird mit einer XFC-Eingangsklemme (z. B. EL1252) mit Zeitstempeln für die fallende und steigende Signalflanke erfasst. Der Funktionsbaustein ermittelt die Achsposition, bei der der Flankenwechsel stattgefunden hat und gibt sie als RecordedPosition aus.
Im Gegensatz zur klassischen TouchProbe-Funktion MC_TouchProbe ist der digitale Eingang nicht direkt an die Antriebshardware gebunden. Über den Zeitstempel des Eingangs kann die Position jeder EtherCAT- oder Sercos-Achse im System aufgezeichnet werden, die mittels Totzeitkompensation exakt synchronisiert ist.
Der Funktionsbaustein kann freilaufend oder im Single-Shot-Betrieb verwendet werden. Im freilaufenden Modus wird jede Flanke des Eingangssignals erfasst (maximal eine Flanke pro SPS-Zyklus). Im Single-Shot-Betrieb wird nur einmalig die nächste Flanke erfasst bis der Funktionsbaustein neu getriggert wird.
Über die optionale Fensterfunktion können Signalflanken außerhalb des definierten Positionsfilters ignoriert werden.
Signalverlauf
mc_touchprobe timing example.gif
Eingänge
VAR_INPUT
Execute : BOOL;
WindowOnly : BOOL;
FirstPosition : LREAL;
LastPosition : LREAL;
Options : ST_XfcTouchProbeOptions;
END_VAR
Execute | Wenn Execute aktiv ist, wird die Achsposition an der definierten Signalflanke des Eingangssignals erfasst. Eine fallende Flanke an Execute beendet den Vorgang sofort. Abhängig von der Konfiguration in TriggerInput.FreeRun wird einmalig die nächste Signalflanke erfasst und ausgewertet. Wenn FreeRun TRUE ist, wird fortlaufend mit jeder definierten Flanke des Eingangssignals ein neuer Positionswert erfasst, während Execute TRUE bleibt.
WindowOnly | Wenn diese Option aktiv ist, wird nur eine Position innerhalb des Fensters zwischen FirstPosition und LastPosition erfasst. Positionen außerhalb des Fensters werden verworfen. Erst wenn die erfasste Position innerhalb des Fensters liegt, wird Done TRUE. Das Erfassungsfenster kann absolut oder modulo interpretiert werden. Dazu ist das Flag ModuloPositions in der Struktur TriggerInput entsprechend zu setzen. Bei absoluten Positionen gibt es exakt ein Fenster. Bei Modulo-Positionen wiederholt sich das Fenster innerhalb des in den Achsparametern festgelegten Modulozyklus (z. B. 0 bis 360 Grad).
FirstPosition | Anfangsposition des Erfassungsfensters, wenn WindowOnly TRUE ist. Diese Position kann absolut oder modulo interpretiert werden. Dazu ist in der Struktur TriggerInput (siehe unten) das Flag ModuloPositions entsprechend zu setzen.
LastPosition | Endposition des Erfassungsfensters, wenn WindowOnly TRUE ist. Diese Position kann absolut oder modulo interpretiert werden. Dazu ist in der Struktur TriggerInput (siehe unten) das Flag ModuloPositions entsprechend zu setzen.
Options | Optionale Parameter
Options. | UseAcceleration | UseAcceleration kann TRUE gesetzt werden, um die Beschleunigung der Achse in die Positions-Berechnungen mit einzubeziehen. UseAcceleration kann von Vorteil sein, wenn die Sollwerte der Beschleunigung verwendet werden können. Bei Encoder-Achsen, die ein verrauschtes Positionssignal liefern, ist UseAcceleration eventuell von Nachteil, da auch die Beschleunigung fehlerhaft ist.
Ausgänge
VAR_OUTPUT
Done : BOOL;
Busy : BOOL;
Error : BOOL;
ErrorID : UDINT;
RecordedPosition : LREAL;
END_VAR
Done | Der Wert RecordedPosition ist gültig. Falls TriggerInput.FreeRun TRUE ist, bleibt Done nur für einen SPS-Zyklus TRUE und wird selbstständig zurückgesetzt, da TouchProbe automatisch neu aktiviert wird.
Busy | Wird TRUE sobald der Baustein aktiv ist und wird FALSE nachdem er sich wieder im Grundzustand befindet. Falls TriggerInput.FreeRun TRUE ist, bleibt Busy permanent TRUE, auch wenn Done oder Error TRUE werden, da TouchProbe automatisch neu aktiviert wird.
Error | Wird TRUE, sobald ein Fehler
ErrorID | Liefert bei einem gesetzten Error-Ausgang die Fehlernummer
RecordedPosition | Erfasste Achsposition zum Zeitpunkt des Trigger-Signals. Wenn TriggerInput.FreeRun TRUE ist, läuft der Funktionsbaustein freilaufend, so dass jede gültige Änderung des Eingangssignals zu einer neuen RecordedPosition führt. Die Position kann jeweils ausgewertet werden, wenn Done TRUE wird.
Ein/Ausgänge
VAR_IN_OUT
Axis : AXIS_REF;
TriggerInput : XFC_TRIGGER_REF;
END_VAR
Axis | Achsdatenstruktur
TriggerInput | TriggerInput ist eine Datenstruktur zur Beschreibung der Trigger-Quelle und zur Einspeisung von Zustand und Zeitstempel eines digitalen Eingangssignals. Diese Datenstruktur wird vom Anwender gefüllt.
Die Achsdatenstruktur vom Typ AXIS_REF adressiert eine Achse eindeutig im System. Sie enthält unter anderem den aktuellen Status der Achse, wie Position, Geschwindigkeit oder Fehlerzustand.


Ausgaberoutinen für digitale Klemmen

Ausgaberoutinen für digitale Klemmen
Ausgaberoutinen für digitale Klemmen
Weiterführende Informationen
•
XFC_EL2252
•
XFC_EL2252_V2
•
XFC_EL2212_V2
•
XFC_EL2262
•
XFC_EL1259_MultiEdge
•
XFC_EL2212_MultiEdge
•
XFC_EL2258_Multiedge
•
XFC_EL2262_MultiEdge


XFC_EL2252

Ausgaberoutinen für digitale Klemmen [image] XFC_EL2252
XFC_EL2252
XFC_EL2252 wickelt die Ausgabe einer digitalen Nocke mit der XFC-Zeitstempelklemme EL2252 ab.
HINWEIS! Für neue Projekte wird der Funktionsbaustein XFC_EL2252_V2 empfohlen.
Die Ausgabe der Daten an die Klemme erfolgt erst kurz vor Erreichen des TimeStamp. Dafür werden bis zur Aktivierung und Quittierung der Ausgänge vier SPS-Zyklen benötigt. Erst danach kann ein weiterer Flankenwechsel erfolgen. Die minimale Zeit zwischen zwei Flankenwechseln des Ausgangssignals beträgt also vier SPS-Zyklen um Fehler oder Verlust der Präzision zu vermeiden. Falls das Ausgangssignal durch ein Nockenschaltwerk generiert wird, kann aus der maximalen Geschwindigkeit und der SPS-Zykluszeit eine Mindest-Nockenbreite berechnet werden.
Die Ausgänge Output1 und Output2 können nicht vollständig unabhängig voneinander verwendet werden, da die Aktivierung mit nur einem Zeitstempel erfolgt. Als Voraussetzung müssen die Schaltflanken beider Kanäle genügend weit auseinander liegen. In diesem Fall wird der jeweils nächstliegende Zeitstempel an den Block angelegt.
Eingänge
VAR_INPUT
Output1 : BOOL;
Output2 : BOOL;
TimeStampValid : BOOL;
TimeStamp : T_DCTIME32;
ForceWhenLate : BOOL;
END_VAR
Output1 | Nächster Ausgangszustand für den Kanal 1 der Klemme, der zum Zeitpunkt TimeStamp aktiv werden wird. Falls das Ausgangssignal durch ein Nockenschaltwerk generiert wird, so ist zu beachten, dass der Ausgang invertiert wird. Das Nockenschaltwerk gibt den aktuellen Signalzustand aus, an Output1 muss aber der nächste Zustand ab dem parametrierten TimeStamp übergeben werden.
Output2 | Nächster Ausgangszustand für den Kanal 2 der Klemme, der zum Zeitpunkt TimeStamp aktiv werden wird. Falls das Ausgangssignal durch ein Nockenschaltwerk generiert wird, so ist zu beachten, dass der Ausgang invertiert wird. Das Nockenschaltwerk gibt den aktuellen Signalzustand aus, an Output2 muss aber der nächste Zustand ab dem parametrierten TimeStamp übergeben werden.
TimeStampValid | TimeStampValid ist TRUE wenn der parametrierte Zeitstempel TimeStamp gültig ist.
TimeStamp | Zeitstempel (Distributed Clock System Time) Die Klemme EL2252 unterstützt nur einen Zeitstempel für beide Ausgänge. Zu diesem Zeitpunkt werden beide Ausgänge Output1 und Output2 gemeinsam aktualisiert. Die Ausgabe an die Klemme erfolgt drei Zyklen vor Erreichen des Zeitstempels. Falls dieser Zeitpunkt überschritten ist, wird abhängig von ForceWhenLate entweder der Ausgang ErrorOutputMissed oder PrecisionReduced gesetzt.
ForceWhenLate | Wenn ForceWhenLate TRUE ist, so wird der Ausgang auch dann geschaltet, wenn der Zeitstempel bereits überschritten ist. Es wird empfohlen, ForceWhenLate zu setzen, um den Ausfall einer Schaltflanke bei Schwankungen des Zeitsignals zu vermeiden.
Ausgänge
VAR_OUTPUT
Error : BOOL;
ErrorID : UDINT;
ErrorOutputMissed : BOOL;
PrecisionReduced : BOOL;
END_VAR
Error | Wird im Fehlerfall TRUE.
ErrorID | Liefert bei einem gesetzten Error-Ausgang eine Fehlernummer
ErrorOutputMissed | Der exakte durch TimeStamp definierte Schaltpunkt konnte nicht eingehalten werden und der Ausgangszustand bleibt unverändert. Falls ForceWhenLate TRUE ist, wird der Ausgangszustand immer ausgegeben und ErrorOutputMissed wird nicht TRUE.
PrecisionReduced | Der exakte durch TimeStamp definierte Schaltpunkt konnte nicht eingehalten werden und der Ausgangszustand wurde aber verspätet ausgegeben. PrecisionReduced ist als Warnung zu verstehen und kann nur TRUE werden, wenn ForceWhenLate TRUE ist.
Ein/Ausgänge
VAR_IN_OUT
TrackOptions : TRACK_REF;
EL2252 : EL2252_IoInterface;
END_VAR
TRACK_REF
TrackOptions | Die Datenstruktur TrackOptions enthält die Parametrierung der Nockenspur.
EL2252 | Prozessabbild der Klemme
Beispiel für die Ausgabe einer Positionsnocke
Folgendes Beispiel zeigt, wie der Ausgang eines Nockenschaltwerks XFC_PositionCam an den Funktionsbaustein XFC_EL2252 zu übergeben ist. Wichtig ist hier die Invertierung des Signalzustandes Level, da der Signalzustand zum Zeitpunkt NextStateChange wechseln wird.
Beispiel für die Ausgabe zweier Positionsnocken an einer Ausgabeklemme
Die Ausgänge Output1 und Output2 können nicht vollständig unabhängig voneinander verwendet werden, da die Aktivierung mit nur einem Zeitstempel erfolgt. Als Voraussetzung müssen die Schaltflanken beider Kanäle genügend weit auseinander liegen (4 SPS-Zyklen). In diesem Fall wird der jeweils nächstliegende Zeitstempel an den Block angelegt. Hier ist auch zu beachten, dass ausschließlich der Ausgang, der sich am nächsten Zeitstempel ändern wird, invertiert werden muss.
PROGRAM EL2252_TwoChannels
VAR
PosCam1 : XFC_PositionCam;
Output1 : OUTPUT_REF;

PosCam2 : XFC_PositionCam;
Output2 : OUTPUT_REF;

EL2252 : XFC_EL2252;
END_VAR

IF Output1.NextStateChange > 0 AND Output1.NextStateChange < Output2.NextStateChange THEN
EL2252.TimeStampValid := Output1.NextStateChangeValid;
EL2252.TimeStamp := Output1.NextStateChange;
EL2252.Output1 := NOT Output1.Level; (* toggle *)
EL2252.Output2 := Output2.Level; (* keep *)
ELSE
EL2252.TimeStampValid := Output2.NextStateChangeValid;
EL2252.TimeStamp := Output2.NextStateChange;
EL2252.Output1 := Output1.Level; (* keep *)
EL2252.Output2 := NOT Output2.Level; (* toggle *)
END_IF


XFC_EL2252_V2

Ausgaberoutinen für digitale Klemmen [image] XFC_EL2252_V2
XFC_EL2252_V2
XFC_EL2252_V2 wickelt die Ausgabe einer digitalen Nocke mit der XFC-Zeitstempelklemme EL2252 ab.
HINWEIS! Der Baustein XFC_EL2252_V2 ersetzt den Baustein XFC_EL2252, welcher aus Kompatibilitätsgründen weiter in der Bibliothek enthalten ist.
Die Ausgabe der Daten an die Klemme erfolgt erst kurz vor Erreichen des Zeitstempels einer der Outputs. Dafür werden bis zur Aktivierung und Quittierung der Ausgänge vier SPS-Zyklen benötigt. Erst danach kann ein weiterer Flankenwechsel erfolgen. Die minimale Zeit zwischen zwei Flankenwechseln des Ausgangssignals beträgt also vier SPS-Zyklen um Fehler oder Verlust der Präzision zu vermeiden. Falls das Ausgangssignal durch ein Nockenschaltwerk generiert wird, kann aus der maximalen Geschwindigkeit und der SPS-Zykluszeit eine Mindest-Nockenbreite berechnet werden.
Die Ausgänge Output1 und Output2 können nicht vollständig unabhängig voneinander verwendet werden, da die Aktivierung mit nur einem Zeitstempel erfolgt. Als Voraussetzung müssen die Schaltflanken beider Kanäle genügend weit auseinander liegen. In diesem Fall wird der jeweils nächstliegende Zeitstempel an den Block angelegt.
Eingänge
VAR_INPUT
ForceWhenLate : BOOL;
END_VAR
ForceWhenLate
Wenn ForceWhenLate TRUE ist, so wird der Ausgang auch dann geschaltet, wenn der Zeitstempel bereits überschritten ist.
Es wird empfohlen, ForceWhenLate zu setzen, um den Ausfall einer Schaltflanke bei Schwankungen des Zeitsignals zu vermeiden.
Ausgänge
VAR_OUTPUT
Error : BOOL;
ErrorID : UDINT;
ErrorOutputMissed : BOOL;
PrecisionReduced : BOOL;
END_VAR
Error | Wird im Fehlerfall TRUE.
ErrorID | Liefert bei einem gesetzten Error-Ausgang eine Fehlernummer
ErrorOutputMissed | Der exakte durch TimeStamp definierte Schaltpunkt konnte nicht eingehalten werden und der Ausgangszustand bleibt unverändert. Falls ForceWhenLate TRUE ist, wird der Ausgangszustand immer ausgegeben und ErrorOutputMissed wird nicht TRUE.
PrecisionReduced | Der exakte durch TimeStamp definierte Schaltpunkt konnte nicht eingehalten werden und der Ausgangszustand wurde aber verspätet ausgegeben. PrecisionReduced ist als Warnung zu verstehen und kann nur TRUE werden, wenn ForceWhenLate TRUE ist.
Ein/Ausgänge
VAR_IN_OUT
Output1 : OUTPUT_REF;
Output2 : OUTPUT_REF;
TrackOptions1 : TRACK_REF;
TrackOptions2 : TRACK_REF;
EL2252 : EL2252_IoInterface;
END_VAR
Output1 | Ausgangszustand für den Kanal 1 der Klemme. Die Datenstruktur Output enthält den berechneten Zustand des digitalen Ausgangs und die zugehörigen Zeitstempel für die Ausgabe an einer digitalen XFC-Ausgangsklemme.
Output2 | Ausgangszustand für den Kanal 2 der Klemme. Die Datenstruktur Output enthält den berechneten Zustand des digitalen Ausgangs und die zugehörigen Zeitstempel für die Ausgabe an einer digitalen XFC-Ausgangsklemme.
TrackOptions1 | Die Datenstruktur TrackOptions1 enthält die Parametrierung der Nockenspur 1 für Output1.
TrackOptions2 | Die Datenstruktur TrackOptions2 enthält die Parametrierung der Nockenspur 2 für Output2.
EL2252 | Prozessabbild der Klemme


XFC_EL2212_V2

Ausgaberoutinen für digitale Klemmen [image] XFC_EL2212_V2
XFC_EL2212_V2
XFC_EL2212_V2 wickelt die Ausgabe einer digitalen Nocke mit der XFC-Zeitstempelklemme EL2212 ab.
HINWEIS! Der Baustein XFC_EL2212_V2 ersetzt den Baustein XFC_EL2212, welcher aus Kompatibilitätsgründen weiter in der Bibliothek enthalten ist.
Die Ausgabe der Daten an die Klemme erfolgt erst kurz vor Erreichen des Zeitstempels einer der Outputs. Dafür werden bis zur Aktivierung und Quittierung der Ausgänge vier SPS-Zyklen benötigt. Erst danach kann ein weiterer Flankenwechsel erfolgen. Die minimale Zeit zwischen zwei Flankenwechseln des Ausgangssignals beträgt also vier SPS-Zyklen, um Fehler oder Verlust der Präzision zu vermeiden. Falls das Ausgangssignal durch ein Nockenschaltwerk generiert wird, kann aus der maximalen Geschwindigkeit und der SPS-Zykluszeit eine Mindest-Nockenbreite berechnet werden.
Die Ausgänge Output1 und Output2 können nicht vollständig unabhängig voneinander verwendet werden, da die Aktivierung mit nur einem Zeitstempel erfolgt. Als Voraussetzung müssen die Schaltflanken beider Kanäle genügend weit auseinander liegen. In diesem Fall wird der jeweils nächstliegende Zeitstempel an den Block angelegt.
Eingänge
VAR_INPUT
ForceWhenLate : BOOL;
END_VAR
ForceWhenLate
Wenn ForceWhenLate TRUE ist, wird der Ausgang auch dann geschaltet, wenn der Zeitstempel bereits überschritten ist.
Es wird empfohlen, ForceWhenLate zu setzen, um den Ausfall einer Schaltflanke bei Schwankungen des Zeitsignals zu vermeiden.
Ausgänge
VAR_OUTPUT
Error : BOOL;
ErrorID : UDINT;
ErrorOutputMissed : BOOL;
PrecisionReduced : BOOL;
END_VAR
Error | Wird im Fehlerfall TRUE.
ErrorID | Liefert bei einem gesetzten Error-Ausgang eine Fehlernummer
ErrorOutputMissed | Der exakte durch TimeStamp definierte Schaltpunkt konnte nicht eingehalten werden und der Ausgangszustand bleibt unverändert. Falls ForceWhenLate TRUE ist, wird der Ausgangszustand immer ausgegeben und ErrorOutputMissed wird nicht TRUE.
PrecisionReduced | Der exakte durch TimeStamp definierte Schaltpunkt konnte nicht eingehalten werden und der Ausgangszustand wurde aber verspätet ausgegeben. PrecisionReduced ist als Warnung zu verstehen und kann nur TRUE werden, wenn ForceWhenLate TRUE ist.
Ein/Ausgänge
VAR_IN_OUT
Output1 : OUTPUT_REF;
Output2 : OUTPUT_REF;
TrackOptions1 : TRACK_REF;
TrackOptions2 : TRACK_REF;
EL2212 : EL2212_IoInterface;
END_VAR
Output1 | Ausgangszustand für den Kanal 1 der Klemme. Die Datenstruktur Output enthält den berechneten Zustand des digitalen Ausgangs und die zugehörigen Zeitstempel für die Ausgabe an einer digitalen XFC-Ausgangsklemme
Output2 | Ausgangszustand für den Kanal 2 der Klemme. Die Datenstruktur Output enthält den berechneten Zustand des digitalen Ausgangs und die zugehörigen Zeitstempel für die Ausgabe an einer digitalen XFC-Ausgangsklemme.
TrackOptions1 | Die Datenstruktur TrackOptions1 enthält die Parametrierung der Nockenspur 1 für Output1.
TrackOptions2 | Die Datenstruktur TrackOptions2 enthält die Parametrierung der Nockenspur 2 für Output2.
EL2212 | Prozessabbild der Klemme


XFC_EL2262

Ausgaberoutinen für digitale Klemmen [image] XFC_EL2262
XFC_EL2262
XFC_EL2262 wickelt die Ausgabe einer digitalen Nocke mit der XFC-Oversampling-Klemme EL2262 ab.
Die maximale Frequenz ist von der Zykluszeit abhängig. Der minimale Abstand zwischen zwei steigenden Signalflanken beträgt zwei SPS-Zyklen. Der minimale Abstand zwischen steigenden und fallenden Flanke kann kleiner als ein SPS-Zyklus sein. Die Schaltgenauigkeit wird durch den eingestellten Oversampling-Faktor der Klemme bestimmt.
Die beiden Kanäle der Klemme sind voneinander unabhängig und werden durch zwei Instanzen des XFC_EL2262 Bausteins bedient.
Eingänge
VAR_INPUT
OversamplingFactor : UINT;
OutputOneCycleDelayed : BOOL; (* TRUE if EL2262 is updated with the NC SAF task at the beginning of the next cycle *)
ForceWhenLate : BOOL;
Channel : INT;
END_VAR
OversamplingFactor | Oversampling Faktor der EL2262 Klemme
OutputOneCycleDelayed | OutputOneCycleDelayed ist TRUE, falls die Ausgabe des Prozessabbildes aufgrund des eingestellten Timings um einen Zyklus verzögert ist. OutputOneCycleDelayed ist abhängig vom Timing der Ausgabetask, an welche die EL2262 gebunden ist.
ForceWhenLate | Wenn sich die Zeitinformation von Zyklus zu Zyklus leicht ändert, kann es passieren, dass eine Schaltflanke nicht ausgegeben werden kann. ForceWhenLate erzwingt in einer solchen Situation ein bestmögliches Schalten. Der Ausgang PrecisionReduced wird in diesem Fall TRUE und kann zur Diagnose verwendet werden. (Zum Beispiel kann im Falle eines erhöhten Jitters in einer Achsposition die Ausgabe einer Schaltflanke nicht exakt auf einen Ausgabezyklus bestimmt werden.)
Channel | Kanalnummer 0 oder 1 der EL2262 Klemme
Ausgänge
VAR_OUTPUT
Error : BOOL;
ErrorID : UDINT;
ErrorOutputMissed : BOOL;
END_VAR
Error | Wird im Fehlerfall TRUE.
ErrorID | Liefert bei einem gesetzten Error-Ausgang eine Fehlernummer
ErrorOutputMissed | zeigt an, dass eine Schaltflanke nicht auf einen Zyklus genau bestimmt werden kann und daher nicht ausgegeben werden kann. Um die Schaltflanke bestmöglich auszugeben kann der Eingang ForceWhenLate gesetzt werden.
PrecisionReduced | zeigt an, dass eine Schaltflanke nicht auf einen Zyklus genau bestimmt werden kann. Die Schaltflanke wurde aber bestmöglich ausgegeben.
Ein/Ausgänge
VAR_IN_OUT
Output : OUTPUT_REF;
TrackOptions : TRACK_REF;
EL2262 : EL2262_IoInterface;
END_VAR
Output | Die Datenstruktur Output enthält den berechneten Zustand des digitalen Ausgangs und die zugehörigen Zeitstempel für die Ausgabe an einer digitalen XFC Ausgangsklemme
TrackOptions | Die Datenstruktur TrackOptions enthält die Parametrierung der Nockenspur.
EL2262 | Prozessabbild der Klemme


XFC_EL1259_MultiEdge

Ausgaberoutinen für digitale Klemmen [image] XFC_EL1259_MultiEdge
XFC_EL1259_MultiEdge
XFC_EL1259_Multiedge wickelt die Ausgabe eines Multi-Edge-Nockenschaltwerkes MC_DigitalCamSwitch_MultiEdge XFC-Zeitstempelklemme EL1259 ab.
Eingänge
VAR_INPUT
ForceWhenLate : BOOL;
Reset : BOOL;
END_VAR
ForceWhenLate | Wenn ForceWhenLate TRUE ist, wird der Ausgang auch dann geschaltet, wenn der Zeitstempel bereits überschritten ist. Es wird empfohlen, ForceWhenLate zu setzen, um den Ausfall einer Schaltflanke bei Schwankungen des Zeitsignals zu vermeiden.
Reset | Reset initiates a reset of the terminal
Ausgänge
VAR_OUTPUT
Error : BOOL;
ErrorID : UDINT;
ErrorOutputMissed : BOOL;
PrecisionReduced : BOOL;
Diagnostics : ST_EL2258_Diagnostics;
END_VAR
Error | Wird im Fehlerfall TRUE.
ErrorID | Liefert bei einem gesetzten Error-Ausgang eine Fehlernummer
ErrorOutputMissed | Der exakte durch TimeStamp definierte Schaltpunkt konnte nicht eingehalten werden und der Ausgangszustand bleibt unverändert. Falls ForceWhenLate TRUE ist, wird der Ausgangszustand immer ausgegeben und ErrorOutputMissed wird nicht TRUE.
PrecisionReduced | Der exakte durch TimeStamp definierte Schaltpunkt konnte nicht eingehalten werden und der Ausgangszustand wurde aber verspätet ausgegeben. PrecisionReduced ist als Warnung zu verstehen und kann nur TRUE werden, wenn ForceWhenLate TRUE ist.
Ein/Ausgänge
VAR_IN_OUT
Output : OUTPUT_REF_MULTIEDGE;
TrackOptions : TRACK_REF;
EL1259 : EL1259_IoInterface;
END_VAR
Output | Ausgangszustand für einen Kanal der Klemme. Die Datenstruktur Output enthält die nächsten berechneten Zustände des digitalen Ausgangs und die zugehörigen Zeitstempel für die Ausgabe an einer digitalen XFC Ausgangsklemme.
TrackOptions | Die Datenstruktur TrackOptions enthält die Parametrierung der Nockenspur.
EL1259 | Prozessabbild der Klemme


XFC_EL2212_MultiEdge

Ausgaberoutinen für digitale Klemmen [image] XFC_EL2212_MultiEdge
XFC_EL2212_MultiEdge
XFC_EL2212_MultiEdge wickelt die Ausgabe eines Multi-Edge-Nockenschaltwerkes MC_DigitalCamSwitch_MultiEdge XFC-Zeitstempelklemme EL2212 ab.
Eingänge
VAR_INPUT
ForceWhenLate : BOOL;
Reset : BOOL;
END_VAR
ForceWhenLate | Wenn ForceWhenLate TRUE ist, wird der Ausgang auch dann geschaltet, wenn der Zeitstempel bereits überschritten ist. Es wird empfohlen, ForceWhenLate zu setzen, um den Ausfall einer Schaltflanke bei Schwankungen des Zeitsignals zu vermeiden.
Reset | Reset initiates a reset of the terminal
Ausgänge
VAR_OUTPUT
Error : BOOL;
ErrorID : UDINT;
ErrorOutputMissed : BOOL;
PrecisionReduced : BOOL;
Diagnostics : ST_EL2258_Diagnostics;
END_VAR
Error | Wird im Fehlerfall TRUE.
ErrorID | Liefert bei einem gesetzten Error-Ausgang eine Fehlernummer
ErrorOutputMissed | Der exakte durch TimeStamp definierte Schaltpunkt konnte nicht eingehalten werden und der Ausgangszustand bleibt unverändert. Falls ForceWhenLate TRUE ist, wird der Ausgangszustand immer ausgegeben und ErrorOutputMissed wird nicht TRUE.
PrecisionReduced | Der exakte durch TimeStamp definierte Schaltpunkt konnte nicht eingehalten werden und der Ausgangszustand wurde aber verspätet ausgegeben. PrecisionReduced ist als Warnung zu verstehen und kann nur TRUE werden, wenn ForceWhenLate TRUE ist.
Ein/Ausgänge
VAR_IN_OUT
Output : OUTPUT_REF_MULTIEDGE;
TrackOptions : TRACK_REF;
EL2212 : EL2212_IoInterface;
END_VAR
Output | Ausgangszustand für einen Kanal der Klemme. Die Datenstruktur Output enthält die nächsten berechneten Zustände des digitalen Ausgangs und die zugehörigen Zeitstempel für die Ausgabe an einer digitalen XFC Ausgangsklemme.
TrackOptions | Die Datenstruktur TrackOptions enthält die Parametrierung der Nockenspur.
EL2212 | Prozessabbild der Klemme
Prozessabbild
Die Klemme wird für den Betrieb mit diesem Funktionsbaustein im Multi-Timestamp-Modus mit bis zu 10 Zeitstempeln in das Prozessabbild eingefügt und der DC-Mode muss aktiviert werden.


XFC_EL2258_Multiedge

Ausgaberoutinen für digitale Klemmen [image] XFC_EL2258_Multiedge
XFC_EL2258_Multiedge
XFC_EL2258_Multiedge wickelt die Ausgabe eines Multi-Edge-Nockenschaltwerkes MC_DigitalCamSwitch_MultiEdge XFC-Zeitstempelklemme EL2258 ab.
Eingänge
VAR_INPUT
ForceWhenLate : BOOL;
Reset : BOOL;
END_VAR
ForceWhenLate | Wenn ForceWhenLate TRUE ist, wird der Ausgang auch dann geschaltet, wenn der Zeitstempel bereits überschritten ist. Es wird empfohlen, ForceWhenLate zu setzen, um den Ausfall einer Schaltflanke bei Schwankungen des Zeitsignals zu vermeiden.
Reset | Reset initiates a reset of the terminal
Ausgänge
VAR_OUTPUT
Error : BOOL;
ErrorID : UDINT;
ErrorOutputMissed : BOOL;
PrecisionReduced : BOOL;
Diagnostics : ST_EL2258_Diagnostics;
END_VAR
Error | Wird im Fehlerfall TRUE.
ErrorID | Liefert bei einem gesetzten Error-Ausgang eine Fehlernummer
ErrorOutputMissed | Der exakte durch TimeStamp definierte Schaltpunkt konnte nicht eingehalten werden und der Ausgangszustand bleibt unverändert. Falls ForceWhenLate TRUE ist, wird der Ausgangszustand immer ausgegeben und ErrorOutputMissed wird nicht TRUE.
PrecisionReduced | Der exakte durch TimeStamp definierte Schaltpunkt konnte nicht eingehalten werden und der Ausgangszustand wurde aber verspätet ausgegeben. PrecisionReduced ist als Warnung zu verstehen und kann nur TRUE werden, wenn ForceWhenLate TRUE ist.
Diagnostics | Datenstruktur, die Diagnosedaten enthält, die zur Fehleranalyse heran gezogen werden können.
Ein/Ausgänge
VAR_IN_OUT
Output : OUTPUT_REF_MULTIEDGE;
TrackOptions : TRACK_REF;
EL2258 : EL2258_IoInterface;
END_VAR
Output | Ausgangszustand für einen Kanal der Klemme. Die Datenstruktur Output enthält die nächsten berechneten Zustände des digitalen Ausgangs und die zugehörigen Zeitstempel für die Ausgabe an einer digitalen XFC Ausgangsklemme.
TrackOptions | Die Datenstruktur TrackOptions enthält die Parametrierung der Nockenspur.
EL2258 | Prozessabbild der Klemme


XFC_EL2262_MultiEdge

Ausgaberoutinen für digitale Klemmen [image] XFC_EL2262_MultiEdge
XFC_EL2262_MultiEdge
XFC_EL2262_Multiedge wickelt die Ausgabe von digitalen Nocken mit der XFC-Oversampling-Klemme EL2262 ab.
Die maximale Frequenz ist von der Zykluszeit abhängig. Der minimale Abstand zwischen zwei steigenden Signalflanken beträgt (2*SPS-Zykluszeit) / Oversampling-Faktor. Der minimale Abstand zwischen steigenden und fallenden Flanke beträgt SPS-Zykluszeit / Oversampling-Faktor. Die Schaltgenauigkeit wird durch den eingestellten Oversampling-Faktor der Klemme bestimmt.
Eingänge
VAR_INPUT
Reset : BOOL;
Preset : BOOL;
OversamplingFactor : UINT;
OutputOneCycleDelayed : BOOL; (* TRUE if EL2262 is updated with the NC SAF task at the beginning of the next cycle *)
ForceWhenLate : BOOL; (* forces the output even when the timestamp is missed *)
Channel : INT; (* select 0 or 1 for Output0 or Output1 *)
END_VAR
Reset | Der Klemmenausgang wird deaktiviert.
Preset | Der Klemmenausgang wird aktiviert.
OversamplingFactor | Oversampling Faktor der EL2262 Klemme
OutputOneCycleDelayed | OutputOneCycleDelayed ist TRUE, falls die Ausgabe des Prozessabbildes aufgrund des eingestellten Timings um einen Zyklus verzögert ist. OutputOneCycleDelayed ist abhängig vom Timing der Ausgabetask, an welche die EL2262 gebunden ist.
ForceWhenLate | Wenn sich die Zeitinformation von Zyklus zu Zyklus leicht ändert, kann es passieren, dass eine Schaltflanke nicht ausgegeben werden kann. ForceWhenLate erzwingt in einer solchen Situation ein bestmögliches Schalten. Der Ausgang PrecisionReduced wird in diesem Fall TRUE und kann zur Diagnose verwendet werden. (Zum Beispiel kann im Falle eines erhöhten Jitters in einer Achsposition die Ausgabe einer Schaltflanke nicht exakt auf einen Ausgabezyklus bestimmt werden.)
Channel | Legt den Ausgabekanal der EL2262 fest, wobei 0 = Output0 und 1 = Output1 entspricht.
Ausgänge
VAR_OUTPUT
Error : BOOL;
ErrorID : UDINT;
ErrorOutputMissed : BOOL;
PrecisionReduced : BOOL;
Diagnostics : ST_EL2262_Diagnostics;
END_VAR
Error | Wird im Fehlerfall TRUE.
ErrorID | Liefert bei einem gesetzten Error-Ausgang eine Fehlernummer
ErrorOutputMissed | zeigt an, dass eine Schaltflanke nicht auf einen Zyklus genau bestimmt werden konnte und daher nicht ausgegeben werden kann. Um die Schaltflanke bestmöglich auszugeben kann der Eingang ForceWhenLate gesetzt werden.
PrecisionReduced | zeigt an, dass eine Schaltflanke nicht auf einen Zyklus genau bestimmt werden konnte. Die Schaltflanke wurde aber bestmöglich ausgegeben.
Diagnostics | Datenstruktur die Diagnosedaten enthält die zur Fehleranalyse heran gezogen werden können
Ein/Ausgänge
VAR_IN_OUT
Output : OUTPUT_REF_MULTIEDGE;
TrackOptions : TRACK_REF;
EL2262 : EL2262_IoInterface;
END_VAR
Output | Die Datenstruktur Output enthält ein Array von berechneten Zuständen des digitalen Ausgangs und die zugehörigen Zeitstempel für die Ausgabe an einer digitalen XFC Ausgangsklemme
TrackOptions | Die Datenstruktur TrackOptions enthält die Parametrierung der Nockenspur.
EL2262 | Prozessabbild der Klemme


Datentypen

Datentypen
Datentypen
Weiterführende Informationen
•
Datentyp MC_CamSwitch
•
Datentyp CAMSWITCH_REF
•
Datentyp OUTPUT_REF
•
Datentyp OUTPUT_REF_MULTIEDGE
•
Datentyp TRACK_REF
•
Datentyp XFC_TRIGGER_REF
•
Datentyp ST_EL2258_Diagnostics
•
Datentyp ST_EL2262_Diagnostics


Datentyp MC_CamSwitch

Datentypen [image] Datentyp MC_CamSwitch
Datentyp MC_CamSwitch
Der Datentyp MC_CamSwitch enthält alle Parameter einer digitalen Nocke für ein digitales Nockenschaltwerk MC_DigitalCamSwitch.
TYPE MC_CamSwitch :
STRUCT
FirstOnPosition : LREAL;
LastOnPosition : LREAL;
AxisDirection : E_CamSwitchDirection;
CamSwitchMode : E_CamSwitchMode;
Duration : LREAL;
END_STRUCT
END_TYPE
Die Datenstruktur zur Parametrierung eines digitalen Nockenschaltwerks ist üblicherweise ein ARRAY OF MC_CamSwitch. Eine weitere Struktur CAMSWITCH_REF verweist auf diese Struktur.
FirstOnPosition | Erste Position, ab der die Nocke eingeschaltet ist.
LastOnPosition | Letzte Position, bis zu der die Nocke eingeschaltet ist. Die Nockenfunktion ist invertiert, wenn LastOnPosition < FirstOnPosition. LastOnPosition wird bei Zeitnocken nicht verwendet.
AxisDirection | AxisDirection legt fest, in welcher Fahrtrichtung der Achse die digitale Nocke aktiv ist (positiv, negativ oder beide Richtungen).
CamSwitchMode | Typ der digitalen Nocke (Positionsnocke, Zeitnocke oder Bremsnocke).
Duration | Duration definiert die Einschaltdauer der Nocke in [s] und wird ausschließlich bei Zeitnocken verwendet.
TYPE E_CamSwitchDirection :
(
CAMSWITCHDIRECTION_BOTH, (* digital cam will work in both directions *)
CAMSWITCHDIRECTION_POSITIVE, (* digital cam is just working in positive direction *)
CAMSWITCHDIRECTION_NEGATIVE (* digital cam is just working in negative direction *)
);
END_TYPE
TYPE E_CamSwitchMode :
(
CAMSWITCHMODE_POSITION, (* position cam *)
CAMSWITCHMODE_TIME, (* time cam *)
CAMSWITCHMODE_BREAK (* break cam *)
);
END_TYPE


Datentyp CAMSWITCH_REF

Datentypen [image] Datentyp CAMSWITCH_REF
Datentyp CAMSWITCH_REF
Der Datentyp CAMSWITCH_REF verweist auf eine Datenstruktur mit Nockenparametern für ein digitales Nockenschaltwerk MC_DigitalCamSwitch.
TYPE CAMSWITCH_REF :
STRUCT
NumberOfSwitches : UDINT;
pSwitches : POINTER TO MC_CamSwitch;
SizeOfSwitches : UDINT;
END_STRUCT
END_TYPE
Die eigentliche Datenstruktur zur Parametrierung eines digitalen Nockenschaltwerks ist üblicherweise ein ARRAY OF MC_CamSwitch. CAMSWITCH_REF verweist mit einem POINTER auf diese Struktur und definiert eindeutig die Größe der Struktur und die Anzahl der tatsächlich verwendeten Nocken.
Eine Variable des Typs CAMSWITCH_REF wird, wie in dem folgenden Beispiel gezeigt, initialisiert:
VAR
CamSwitchArray : ARRAY[1..3] OF MC_CamSwitch;
CamSwitchRef : CAMSWITCH_REF;
END_VAR
MC_CamSwitch
(* real number of defined digital cams *)
CamSwitchRef.NumberOfSwitches := 1; (* 1..3 *)
(* pointer to the digital cam data array *)
CamSwitchRef.pSwitches := ADR(CamSwitchArray);
(* maximum size of the digital cam data array *)
CamSwitchRef.SizeOfSwitches := SIZEOF(CamSwitchArray);
Beispiel mit zwei Nockenspuren


Datentyp OUTPUT_REF

Datentypen [image] Datentyp OUTPUT_REF
Datentyp OUTPUT_REF
Der Datentyp OUTPUT_REF enthält Daten zur Beschreibung des Zustandes eines digitalen Ausgangs. Neben dem Schaltzustand werden Zeitstempel für Zustandswechsel mitgeführt.
TYPE OUTPUT_REF :
STRUCT
Level : BOOL; (* current level of the digital output *)

NextStateChangeValid : BOOL; (* time value NextStateChange is valid *)
NextStateChange : T_DCTIME32; (* time of next state change - current level will be inverted *)

NextOnTimeValid : BOOL; (* time value NextOnTime is valid *)
NextOnTime : T_DCTIME32; (* time when the digital output is turned ON next time *)

NextOffTimeValid : BOOL; (* time value NextOffTime is valid *)
NextOffTime : T_DCTIME32; (* time when the digital output is turned OFF next time *)
END_STRUCT
END_TYPE
Level | Aktueller Schaltzustand des digitalen Ausgangs
NextStateChangeValid | NextStateChangeValid ist TRUE, wenn der Zeitstempel NextStateChange gültig ist.
NextStateChange | Zeitpunkt des nächsten Zustandswechsels (Distributed Clock TimeStamp)
NextOnTimeValid | NextOnTimeValid ist TRUE, wenn der Zeitstempel NextOnTime gültig ist.
NextOnTime | Zeitpunkt der nächsten positiven Schaltflanke (Distributed Clock TimeStamp)
NextOffTimeValid | NextOffTimeValid ist TRUE, wenn der Zeitstempel NextOffTime gültig ist.
NextOffTime | Zeitpunkt der nächsten negativen Schaltflanke (Distributed Clock TimeStamp)


Datentyp OUTPUT_REF_MULTIEDGE

Datentypen [image] Datentyp OUTPUT_REF_MULTIEDGE
Datentyp OUTPUT_REF_MULTIEDGE
Der Datentyp OUTPUT_REF_MULTIEDGE enthält Daten zur Beschreibung des Zustandes eines digitalen Ausgangs. Neben dem Schaltzustand werden Zeitstempel für Zustandswechsel mitgeführt. Der Datentyp wird im Zusammenhang mit Klemmen verwendet, die mittels Multi-Timestamp mehrere Schaltvorgänge pro SPS-Zyklus ermöglichen.
TYPE OUTPUT_REF_MULTIEDGE :
STRUCT
SwitchEvent : ARRAY [0..TCMC2_XFC_MAXINDEXOFMULTIEDGEOUTPUTEVENTS] OF ST_SwitchEvent;
END_STRUCT
END_TYPE

TYPE ST_SwitchEvent :
STRUCT
ID : UDINT;
Valid : BOOL; (* time value is valid *)
Level : BOOL; (* next level of the digital signal *)
Position : LREAL;
DcTime : T_DCTIME32; (* time when the digital output changes *)
Duration : DINT;
END_STRUCT
END_TYPE
ID | Interne Kennung der Schaltflanke
Valid | Valid ist TRUE, wenn der Zeitstempel DcTime gültig ist.
Level | Aktueller Schaltzustand des digitalen Ausgangs
Position | Schaltposition des Schaltvorgangs
DcTime | Zeitpunkt des nächsten Zustandswechsels (Distributed Clock TimeStamp)
Duration | Nicht genutzt


Datentyp TRACK_REF

Datentypen [image] Datentyp TRACK_REF
Datentyp TRACK_REF
Der Datentyp TRACK_REF enthält die Parameter einer digitalen Nockenspur für ein digitales Nockenschaltwerk MC_DigitalCamSwitch.
TYPE TRACK_REF :
STRUCT
ModuloPositions : BOOL := TRUE; (* all cam positions are interpreted as modulo positions when TRUE *)
ModuloFactor : LREAL := 360; (* e. g. 360 degrees *)
OnCompensation : LREAL; (* compensation time [s] *)
OffCompensation : LREAL; (* compensation time [s] *)
Hysteresis : LREAL; (* distance from last switch position (+ or -) *)
BreakRelease : BOOL; (* allow break to be released when TRUE, break cams will be activated when FALSE *)
Force : BOOL; (* override all digital cams and set track ON *)
Disable : BOOL; (* override all digital cams and set track OFF - overrides Force as well *)
END_STRUCT
END_TYPE
ModuloPositions | Wenn Modulo TRUE ist, werden alle Positionen modulo interpretiert. Die Nockenfunktion wird dadurch zyklisch wiederholt. Zur Berechnung des Modulo-Zyklus wird der Parameter ModuloFactor verwendet.
ModuloFactor | ModuloFactor gibt die Länge eines Modulo-Zyklus in der Positionseinheit der Achse an und wird nur verwendet, wenn Modulo TRUE ist.
OnCompensation | Kompensationszeit für die steigende Flanke der Nocke in [s]. Der Schaltzeitpunkt wird bei negativen Werten von OnCompensation vorgezogen und sonst verzögert.
OffCompensation | Kompensationszeit für die fallende Flanke der Nocke in [s]. Der Schaltzeitpunkt wird bei negativen Werten von OffCompensation vorgezogen und sonst verzögert.
Hysteresis | nicht implementiert. Hysterese der Schaltvorgänge bei Drehrichtungsumkehr. Die Hysterese wird in der Positionseinheit der Achse angegeben.
BreakRelease | Bremsfreigabe für Bremsnocken auf diese Nockenspur
Force | Der digitale Ausgang wird unabhängig von den Nocken auf dieser Spur aktiv geschaltet. Disable hat Vorrang vor Force.
Disable | Der digitale Ausgang wird unabhängig von den Nocken auf dieser Spur inaktiv geschaltet. Disable hat Vorrang vor Force.
Wirkungsweise der Zeitkompensation


Datentyp XFC_TRIGGER_REF

Datentypen [image] Datentyp XFC_TRIGGER_REF
Datentyp XFC_TRIGGER_REF
Der Datentyp XFC_TRIGGER_REF enthält Status und Parameter eines digitalen Eingangs, der für die Funktion XFC_TouchProbe verwendet wird.
TYPE XFC_TRIGGER_REF :
STRUCT
Signal : BOOL;
TimestampRisingEdge : T_DCTIME32;
TimestampFallingEdge : T_DCTIME32;
Edge : E_SignalEdge;
FreeRun : BOOL;
EncoderIndex : UINT;
ModuloPositions : BOOL;
ModuloFactor : LREAL := 360.0;
END_STRUCT
END_TYPE
Signal | Aktueller Zustand des digitalen Eingangssignals. Der aktuelle Zustand muss an dieser Stelle eingespeist werden.
TimestampRisingEdge | Zeitstempel der letzten steigenden Flanke des digitalen Eingangssignals. Es ist nur notwendig, den Zeitstempel der über Edge definierten Flanke einzuspeisen. Falls das Eingangssignal einen 64 Bit Zeitstempel T_DCTIME liefert, werden hier nur die unteren 32 Bit eingespeist. Es muss daher sichergestellt sein, dass der Wert zum Zeitpunkt der Auswertung nicht älter als 2 Sekunden ist.
TimestampFallingEdge | Zeitstempel der letzten fallenden Flanke des digitalen Eingangssignals. Es ist nur notwendig, den Zeitstempel der über Edge definierten Flanke einzuspeisen. Falls das Eingangssignal einen 64 Bit Zeitstempel T_DCTIME liefert, werden hier nur die unteren 32 Bit eingespeist. Es muss daher sichergestellt sein, dass der Wert zum Zeitpunkt der Auswertung nicht älter als 2 Sekunden ist.
Edge | Edge definiert die Signalflanke, die zur Auswertung der Achsposition verwendet werden soll. TYPE E_SignalEdge : ( RisingEdge, FallingEdge ); END_TYPE
FreeRun | Wenn FreeRun TRUE ist, wird der Eingang fortlaufend gelatcht. Beim Funktionsbaustein XFC_TouchProbe muss dann der Eingang Execute TRUE bleiben. Es ist also keine Flanke an Execute notwendig, um den nächsten neuen Positionswert aufzuzeichnen.
EncoderIndex | Wenn mehr als ein Encoder mit der Achse verbunden ist, kann der Encoder-Index [0..9] hier festgelegt werden. Der erste Encoder hat den Index 0.
ModuloPositions | Wenn Modulo TRUE ist, werden alle Positionen modulo interpretiert. Zur Berechnung des Modulo-Zyklus wird der Parameter ModuloFactor verwendet.
ModuloFactor | ModuloFactor gibt die Länge eines Modulo-Zyklus in der Positionseinheit der Achse an und wird nur verwendet, wenn Modulo TRUE ist.


Datentyp ST_EL2258_Diagnostics

Datentypen [image] Datentyp ST_EL2258_Diagnostics
Datentyp ST_EL2258_Diagnostics
Der Datentyp ST_EL2258_Diagnostics enthält Diagnosedaten die zur Fehleranalyse herangezogen werden können.
TYPE ST_EL2258_Diagnostics :
STRUCT
ErrorOnOutputMissed : BOOL;
ErrorOffOutputMissed : BOOL;
ErrorNoOfEventsExceeded : BOOL;
ErrorBufferOverflow : BOOL;
ErrorEventDistance : BOOL;
OnPrecisionReduced : BOOL;
OffPrecisionReduced : BOOL;
LastOutputLevel : BOOL;
ActivatedOnValues : INT;
ActivatedOffValues : INT;
END_STRUCT
END_TYPE
ErrorOnOutputMissed | Zeigt an, dass eine steigende Schaltflanke nicht auf einen Zyklus genau bestimmt werden konnte und daher nicht ausgegeben werden kann. Um die Schaltflanke bestmöglich auszugeben kann der Eingang ForceWhenLate gesetzt werden.
ErrorOffOutputMissed | Zeigt an, dass eine fallende Schaltflanke nicht auf einen Zyklus genau bestimmt werden konnte und daher nicht ausgegeben werden kann. Um die Schaltflanke bestmöglich auszugeben, kann der Eingang ForceWhenLate gesetzt werden.
ErrorNoOfEventsExceeded | Zeigt an, dass zu viele Flanken für einen Zyklus geliefert wurden und somit nicht alle ausgegeben werden können.
ErrorBufferOverflow | Zeigt an, dass der Ausgabepuffer der EL2258 voll ist.
ErrorEventDistance | Zeigt an, dass der Abstand zweier aufeinanderfolgender Flanken zu gering ist.
OnPrecisionReduced | Zeigt an, dass eine steigende Schaltflanke nicht auf einen Zyklus genau bestimmt werden konnte. Die Schaltflanke wurde aber bestmöglich ausgegeben.
OffPrecisionReduced | Zeigt an, dass eine fallende Schaltflanke nicht auf einen Zyklus genau bestimmt werden konnte. Die Schaltflanke wurde aber bestmöglich ausgegeben.
LastOutputLevel | Zeigt an welchen Signalzustand der Kanal der EL2262 nach dem folgenden Update haben wird.
ActivatedOnValues | Anzahl der in diesem Zyklus aktivierten steigenden Flanken
ActivatedOffValues | Anzahl der in diesem Zyklus aktivierten fallenden Flanken


Datentyp ST_EL2262_Diagnostics

Datentypen [image] Datentyp ST_EL2262_Diagnostics
Datentyp ST_EL2262_Diagnostics
Der Datentyp ST_EL2262_Diagnostics enthält Diagnosedaten die zur Fehleranalyse herangezogen werden können.
TYPE ST_EL2262_Diagnostics :
STRUCT
ErrorOnOutputMissed : BOOL;
ErrorOffOutputMissed : BOOL;
OnPrecisionReduced : BOOL;
OffPrecisionReduced : BOOL;
LastOutputLevel : BOOL;
ActivatedOnValues : INT;
ActivatedOffValues : INT;
END_STRUCT
END_TYPE
ErrorOnOutputMissed | Zeigt an, dass eine steigende Schaltflanke nicht auf einen Zyklus genau bestimmt werden konnte und daher nicht ausgegeben werden kann. Um die Schaltflanke bestmöglich auszugeben, kann der Eingang ForceWhenLate gesetzt werden.
ErrorOffOutputMissed | Zeigt an, dass eine fallende Schaltflanke nicht auf einen Zyklus genau bestimmt werden konnte und daher nicht ausgegeben werden kann. Um die Schaltflanke bestmöglich auszugeben, kann der Eingang ForceWhenLate gesetzt werden.
OnPrecisionReduced | Zeigt an, dass eine steigende Schaltflanke nicht auf einen Zyklus genau bestimmt werden konnte. Die Schaltflanke wurde aber bestmöglich ausgegeben.
OffPrecisionReduced | Zeigt an, dass eine fallende Schaltflanke nicht auf einen Zyklus genau bestimmt werden konnte. Die Schaltflanke wurde aber bestmöglich ausgegeben.
LastOutputLevel | Zeigt an, welchen Signalzustand der Kanal der EL2262 nach dem folgenden Update haben wird.
ActivatedOnValues | Anzahl der in diesem Zyklus aktivierten steigenden Flanken
ActivatedOffValues | Anzahl der in diesem Zyklus aktivierten fallenden Flanken