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 Dokumentation und der nachfolgenden Hinweise und Erklärungen unbedingt notwendig.
Das Fachpersonal ist verpflichtet, für jede Installation und Inbetriebnahme die zu dem Zeitpunkt veröffentlichte Dokumentation zu verwenden.

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.
Wir behalten uns das Recht vor, die Dokumentation jederzeit und ohne Ankündigung zu überarbeiten und zu ändern.
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®, EtherCAT G®, EtherCAT G10®, EtherCAT P®, Safety over EtherCAT®, TwinSAFE®, XFC®, XTS® und XPlanar® 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, EP1456722, EP2137893, DE102015105702
mit den entsprechenden Anmeldungen und Eintragungen in verschiedenen anderen Ländern.

EtherCAT® ist eine eingetragene Marke und patentierte Technologie lizenziert 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.


Übersicht TcNcCamming.lib

TS5050 | TwinCAT NC Camming

Ü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.

Die Bibliothek TcNcCamming enthält Funtionsbausteine für den Umgang mit Kurvenscheiben. Es werden zwei Arten von Kurvenscheiben unterstützt.

Zum einen kann eine Kurvenscheibe eine zweispaltige Tabelle von Master- und Slave-Positionen sein (Standardtabelle). Die Masterspalte definiert Stützstellen über den Verfahrweg des Masters von einem kleinsten Positionswert aufsteigend bis zu einem größten Wert. Mit den Stützstellen der Tabelle wird aus der zweiten Spalte die zugehörige Slave-Position ermittelt. Dabei wird zwischen den Stützstellen interpoliert.

Zum anderen kann eine Kurvenscheibe als so genannte Motion Function definiert werden. Eine Motion Function ist eine einspaltige Tabelle von Stützstellen. Jede Stützstelle enthält aber nicht einfach nur eine Position, sondern eine vollständige Beschreibung des Kurvenverlaufs in einem Abschnitt (Segment) der Kurvenscheibe. Neben der Master- und Slave-Position am Anfang des Segmentes wird beispielsweise der Funktionsverlauf bis zur nächsten Stützstelle als mathematische Funktion festgelegt. Eine Motion Function benötigt dadurch nur sehr wenige Stützstellen. Trotzdem ist jeder Punkt zwischen den Stützstellen durch die mathematische Funktion exakt definiert und es gibt keine Interpolationsungenauigkeiten.

Im Gegensatz zu einer Standardtabelle können die Punkte einer Motion Function auch zur Laufzeit manipuliert werden. Dabei achtet das System darauf, das eine Manipulation erst wirkt, wenn die Änderung keinen direkten Einfluss auf den Slave hat. Positionssprünge werden so vermieden.

Mit der Erweiterung der Kurvenscheibenfunktionalität in Richtung Motion Functions wurden PLCopen konforme Funktionsbausteine eingeführt. Es wird empfohlen, diese Bausteine mit dem Namen MC... an Stelle der älteren Bausteine mit dem Namen CamTable... zu verwenden. Die Funktion ist aber auch bei den älteren Bausteinen nach wie vor gegeben.

Zur einfachen Handhabung der Achskopplung über Tabellen dient die TwinCAT PLC Library TcNcCamming.lib, die als zusätzliches Produkt erhältlich ist. Beispielprogramme zum Thema Kurvenscheiben und Motion Functions verwenden diese Bibliothek.


MC_CamTableSelect

FUNCTION_BLOCK MC_CamTableSelect

Mit dem Funktionsbaustein MC_CamTableSelect kann eine Tabelle spezifiziert und in die NC geladen werden. Der Baustein legt eine neue Tabelle an und füllt sie gleichzeitig mit Daten, die von der SPS bereitgestellt werden.

MC_CamTableSelect muss nicht benutzt werden, wenn eine mit dem TwinCAT Kurvenscheibeneditor erstellte Tabelle benutzt werden soll. In diesem Fall reicht das einfache Ankoppeln mit MC_CamIn.

VAR_INPUT

VAR_INPUT
        Execute :       BOOL;
        Periodic :      BOOL;
        MasterAbsoute :         BOOL;
        SlaveAbsoute :  BOOL;
        CamTableID :    MC_CAM_ID;
END_VAR

Execute : Mit der steigenden Flanke wird das Kommando ausgeführt.

Periodic : TRUE = periodische Ausführung, FALSE = keine periodische Ausführung

MasterAbsolute : TRUE = Master absolut, FALSE = Master relativ

SlaveAbsolute : TRUE = Slave absolut, FALSE = Slave relativ.

CamTableID : ID der geladenen Tabelle.

VAR_OUTPUT

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

Done : Wird TRUE, wenn Funktion erfolgreich ausgeführt wurde.

Error : Wird TRUE, sobald ein Fehler eintritt.

ErrorID : Liefert bei einem gesetzten Error-Ausgang die Fehlernummer

VAR_IN_OUT

VAR_IN_OUT
        Master :                NCTOPLC_AXLESTRUCT;
        Slave :                 NCTOPLC_AXLESTRUCT;
        CamTable :      MC_CAM_REF;
ND_VAR

Master : Achsstruktur des Masters.

Slave : Achsstruktur des Slaves.

CamTable : Verweis auf die Tabelle (Struktur).

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


MC_CamIn

FUNCTION_BLOCK MC_CamIn

Mit dem Funktionsbaustein MC_CamIn wird eine Master-Slave-Kopplung mit einer bestimmten Kurvenscheibe aktiviert.

Alternativ steht der erweiterte Funktionsbaustein MC_CamInExt zur Verfügung, mit dem auch eine Kurvenscheibe gewechselt werden kann.

Wichtig : Nähere Erläuterungen zum Koppeln mit Kurvenscheiben

VAR_INPUT

VAR_INPUT
        Execute :         BOOL;
        MasterOffset :    LREAL;
        SlaveOffset :     LREAL;
        MasterScaling :           LREAL;
        SlaveScaling :    LREAL;
        StartMode :       MC_StartMode;
        CamTableID :      MC_CAM_ID;
        InterpolationType:        MC_InterpolationType;
END_VAR

Execute : Mit der steigenden Flanke wird das Kommando ausgeführt.

MasterOffset : Offset für die Masterpositionen.

SlaveOffset : Offset für die Slavepositionen.

MasterScaling : Faktor für Masterpositionen (default 1.0).

SlaveScaling : Faktor für Slavepositionen (default 1.0).

StartMode : Legt fest, ob die verwendete Kurvenscheibe absolut oder relativ zur aktuellen Masterposition verwendet werden soll. Gültige Werte sind START_ABSOLUTE und START_RELATIVE.

CamTableID : Tabellen ID.

InterpolationType : Interpolationsart der Tabellendaten. Nicht notwendig für Motionfunctions.

VAR_OUTPUT

VAR_OUTPUT
        InSync :                BOOL;
        CommandAborted :        BOOL;
        Error :                 BOOL;
        ErrorID :       UDINT;
END_VAR

InSync : Wird TRUE, wenn die Kopplung erfolgreich durchgeführt wurde.

CommandAborted : Wird TRUE, wenn die Kopplung nicht durchgeführt werden konnte.

Error : Wird TRUE, sobald ein Fehler eintritt.

ErrorID : Liefert bei einem gesetzten Error-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) | TcNcCamming.Lib


MC_CamInExt

FUNCTION_BLOCK MC_CamInExt

Mit dem Funktionsbaustein MC_CamInExt wird eine Master-Slave-Kopplung mit einer bestimmten Kurvenscheibe aktiviert. Im Gegensatz zum Standardbaustein MC_CamIn ist es mit MC_CamInExt möglich, im gekoppelten Zustand auf eine neue Kurvenscheibe umzuschalten. Dabei können die Regeln für die Umschaltung, insbesondere der genaue Zeitpunkt oder die Position bestimmt werden.

Um die erweiterten Möglichkeiten des MC_CamInExt zu nutzen muss er schon beim ersten Ankoppeln verwendet werden. Wenn eine Achse mit MC_CamIn gekoppelt wurde, ist es später nicht möglich, mit MC_CamInExt auf eine andere Kurvenscheibe umzuschalten.

Wichtig :

Nähere Erläuterungen zum Koppeln mit Kurvenscheiben

ActivationMode (Ankoppeln oder Umschalten von Kurvenscheiben)

StartMode

ScalingMode

VAR_INPUT

VAR_INPUT
        Execute                 : BOOL;
        ActivationMode  : MC_CamActivationMode;
        ActivationPosition      : LREAL;
        MasterScalingMode       : MC_CamScalingMode;
        SlaveScalingMode        : MC_CamScalingMode;
        MasterOffset    : LREAL;
        SlaveOffset     : LREAL;
        MasterScaling   : LREAL := 1.0;
        SlaveScaling    : LREAL := 1.0;
        StartMode       : MC_StartMode := START_ABSOLUTE;
        CamTableID      : MC_CAM_ID;
        InterpolationType       : MC_InterpolationType := MC_InterpolationType_Linear;
END_VAR

Execute : Mit der steigenden Flanke wird das Kommando ausgeführt.

ActivationMode : Mit dem ActivationMode wird der Zeitpunkt bzw. die Position festgelegt, an der die Umschaltung stattfinden soll. (nur bei bereits aktiver Kopplung)

ActivationPosition : Aktivierungsposition, die für positionsbasierte Aktivierungs-Modi notwendig ist.

MasterScalingMode : Legt die Art der Skalierung der Kurvenscheibe für die Master-Skalierung fest (MC_CamScalingMode).

SlaveScalingMode : Legt die Art der Skalierung der Kurvenscheibe für die Slave-Skalierung fest (MC_CamScalingMode).

MasterOffset : Offset für die Master-Positionen.

SlaveOffset : Offset für die Slave-Positionen.

MasterScaling : Faktor für Master-Positionen (default 1.0).

SlaveScaling : Faktor für Slave-Positionen (default 1.0).

StartMode : StartMode bestimmt, ob die Kurvenscheibenpositionen absolut oder relativ zur Koppelposition interpretiert werden.
StartMode kann für Master (X-Koordinate) und Slave (Y-Koordinate) jeweils relativ oder absolut sein.

CamTableID : ID der Kurvenscheibe mit der gekoppelt wird .

InterpolationType : Interpolationsart der Kurvenscheibendaten.

VAR_OUTPUT

VAR_OUTPUT
        InSync          : BOOL;
        Busy            : BOOL;
        CommandAborted  : BOOL;
        Error           : BOOL;
        ErrorID                 : UDINT;
END_VAR

InSync : Wird TRUE, wenn die Kopplung erfolgreich durchgeführt wurde.

