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 Fliegende Säge

TwinCAT PLC Library: MC Library 2 - Fliegende Säge

Ü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 TcMC2_FlyingSaw.lib, die als zusätzliches Produkt erhältlich ist. Ein Beispielprogramm zum Thema Fliegende Säge verwendet diese Bibliothek.


MC_GearInVelo

Mit dem Funktionsbaustein MC_GearInVelo wird ein lineare Master-Slave-Kopplung (Getriebekopplung) aktiviert. Falls die Master-Achse bereits in Bewegung ist, synchronisiert sich die Slave-Achse auf die Master-Geschwindigkeit. Der Baustein akzeptiert einen festen Getriebefaktor im Zähler-Nenner-Format.

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

Eingänge

VAR_INPUT
    Execute 		: BOOL;
    RatioNumerator 	: LREAL;
    RatioDenominator 	: UINT;
    SyncMode 		: ST_SyncMode;
    Velocity 		: LREAL;
    Acceleration 	: LREAL;
    Deceleration 	: LREAL;
    Jerk 		: LREAL;
    BufferMode 	: MC_BufferMode;
    Options 		: ST_GearInVeloOptions;
END_VAR
Execute | Mit einer steigenden Flanke am Eingang Execute wird das Kommando ausgeführt.
RatioNumerator | Getriebefaktor Zähler. Alternativ kann der Getriebefaktor als Fließkommawert angegeben werden, wenn der Nenner 1 ist.
RatioDenominator | Getriebefaktor Nenner
SyncMode | In der Datenstruktur SyncMode werden über einzelne Flags die Randbedingungen für den Synchronisierungsvorgang 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 die Ü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 | Maximaler 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.
BufferMode | Zur Zeit nicht implementiert
Options | Zur Zeit nicht implementiert
Bei einem Verhältnis 1:4 muss der RatioNumerator 1 sein und der RatioDenominator 4. Alternativ kann der RatioDenominator 1 sein und der Getriebefaktor wird im RatioNumerator als Fließkommazahl 0.25 angegeben. Der RatioNumerator darf negativ sein.

Ausgänge

VAR_OUTPUT
    StartSync 	: BOOL;
    InSync 		: BOOL;
    Busy 		: BOOL;
    Active 		: BOOL;
    CommandAborted 	: BOOL;
    Error 		: BOOL;
    ErrorID 		: UDINT;
END_VAR
StartSync | Wird TRUE, wenn die Synchronisierung mit der Master-Achse gestartet wurde.
InSync | Wird TRUE, wenn die Kopplung erfolgreich durchgeführt wurde und die Slave-Achse mit der Master-Achse synchronisiert ist.
Busy | Der Busy-Ausgang wird TRUE, sobald das Kommando mit Execute gestartet wird und bleibt TRUE, solange der Befehl abgearbeitet wird. Wenn Busy wieder FALSE wird, so ist der Funktionsbaustein bereit für einen neuen Auftrag. Gleichzeitig ist einer der Ausgänge InSync, CommandAborted oder Error gesetzt.
Active | Active zeigt an, dass das Kommando ausgeführt wird. (zur Zeit ist Active=Busy, siehe BufferMode)
CommandAborted | Wird TRUE, wenn das Kommando nicht vollständig ausgeführt werden konnte. Die Achse kann während des Koppelvorgangs entkoppelt worden sein (gleichzeitige Kommandoausführung).
Error | Wird TRUE, sobald ein Fehler eintritt.
ErrorID | Liefert bei einem gesetzten Error-Ausgang die Fehlernummer.

Ein/Ausgänge

VAR_IN_OUT
    Master	:	AXIS_REF;
    Slave	: 	AXIS_REF;
END_VAR
Master | Achsdatenstruktur des Masters.
Slave | Achsdatenstruktur des Slaves.

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.


MC_GearInPos

Der Funktionsbaustein MC_GearInPos synchronisiert eine Slave-Achse positionsgenau mit einer Master-Achse (Fliegende Säge). Die Synchrongeschwindigkeit wird genau am Synchronpunkt von Master und Slave erreicht.

Die Master-Achse muss sich bereits in Bewegung befinden, sonst ist die Synchronisierung nicht möglich.

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

Eingänge

VAR_INPUT
    Execute 			: BOOL;
    RatioNumerator 		: LREAL;
    RatioDenominator		: UINT;
    MasterSyncPosition		: LREAL;
    SlaveSyncPosition		: LREAL;
    SyncMode 			: ST_SyncMode;
    MasterStartDistance	: LREAL;
    Velocity 			: LREAL;
    Acceleration 		: LREAL;
    Deceleration 		: LREAL;
    Jerk 			: LREAL;
    BufferMode 		: MC_BufferMode;
    Options 			: ST_GearInPosOptions;
