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 Anlagen werden Werkstücke während des Transportes bearbeitet. Dazu ist es notwendig, Werkzeuge und Werkstücke bezüglich Position und Geschwindigkeit zu synchronisieren, so dass das Werkzeug wie an einem stillstehenden Werkstück eingesetzt werden kann. Ein Beispiel für eine solche Anwendung ist eine Säge, die während der Fahrt einen Schnitt quer durch das transportierte Material führt (Fliegende Säge). Um diese Art der Anwendungen zu realisieren, stellt TwinCAT die Fliegende Säge zur Verfügung.

Zur einfachen Handhabung der Fliegenden Säge dient die TwinCAT PLC Library TcNcFlyingSaw.lib, die als zusätzliches Produkt erhältlich ist. Ein Beispielprogramm zum Thema Fliegende Säge verwendet diese Bibliothek.

Neben den klassischen Funktionsbausteinen (Präfix FlyingSaw...), die Beckhoff seit einigen Jahren anbietet, wurde die Bibliothek durch PLCopen konforme Funktionsbausteine (MC_GearInPos, MC_GearInVelo) ergänzt. In neuen Projekten sollten nach Möglichkeit diese Bausteine eingesetzt werden. Wegen der Kompatibilität zu bestehenden Projekten, sind die klassischen Bausteine unverändert in der Bibliothek enthalten.


MC_GearInPos

MC_GearInPos koppelt eine Slave-Achse als Fliegende Säge an eine Master-Achse. Die Synchrongeschwindigkeit wird genau am Synchronpunkt von Master und Slave erreicht.

Das Interface und die Funktion dieses Bausteins ist durch die PLCopen spezifiziert. Der Baustein ist damit als Ergänzung zur PLCopen Motion Control Library zu sehen.

VAR_INPUT

VAR_INPUT
        Execute                  : BOOL;
        RatioNumerator   : LREAL  := 1;
        RatioDenominator   : UINT   := 1;
        MasterSyncPosition : LREAL;     (* absolute master synchronous position *)
        SlaveSyncPosition  : LREAL;     (* absolute slave synchronous position *)
        SyncMode           : ST_SyncMode;
        Velocity           : LREAL := 0;
        Acceleration       : LREAL;     (* 0 : use default value *)
        Deceleration       : LREAL;     (* 0 : use default value *)
        Jerk               : LREAL;     (* 0 : use default value *)
END_VAR

Execute : | Mit der steigenden Flanke wird die Synchronisation gestartet.
RatioNumerator : | Zähler des Getriebefaktors (siehe Hinweis)
RatioDenominator : | Nenner des Getriebefaktors (siehe Hinweis)
MasterSyncPosition : | Synchronposition des Masters.
SlaveSyncPosition : | Synchronposition des Slaves.
SyncMode : | In der Variablen SyncMode werden die Randbedingungen für die Synchronisierung festgelegt.
Velocity : | Maximale Slave-Geschwindigkeit in der Synchronisierungsphase. Wenn keine Geschwindigkeit angegeben wird, wird die Maximalgeschwindigkeit der Achse aus den Systemmanager-Daten verwendet. Achtung: Die hier angegebene Geschwindigkeit wird nur überprüft, wenn diese Überprüfung mit der Variablen SyncMode aktiviert wird (GearInSync_CheckMask_MaxVelo=TRUE).
Acceleration : | Maximale Slave-Beschleunigung in der Synchronisierungsphase. Wenn keine Beschleunigung angegeben wird, wird die Maximalbeschleunigung der Achse aus den Systemmanager-Daten verwendet. Achtung: Die hier angegebene Beschleunigung wird nur überprüft, wenn diese Überprüfung mit der Variablen SyncMode aktiviert wird (GearInSync_CheckMask_MaxAcc=TRUE).
Deceleration : | Maximale Slave-Verzögerung in der Synchronisierungsphase. Wenn keine Verzögerung angegeben wird, wird die maximale Verzögerung der Achse aus den Systemmanager-Daten verwendet. Achtung: Die hier angegebene Verzögerung wird nur überprüft, wenn diese Überprüfung mit der Variablen SyncMode aktiviert wird (GearInSync_CheckMask_MaxDec=TRUE).
Jerk : | Maximale Slave-Ruck in der Synchronisierungsphase. Wenn kein Ruck angegeben wird, wird der maximale Ruck der Achse aus den Systemmanager-Daten verwendet. Achtung: Der hier angegebene Ruck wird nur überprüft, wenn diese Überprüfung mit der Variablen SyncMode aktiviert wird (GearInSync_CheckMask_MaxJerk=TRUE).