Busy : wird TRUE, sobald der Funktionsbaustein aktiv wird und wird FALSE sobald die Funktion beendet wurde und neu getriggert werden kann.

CommandAborted : Wird TRUE, wenn die Kopplung nicht durchgeführt werden konnte.

Error : Wird TRUE, sobald ein Fehler eintritt.

ErrorID : Liefert bei einem gesetzten Error-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.10 Build 1251 | PC (i386) | TcNcCamming.Lib


MC_CamIn Anhang

Achskopplung mit Kurvenscheiben

Mit dem Funktionsbaustein MC_CamIn kann eine Kurvenscheibenkopplung (auch Tabellenkopplung) zwischen einer Master- und einer Slave-Achse hergestellt werden. Dabei ist zu beachten, dass die Slave-Achse bereits vor der Kopplung auf einer durch die Kurvenscheibe definierten Position stehen muss. Nach dem Koppeln und Starten des Masters wird die Slave-Position direkt aus der Kurvenscheibe berechnet. Die Slave-Achse wird also nicht langsam mit der Kurvenscheibe synchronisiert sondern springt, wenn sie nicht schon an der Tabellenposition steht.

In der Praxis stellt sich die Frage, welche Position der Slave vor der Kopplung einnehmen muss und wie diese berechnet wird. Die folgenden Abbildungen veranschaulichen, wie hier vorgegangen werden kann.

Hinweise : Alle folgenden Berechnungen werden ausschließlich mit Sollpositionen der Achsen durchgeführt. Die Ist-Positionen gehen in die Berechnungen nicht ein und führen gerade bei zyklischen Kurvenscheiben zu Berechnungsfehlern, wenn sie dennoch verwendet werden.

Ferner werden hier nur absolute Tabellenkopplungen betrachtet. Bei relativen Kopplungen geht die Koppelposition der Master- bzw. Slave-Achse als zusätzlicher Offset mit in die Berechnungen ein.

Lineare Kurvenscheiben

Eine lineare Kurvenscheibe ist nur über einen begrenzten Master-Positionsbereich definiert. Außerhalb dieses Bereiches ist die Slave-Position durch die erste bzw. letzte Position in der Tabelle definiert. Der Slave bleibt also an den Tabellenrändern stehen sobald der Master aus dem definierten Bereich herausfährt.

Die Abbildung zeigt, dass das absolute Achskoordinatensystem (blau) nicht mit dem Kurvenscheibenkoordinatensystem (rot) übereinstimmen muss. Das Koordinatensystem der Kurvenscheibe kann durch einen Master-Offset und einen Slave-Offset verschoben sein und eine Skalierung ist ebenfalls möglich.

Die zu einer bestimmten Master-Position gehörende Slave-Position kann durch den Funktionsbaustein MC_ReadCamTableSlaveDynamics bestimmt werden. Der Baustein bezieht sich auf die Rohdaten der Tabelle, so dass Offsets und Skalierungen durch das SPS-Programm selbst berücksichtigt werden müssen. Zunächst wird der Master-Offset zur aktuellen Masterposition addiert und falls die Kurvenscheibe skaliert werden soll, wird durch diese Skalierung dividiert.

MasterTablePos := (MasterPosition + MasterOffset) / MasterScale;

Die Master-Tabellenposition ist Eingangsparameter für den Funktionsbaustein MC_ReadCamTableSlaveDynamics. Das Ergebnis wird gegebenenfalls mit Slave-Offset und -Skalierung auf eine absolute Slave-Position umgerechnet.

SlaveTablePosition := ReadSlaveDynamics.SlavePosition;

SlavePosition := (SlaveTablePosition * SlaveScale) + SlaveOffset;

Der Slave wird vor der Kopplung an diese Position gefahren. Alternativ kann auch der Master zu einer Position gefahren werden, die mit der aktuellen Slave-Position korrespondiert. Es ist aber nicht allgemein möglich, diese Position aus der Kurvenscheibe zu ermitteln, da die Kurvenscheibe bei dieser Betrachtung mehrdeutig sein kann.

Hinweis : Da der Master-Offset additiv in die erste Formel eingeht, führt ein positiver Offset zu einer Verschiebung des Kurvenscheibenkoordinatensystems nach links in negative Richtung. Der Master-Offset in der Abbildung ist demnach negativ. Ein positiver Slave-Offset führt zu einer Verschiebung des Kurvenscheibenkoordinatensystems in positive Richtung nach oben.

Zyklische Kurvenscheiben ohne Hub

Eine zyklische Kurvenscheibe ohne Hub zeichnet sich dadurch aus, dass die Slave-Anfangs- und die Endposition in der Tabelle identisch sind. Der Slave beweg sich dadurch zyklisch in einem definierten Bereich, ohne seine Position stetig in eine Richtung zu verändern.

Die Master-Slave-Kopplung erfordert bei diesem Kurvenscheibentypen dieselbe Vorbereitung wie bei einer linearen Kurvenscheibe. Die Ausgangsposition des Slaves kann also wie oben berechnet werden. Es ist nicht notwendig, die Modulo-Position des Masters zur Berechnung heranzuziehen, da die absolute Position bereits durch das Koppelkommando korrekt berücksichtigt wird.

Zyklische Kurvenscheiben mit Hub

Der Hub einer zyklischen Kurvenscheibe ist die Differenz zwischen der letzten und der ersten Tabellenposition des Slaves.

Eine solchen Kurvenscheibe wird am Tabellenende zyklisch fortgesetzt. Dabei springt die Slave-Position nicht zurück auf den Tabellen-Anfangswert, sondern die Bewegung wird kontinuierlich fortgesetzt. Mit jedem neuen Zyklus wird also der Hub als zusätzlicher interner Slave-Offset aufaddiert bzw. bei Bewegungsumkehr subtrahiert.

Abkoppeln und Wiederankoppeln bei zyklischen Kurvenscheiben mit Hub

Wenn ein Slave mit einer Kurvenscheibe mit Hub gekoppelt wird, so wird immer im Grundzyklus (rotes Koordinatensystem) angekoppelt. Wird der Slave nach einigen Zyklen abgekoppelt, und dann erneut angekoppelt, fällt die Position des Slaves in den Grundzyklus zurück. Dieses Verhalten ist gegebenenfalls durch eine Neuberechung des Slave-Offsets zu berücksichtigen und auszugleichen.

MasterTablePos := (MasterPosition + MasterOffset) / MasterScale;

Die Master-Tabellenposition ist Eingangsparameter für den Funktionsbaustein MC_ReadCamTableSlaveDynamics. Das Ergebnis wird gegebenenfalls mit Slave-Offset und -Skalierung auf eine absolute Slave-Position umgerechnet. Zusätzlich muss die Anzahl der bereits aufgelaufenen Hübe berechnet und zur Slave-Position addiert werden.

SlaveTablePosition := ReadSlaveDynamics.SlavePosition;

Hubanzahl := MODTURNS( (SlavePosition - SlaveOffset), SlaveHub );

NewSlaveOffset := SlaveOffset + (SlaveHub * Hubanzahl);

SlavePosition := (SlaveTablePosition * SlaveScale) + NewSlaveOffset;


MC_CamOut

FUNCTION_BLOCK MC_CamOut

Mit dem Funktionsbaustein MC_CamOut wird eine Master-Slave-Kopplung deaktiviert.

Achtung: Wenn der Sollwertgeneratortype der Achse auf "7 Phasen (optimiert)" eingestellt ist, wird die Slaveachse nach dem Abkoppeln beschleunigungsfrei gefahren und mit der sich einstellenden konstanten Geschwindigkeit weitergefahren. Es erfolgt keine Positionierung um den mit dem Koppelfaktor umgerechneten Masterverfahrweg, sondern es stellt sich ein Verhalten wie nach einem MC_MoveVelocity ein. In TwinCAT 2.10 ist der Sollwertgeneratortyp wählbar. Ab TwinCAT 2.11 ist der Sollwertgeneratortype fest auf "7 Phasen (optimiert)" eingestellt. Bei der Umstellung eines Projektes von TwinCAT 2.10 auf TwinCAT 2.11 ergibt sich damit das hier beschriebene Verhalten. Ein Update bestehender Applikationen auf Version 2.11 kann daher, je nach Anwendung, eine Anpassung des SPS-Programms erforderlich machen.

VAR_INPUT

VAR_INPUT
        Execute : BOOL;
END_VAR

Execute : Mit der steigenden Flanke wird das Kommando ausgeführt.

VAR_OUTPUT

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

Done : Wird TRUE, wenn die Entkopplung erfolgreich durchgeführt wurde.

Error : Wird TRUE, sobald ein Fehler eintritt.

ErrorID : Liefert bei einem gesetzten Error-Ausgang die Fehlernummer

VAR_IN_OUT

VAR_IN_OUT
        Slave : NCTOPLC_AXLESTRUCT;
END_VAR

Slave : Achsstruktur des Slaves.

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


MC_CamScaling

FUNCTION_BLOCK MC_CamScaling

Mit dem Funktionsbaustein MC_CamScaling kann eine Kurvenscheibenkopplung skaliert werden. Dabei werden nicht die Tabellenrohdaten der Kurvenscheibe beeinflusst, sondern die Skalierung bezieht sich auf eine bestehende Master-Slave-Kopplung. Einstellbar sind die Skalierungsfaktoren für Master und Slave und die Offsets zur Verschiebung der Kurvenscheibe im Koordinatensystem.

Optional wirkt die Änderung erst ab einer bestimmten Master-Position wodurch die Skalierung punktgenau während der Fahrt geändert werden kann. Bei der Skalierung während der Fahrt ist Vorsicht geboten. Die Slave-Position zum Zeitpunkt der Skalierung darf durch die Änderung nur in geringem Maße beeinflusst werden.

VAR_INPUT

VAR_INPUT
        Execute : BOOL;
        ActivationMode : MC_CamActivationMode;
        ActivationPosition : LREAL;
        MasterScalingMode: MC_CamScalingMode;
        SlaveScalingMode: MC_CamScalingMode;
        MasterOffset : LREAL;
        SlaveOffset : LREAL;
        MasterScaling : LREAL := 1.0;
        SlaveScaling : LREAL := 1.0;
END_VAR

Execute : Mit der steigenden Flanke wird das Kommando ausgeführt.

ActivationMode : Definiert, wann und wie die Skalierung durchgeführt wird. (MC_CamActivationMode)

ActivationPosition : Optionale Master-Position, an der die Skalierung durchgeführt wird (je nach ActivationMode).

MasterScalingMode : Art der der Master-Skalierung. (MC_CamScalingMode)

SlaveScalingMode : Art der der Slave-Skalierung. (MC_CamScalingMode)

