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.

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.


Übersicht

In vielen Anwendungen ist es notwendig, zwei oder mehr Achsen miteinander zu synchronisieren. In der TwinCAT NC PTP können Achsen aneinander gekoppelt werden. Eine Master-Achse wird dann aktiv verfahren und ein oder mehrere gekoppelte Slave-Achsen werden durch die NC synchron mitpositioniert.

Die einfachste Kopplungsart ist die Linearkopplung mit einem festen Übersetzungsverhältnis (elektronisches Getriebe).

Für manche Anwendungen ist eine komplexere, mathematisch nicht durch eine Formel beschreibbare Kopplung von Master und Slave notwendig. Diese Abhängigkeit kann durch eine Tabelle beschrieben werden, in der zu jeder Master-Position eine zugehörige Slave-Position festgehalten wird.

Die TwinCAT NC PTP bietet die Möglichkeit, eine Slave-Achse über eine Tabelle an eine Master-Achse zu koppeln (elektronische Kurvenscheibe). Dabei enthält die Tabelle eine Anzahl von vorgegebenen Stützstellen, zwischen denen die NC Position und Geschwindigkeit interpoliert.

FIFO-Achsen erweitern das Tabellenkonzept für beliebige, üblicherweise nicht zyklisch wiederkehrende Abläufe. Hier wird keine vor Ablauf erstellte Master-Slave-Tabelle vorgegeben, sondern die aktuellen Achspositionen werden permanent durch ein SPS-Programm "nachgefüttert". Indem die FIFO-Achsen in einer FIFO-Gruppe zusammengefasst werden, lassen sich synchronisierte Bewegungen zwischen den Achsen realisieren.

Zur einfachen Handhabung der FIFO-Achsen dient die TwinCAT PLC Library TcNcFifoAxis.lib, die als zusätzliches Produkt erhältlich ist. Ein Beispielprogramm zum Thema FIFO-Achsen verwendet diese Bibliothek.


FiFoGetDimension

FiFoGetDimension ermittelt die Dimensionierung, d. h. die Anzahl der Achsen und die maximale Anzahl der FIFO-Einträge eines FIFO-Kanals.

Interface

VAR_INPUT
    iChannelId  : UDINT;
    bExecute    : BOOL;
    tTimeout    : TIME;
END_VAR
VAR_OUTPUT
    bBusy             : BOOL;
    bErr              : BOOL;
    iErrId            : UDINT;
    iNoOfAxes         : UDINT;
    iNoOfFifoEntries  : UDINT;
END_VAR

iChannelId: Kanal-ID des FIFO-Kanals

bExecute : Flankengetriggertes Signal zum Ausführen des Kommandos

tTimeout : ADS-Timeout (ca. 1 Sekunde)

bBusy : wird mit steigender Flanke an bExecute TRUE und bleibt TRUE, solange der Baustein das Kommando ausführt

bErr : wird TRUE, wenn beim Ausführen des Kommandos ein Fehler aufgetreten ist.

bErrId : Fehlernummer (ADS- oder NC-Fehlernummer)

iNoOfAxes: Anzahl der Achsen für die der FIFO-Kanal parametriert wurde

iNoOfFifoEntries: Anzahl der FIFO-Einträge für die der FIFO-Kanal parametriert wurde


FiFoGroupIntegrate

FiFoGroupIntegrate integriert eine zunächst unabhängige PTP-Achse in einen FIFO-Kanal. iGroupPosition bestimmt die logische Reichenfolge und gibt an an welcher Position innerhalb des Kanals die Achse eingefügt werden soll.

Interface

VAR_INPUT
    iChannelId     : UDINT;
    iAxisId        : UDINT; (* [1..n] *)
    iGroupPosition : UDINT; (* [1..m] *)
    bExecute       : BOOL;
    tTimeout       : TIME;
END_VAR
VAR_OUTPUT
    bBusy    : BOOL;
    bErr     : BOOL;
    iErrId   : UDINT;
END_VAR

iChannelId: Kanal-ID des FIFO-Kanals

iAxisId : Achs-ID einer Achse, die in den FIFO-Kanal eingefügt werden soll

iGroupPosition : Position der Achse innerhalb des FIFO-Kanals (iGroupPosition>=1)

bExecute : Flankengetriggertes Signal zum Ausführen des Kommandos

tTimeout : ADS-Timeout (ca. 1 Sekunde)

bBusy : wird mit steigender Flanke an bExecute TRUE und bleibt TRUE, solange der Baustein das Kommando ausführt