END_VAR
Execute | Mit einer steigenden Flanke am Eingang Execute wird das Kommando ausgeführt.
RatioNumerator | Getriebefaktor Zähler. Alternativ kann der Getriebefaktor als Fließkommawert angegeben werden, wenn der Nenner 1 ist.
RatioDenominator | Getriebefaktor Nenner
MasterSyncPosition | Synchronposition des Masters
SlaveSyncPosition | Synchronposition des Slaves
SyncMode | In der Datenstruktur SyncMode werden über einzelne Flags die Randbedingungen für den Synchronisierungsvorgang festgelegt.
MasterStartDistance | Zur Zeit nicht implementiert
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 die Ü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 | Maximaler 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.
BufferMode | Zur Zeit nicht implementiert
Options | Zur Zeit nicht implementiert
Bei einem Verhältnis 1:4 muss der RatioNumerator 1 sein und der RatioDenominator 4. Alternativ kann der RatioDenominator 1 sein und der Getriebefaktor wird im RatioNumerator als Fließkommazahl 0.25 angegeben. Der RatioNumerator darf negativ sein.

Ausgänge

VAR_OUTPUT
    StartSync 	: BOOL;
    InSync 		: BOOL;
    Busy 		: BOOL;
    Active 		: BOOL;
    CommandAborted	: BOOL;
    Error 		: BOOL;
    ErrorID 		: UDINT;
END_VAR
StartSync | Wird TRUE, wenn die Synchronisierung mit der Master-Achse gestartet wurde.
InSync | Wird TRUE, wenn die Kopplung erfolgreich durchgeführt wurde und die Slave-Achse mit der Master-Achse synchronisiert ist.
Busy | Der Busy-Ausgang wird TRUE, sobald das Kommando mit Execute gestartet wird und bleibt TRUE, solange der Befehl abgearbeitet wird. Wenn Busy wieder FALSE wird, so ist der Funktionsbaustein bereit für einen neuen Auftrag. Gleichzeitig ist einer der Ausgänge InSync, CommandAborted oder Error gesetzt.
Active | Active zeigt an, dass das Kommando ausgeführt wird. (zur Zeit ist Active=Busy, siehe BufferMode)
CommandAborted | Wird TRUE, wenn das Kommando nicht vollständig ausgeführt werden konnte. Die Achse kann während des Koppelvorgangs entkoppelt worden sein (gleichzeitige Kommandoausführung).
Error | Wird TRUE, sobald ein Fehler eintritt.
ErrorID | Liefert bei einem gesetzten Error-Ausgang die Fehlernummer.

Ein/Ausgänge

VAR_IN_OUT
    Master	:	AXIS_REF;
    Slave	: 	AXIS_REF;
END_VAR
Master | Achsdatenstruktur des Masters.
Slave | Achsdatenstruktur des Slaves.

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.


MC_ReadFlyingSawCharacteristics

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

Eingänge

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.

Ausgänge

VAR_OUTPUT
    Done    : BOOL;
    Busy    : BOOL;
    Error   : BOOL;
    ErrorID : UDINT;
END_VAR
Done | Wird TRUE, wenn der Datensatz erfolgreich gelesen worden ist.
Busy | Der Busy-Ausgang wird TRUE, sobald das Kommando mit Execute gestartet wird und bleibt TRUE, solange der Befehl abgearbeitet wird. Wenn Busy wieder FALSE wird, so ist der Funktionsbaustein bereit für einen neuen Auftrag. Gleichzeitig ist einer der Ausgänge Done oder Error gesetzt.
Error | Wird TRUE, sobald ein Fehler eintritt.
ErrorID | Liefert bei einem gesetzten ERR-Ausgang die Fehlernummer

Ein/Ausgänge

VAR_IN_OUT
    Slave		: AXIS_REF;
    CamTableCharac 	: MC_FlyingSawCharacValues;
END_VAR
Slave | Achsstruktur des Slaves.
CamTableCharac | Struktur mit den charakteristischen Kennwerten.


ST_SyncMode

Datenstruktur ST_SyncMode

TYPE ST_SyncMode :
STRUCT
    (* mode *)
    GearInSyncMode : E_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 E_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.


MC_FlyingSawCharacValues

Datentyp MC_FlyingSawCharacValues

TYPE MC_FlyingSawCharacValues :
STRUCT
(* Master Velocity*)
fMasterVeloNom : LREAL; (* 1. master nominal velocity (normed: => 1.0) *)

(* characteristic slave data *)
(*===========================*)

(* Start of cam table *)
fMasterPosStart : LREAL; (* 2. master start position *)
fSlavePosStart : LREAL; (* 3. slave start position *)
fSlaveVeloStart : LREAL; (* 4. slave start velocity *)
fSlaveAccStart : LREAL; (* 5. slave start acceleration *)
fSlaveJerkStart : LREAL; (* 6. slave start jerk *)