MasterOffset : Offset für die Masterpositionen.

SlaveOffset : Offset für die Slavepositionen.

MasterScaling : Faktor für Masterpositionen (default 1.0).

SlaveScaling : Faktor für Slavepositionen (default 1.0).

VAR_OUTPUT

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

Done : Wird TRUE, wenn die Skalierung erfolgreich durchgeführt wurde.

Busy : wird TRUE, sobald der Funktionsbaustein aktiv wird und wird FALSE sobald die Funktion beendet wurde und neu getriggert werden kann.

Error : Wird TRUE, sobald ein Fehler eintritt.

ErrorID : Liefert bei einem gesetzten Error-Ausgang die Fehlernummer

VAR_IN_OUT

VAR_IN_OUT
        Slave :         NCTOPLC_AXLESTRUCT;
END_VAR

Slave : Achsstruktur des Slaves.

Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken
TwinCAT v2.9 Build 1001 | PC (i386) | TcNcCamming.Lib


MC_ReadCamTableSlaveDynamics

FUNCTION_BLOCK MC_ReadCamTableSlaveDynamics

Mit dem Funktionsbaustein MC_ReadCamTableSlaveDynamics kann die Slave-Dynamik an einem bestimmten Punkt einer Kurvenscheibentabelle bestimmt werden. Die Funktion wertet die Tabellenrohdaten aus, eine eventuelle Skalierung der Kurvenscheibe bleibt unberücksichtigt.

Bei älteren Kurvenscheibentabellentypen können nicht alle Dynamikparameter ermittelt werden. Die folgende Übersicht zeigt, welches Ergebnis zu erwarten ist:

MC_TableType_TABULARTYPE_MOTIONFUNC : Slave-Position, Geschwindigkeit und Beschleunigung werden ermittelt.

MC_TableType_TABULARTYPE_EQUIDIST : Slave-Position und Geschwindigkeit werden ermittelt. Die Beschleunigung ist immer 0.

MC_TableType_TABULARTYPE_NONEQUIDIST : Slave-Position wird ermittelt. Geschwindigkeit und Beschleunigung sind immer 0.

VAR_INPUT

VAR_INPUT
        Execute                 : BOOL;
        CamTableID      : MC_CAM_ID;
        MasterPosition  : LREAL;
END_VAR

Execute : Mit der steigenden Flanke wird das Kommando ausgeführt.

CamTableID : Tabellen ID.

MasterPosition : Master-Position innerhalb der Tabelle zu der die Slave-Dynamik ermittelt werden soll.

VAR_OUTPUT

VAR_OUTPUT
        Done            : BOOL;
        SlavePosition   : LREAL;
        SlaveVelocity   : LREAL;
        SlaveAcceleration       : LREAL;
        Error           : BOOL;
        ErrorID                 : UDINT;
END_VAR

Done : Wird TRUE, wenn das Kommando erfolgreich ausgeführt wurde.

SlavePosition : Position des Slaves in der Kurvenscheibentabelle an der angegebenen MasterPosition.

SlaveVelocity : Geschwindigkeit des Slaves in der Kurvenscheibentabelle an der angegebenen MasterPosition.

SlaveAcceleration : Beschleunigung des Slaves in der Kurvenscheibentabelle an der angegebenen MasterPosition.

Error : Wird TRUE, sobald ein Fehler eintritt.

ErrorID : Liefert bei einem gesetzten Error-Ausgang die Fehlernummer

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


MC_ReadMotionFunction

FUNCTION_BLOCK MC_ReadMotionFunction

Mit dem Funktionsbaustein MC_ReadMotionFunction können die Daten einer Motion Function gelesen werden. Dabei kann die gesamte Funktion mit allen Stützstellen oder auch nur ein Teil gelesen werden. Die Daten werden in der durch CamTable beschriebenen Struktur in der SPS abgelegt.

VAR_INPUT

VAR_INPUT
        Execute                 : BOOL;
        CamTableID      : MC_CAM_ID;
        PointID                 : MC_MotionFunctionPoint_ID;
        NumPoints       : UDINT; (* 0 = fill MFsize *)
END_VAR

Execute : Mit der steigenden Flanke wird das Kommando ausgeführt.

CamTableID : ID der geladenen Tabelle.

PointID : Punkt-ID des ersten zu lesenden Punktes der Motion Function.

NumPoints : Anzahl der zu lesenden Punkte der Motion Function. Um alle Punkte zu lesen kann hier der Wert 0 angegeben werden, die tatsächlich gelesene Anzahl wird in der Ausgangsvariablen NumPointsRead zurückgeliefert.

VAR_OUTPUT

VAR_OUTPUT
        Done            : BOOL;
        NumPointsRead   : UDINT; (* return value <= NumPoints *)
        Error           : BOOL;
        ErrorID                 : UDINT;
END_VAR

Done : Wird TRUE, wenn die Daten erfolgreich gelesen wurden.

NumPointsRead : Die Anzahl der tatsächlich gelesenen Punkte. Die Anzahl kann kleiner oder gleich NumPoints sein.

Error : Wird TRUE, sobald ein Fehler eintritt.

ErrorID : Liefert bei einem gesetzten Error-Ausgang die Fehlernummer

VAR_IN_OUT

VAR_IN_OUT
        CamTable :      MC_CAM_REF;
ND_VAR

CamTable : Verweis auf die Tabelle (Struktur).

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


MC_WriteMotionFunction

FUNCTION_BLOCK MC_WriteMotionFunction

Mit dem Funktionsbaustein MC_WriteMotionFunction können die Daten einer Motion Function in die NC geschrieben werden. Dabei kann die gesamte Funktion mit allen Stützstellen oder auch nur ein Teil geschrieben werden. Die Daten werden zuvor in der durch CamTable beschriebenen Struktur in der SPS abgelegt.

Mit dem Funktionsbaustein MC_SetCamOnlineChangeMode kann festgelegt werden, wann die Daten in die Kurvenscheibe übernommen werden. Sollen die Daten nicht sofort, sondern beispielsweise erst an einer bestimmten Position des Masters aktiv werden, so puffert das System zunächst die geschriebenen Daten um sie dann an der Masterposition zu aktivieren. Mit der Funktion AxisCamDataQueued kann geprüft werden, ob Daten gepuffert sind, das heißt geschrieben aber noch nicht aktiviert wurden.

VAR_INPUT

VAR_INPUT
        Execute                 : BOOL;
        CamTableID      : MC_CAM_ID;
        PointID                 : MC_MotionFunctionPoint_ID;
        NumPoints       : UDINT;
END_VAR

Execute : Mit der steigenden Flanke wird das Kommando ausgeführt.

CamTableID : ID der geladenen Tabelle.

PointID : Punkt-ID des ersten zu schreibenden Punktes der Motion Function.

NumPoints : Anzahl der zu schreibenden Punkte der Motion Function.

VAR_OUTPUT

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

Done : Wird TRUE, wenn die Daten erfolgreich gelesen wurden.

Error : Wird TRUE, sobald ein Fehler eintritt.

ErrorID : Liefert bei einem gesetzten Error-Ausgang die Fehlernummer

VAR_IN_OUT

VAR_IN_OUT
        CamTable :      MC_CAM_REF;
ND_VAR

CamTable : Verweis auf die Tabelle (Struktur). Die Startadresse der Tabellen-Datenstruktur (CamTable.pArray) zeigt auf den ersten Punkt, der geschrieben werden soll.

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


MC_ReadMotionFunctionPoint

FUNCTION_BLOCK MC_ReadMotionFunctionPoint

Mit dem Funktionsbaustein MC_ReadMotionFunctionPoint können die Daten einer Stützstelle einer Motion Function gelesen werden.

VAR_INPUT

VAR_INPUT
        Execute                 : BOOL;
        CamTableID      : MC_CAM_ID;
        PointID                 : MC_MotionFunctionPoint_ID;
END_VAR

Execute : Mit der steigenden Flanke wird das Kommando ausgeführt.

CamTableID : ID der geladenen Tabelle.

PointID : Punkt-ID des ersten zu lesenden Punktes der Motion Function.

VAR_OUTPUT

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

Done : Wird TRUE, wenn die Daten erfolgreich gelesen wurden.

Error : Wird TRUE, sobald ein Fehler eintritt.

ErrorID : Liefert bei einem gesetzten Error-Ausgang die Fehlernummer

VAR_IN_OUT

VAR_IN_OUT
        Point : MC_MotionFunctionPoint;
ND_VAR

Point : Datenstruktur mit den Daten einer Stützstelle einer Motion Function

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


MC_WriteMotionFunctionPoint

FUNCTION_BLOCK MC_WriteMotionFunctionPoint

Mit dem Funktionsbaustein MC_WriteMotionFunctionPoint können die Daten einer Stützstelle einer Motion Function beschrieben werden.

Mit dem Funktionsbaustein MC_SetCamOnlineChangeMode kann festgelegt werden, wann die Daten in die Kurvenscheibe übernommen werden. Sollen die Daten nicht sofort, sondern beispielsweise erst an einer bestimmten Position des Masters aktiv werden, so puffert das System zunächst die geschriebenen Daten um sie dann an der Masterposition zu aktivieren. Mit der Funktion AxisCamDataQueued kann geprüft werden, ob Daten gepuffert sind, das heißt geschrieben aber noch nicht aktiviert wurden.

VAR_INPUT

VAR_INPUT
        Execute                 : BOOL;
        CamTableID      : MC_CAM_ID;
        PointID                 : MC_MotionFunctionPoint_ID;
END_VAR

Execute : Mit der steigenden Flanke wird das Kommando ausgeführt.

CamTableID : ID der geladenen Tabelle.

PointID : Punkt-ID des ersten zu schreibenden Punktes der Motion Function.

VAR_OUTPUT

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

Done : Wird TRUE, wenn die Daten erfolgreich geschrieben wurden.

Error : Wird TRUE, sobald ein Fehler eintritt.

ErrorID : Liefert bei einem gesetzten Error-Ausgang die Fehlernummer

VAR_IN_OUT

VAR_IN_OUT
        Point : MC_MotionFunctionPoint;
ND_VAR

Point : Datenstruktur mit den Daten einer Stützstelle einer Motion Function

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


MC_SetCamOnlineChangeMode

FUNCTION_BLOCK MC_SetCamOnlineChangeMode

Kurvenscheibendaten können während der Laufzeit durch die SPS geändert werden (siehe MC_WriteMotionFunction, MC_WriteMotionFunctionPoint). Mit dem Funktionsbaustein MC_SetCamOnlineChangeMode wird festgelegt, wann und wie diese Änderungen übernommen werden.