Hinweis:

Bei einem gewünschten Getriebefaktor von 1:3 wird der Zähler zu 1 und der Nenner zu 3 gewählt. Für den Zähler können auch negative Werte angegeben werden.

Die Slave-Achse kann mit dem Funktionsbaustein MC_GearOut aus der TcMC Motion Control Library abgekoppelt werden. Wird der Slave während der Fahrt abgekoppelt, so behält er seine Geschwindigkeit bei und kann mit MC_Stop angehalten werden.

VAR_OUTPUT

VAR_OUTPUT
        StartSync       : BOOL;
        InSync          : BOOL;
        CommandAborted  : BOOL;
        Error           : BOOL;
        ErrorId                 : UDINT;
END_VAR

StartSync : | Wird TRUE, sobald die Synchronisierung begonnen hat.
InSync : | Wird TRUE, sobald der Slave mit dem Master synchronisiert ist.
CommandAborted : | Wird TRUE, wenn die Kopplung nicht durchgeführt werden konnte.
Error : | Wird TRUE, sobald ein Fehler eintritt.
ErrorID : | Liefert bei einem gesetzten ERR-Ausgang die Fehlernummer

VAR_IN_OUT

VAR_IN_OUT
        Master  : NCTOPLC_AXLESTRUCT;
        Slave   : NCTOPLC_AXLESTRUCT;
END_VAR

Master : | Achsstruktur des Masters.
Slave : | Achsstruktur des Slaves.

Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken
TwinCAT v2.9 | PC (i386) | TcNcFlyingSaw.Lib


MC_GearInVelo

MC_GearInVelo koppelt eine Slave-Achse als Fliegende Säge an eine Master-Achse.

Das Interface und die Funktion dieses Bausteins ist durch die PLCopen spezifiziert. Der Baustein ist damit als Ergänzung zur PLCopen Motion Control Library zu sehen.

VAR_INPUT

VAR_INPUT
        Execute                 : BOOL;
        RatioNumerator  : LREAL                 := 1;
        RatioDenominator        : UINT          := 1;
        SyncMode                : ST_SyncMode;
        Velocity                : LREAL                 := 0;
        Acceleration    : LREAL;                        (* 0 : use default value *)
        Deceleration    : LREAL;                        (* 0 : use default value *)
        Jerk            : LREAL;                        (* 0 : use default value *)
END_VAR

Execute: | Mit der steigenden Flanke wird die Master-Slave-Kopplung als Fliegende Säge gestartet.
RatioNumerator: | Zähler des Getriebefaktors. (siehe Hinweis)
RatioDenominato : | Nenner des Getriebefaktors. (siehe Hinweis)
SyncMode: | In der Variablen SyncMode werden die Randbedingungen für die Synchronisierung festgelegt.
Velocity: | Maximale Slave-Geschwindigkeit in der Synchronisierungsphase. Wenn keine Geschwindigkeit angegeben wird, wird die Maximalgeschwindigkeit der Achse aus den Systemmanager-Daten verwendet. Achtung: Die hier angegebene Geschwindigkeit wird nur überprüft, wenn dies Überprüfung mit der Variablen SyncMode aktiviert wird.
Acceleration: | Maximale Slave-Beschleunigung in der Synchronisierungsphase. Wenn keine Beschleunigung angegeben wird, wird die Maximalbeschleunigung der Achse aus den Systemmanager-Daten verwendet. Achtung: Die hier angegebene Beschleunigung wird nur überprüft, wenn dies Überprüfung mit der Variablen SyncMode aktiviert wird.
Deceleration: | Maximale Slave-Verzögerung in der Synchronisierungsphase. Wenn keine Verzögerung angegeben wird, wird die maximale Verzögerung der Achse aus den Systemmanager-Daten verwendet. Achtung: Die hier angegebene Verzögerung wird nur überprüft, wenn dies Überprüfung mit der Variablen SyncMode aktiviert wird.
Jerk: | Maximale Slave-Ruck in der Synchronisierungsphase. Wenn kein Ruck angegeben wird, wird der maximale Ruck der Achse aus den Systemmanager-Daten verwendet. Achtung: Der hier angegebene Ruck wird nur überprüft, wenn dies Überprüfung mit der Variablen SyncMode aktiviert wird.

Hinweis:

Bei einem gewünschten Getriebefaktor von 1:3 wird der Zähler zu 1 und der Nenner zu 3 gewählt. Für den Zähler können auch negative Werte angegeben werden.