(* End of cam table*)
fMasterPosEnd : LREAL; (* 7. master end position *)
fSlavePosEnd : LREAL; (* 8. slave end position *)
fSlaveVeloEnd : LREAL; (* 9. slave end velocity *)
fSlaveAccEnd : LREAL; (* 10. slave end acceleration *)
fSlaveJerkEnd : LREAL; (* 11. slave end jerk *)

(* minimum slave position *)
fMPosAtSPosMin : LREAL; (* 12. master position AT slave minimum position *)
fSlavePosMin : LREAL; (* 13. slave minimum position *)

(* minimum Slave velocity *)
fMPosAtSVeloMin : LREAL; (* 14. master position AT slave minimum velocity *)
fSlaveVeloMin : LREAL; (* 15. slave minimum velocity *)

(* minimum slave acceleration *)
fMPosAtSAccMin : LREAL; (* 16. master position AT slave minimum acceleration *)
fSlaveAccMin : LREAL; (* 17. slave minimum acceleration *)
fSVeloAtSAccMin : LREAL; (* 18. slave velocity AT slave minimum acceleration *)

(* minimum slave jerk and dynamic momentum *)
fSlaveJerkMin : LREAL; (* 19. slave minimum jerk *)
fSlaveDynMomMin : LREAL; (* 20. slave minimum dynamic momentum (NOT SUPPORTED YET !) *)

(* maximum slave position *)
fMPosAtSPosMax : LREAL; (* 21. master position AT slave maximum position *)
fSlavePosMax : LREAL; (* 22. slave maximum position *)

(* maximum Slave velocity *)
fMPosAtSVeloMax : LREAL; (* 23. master position AT slave maximum velocity *)
fSlaveVeloMax : LREAL; (* 24. slave maximum velocity *)

(* maximum slave acceleration *)
fMPosAtSAccMax : LREAL; (* 25. master position AT slave maximum acceleration *)
fSlaveAccMax : LREAL; (* 26. slave maximum acceleration *)
fSVeloAtSAccMax : LREAL; (* 27. slave velocity AT slave maximum acceleration *)

(* maximum Slave slave jerk and dynamic momentum *)
fSlaveJerkMax : LREAL; (* 28. slave maximum jerk *)
fSlaveDynMomMax : LREAL; (* 29. slave maximum dynamic momentum (NOT SUPPORTED YET !) *)

(* mean and effective values *)
fSlaveVeloMean : LREAL; (* 30. slave mean absolute velocity (NOT SUPPORTED YET !) *)
fSlaveAccEff : LREAL; (* 31. slave effective acceleration (NOT SUPPORTED YET !) *)

(* reserved space for future extension *)
reserved : ARRAY[32..47] OF LREAL;

(* organization structure of the cam table *)
CamTableID : UDINT;
NumberOfRows : UDINT; (* number of cam table entries, e. g. number of points *)
NumberOfColumns : UDINT; (* number of table columns, typically 1 or 2 *)
TableType : UINT; (* MC_TableType *)
Periodic : BOOL;

reserved2 : ARRAY[1..121] OF BYTE;
END_STRUCT
END_TYPE

Typdefinition für die charakteristischen Kenngrößen einer Fliegende Säge Synchronisierung.


Flying Saw Sample Program

Beispielprogramm Fliegende Säge

Das Beispielprogramm zeigt einen typischen zyklischen Ablauf einer Fliegende Säge. Das Programm verwaltet drei Achsen: Master, Slave und Tool. Die Slave- und Tool-Achsen stehen zu Beginn in ihrer Grundposition bei 0. Zunächst wird die Master-Achse gestartet, die man sich als Transportsystem vorstellen kann, das endloses Material in eine Schneidevorrichtung transportiert. Das Material soll in konstanten Abständen geschnitten werden. Dazu wird die Slave-Achse, also die Fliegende Säge auf die Master-Achse aufsynchronisiert und fährt synchron mit dem Transport mit. in dieser Phase wird die Tool-Achse aktiviert, die die eigentliche Bearbeitung durchführt. Anschließend wird die Slave-Achse abgekoppelt und an ihre Ausgangsposition zurückgefahren. Noch während der Rückfahrt wird die nächste Synchronisierung gestartet und ein Punkt im konstanten Abstand zur letzten Bearbeitungsposition anvisiert.

Das Beispielprogramm benötigt die Fliegende Säge Bibliothek und läuft vollständig im Simulationsmodus. Der Ablauf kann im TwinCAT Scope View mit beiliegender Konfiguration verfolgt werden.

Zum Speichern des Beispielprogramms hier klicken:

TwinCAT NC Sample Flying Saw.zip