Diese Funktion legt den Aktivierungsmodus für Änderungen fest, führt aber keine Änderung oder Umschaltung von Kurvenscheiben aus.

VAR_INPUT

VAR_INPUT
        Execute                         : BOOL;
        ActivationMode          : MC_CamActivationMode;
        ActivationPosition      : LREAL;
        MasterScalingMode               : MC_CamScalingMode;
        SlaveScalingMode                : MC_CamScalingMode;
        CamTableID              : MC_CAM_ID;
END_VAR

Execute : Mit der steigenden Flanke wird das Kommando ausgeführt.

ActivationMode : Definiert, wann und wie die Skalierung durchgeführt wird. (MC_CamActivationMode)

ActivationPosition : Optionale Master-Position, an der die Skalierung durchgeführt wird (je nach ActivationMode).

MasterScalingMode : Art der der Master-Skalierung. (MC_CamScalingMode)

SlaveScalingMode : Art der der Slave-Skalierung. (MC_CamScalingMode)

CamTableID : Tabellen ID.

VAR_OUTPUT

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

Done : Wird TRUE, wenn die Funktion erfolgreich durchgeführt wurde.

Busy : wird TRUE, sobald der Funktionsbaustein aktiv wird und wird FALSE sobald die Funktion beendet wurde und neu getriggert werden kann.

Error : Wird TRUE, sobald ein Fehler eintritt.

ErrorID : Liefert bei einem gesetzten Error-Ausgang die Fehlernummer

Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken
TwinCAT v2.9 Build 1001 | PC (i386) | TcNcCamming.Lib


MC_ReadCamTableCharacteristics

FUNCTION_BLOCK MC_ReadCamTableCharacteristics

Mit dem Funktionsbaustein MC_ReadCamTableCharacteristics werden die charakteristischen Kenngrößen einer Motion Function berechnet und ausgelesen.

VAR_INPUT

VAR_INPUT
        Execute :       BOOL;
        CamTableID :    MC_CAM_ID;
END_VAR

Execute : Mit der steigenden Flanke wird das Kommando ausgeführt.

CamTableID : Tabellen ID.

VAR_OUTPUT

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

Done : Wird TRUE, wenn die Berechnung erfolgreich durchgeführt wurde.

Error : Wird TRUE, sobald ein Fehler eintritt.

ErrorID : Liefert bei einem gesetzten Error-Ausgang die Fehlernummer

VAR_IN_OUT

VAR_IN_OUT
        CamTableCharac : MC_TableCharacValues;
END_VAR

CamTableCharac: Datenstruktur mit charakteristischen Kenngrößen der Motion Function

Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken
TwinCAT v2.7.0 & TwinCAT v2.8 | PC (i386) | TcNcCamming.Lib


MC_ReadMotionFunctionValues

FUNCTION_BLOCK MC_ReadMotionFunctionValues

Mit dem Funktionsbaustein MC_ReadMotionFunctionValues können die interpolierten Daten einer Motion Function in Form einer Tabelle gelesen werden.

VAR_INPUT

VAR_INPUT
        Execute                 : BOOL;
        CamTableID      : MC_CAM_ID;
        ValueSelectMask         : UINT;  (* MC_ValueSelectType; position, velocity, acceleration, jerk… *)
        StartPosMaster  : LREAL; (* master position of first point *)
        EndPosMaster    : LREAL; (* master position of last point *)
        Increment       : LREAL; (* increment of master position *)
END_VAR

Execute : Mit der steigenden Flanke wird das Kommando ausgeführt.

CamTableID : ID der geladenen Tabelle (Typ Motion Function).

ValueSelectMask : Mit der Auswahlmaske kann festgelegt werden, welche Daten interpoliert und zurückgeliefert werden soll. Die Spaltenzahl der durch CamTable beschriebenen Datenstruktur muss der Anzahl der durch ValueSelectMask bestimmten Spaltenzahl entsprechen. Wenn zum Beispiel nur Positionsdaten gelesen werden, ist die Spaltenzahl 2 (Master- und Slave-Position). Mit jeder weiteren Ableitung (Geschwindigkeit, Beschleunigung, Ruck) kommt eine Spalte hinzu.

StartPosMaster : Positionswert der Master-Achse des ersten interpolierten Punktes

EndPosMaster : Positionswert der Master-Achse des letzten interpolierten Punktes

Increment : Schrittweite der Interpolation

VAR_OUTPUT

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

Done : Wird TRUE, wenn die Daten erfolgreich gelesen wurden.

Error : Wird TRUE, sobald ein Fehler eintritt.

ErrorID : Liefert bei einem gesetzten Error-Ausgang die Fehlernummer

VAR_IN_OUT

VAR_IN_OUT
        CamTable :      MC_CAM_REF;
ND_VAR

CamTable : Verweis auf die Tabelle (Struktur).

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


MC_CamInfo

FUNCTION_BLOCK MC_CamInfo

Der Funktionsbaustein MC_CamInfo ermittelt Daten zum aktuellen Zustand und zur aktuellen Parametrierung einer Kurvenscheibenkopplung. Das Kommando setzt voraus, dass die Slave-Achse über eine Kurvenscheibe gekoppelt ist. Wenn der Eingang AtMasterPosition TRUE ist, wird nicht der aktuelle Zustand, sondern der Zustand bezogen auf die angegebene Master-Position ermittelt. Die ermittelten Daten werden in der Datenstruktur CamInfo abgelegt.

Hinweis : Wenn die gekoppelte Achsgruppe in eine Fehlersituation gerät (z. B. Notaus), so gibt der Funktionsbaustein den letzten gültigen Zustand der Kopplung zurück. Der Funktionsbaustein muss vor dem Abkoppeln des Slaves aufgerufen werden. Mit den ermittelten Daten kann dann die Kopplung an der ursprünglichen Achsposition wiederhergestellt werden.

VAR_INPUT

VAR_INPUT
        Execute         : BOOL;
        AtMasterPosition        : BOOL;
        MasterPosition  : LREAL;
END_VAR

Execute : Mit der steigenden Flanke wird das Kommando ausgeführt.

AtMasterPosition : Wenn AtMasterPosition TRUE ist, werden die Daten bezogen auf die angegebene MasterPosition ermitteln. Anderenfalls beziehen sich die Daten auf die aktuelle Masterposition.

MasterPosition : Master-Position auf die sich die ermittelten Daten beziehen. Diese Eingangsparameter ist nicht notwendig, wenn AtMasterPosition FALSE ist.

VAR_OUTPUT

VAR_OUTPUT
        Done    : BOOL;
        Busy    : BOOL;
        Error   : BOOL;
        ErrorID         : UDINT;
        CamInfo         : MC_CamInfoData;
END_VAR

Done : Wird TRUE, wenn die Funktion erfolgreich durchgeführt wurde.

Busy : wird TRUE, sobald der Funktionsbaustein aktiv wird und wird FALSE sobald die Funktion beendet wurde und neu getriggert werden kann.

Error : Wird TRUE, sobald ein Fehler eintritt.

ErrorID : Liefert bei einem gesetzten Error-Ausgang die Fehlernummer

CamInfo : Die Datenstruktur CamInfo enthält alle ermittelten Daten der Kurvenscheibenkopplung

VAR_IN_OUT

VAR_IN_OUT
        Slave   : NCTOPLC_AXLESTRUCT;
END_VAR

Slave : Achsstruktur des Slaves.

Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken
TwinCAT v2.9 ab Build 1026 | PC (i386) | TcNcCamming.Lib


MC_CAM_ID

TYPE MC_CAM_ID

TYPE
    MC_CAM_ID : UDINT;
END_TYPE

Typdeklaration für die Tabellen ID.

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


MC_CAM_REF

TYPE MC_CAM_REF

TYPE MC_CAM_REF :
STRUCT
    pArray        : UDINT;         (* pointer to data *)
    nArraySize    : UDINT;         (* size of data in bytes
*)
    nTableType    : MC_TableType;  (* cam
table type *)
    nNoOfRows     : UDINT;
    nNoOfCols     : UDINT;
END_STRUCT
END_TYPE

Strukturdefinition der Tabelle. Der erste Parameter pArray ist ein Pointer auf eine Datenstruktur, die die Tabellendaten hält. Diese Datenstruktur kann abhängig vom Tabellentyp nTableType unterschiedlich aufgebaut sein. In der Komponenten nNoOfRows wird die Anzahl der Zeilen eingetragen, in nNoOfCols die Anzahl der Spalten (normalerweise 1 oder 2).

Beispiel 1: Strukturbeschreibung einer Punktetabelle

pArray: Adresse eines zweidimensionalen Arrays. Die erste Spalte enthält eine aufsteigende Liste von Master-Positionen. Die zweite Spalte enthält die dazugehörigen Slave-Positionen.

nArraySize: Größe des Datenarrays. Die Größe sollte mit SIZEOF(Array) berechnet werden.

nTableType: Der Typ der Tabelle ist TABULARTYPE_EQUIDIST, wenn die Master-Positionen einen gleichen Abstand haben oder TABULARTYPE_NONEQUIDIST bei wechselndem Abstand.

nNoOfRows: Die Zeilenanzahl entspricht der Anzahl der Tabellenpunkte

nNoOfCols: Die Spaltenanzahl ist 2

Beispiel 2: Strukturbeschreibung einer Motion Function

pArray: Adresse eines eindimensionalen Arrays vom Typ MC_MotionFunctionPoint. Jedes Array-Element enthält eine Beschreibung einer Stützstelle der Kurvenscheibe.

nArraySize: Größe des Datenarrays. Die Größe sollte mit SIZEOF(Array) berechnet werden.

nTableType: Der Typ der Tabelle ist TABULARTYPE_MOTIONFUNC.

nNoOfRows: Die Zeilenanzahl entspricht der Anzahl der Tabellenpunkte

nNoOfCols: Die Spaltenanzahl ist 1

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


MC_StartMode

TYPE MC_StartMode

TYPE
 (
    MC_STARTMODE_ABSOLUTE := 1,      (* cam table is absolute for
master and slave *)
    MC_STARTMODE_RELATIVE,           (* cam table is relative for
master and slave *)
    MC_STARTMODE_MASTERABS_SLAVEREL, (* cam table is absolute for
master and relative for slave *)
    MC_STARTMODE_MASTERREL_SLAVEABS  (* cam table is relative for
master and absolute for slave *)
);
END_TYPE

Der StartMode wird beim Koppeln mit Kurvenscheiben durch MC_CamIn oder MC_CamInExt verwendet und legt fest ob eine Kurvenscheibe absolut zum Ursprung des Achskoordinatensystems oder relativ zur Koppelposition interpretiert wird. Der Mode kann für beide Koordinatenachsen getrennt absolut oder relativ festgelegt werden.