Die Slave-Achse kann mit dem Funktionsbaustein MC_GearOut aus der TcMC Motion Control Library abgekoppelt werden. Wird der Slave während der Fahrt abgekoppelt, so behält er seine Geschwindigkeit bei und kann mit MC_Stop angehalten werden.

VAR_OUTPUT

VAR_OUTPUT
        StartSync       : BOOL;
        InSync          : BOOL;
        CommandAborted  : BOOL;
        Error           : BOOL;
        ErrorId                 : UDINT;
END_VAR

StartSync : | Wird TRUE, sobald die Synchronisierung begonnen hat.
InSync : | Wird TRUE, sobald der Slave mit dem Master synchronisiert ist.
CommandAborted : | Wird TRUE, wenn die Kopplung nicht durchgeführt werden konnte.
Error : | Wird TRUE, sobald ein Fehler eintritt.
ErrorID : | Liefert bei einem gesetzten ERR-Ausgang die Fehlernummer

VAR_IN_OUT

VAR_IN_OUT
        Master  : NCTOPLC_AXLESTRUCT;
        Slave   : NCTOPLC_AXLESTRUCT;
END_VAR

Master : | Achsstruktur des Masters.
Slave : | Achsstruktur des Slaves.

Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken
TwinCAT v2.9 | PC (i386) | TcNcFlyingSaw.Lib


MC_ReadFlyingSawCharacteristics

Mit dem Funktionsbaustein MC_ReadFlyingSawCharacteristics können die charakteristischen Kennwerte der Synchronisierungsphase der Universellen Fliegenden Säge ausgelesen werden.

VAR_INPUT

VAR_INPUT
        Execute : BOOL;
END_VAR
Execute: Mit einer steigenden Flanke wird das Auslesen der Kennwerte aus der TwinCAT-NC gestartet.

Hinweis:

Die berechneten Daten stehen erst nach dem Start der Universellen Fliegenden Säge zur Verfügung.

VAR_OUTPUT

VAR_OUTPUT
        Done    : BOOL;
        Error   : BOOL;
        ErrorID : UDINT;
END_VAR

Done: | Wird TRUE, wenn der Datensatz erfolgreich gelesen worden ist.
Error : | Wird TRUE, sobald ein Fehler eintritt.
ErrorID : | Liefert bei einem gesetzten ERR-Ausgang die Fehlernummer

VAR_IN_OUT

VAR_IN_OUT
        Slave                :  NCTOPLC_AXLESTRUCT;
        CamTableCharac : MC_FlyingSawCharacValues;
END_VAR

Slave : | Achsstruktur des Slaves.
CamTableCharac: : | Struktur mit den charakteristischen Kennwerten.

Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken
TwinCAT v2.9 | PC (i386) | TcNcFlyingSaw.Lib


Datenstruktur ST_SyncMode

TYPE ST_SyncMode :
STRUCT
        (* mode *)
        GearInSyncMode : ST_GearInSyncMode;

        (* 32 bit check mask ... *)
        GearInSync_CheckMask_MinPos : BOOL;
        GearInSync_CheckMask_MaxPos : BOOL;
        GearInSync_CheckMask_MaxVelo : BOOL;
        GearInSync_CheckMask_MaxAcc : BOOL;
        GearInSync_CheckMask_MaxDec : BOOL;
        GearInSync_CheckMask_MaxJerk : BOOL;
        GearInSync_CheckMask_OvershootPos : BOOL;
        GearInSync_CheckMask_UndershootPos : BOOL;
        GearInSync_CheckMask_OvershootVelo : BOOL;
        GearInSync_CheckMask_UndershootVelo : BOOL;
        GearInSync_CheckMask_OvershootVeloZero : BOOL;
        GearInSync_CheckMask_UndershootVeloZero : BOOL;

        (* operation masks ... *)
        GearInSync_OpMask_RollbackLock : BOOL;
        GearInSync_OpMask_InstantStopOnRollback : BOOL;
        GearInSync_OpMask_PreferConstVelo : BOOL;
        GearInSync_OpMask_IgnoreMasterAcc : BOOL;
END_STRUCT
END_TYPE

TYPE ST_GearInSyncMode :
(
        GEARINSYNCMODE_POSITIONBASED,           (* synchronization based on the master position,
                                                   slave dynamics depend on master dynamics *)

        GEARINSYNCMODE_TIMEBASED                        (* synchronization based on a standalone slave PTP profile,
                                                   master independet slave dynamics *)
);
END_TYPE