bErr : wird TRUE, wenn beim Ausführen des Kommandos ein Fehler aufgetreten ist.

bErrId : Fehlernummer (ADS- oder NC-Fehlernummer)


FiFoWrite

FiFoWrite liest Positionsdaten für iColDim Achsen des FIFO-Kanals aus AdrDataArray und überträgt iRowsToWrite Einträge in den FIFO.

Interface

VAR_INPUT
    iChannelId    : UDINT;
    AdrDataArray  : POINTER TO LREAL; (* PLC: ARRAY[ ROWS, COLUMNS ] OF LREAL *)
    iColDim       : UDINT; (* second array dimension (COLUMNS) *)
    iRowsToWrite  : UDINT; (* number of rows to write <= RowDim *)
    bExecute      : BOOL;
    tTimeout      : TIME;
END_VAR
VAR_OUTPUT
    bBusy     : BOOL;
    bErr      : BOOL;
    iErrId    : UDINT;
END_VAR

iChannelId: Kanal-ID des FIFO-Kanals

AdrDataArray : Adresse eines Datenfeldes, dass die Positionsdaten für Master- und Slave-Achsen enthält. Die erste Dimension des Feldes beschreibt die Tabellenzeilen, die zweite Dimension die Tabellenspalten.

iColDim : Anzahl der Spalten des Datenfeldes. Dieser Wert muss der tatsächlichen Größe der zweiten Felddimension entsprechen.

iRowsToWrite : Anzahl der Tabellenzeilen. Dieser Wert darf kleiner oder gleich der Größe der ersten Felddimension sein.

bExecute : Flankengetriggertes Signal zum Ausführen des Kommandos

tTimeout : ADS-Timeout (ca. 1 Sekunde)

bBusy : wird mit steigender Flanke an bExecute TRUE und bleibt TRUE, solange der Baustein das Kommando ausführt

bErr : wird TRUE, wenn beim Ausführen des Kommandos ein Fehler aufgetreten ist.

bErrId : Fehlernummer (ADS- oder NC-Fehlernummer)


FiFoWrite

TS5060 | TwinCAT NC FIFO Axes

FiFoOverwrite

FiFoOverwrite liest Positionsdaten für iColDim Achsen des FIFO-Kanals aus AdrDataArray und überträgt iRowsToWrite Einträge in den FIFO. Dabei werden bestehende Daten im FIFO überschrieben.

Interface

VAR_INPUT
    iChannelId    : UDINT;
    AdrDataArray  : POINTER TO LREAL; (* PLC: ARRAY[ ROWS, COLUMNS ] OF LREAL *)
    iColDim       : UDINT; (* second array dimension (COLUMNS) *)
    iRowsToWrite  : UDINT; (* number of rows to write <= RowDim *)
    bExecute      : BOOL;
    tTimeout      : TIME;
END_VAR
VAR_OUTPUT
    bBusy     : BOOL;
    bErr      : BOOL;
    iErrId    : UDINT;
END_VAR

iChannelId: Kanal-ID des FIFO-Kanals

AdrDataArray : Adresse eines Datenfeldes, dass die Positionsdaten für Master- und Slave-Achsen enthält. Die erste Dimension des Feldes beschreibt die Tabellenzeilen, die zweite Dimension die Tabellenspalten.

iColDim : Anzahl der Spalten des Datenfeldes. Dieser Wert muss der tatsächlichen Größe der zweiten Felddimension entsprechen.

iRowsToWrite : Anzahl der Tabellenzeilen. Dieser Wert darf kleiner oder gleich der Größe der ersten Felddimension sein.

bExecute : Flankengetriggertes Signal zum Ausführen des Kommandos

tTimeout : ADS-Timeout (ca. 1 Sekunde)

bBusy : wird mit steigender Flanke an bExecute TRUE und bleibt TRUE, solange der Baustein das Kommando ausführt

bErr : wird TRUE, wenn beim Ausführen des Kommandos ein Fehler aufgetreten ist.

bErrId : Fehlernummer (ADS- oder NC-Fehlernummer)


FiFoStart

FiFoStart startet die Abarbeitung des FIFO-Kanals, d. h. alle Achsen im FIFO-Kanal werden anhand der vorher im FIFO bereitgestellten Positionsdaten verfahren.

Interface

VAR_INPUT
    iChannelId    : UDINT;
    bExecute      : BOOL;
    tTimeout      : TIME;