Beim StartModeabsolut liegt das Kurvenscheibenkoordinatensystem deckungsgleich über dem Achskoordinatensystem und kann gegebenenfalls durch einen Offset (Master- oder Slave-Offset) verschoben werden.

Beim StartModerelativ liegt der Ursprung des Kurvenscheibenkoordinatensystems an der Achsposition der jeweiligen Achse (Master oder Slave) zum Zeitpunkt der Kopplung oder Kurvenscheibenumschaltung. Zusätzlich kann die Kurvenscheibe durch einen Offset verschoben werden.

Hinweis: Die Modi MC_STARTMODE_RELATIVE und MC_STARTMODE_MASTERREL_SLAVEABS können nicht in Verbindung mit einer automatischen Master-Offsetberechnung (MC_CamScalingMode) verwendet werden, da es hier einen Widerspruch gibt.

Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken
TwinCAT v2.10 Build 1329 | PC (i386) | TcNcCamming.Lib


MC_TableType

TYPE MC_TableType

TYPE MC_TableType :
(
    (* n*m tabular with equidistant ascending master values
*)
    MC_TableType_TABULARTYPE_EQUIDIST := 10,
    (* n*m tabular with strictly monotone ascending master
values
    (not imperative equidistant) *)
    MC_TableType_TABULARTYPE_NONEQUIDIST := 11,
    (* motion function calculated in runtime *)
    MC_TableType_TABULARTYPE_MOTIONFUNC := 22 );
END_TYPE
Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken
TwinCAT v2.9 | PC (i386) | TcNcCamming.Lib


MC_InterpolationType

TYPE MC_InterpolationType

TYPE MC_InterpolationType :
(
    MC_InterpolationType_Linear := 0, (* linear 2 point
interpolation *)
    MC_InterpolationType_4Point := 1, (* 4 point
interpolation
                                         (for equidistant tables
only) *)
    MC_InterpolationType_Spline := 2  (* spline interpolation
(tangential
                                         or cyclic, depending on
table)*)
);
END_TYPE

Interpolationsart für Tabellendaten.

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


MC_MotionFunctionPoint

TYPE MC_MotionFunctionPoint