Hinweis : Das zeitbasierte Bewegungsprofil (GEARINSYNCMODE_TIMEBASED) ist zurzeit nur für den Funktionsbaustein MC_GearInVelo implementiert.

Wirkungsweise der einzelnen Bits.


FlyingSawCoupleOnPositon

FlyingSawCoupleOnPositon koppelt eine Slave-Achse als Fliegende Säge an eine Master-Achse. Die Synchrongeschwindigkeit wird genau am Synchronpunkt erreicht.

Interface

VAR_INPUT
    iAxisId        : UINT; (* Flying saw axis ID *)
    iMasterId      : UINT;
    fSyncPosMaster : LREAL; (* absolute master synchronous position *)
    fSyncPosSlave  : LREAL; (* absolute slave synchronous position *)
    fAngle         : LREAL; (* parallel = 90 degrees *)
    fGearRatio     : LREAL; (* 0.0 is invalid, then default is 1.0 *)
    bCoupleOn      : BOOL; (* couple *)
    bCoupleOff     : BOOL; (* decouple *)
    tTimeout       : TIME;
END_VAR
VAR_OUTPUT
    bBusy  : BOOL;
    bErr   : BOOL;
    iErrId : UDINT;
END_VAR

iAxisId : Achs-ID der Slave-Achse, die als Fliegende Säge gekoppelt werden soll

iMasterId : Achs-ID der Master-Achse an die gekoppelt werden soll

fSyncPosMaster : Synchronposition der Master-Achse

fSyncPosSlave : Synchronposition der Slave-Achse

fAngle : Winkel der Fliegenden Säge (für eine Parallelachse 90°)

fGearRatio : Getriebefaktor. Ein Getriebefaktor 0 ist ungültig und wird als 1 interpretiert

bCoupleOn : Flankengetriggertes Signal zum Ausführen der Achskopplung

bCoupleOff : Flankengetriggertes Signal zum Entkoppeln der Achsen

tTimeout : ADS-Timeout (ca. 1 Sekunde)

bBusy : wird mit steigender Flanke an bCoupleOn oder bCoupleOff 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)


FlyingSawCoupleOnVelocity

FlyingSawCoupleOnVelocity koppelt eine Slave-Achse als Fliegende Säge an eine Master-Achse. Die Synchrongeschwindigkeit wird so schnell wie möglich erreicht.

Interface

VAR_INPUT
    iAxisId     : UINT; (* Flying saw axis ID *)
    iMasterId   : UINT;
    fAngle      : LREAL; (* parallel = 90 degrees *)
    fGearRatio  : LREAL; (* 0.0 is invalid, then default is 1.0 *)
    bCoupleOn   : BOOL; (* couple *)
    bCoupleOff  : BOOL; (* decouple *)
    tTimeout    : TIME;
END_VAR
VAR_OUTPUT
    bBusy  : BOOL;
    bErr   : BOOL;
    iErrId : UDINT;
END_VAR

iAxisId : Achs-ID der Slave-Achse, die als Fliegende Säge gekoppelt werden soll

iMasterId : Achs-ID der Master-Achse an die gekoppelt werden soll

fAngle : Winkel der Fliegenden Säge (für eine Parallelachse 90°)

fGearRatio : Getriebefaktor. Ein Getriebefaktor 0 ist ungültig und wird als 1 interpretiert

bCoupleOn : Flankengetriggertes Signal zum Ausführen der Achskopplung

bCoupleOff : Flankengetriggertes Signal zum Entkoppeln der Achsen

tTimeout : ADS-Timeout (ca. 1 Sekunde)

bBusy : wird mit steigender Flanke an bCoupleOn oder bCoupleOff 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)


FlyingSawStop

FlyingSawStop stoppt einen als Fliegende Säge gekoppelten Slave. Der Stopp wird im gekoppelten Zustand ausgeführt und kann daher nicht mit dem Funktionsbaustein AXACT angestoßen werden.

Interface

VAR_INPUT
    iAxisId  : UINT; (* Flying saw axis ID *)
    bExecute : BOOL; (* Stop Flying Saw *)
    tTimeout : TIME;
END_VAR
VAR_OUTPUT
    bBusy   : BOOL;
    bErr    : BOOL;
    iErrId  : UDINT;
END_VAR

iAxisId : Achs-ID der Slave-Achse, die als Fliegende Säge gekoppelt ist

iMasterId : Achs-ID der Master-Achse

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_TcNcFlyingSaw_Version

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

Interface

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

bGet : Signal zum Ausführen des Kommandos