END_VAR
VAR_OUTPUT
    bBusy         : BOOL;
    bErr          : BOOL;
    iErrId        : UDINT;
END_VAR

iChannelId: Kanal-ID des FIFO-Kanals

bExecute : Flankengetriggertes Signal zum Ausführen des Kommandos

tTimeout : ADS-Timeout (ca. 1 Sekunde)

bBusy : wird mit steigender Flanke an bExecute TRUE und bleibt TRUE, solange der Baustein das Kommando ausführt

bErr : wird TRUE, wenn beim Ausführen des Kommandos ein Fehler aufgetreten ist.

bErrId : Fehlernummer (ADS- oder NC-Fehlernummer)


FiFoGroupDisintegrate

FiFoGroupDisintegrate löst einen FIFO-Kanal auf, d. h. alle Achsen werden aus dem FIFO-Kanal herausgenommen und als unabhängige PTP-Achsen in den Standard-PTP-Kanal gestellt.

Interface

VAR_INPUT
    iChannelId  : UDINT;
    bExecute    : BOOL;
    tTimeout    : TIME;
END_VAR
VAR_OUTPUT
    bBusy   : BOOL;
    bErr    : BOOL;
    iErrId  : UDINT;
END_VAR

iChannelId: Kanal-ID des FIFO-Kanals

bExecute : Flankengetriggertes Signal zum Ausführen des Kommandos

tTimeout : ADS-Timeout (ca. 1 Sekunde)

bBusy : wird mit steigender Flanke an bExecute TRUE und bleibt TRUE, solange der Baustein das Kommando ausführt

bErr : wird TRUE, wenn beim Ausführen des Kommandos ein Fehler aufgetreten ist.

bErrId : Fehlernummer (ADS- oder NC-Fehlernummer)


FiFoStop

FiFoStop hält einen FIFO-Kanal an, d. h. dass die Abarbeitung der Positionsdaten aus dem FIFO gestoppt wird und alle Achsen im FIFO-Kanal halten.

Interface

VAR_INPUT
    iChannelId   : UDINT;
    bExecute     : BOOL;
    tTimeout     : TIME;
END_VAR
VAR_OUTPUT
    bBusy       : BOOL;
    bErr        : BOOL;
    iErrId      : UDINT;
END_VAR

iChannelId: Kanal-ID des FIFO-Kanals

bExecute : Flankengetriggertes Signal zum Ausführen des Kommandos

tTimeout : ADS-Timeout (ca. 1 Sekunde)

bBusy : wird mit steigender Flanke an bExecute TRUE und bleibt TRUE, solange der Baustein das Kommando ausführt

bErr : wird TRUE, wenn beim Ausführen des Kommandos ein Fehler aufgetreten ist.

bErrId : Fehlernummer (ADS- oder NC-Fehlernummer)


FiFoSetChannelOverride

FiFoSetChannelOverride setzt den Kanal-Override über den die Abarbeitungsgeschwindigkeit des FIFO-Kanals beeinflusst werden kann. Der Kanal-Override ist nicht zu verwechseln mit dem Achs-Override der einzelnen Achsen.

Interface

VAR_INPUT
    iChannelId  : UDINT;
    iOverride   : UDINT;
    bExecute    : BOOL;
    tTimeout    : TIME;
END_VAR
VAR_OUTPUT
    bBusy   : BOOL;
    bErr    : BOOL;
    iErrId  : UDINT;
END_VAR

iChannelId: Kanal-ID des FIFO-Kanals

iOverride : Kanal-Override für die Geschwindigkeit des FIFO-Kanals

bExecute : Flankengetriggertes Signal zum Ausführen des Kommandos

tTimeout : ADS-Timeout (ca. 1 Sekunde)

bBusy : wird mit steigender Flanke an bExecute TRUE und bleibt TRUE, solange der Baustein das Kommando ausführt

bErr : wird TRUE, wenn beim Ausführen des Kommandos ein Fehler aufgetreten ist.

bErrId : Fehlernummer (ADS- oder NC-Fehlernummer)


Get_TcNcFifoAxis_Version

Get_TcNcFifoAxis_Version ermittelt die Versionsnummer der SPS-Bibliothek TcNcFifoAxis.lib. Der Funktionsaufruf liefert die Versionsnummer in einem String zurück.

Interface

FUNCTION Get_TcNcFifoAxis_Version : STRING(20)
VAR_INPUT
    bGet : BOOL;
END_VAR

bGet : Signal zum Ausführen des Kommandos