TYPE MC_MotionFunctionPoint :
STRUCT
    PointIndex        : MC_MotionFunctionPoint_ID;

    FunctionType      : MC_MotionFunctionType;

    PointType         : MC_MotionPointType;

    RelIndexNextPoint : MC_MotionFunctionPoint_ID;

    MasterPos         : LREAL; (* X *)
    SlavePos          : LREAL; (* Y *)
    SlaveVelo         : LREAL; (* Y' *)
    SlaveAcc          : LREAL; (* Y'' *)
    SlaveJerk         : LREAL; (* Y''' *)
END_STRUCT
END_TYPE

Die Datenstruktur MC_MotionFunctionPoint beschreibt eine Stützstelle einer Motion Function. Eine Motion Function ist eine eindimensionale Liste (Array) vom Typ MC_MotionFunctionPoint.

PointIndex: Absoluter Index dieser Stützstelle innerhalb der Motion Function. Der Punktindex aller Stützstellen muss streng monoton steigend, lückenlos und größer 0 sein.

FunctionType: Typ MC_MotionFunctionType der mathematischen Funktion zwischen dieser und der nachfolgenden Stützstelle

PointType: Typ MC_MotionPointType dieser Stützstelle.

RelIndexNextPoint: Relativer Verweis auf die nachfolgende Stützstelle (normalerweise 1).

MasterPos: Position der Master-Achse an dieser Stützstelle

SlavePos: Position der Slave-Achse an dieser Stützstelle

SlaveVelo: Geschwindigkeit der Slave-Achse an dieser Stützstelle

SlaveAcc: Beschleunigung der Slave-Achse an dieser Stützstelle

SlaveJerk: Ruck der Slave-Achse an dieser Stützstelle

Anmerkung : Einige Bewegungsgesetze (MC_MotionFunctionType ) lassen eine Symmetrieeinstellung zu. Da bei all diesen Funktionen der Ruck an den Randpunkten 0 ist, kann in diesen Fällen der Ruckparameter SlaveJerk zur Einstellung der Symmetrie verwendet werden. Ein Wert von 0 bedeutet eine Symmetrie von 50%. Bei folgenden Funktionen kann der Wert im Bereich +/- 0.5 eingestellt werden:

POLYNOM3
POLYNOM5
POLYNOM8
POLYNOM11
SINUSLINIE
MODSINUSLINIE
BESTEHORN
BESCHLTRAPEZ
SINUS_GERADE_KOMBI

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


MC_MotionFunctionPoint_ID

TYPE MC_MotionFunctionPoint_ID

TYPE
    MC_MotionFunctionPoint_ID : UDINT;
END_TYPE

Typdeklaration für die Punkt-ID der Punkte einer Motion Function.

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


MC_MotionPointType

TYPE MC_MotionPointType

TYPE MC_MotionPointType :
(
    MOTIONPOINTTYPE_IGNORE,                (* Ignore point *)
    MOTIONPOINTTYPE_REST       := 16#0001, (* Restpoint - Rastpunkt
*)
    MOTIONPOINTTYPE_VELOCITY   := 16#0002, (* Velocity Point -
Geschwindigkeitspunkt *)
    MOTIONPOINTTYPE_TURN       := 16#0004, (* Turn Point -
Umkehrpunkt *)
    MOTIONPOINTTYPE_MOTION     := 16#0008, (* Motion Point -
Bewegungspunkt *)
    MOTIONPOINTTYPE_ADD        := 16#0F00, (* Addieren von
Segmenten *)
    MOTIONPOINTTYPE_ACTIVATION := 16#2000  (* 1: activation point
*)
);
END_TYPE

Typdeklaration für die Tabellen ID.

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


MC_MotionFunctionType

TYPE MC_MotionFunctionType

TYPE MC_MotionFunctionType :
(
    MOTIONFUNCTYPE_NOTDEF,
    MOTIONFUNCTYPE_POLYNOM1 := 1,         (* 1: polynom with order
1 *)
    MOTIONFUNCTYPE_POLYNOM3 := 3,         (* 3: polynom with order
3 (rest <-> rest) *)
    MOTIONFUNCTYPE_POLYNOM5 := 5,         (* 5: polynom with order
5 (rest <-> rest) *)
    MOTIONFUNCTYPE_POLYNOM8 := 8,         (* 8: polynom with order
8 (rest <-> rest) *)
    MOTIONFUNCTYPE_SINUSLINIE := 10,
    MOTIONFUNCTYPE_MODSINUSLINIE := 11,
    MOTIONFUNCTYPE_BESTEHORN := 12,
    MOTIONFUNCTYPE_BESCHLTRAPEZ := 13,    (* 13:
Beschleunigungstrapez *)
    MOTIONFUNCTYPE_POLYNOM5_MM := 15,     (* 15: polynom with order
5 (motion <-> motion) *)
    MOTIONFUNCTYPE_SINUS_GERADE_KOMBI := 16,
    MOTIONFUNCTYPE_HARMONIC_KOMBI_RT := 17,
    MOTIONFUNCTYPE_HARMONIC_KOMBI_TR := 18,
    MOTIONFUNCTYPE_HARMONIC_KOMBI_VT := 19,
    MOTIONFUNCTYPE_HARMONIC_KOMBI_TV := 20,
    MOTIONFUNCTYPE_BESCHLTRAPEZ_RT := 21, (* 21:
Beschleunigungstrapez (rest <-> turn) *)
    MOTIONFUNCTYPE_BESCHLTRAPEZ_TR := 22, (* 22:
Beschleunigungstrapez (turn <-> rest) *)
    MOTIONFUNCTYPE_MODSINUSLINIE_VV := 23,
    MOTIONFUNCTYPE_POLYNOM7_MM := 24,     (* 24: polynom with order
7 (motion <-> motion) *)
    MOTIONFUNCTYPE_POLYNOM6STP := 27,     (* 27: polynom with order
6 *)
    MOTIONFUNCTYPE_POLYNOM6WDP := 28,     (* 28: polynom with order
6 *)
    MOTIONFUNCTYPE_STEPFUNCTION := 99
);
END_TYPE

Typdeklaration für Motion Functions

Hinweis: Der im TwinCAT Cam Design Editor verwendete Motion-Function-Typ Automatic entspricht MOTIONFUNCTYPE_POLYNOM5_MM.

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


MC_TableCharacValues

TYPE MC_TableCharacValues

TYPE MC_TableCharacValues :
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

Typdeklaration für die charakteristischen Kenngrößen einer Motion Function.

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


MC_ValueSelectType

TYPE MC_ValueSelectType

TYPE MC_ValueSelectType :
(
    (* a bitmask can be created by adding the following values
*)
    MC_VALUETYPE_POSITION     := 1,
    MC_VALUETYPE_VELOCITY     := 2,
    MC_VALUETYPE_ACCELERATION := 4,
    MC_VALUETYPE_JERK         := 8
);
END_TYPE

Typdeklaration für den Zugriff auf Wertetabellen mit dem Funktionsbaustein MC_ReadMotionFunctionValues.

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


MC_TableErrorCodes

TYPE MC_TableErrorCodes

TYPE
    (* Cam Table Error Codes *)
    MC_ERROR_POINTER_INVALID     := 16#4B30, (* invalid pointer
(address) value *)
    MC_ERROR_ARRAYSIZE_INVALID   := 16#4B31, (* invalid size of
data structure *)
    MC_ERROR_CAMTABLEID_INVALID  := 16#4B32, (* invalid cam table
ID (not [1..255]) *)
    MC_ERROR_POINTID_INVALID     := 16#4B33, (* invalid point ID
*)
    MC_ERROR_NUMPOINTS_INVALID   := 16#4B34,
    MC_ERROR_MCTABLETYPE_INVALID := 16#4B35,
    MC_ERROR_NUMROWS_INVALID     := 16#4B36,
    MC_ERROR_NUMCOLUMNS_INVALID  := 16#4B37,
    MC_ERROR_INCREMENT_INVALID   := 16#4B38
END_TYPE
Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken
TwinCAT v2.9 | PC (i386) | TcNcCamming.Lib


MC_CamActivationMode

TYPE MC_CamActivationMode

      TYPE
MC_CamActivationMode :

(

    MC_CAMACTIVATION_INSTANTANEOUS,     (* instantaneous change
*)

    MC_CAMACTIVATION_ATMASTERCAMPOS,    (* modify the data at a
defined master

                                           position referring to
the cam tables

                                    1      master position *)

    MC_CAMACTIVATION_ATMASTERAXISPOS,   (* modify the data at a
defined master

                                           position referring to
the absolute

                                           master axis position
*)

    MC_CAMACTIVATION_NEXTCYCLE,         (* modify the data at the
beginning of

                                           the next cam table cycle
*)
   MC_CAMACTIVATION_NEXTCYCLEONCE,     (* not
yet implemented

                                           modify the data at the
beginning of

                                           the next cam table
cycle, activation

                                           is valid for one cycle
only *)
    MC_CAMACTIVATION_ASSOONASPOSSIBLE,  (*
modify the data as soon as the

                                           cam table is in a safe
state to

                                           change its data *)

    MC_CAMACTIVATION_OFF,               (* don't accept any
modification *)

    MC_CAMACTIVATION_DELETEQUEUEDDATA   (* delete all data which
was written

                                           to modify the cam table
but is

                                           still not activated
*)

);

END_TYPE

MC_CamActivationMode legt Zeitpunkt und Art der Änderung einer Kurvenscheibe fest. Änderungen können einerseits durch Skalierung oder aber durch Ändern der Kurvenscheibendaten durchgeführt werden. Es sind jeweils nicht alle Modi möglich.

In den einzelnen Fällen sind die folgenden Modi möglich:

Skalieren von Kurvenscheiben

Kurvenscheiben können mit dem Funktionsbaustein MC_CamScaling skaliert werden. Dabei sind folgende Aktivierungsmodi gültig.

MC_CAMACTIVATION_INSTANTANEOUS | Die Skalierung wird sofort ausgeführt.
MC_CAMACTIVATION_ATMASTERCAMPOS | Die Skalierung wird an einer bestimmten Kurvenscheibenposition (Master-Position innerhalb der Kurvenscheibe) durchgeführt. Das Skalierungs-Kommando muss vor dieser Position ausgeführt werden.
MC_CAMACTIVATION_ATMASTERAXISPOS | Die Skalierung wird an einer bestimmten absoluten Position der Master-Achse durchgeführt. Das Skalierungs-Kommando muss vor dieser Position ausgeführt werden.
MC_CAMACTIVATION_NEXTCYCLE | Die Skalierung wird bei einer zyklischen Kurvenscheibe am Übergang zur nächsten Periode durchgeführt.
MC_CAMACTIVATION_OFF | Es wird keine Skalierung durchgeführt. Dadurch kann beispielsweise die Skalierung nur für eine Achse (Master oder Slave) ausgeführt werden.

Setzen des Modus für Online-Änderung einer Kurvenscheibe (Schreiben von Punktedaten)

Mit MC_SetCamOnlineChangeMode wird festgelegt, wann geänderte Kurvenscheibendaten aktiv werden (siehe auch MC_WriteMotionFunction und MC_WriteMotionFunctionPoint).

In beiden Fällen sind folgende Modi möglich:

MC_CAMACTIVATION_INSTANTANEOUS | Die Änderung wird sofort durchgeführt.
MC_CAMACTIVATION_ATMASTERCAMPOS | Die Änderung wird an einer bestimmten Kurvenscheibenposition (Master-Position innerhalb der Kurvenscheibe) durchgeführt. Das Kommando muss vor dieser Position ausgeführt werden.
MC_CAMACTIVATION_ATMASTERAXISPOS | Die Änderung wird an einer bestimmten absoluten Position der Master-Achse durchgeführt. Das Kommando muss vor dieser Position ausgeführt werden.
MC_CAMACTIVATION_NEXTCYCLE | Die Änderung wird bei einer zyklischen Kurvenscheibe am Übergang zur nächsten Periode durchgeführt.
MC_CAMACTIVATION_ASSOONASPOSSIBLE | Geänderte Kurvenscheibendaten werden übernommen, sobald das aus dynamischen Gründen möglich ist.
MC_CAMACTIVATION_OFF | Änderungen der Kurvenscheibendaten werden ignoriert.
MC_CAMACTIVATION_DELETEQUEUEDDATA | Gepufferte Kurvenscheibendaten werden gelöscht. Daten werden beispielsweise gepuffert, wenn die Änderung an einer bestimmten Masterposition oder am Zyklusende angefordert wurde.

Ankoppeln mit Kurvenscheiben

Mit dem Funktionsbausteinen MC_CamInExt können Achsen mit Kurvenscheiben gekoppelt werden. Über den ActivationMode kann optional festgelegt werden, ab welcher Position die Slave-Achse aktiv wird.

MC_CAMACTIVATION_INSTANTANEOUS | Die Kurvenscheibenkopplung wird sofort aktiv und der Slave bewegt sich gemäß der Kurvenscheibendaten.
MC_CAMACTIVATION_ATMASTERCAMPOS | Die Kurvenscheibenkopplung ist schwebend aktiv. Der Slave bewegt sich erst ab einer definierten Kurvenscheibenposition (Master-Position innerhalb der Kurvenscheibe) gemäß der Kurvenscheibendaten. Dieser ActivationMode kann beim Ankoppeln nicht in Verbindung mit MC_StartMode = MC_STARTMODE_RELATIVE oder MC_STARTMODE_MASTERREL_SLAVEABS verwendet werden.
MC_CAMACTIVATION_ATMASTERAXISPOS | Die Kurvenscheibenkopplung ist schwebend aktiv. Der Slave bewegt sich erst ab einer definierten absoluten Position der Master-Achse gemäß der Kurvenscheibendaten.
MC_CAMACTIVATION_NEXTCYCLE | Die Kurvenscheibenkopplung ist schwebend aktiv. Der Slave bewegt sich ab dem nächsten Zyklusübergang (bei zyklischen Kurvenscheiben). Dieser ActivationMode kann beim Ankoppeln nicht in Verbindung mit MC_StartMode = MC_STARTMODE_RELATIVE oder MC_STARTMODE_MASTERREL_SLAVEABS verwendet werden.

Umschalten von Kurvenscheiben

Mit dem Funktionsbausteinen MC_CamInExt kann im gekoppelten Zustand von einer Kurvenscheibe auf eine andere umgeschaltet werden. Über den ActivationMode kann festgelegt werden, an welcher Position die Umschaltung statt findet.

MC_CAMACTIVATION_INSTANTANEOUS | Die Kurvenscheibe wird sofort umgeschaltet und der Slave bewegt sich gemäß der neuen Kurvenscheibendaten.
MC_CAMACTIVATION_ATMASTERCAMPOS | Die Kurvenscheibenumschaltung wird an einer definierten Kurvenscheibenposition (Master-Position innerhalb der Kurvenscheibe) durchgeführt .
MC_CAMACTIVATION_ATMASTERAXISPOS | Die Kurvenscheibenumschaltung wird an einer definierten absoluten Position der Master-Achse durchgeführt.
MC_CAMACTIVATION_NEXTCYCLE | Die Kurvenscheibenumschaltung wird bei zyklischen Kurvenscheiben am nächsten Zyklusübergang durchgeführt. Bei linearen Kurvenscheiben findet die Umschaltung an den Rändern des definierten Bereiches statt.
MC_CAMACTIVATION_DELETEQUEUEDDATA | Eine schwebende und noch nicht aktiv gewordene Kurvenscheibenumschaltung wird verworfen.

Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken
TwinCAT v2.10 Build 1329 | PC (i386) | TcNcCamming.Lib


MC_CamScalingMode

TYPE MC_CamScalingMode

TYPE MC_CamScalingMode :
(
    MC_CAMSCALING_USERDEFINED, (* user defines scaling parameters -
slope and offset *)
    MC_CAMSCALING_AUTOOFFSET,  (* offset is calculated
automatically for best result *)
    MC_CAMSCALING_OFF          (* no modification accepted *)
);
END_TYPE

Typ und Umfang der Skalierung einer Kurvenscheibenkopplung mit dem Funktionsbaustein MC_CamScaling.

MC_CAMSCALING_USERDEFINED : Die Skalierung und der Offset werden unverändert übernommen. Skalierung und Offset müssen vom Anwender so berechnet werden, dass kein Sprung in der Position entsteht.

MC_CAMSCALING_AUTOOFFSET : Die Skalierung wird übernommen und der Offset wird vom System so angepasst, dass kein Sprung in der Position entsteht. Die Skalierung sollte dennoch in einer Phase mit Slave-Geschwindigkeit 0 durchgeführt werden, weil sonst eine Sprung in der Geschwindigkeit nicht vermieden werden kann.

MC_CAMSCALING_OFF : Die Skalierung und der Offset werden ignoriert. Dieser Modus wird beispielsweise eingesetzt, wenn nur eine Slave-Skalierung aber keine Master-Skalierung durch geführt werden soll.

Autooffset

Der Autooffset Modus sorgt für eine automatische Anpassung eines Kurvenscheibenoffsets. Autooffset kann unabhängig für die Master- oder die Slave-Achse einer Kurvenscheibe angewendet werden und wirkt sowohl bei der Umschaltung als auch bei der Skalierung von Kurvenscheiben. Die Funktion arbeitet nach den im Folgenden beschriebenen Regeln.

Master-Autooffset

Master-Autooffset sorgt beim Umschalten von Kurvenscheiben mit eventuell verschiedenem Master-Zyklus oder beim Skalieren von Kurvenscheiben (Master-Skalierung), dass die Master-Position der Kurvenscheibe im Achs-Koordinatensystem nicht springt. Diese Funktion ist notwendig, da die relative Position einer Kurvenscheibe im Achs-Koordinatensystem vom Masterzyklus abhängt. Wird der Master-Zyklus z. B. durch Skalierung verändert, so würde die Position sich verändern.

Master-Autooffset bestimmt den Master-Offset der Kurvenscheibe so, dass die Masterposition innerhalb der Kurvenscheibe beibehalten wird. Bei einer Skalierung oder Umschaltung auf eine Kurvenscheibe mit anderem Master-Zyklus bedeutet das, dass die relative (prozentuale) Position vor und nach der Umschaltung identisch ist.

Beispiel: Eine Kurvenscheibe hat einen Master-Zyklus von 360° und wird um den Faktor 2 auf 720° skaliert. Die Skalierung wird an der Position 90° innerhalb der Kurvenscheibe durchgeführt, also bei 25% vom Zyklusanfang. Nach der Skalierung ist die relative Master-Position in der Kurvenscheibe bei 180° also ebenfalls 25% vom Zyklusanfang.

Bei einer Umschaltung an den Rändern einer Kurvenscheibe (siehe MC_CamActivationMode MC_CAMACTIVATION_NEXTCYCLE), sorgt Master-Autooffset für ein nahtloses Aneinanderreihen der Kurvenscheiben sowohl bei zyklischen als auch bei linearen Kurvenscheiben.

Master-Autooffset kann nicht verwendet werden, wenn eine Kurvenscheibe relativ angekoppelt oder umgeschaltet wird, da sich diese Funktionen wiedersprechen. Beim ersten Ankoppeln gibt es weitere Einschränkungen, die aus der folgenden Tabelle ersichtlich sind.

Slave-Autooffset

Slave-Autooffset berechnet einen Slave-Offset so, dass es durch eine Kurvenscheiben-Umschaltung oder durch eine Skalierung keinen Sprung in der Slave-Position gibt. Der Slave-Offset wird also so angepasst, dass die Slave-Position vor und nach der Aktion identisch ist.

Werden sowohl Master-Autooffset als auch Slave-Autooffset bei einer Kurvenscheibenumschaltung oder Skalierung verwendet, so wird zuerst der Master-Offset berechnet und anschließend der Slave-Offset.

Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken
TwinCAT v2.10 Build 1329 | PC (i386) | TcNcCamming.Lib


MC_CamInfoData

TYPE MC_CamInfoData

TYPE MC_CamInfoData :
STRUCT
    CamTableID                    : MC_CAM_ID;
    TableType                     : MC_TableType;
    Periodic                      : BOOL;
    InterpolationType             : MC_InterpolationType;

    NumberOfRows                  : UDINT; (* number of cam table
entries, e. g. number of points *)
    NumberOfColumns               : UDINT; (* number of table
columns, typically 1 or 2 *)
    MasterCamStartPos             : LREAL; (* Master position of
the first cam table point *)
    SlaveCamStartPos              : LREAL; (* Slave position of the
first cam table point *)
    RawMasterPeriod               : LREAL;
    RawSlaveStroke                : LREAL;
    MasterAxisCouplingPos         : LREAL; (* Master axis position
when slave has been coupled *)
    SlaveAxisCouplingPos          : LREAL; (* Slave axis position
when slave has been coupled *)
    MasterAbsolute                : BOOL; (* raw unscaled distance
from first to last master cam table position *)
    SlaveAbsolute                 : BOOL; (* raw unscaled distance
from first to last slave cam table position *)
    MasterOffset                  : LREAL; (* total master offset
*)
    SlaveOffset                   : LREAL; (* total slave offset
*)
    MasterScaling                 : LREAL; (* total master scaling
factor *)
    SlaveScaling                  : LREAL; (* total slave scaling
factor *)
    SumOfSlaveStrokes             : LREAL; (* sum OF the slave
strokes up TO ActualMasterAxisPos *)
    SumOfSuperpositionDistance    : LREAL; (* sum of additional
moves through MC_MoveSuperimposed *)
    ActualMasterAxisPos           : LREAL; (* absolute set position
of the master axis *)
    ActualSlaveAxisPos            : LREAL; (* absolute set position
of the slave axis *)
    ActualMasterCamPos            : LREAL; (* absolute cam table
position of the master *)
    ActualSlaveCamPos             : LREAL; (* absolute cam table
position of the slave *)
    (* mode for the scaling of cam tables *)
    ScalingPending                : BOOL; (* a change is currently
pending *)
    ScalingActivationMode         : MC_CamActivationMode;

    ScalingActivationPos          : LREAL;
    ScalingMasterScalingMode      : MC_CamScalingMode;

    ScalingSlaveScalingMode       : MC_CamScalingMode;
    (* mode for online changes of cam table data *)
    CamDataQueued                 : BOOL; (* a change is currently
pending *)
    OnlineChangeActivationMode    : MC_CamActivationMode;

    OnlineChangeActivationPos     : LREAL;
    OnlineChangeMasterScalingMode : MC_CamScalingMode;

    OnlineChangeSlaveScalingMode  : MC_CamScalingMode;
    (* mode for exchanging cam tables with MC_CamIn *)
    CamTableQueued                : BOOL; (* a change is currently
pending *)
    CamExchangeCamTableID         : MC_CAM_ID;
    CamExchangeActivationMode     : MC_CamActivationMode;

    CamExchangeActivationPos      : LREAL;
    CamExchangeMasterScalingMode  : MC_CamScalingMode;

    CamExchangeSlaveScalingMode   : MC_CamScalingMode;
END_STRUCT
END_TYPE

Die Datenstruktur MC_CamInfoData enthält Daten zum aktuellen Zustand einer Kurvenscheibenkopplung. Die Daten werden mit dem Funktionsbaustein MC_CamInfo ermittelt.

Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken
TwinCAT v2.9 ab Build 1026 | PC (i386) | TcNcCamming.Lib


CamTableGenerator

CamTableGenerate erstellt eine neue Tabelle im TwinCAT NC-Kontext und füllt sie mit Daten. Eine eventuell existierende Tabelle mit gleicher Tabellen-ID wird dabei gelöscht.

Interface

VAR_INPUT
    iTableId : INT;
    iTableType : UDINT;
    AdrDataArray : POINTER TO LREAL; (* PLC: ARRAY[ ROWS, COLUMNS ] OF LREAL *)
    iSizeOfDataArray : UDINT;
    iColDim : UDINT; (* second array dimension (COLUMNS) *)
    iRowsToWrite : UDINT; (* number of rows to write <= RowDim *)
    iBlockSize : UDINT; (* number of bytes to write in one internal step *)
    bExecute : BOOL;
    tTimeout : TIME;
END_VAR
VAR_OUTPUT
    bBusy : BOOL;
    bErr : BOOL;
    iErrId : UDINT;
END_VAR

iTableID : Tabellen-ID unter der die Tabelle künftig angesprochen wird

iTableType : Tabellentyp der Tabelle

(* (n*m) tabular with equidistant ascending master values *)
NC_TABULARTYPE_EQUIDIST_LINEAR : UDINT := 1;

(* same but cyclic *)
NC_TABULARTYPE_EQUIDIST_CYCLE : UDINT := 2;

(* (n*m) tabular with strictly monotone ascending master values (not imperative equidistant) *)
NC_TABULARTYPE_NONEQUIDIST_LINEAR : UDINT := 3;

(* same but cyclic *)
NC_TABULARTYPE_NONEQUIDIST_CYCLE : UDINT := 4;

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

iSizeOfDataArray : Gesamtgröße des Datenfeldes in Byte

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.

iBlockSize : Anzahl der Datenbytes, die der Funktionsbaustein in einem zusammenhängenden Block in die Tabelle im NC-Kontext überträgt. Bei iBlockSize=0 wird ein Default-Wert verwendet, der in den meisten Fällen zu empfehlen ist. Nur bei genauer Kenntnis der internen Vorgänge sollte iBlockSize>0 angegeben werden.

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)


CamTableCreate

CamTableCreate erstellt eine neue, zunächst leere Tabelle im TwinCAT NC-Kontext.

Interface

VAR_INPUT
    iTableId : INT;
    iTableType : UDINT; (* table type *)
    iNrOfRows : UDINT; (* number of table lines (n) *)
    iNrOfColumns : UDINT; (* number of table columns (m) *)
    bExecute : BOOL;
    tTimeout : TIME;
END_VAR
VAR_OUTPUT
    bBusy : BOOL;
    bErr : BOOL;
    iErrId : UDINT;
END_VAR

iTableID : Tabellen-ID unter der die Tabelle künftig angesprochen wird

iTableType : Tabellentyp der Tabelle

(* (n*m) tabular with equidistant ascending master values *)
NC_TABULARTYPE_EQUIDIST_LINEAR : UDINT := 1;

(* same but cyclic *)
NC_TABULARTYPE_EQUIDIST_CYCLE : UDINT := 2;

(* (n*m) tabular with strictly monotone ascending master values (not imperative equidistant) *)
NC_TABULARTYPE_NONEQUIDIST_LINEAR : UDINT := 3;

(* same but cyclic *)
NC_TABULARTYPE_NONEQUIDIST_CYCLE : UDINT := 4;

iNrOfRows : Anzahl der Tabellenzeilen

iNrOfColumns : Anzahl der Tabellenspalten

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)


CamTableDelete

CamTableDelete löscht eine Tabelle aus dem NC-Kontext

Interface

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

iTableID : Tabellen-ID der zu löschenden Tabelle

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)


CamTableWriteData

CamTableWriteData schreibt Tabellendaten aus einer SPS-Variablen in eine Tabelle im NC-Kontext.

Interface

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

iTableID : Tabellen-ID der Tabelle aus der die Daten gelesen werden sollen

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.

iSizeOfDataArray : Gesamtgröße des Datenfeldes in Byte

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.

iBlockSize : Anzahl der Datenbytes, die der Funktionsbaustein in einem zusammenhängenden Block in die Tabelle im NC-Kontext überträgt. Bei iBlockSize=0 wird ein Default-Wert verwendet, der in den meisten Fällen zu empfehlen ist. Nur bei genauer Kenntnis der internen Vorgänge sollte iBlockSize>0 angegeben werden.

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)


CamTableReadData

CamTableReadData liest Tabellendaten aus einer Tabelle im NC-Kontext und legt die Daten in einer SPS-Variablen ab

Interface

VAR_INPUT
    iTableId : INT;
    AdrDataArray : POINTER TO LREAL; (* PLC: ARRAY[ ROWS, COLUMNS ] OF LREAL *)
    iSizeOfDataArray : UDINT;
    iColDim : UDINT; (* second array dimension (COLUMNS) *)
    iRowsToRead : UDINT; (* number of rows to read <= RowDim *)
    iBlockSize : UDINT; (* number of bytes to read in one internal step *)
    bExecute : BOOL;
    tTimeout : TIME;
END_VAR
VAR_OUTPUT
    bBusy : BOOL;
    bErr : BOOL;
    iErrId : UDINT;
END_VAR

iTableID : Tabellen-ID der Tabelle aus der die Daten gelesen werden sollen

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

iSizeOfDataArray : Gesamtgröße des Datenfeldes in Byte

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

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

iBlockSize : Anzahl der Datenbytes, die der Funktionsbaustein in einem zusammenhängenden Block in die Tabelle im NC-Kontext überträgt. Bei iBlockSize=0 wird ein Default-Wert verwendet, der in den meisten Fällen zu empfehlen ist. Nur bei genauer Kenntnis der internen Vorgänge sollte iBlockSize>0 angegeben werden.

bExecute : Flankengetriggertes Signal zum Ausführen des Kommandos

tTimeout : ADS-Timeout (ca. 1 Sekunde)

bBusy : wird mit steigender Flange 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)


CamTableReadSlavePos

CamTableReadSlavePos liest zu einer Tabellenposition einer Master-Achse die über die Tabelle definierte Slave-Position. Dabei werden gegebenenfalls Positionsdaten für die Slave-Achse interpoliert, wenn die Master-Position nicht exakt einem Tabelleneintrag entspricht.

Interface

VAR_INPUT
    iTableId : INT;
    fMasterPos : LREAL;
    bExecute : BOOL;
    tTimeout : TIME;
END_VAR
VAR_OUTPUT
    bBusy : BOOL;
    bErr : BOOL;
    iErrId : UDINT;
    fSlavePos : LREAL;
END_VAR

iTableID : Tabellen-ID unter der die Tabelle künftig angesprochen wird

fMasterPos : Position 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)

fSlavePos : Ermittelte Position der Slave-Achse


CamTableCoupleAxes

CamTableCoupleAxes koppelt eine Slave-Achse über eine existierende Tabelle an eine Master-Achse

Interface

VAR_INPUT
    iSlaveId : INT;
    iMasterId : INT;
    fMasterPositionOffset : LREAL;
    fSlavePositionOffset : LREAL;
    bMasterAbsolut : BOOL;
    bSlaveAbsolut : BOOL;
    iTableId : INT;
    bCoupleOn : BOOL;
    bCoupleOff : BOOL;
    tTimeout : TIME;
END_VAR
VAR_OUTPUT
    bBusy : BOOL;
    bErr : BOOL;
    iErrId : UDINT;
END_VAR

iSlaveId : Achs-ID der Slave-Achse die gekoppelt werden soll

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

fMasterPositionOffset : Master-Positionsoffset auf die Tabellendaten

fSlavePositionOffset : Slave-Positionsoffset auf die Tabellendaten;

bMasterAbsolut : Tabellendaten für den Master als absolute Positionen werten

bSlaveAbsolut : Tabellendaten für den Slave als absolute Positionen werten

iTableId : Tabellen-ID der Tabelle über die gekoppelt wird

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)


CamTableCoupleAxesIpol

CamTableCoupleAxesIpol koppelt eine Slave-Achse über eine existierende Tabelle an eine Master-Achse. Weiterhin kann der Typ der Interpolation zwischen den Tabellen-Stützstellen festgelegt werden.

Interface

VAR_INPUT
    iSlaveId : INT;
    iMasterId : INT;
    fMasterPositionOffset : LREAL;
    fSlavePositionOffset : LREAL;
    bMasterAbsolut : BOOL;
    bSlaveAbsolut : BOOL;
    iTableId : INT;
    iIpolType : UINT;
    bCoupleOn : BOOL;
    bCoupleOff : BOOL;
    tTimeout : TIME;
END_VAR
VAR_OUTPUT
    bBusy : BOOL;
    bErr : BOOL;
    iErrId : UDINT;
END_VAR

iSlaveId : Achs-ID der Slave-Achse die gekoppelt werden soll

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

fMasterPositionOffset : Master-Positionsoffset auf die Tabellendaten

fSlavePositionOffset : Slave-Positionsoffset auf die Tabellendaten;

bMasterAbsolut : Tabellendaten für den Master als absolute Positionen werten

bSlaveAbsolut : Tabellendaten für den Slave als absolute Positionen werten

iTableId : Tabellen-ID der Tabelle über die gekoppelt wird

iIpolType : Typ der Interpolation zwischen den Tabellen-Stützstellen. Gültige Werte sind:

 NC_INTERPOLATIONTYPE_LINEAR : UINT := 0; (* standard, uses 2 points *)
        NC_INTERPOLATIONTYPE_4POINT : UINT := 1; (* uses 4 points *)
        NC_INTERPOLATIONTYPE_SPLINE : UINT := 2; (* spline interpolation *)

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)


CamTableOffsetChange

CamTableOffsetChange ändert den Master- und Slave-Offset der Tabelle online, das heißt während Master- und Slave-Achse über die Tabelle gekoppelt sind.

Interface

VAR_INPUT
    iSlaveAxisId : UINT;
    fMasterPositionOffset : LREAL;
    fSlavePositionOffset : LREAL;
    bExecute : BOOL;
    tTimeout : TIME;
END_VAR
VAR_OUTPUT
    bBusy : BOOL;
    bErr : BOOL;
    iErrId : UDINT;
END_VAR

iSlaveAxisId : Achs-Id der Slave-Achse. Der zugehörige Master ist durch die bestehende Achskopplung bekannt.

fMasterPositionOffset : Positions-Offset auf die Master-Positionsdaten

fSlavePositionOffset : Positions-Offset auf die Slave-Positionsdaten

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)


CamTableSetSlaveScale

CamTableSetSlaveScale skaliert die Slave-Spalte einer Tabelle für eine bestehende Master-Slave-Tabellenkopplung.

Interface

VAR_INPUT
    iSlaveAxisId : UINT;
    fSlaveScale : LREAL;
   bExecute : BOOL;
    tTimeout : TIME;
END_VAR
VAR_OUTPUT
    bBusy : BOOL;
    bErr : BOOL;
    iErrId : UDINT;
END_VAR

iSlaveId : Achs-ID der Slave-Achse, die über eine Tabelle an eine Master-Achse gekoppelt ist

fSlaveScale : Skalierungsfaktor der Slave-Spalte der Tabelle

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)


CamTableSetMasterSlaveScale

CamTableSetMasterSlaveScale skaliert Master- und Slave-Spalte einer Tabelle für eine bestehende Master-Slave-Tabellenkopplung.

Interface

VAR_INPUT
    iSlaveAxisId : UINT;
    fMasterPositionOffset : LREAL;
    fSlavePositionOffset : LREAL;
    fMasterSlope : LREAL;
    fSlaveSlope : LREAL;
    bExecute : BOOL;
    tTimeout : TIME;
END_VAR
VAR_OUTPUT
    bBusy : BOOL;
    bErr : BOOL;
    iErrId : UDINT;
END_VAR

iSlaveId : Achs-ID der Slave-Achse, die über eine Tabelle an eine Master-Achse gekoppelt ist

fMasterOffset : Master-Positionsoffset der Tabelle

fSlaveOffset : Slave-Positionsoffset der Tabelle

fMasterSlope : Master-Skalierung der Tabelle

fSlaveSlope : Slave-Skalierung der Tabelle

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)


CamTableSetWeight

(nur für Multitabellen)

CamTableSetWeight setzt die Skalierungs-Parameter einer skalierbaren Multi-Tabelle.

Interface

VAR_INPUT
    iTableId        : INT;
    fOriginalWeight : LREAL;
    fMasterOffset   : LREAL;
    fMasterSlope    : LREAL;
    fSlaveOffset    : LREAL;
    fSlaveSlope     : LREAL;
    fRangeLow       : LREAL;
    fRangeHigh      : LREAL;
    bExecute        : BOOL;
    tTimeout        : TIME;
END_VAR
VAR_OUTPUT
    bBusy : BOOL;
    bErr  : BOOL;
    iErrId : UDINT;
END_VAR

iTableID : Tabellen-ID unter der die Tabelle künftig angesprochen wird

fOriginalWeight : Originalgewicht der Tabelle
fMasterOffset : Master-Positionsoffset der Tabelle
fMasterSlope : Master-Skalierung der Tabelle
fSlaveOffset : Slave-Positionsoffset der Tabelle
fSlaveSlope : Slave-Skalierung der Tabelle
fRangeLow : untere Bereichsgrenze, in der die Tabelle gültig ist
fRangeHigh : obere Bereichsgrenze, in der die Tabelle gültig ist

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)


CamTableCoupleAxesMultiTables

(nur für Multitabellen)

CamTableCoupleAxesMultiTables koppelt eine Slave-Achse über mehrere existierende Tabellen an eine Master-Achse (Multi-Tabellenkopplung)

Interface

VAR_INPUT
    iSlaveId            : INT;
    iMasterId           : INT;
    iNrOfMultiTables    : INT;
    iNrOfProfileTables  : INT;
    iTableId1           : INT;
    iTableId2           : INT;
    iTableId3           : INT;
    iTableId4           : INT;
    iTableId5           : INT;
    iTableId6           : INT;
    iTableId7           : INT;
    iTableId8           : INT;
    bCoupleOn           : BOOL;
    bCoupleOff          : BOOL;
    tTimeout            : TIME;
END_VAR
VAR_OUTPUT
    bBusy               : BOOL;
    bErr                : BOOL;
    iErrId              : UDINT;
END_VAR

iSlaveId : Achs-ID der Slave-Achse die gekoppelt werden soll

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

iNrOfMultiTables : Gesamtanzahl der tatsächlich genutzten Tabellen (1 bis 8)

iNrOfProfileTables : Anzahl der Profiltabellen (1 bis iNrOfMultiTables). Übrige Tabellen sind zuschaltbare Korrekturtabellen.

iTableId1 : Tabellenindex der ersten Tabelle

iTableId2 : Tabellenindex der 2. Tabelle

iTableId3 : Tabellenindex der 3. Tabelle

iTableId4 : Tabellenindex der 4. Tabelle

iTableId5 : Tabellenindex der 5. Tabelle

iTableId6 : Tabellenindex der 6. Tabelle

iTableId7 : Tabellenindex der 7. Tabelle

iTableId8 : Tabellenindex der 8. Tabelle

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)


CamTableEnableCorrectionTable

(nur für Multitabellen)

CamTableEnableCorrectionTable aktiviert eine Korrekturtabelle bei Multi-Tabellen-Anwendungen.

Interface

VAR_INPUT
    iSlaveId    : INT;
    iTableId    : INT;
    bExecute    : BOOL;
    tTimeout    : TIME;
END_VAR
VAR_OUTPUT
    bBusy       : BOOL;
    bErr        : BOOL;
    iErrId      : UDINT;
END_VAR

iSlaveAxisId : Achs-Id der Slave-Achse. Der zugehörige Master ist durch die bestehende Achskopplung bekannt.

iTableID : Tabellen-ID der Tabelle aus der die Daten gelesen werden sollen

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)


CamTableDeactivateCyclicTable

(nur für Multitabellen)

CamTableDeactivateCyclicTable schaltet eine aktive zyklische Multi-Tabelle am Zyklusende ab.

Interface

VAR_INPUT
    iSlaveId    : INT;
    iTableId    : INT;
    bExecute    : BOOL;
    tTimeout    : TIME;
END_VAR
VAR_OUTPUT
    bBusy       : BOOL;
    bErr        : BOOL;
    iErrId      : UDINT;
END_VAR

iSlaveAxisId : Achs-Id der Slave-Achse. Der zugehörige Master ist durch die bestehende Achskopplung bekannt.

iTableID : Tabellen-ID der Tabelle aus der die Daten gelesen werden sollen

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_TcNcCamming_Version

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

Interface

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

bGet : Signal zum Ausführen des Kommandos