SPS- Bibliothek McpPLCopenP1"

TwinCAT CNC: Überblick

SPS- Bibliothek McpPLCopenP1

Diese Bibliothek enthält Funktionsbausteine, die als Standard-Bausteine in PLCopen Part 1 festgelegt sind.

Mehr:

button PLCopen-Achszustandsmodell

button Messen von Achspositionen

button Kurvenscheiben-Funktionalität


PLCopen-Achszustandsmodell

Ergänzend zum Achszustandsmodell von PLCopen gibt es einen weiteren Zustand für die Betriebsart Momentenregelung (TorqueControl). Der Zustand Disabled ist noch nicht vollständig implementiert. Die folgende Abbildung zeigt die möglichen Transitionen.

Bild 1-1: Erweitertes PLCopen-Achszustandsmodell


Messen von Achspositionen

Zur Realisierung einer genauen, von einem Messereignis abhängigen Positionierung ist die Erfassung von Positionen unabhängig vom Interpolations- bzw. Lageregeltakt erforderlich. Dies kann in einem Steuerungssystem nur durch eine zusätzliche Hardware zum Latchen der Positionen realisiert werden. Diese zusätzliche Hardware befindet sich im Allgemeinen in einem antriebsnahen System, wenn nicht direkt im Antrieb. Die Funktionsbausteine MC_TouchProbe und MC_AbortTrigger machen diese Funktionalität nutzbar.

Mehr:

button Datenstruktur TRIGGER_REF

button Verhalten von MC_TouchProbe und MC_AbortTrigger

button Parametrierung des Messvorgang in den achsspezifischen Maschinendaten


Datenstruktur TRIGGER_REF

Mit einer Strukturvariablen vom Typ TRIGGER_REF werden einer Instanz des FB MC_TouchProbe bzw. MC_AbortTrigger die Messparameter übergeben. Die Strukturvariable enthält die Messkanalnummer (Strukturelement tp_channel) und den Mode (Strukturelement tp_mode). Der Mode gibt an, ob der Messvorgang durch die steigende, oder die fallende Flanke des Triggersignals ausgelöst wird. Folgende Werte sind für den Mode zulässig:

Fallende Flanke des Triggersignals | 1
Steigende Flanke des Triggersignals | 2

Die Datenstruktur TRIGGER_REF ist in der ausgelieferten Bibliothek bereits deklariert.


Verhalten von MC_TouchProbe und MC_AbortTrigger

q Eine Retriggerung einer MC_TouchProbe- bzw. MC_AbortTrigger-Instanz führt, im Gegensatz zu den Motion-Aufträgen, nicht zum Überschreiben des bisherigen Auftrags, vielmehr wird der neue Auftrag durch die FB verworfen und kein neuer Auftrag abgesetzt. Die retriggerte FB-Instanz zeigt einen FB-spezifischen Fehler an und bleibt ACTIVE. An den FB-Ausgängen Error und ErrorID wird für einen SPS-Zyklus ein Signal ausgegeben, mit dem sich der Vorgang der Retriggerung detektieren lässt.. Hat sich zum Zeitpunkt der Retriggerung entweder die AXIS_REF oder die TRIGGER_REF geändert, wird dies als Fehler an den oben genannten FB-Ausgängen angezeigt und der Auftrag ebenfalls verworfen.

q Der Output CommandAborted kann nur gesetzt werden, wenn die Beauftragung von einem MC_AbortTrigger explizit abgebrochen wird. Dieser muss dazu in TRIGGER_REF die identische Messkanalnummer und Mode verwenden, weil ein Messauftrag ausschließlich anhand der Übereinstimmung aller Parameter der TRIGGER_REF identifiziert wird.

q Im Gegensatz zu den Motion-Beauftragungen führt eine Messbeauftragung nicht zu einer Änderung des Achszustandes. Da PLCopen keine Angaben macht in welchen Zuständen ein MC_TouchProbe zulässig ist, wird festgelegt, dass dieser in allen Zuständen außer ERROR_STOP und HOMING zulässig ist.

q Für einen Messkanal wird ein separater Zustandsgraph implementiert. Der aktuelle Zustand des Messkanals wird in tp_state in der AXIS_REF der Achse verwaltet, über die der Messauftrag abgesetzt wurde.

Bild 1-2: Zustandsgraph des Messkanals

q Somit sind maximal so viele Messaufträge gleichzeitig möglich wie es Achsen gibt.


Parametrierung des Messvorgang in den achsspezifischen Maschinendaten

Sollen Positionen einer Achse durch Messvorgänge erfasst werden, so ist diese Möglichkeit in den achsspezifischen Maschinendaten zu parametrieren.

Zum einen ist dann grundsätzlich die Möglichkeit der Erfassung von Messwerten für eine Achse frei zu schalten. Dies erfolgt über den Eintrag

kenngr.messachse 1

Zum anderen ist zu parametrieren wo die Quelle für das Triggersignal ist, die den Messvorgang auslöst. Derzeit werden 4 unterschiedliche Signalquellen unterschieden. In diesem Zusammenhang muss darauf hingewiesen werden, dass jeweils immer nur eine der Signalquellen als aktiv parametriert werden kann und mit einer 1 zu belegen ist. Alle anderen Alternativen sind mit 0 zu belegen.

Das nachfolgende Beispiel zeigt eine Parametrisierung wie sie bei der Verwendung von KUKA DSE-Antrieben verwendet werden muss. Bei DSE-Antrieben wird das Triggersignal von den Antrieben geliefert, weshalb diese Signalquelle als aktiv und die anderen als inaktiv parametriert werden müssen.

kenngr.mess_signal_achs_steuer 0

kenngr.mess_signal_taster 0

kenngr.mess_signal_sercos 0

kenngr.meas_signal_drive 1


Kurvenscheiben-Funktionalität

Begriffsdefinition:

Eine Kurve ist eine Beschreibung eines Bewegungsprofils die für einen bestimmten Master-Positionsbereich jeder Masterposition eindeutig eine Slaveposition zuordnet.

Der englische Begriff Cam wird im laufenden Text gleichbedeutend ebenfalls verwendet.

Mehr:

button Definitionsbereich von Kurven und deren Abarbeitung

button Kurvenabarbeitung mit geschlossener Abtastung

button Kurvenbeschreibung durch Stützpunkttabellen

button Verarbeitung der Stützpunkttabellen

button Verarbeitung der Tabellen mit Bewegungsabschnitten LINE/POLY5

button Zugriff auf Cam-Tabellen

button Dateiformat der Kurventabellen (ASCII Interpreter)


Definitionsbereich von Kurven und deren Abarbeitung

Die Kurvenscheibenfunktionalität in der ISG-MCE wird als mechanisches Analogon zu einer Kurvenscheibe auf einer Königswelle gesehen. Kurven können dabei nur als absolute Koppelvorschrift zwischen zwei endlosdrehenden Achsen verwendet werden. Dem entsprechend erstreckt sich der Definitionsbereich jeder Kurve definitionsgemäß über den gesamten Modulobereich der Masterachse. Damit gibt es zu jeder absoluten Masterposition immer genau eine zugehörige Slaveposition sprich: der Definitionsbereich ist in sich geschlossen.

Man spricht in diesem Zusammenhang auch von Kurvenabarbeitung mit geschlossener Abtastung des Kurvenprofils mit der Masterposition.


Kurvenabarbeitung mit geschlossener Abtastung

Bei Kurvenabarbeitung mit geschlossener Abtastung wird das Kurvenprofil ausschließlich innerhalb des geschlossenen Wertebereichs (= Modulobereich oder Periode) der Masterachse abgearbeitet.

Dabei wird davon ausgegangen, dass dieser Modulobereich der Masterachse eine Eigenschaft der Achse ist, sprich: die Achse hält ihre Position selbsttätig innerhalb des Modulobereichs.

Damit gibt es zu jeder Master- bzw. Leitposition immer genau eine zugehörige Slaveposition. Die Kurve kann also niemals an einer ungültigen Stelle abgetastet werden.

Für die Kurvenabarbeitung mit geschlossener Abtastung eignen sich ausschließlich folgende Kurventypen:

q Kurven (a) deren Geschwindigkeitsintegral im Definitionsintervall genau gleich Null ist. Z.B. für begrenzte, oszillierende Bewegung.

q Kurven (b) deren Geschwindigkeitsintegral im Definitionsintervall dem Modulobereich der Slaveachse entspricht. Z.B. für endlos drehende Kurbel.

Die Abarbeitung einer beliebigen Kurve mittels geschlossener Abtastung, die nicht einer der obigen Definitionen entspricht, führt zu Positionssprüngen der Slaveachse immer dann, wenn die Masterposition eine Modulogrenze überschreitet.

Bild 1-3: Quasi mechanische Kopplung zwischen Master- und Slaveposition mit Kurventypen a und b.

Bei der Abtastung des Kurventyps a) muss beim Durchgang des Masters durch die Modulogrenze nichts beachtet werden.

Bei der Abtastung des Kurventyps b) muss beim Durchgang des Masters durch die Modulogrenze beachtet werden, dass die Slaveposition um einen Modulobereich korrigiert wird. (Näheres dazu vlg. Kap. 1.3.4.2 weiter unten.)


Kurvenbeschreibung durch Stützpunkttabellen

Als Kurven werden in der ISG-MCE zum einen Stützpunkttabellen und zum anderen Tabellen mit abwechselnden LINE/POLY5-Bewegungsabschnitten unterstützt.

Bei den Stützpunkttabellen werden die Einträge (=Zeilen in der Kurventabelle) als äquidistante Stützpunkte der Slaveachse über dem Modulobereich der Masterachse verstanden. Deshalb werden bei diesem Tabellentyp keine Masterpositionen in der Tabelle gehalten. Bei der Abarbeitung der Kurve wird der Modulobereich der Masterachse in Anzahl Stützpunkte gleichgroße Abschnitte eingeteilt. Die Stützpunkteinträge für die Slaveachse werden als metrische Positionen der Slaveachse innerhalb des zugehörigen Positionsintervalls der Masterachse verstanden.

Bild 1-4: Stützpunkteinträge und zugehörige Master-Positionsintervalle

Diese Form der Kurvenbeschreibung ist ausschließlich für die Verwendung mit geschlossener Abtastung geeignet, da per Definition die Slaveposition am Ende der Kurve gleich der Slaveposition am Beginn der Kurve implizit vorausgesetzt wird.

Die erste oben abgebildete Tabelle mit genau einem Slavepositionseintrag ist somit die einfachste denkbare Kurvenbeschreibung in Tabellenform. Bei deren Abarbeitung würde der Slave in der Synchronisierungsphase (Ramp-In) die eingetragene Slaveposition anfahren und dort verbleiben. In Kap. 1.4.7.4 und 1.4.7.5 wird die Interpolation von äquidistanten Stützpunkttabellen beschrieben.

Bei den Tabellen mit LINE/POLY5-Bewegungsabschnitten müssen die Tabelleneinträge nicht äquidistant sein. Deshalb ist in der ersten Spalte immer die Masterposition und in der zweiten Spalte immer die Slaveposition, die das Ende des Bewegungsabschnitts definiert, anzugeben. Master- und Slavepositionen sind metrisch in der Einheit 1E-4° oder 1E-4 mm anzugeben. Kap. 1.4.7.6 beschreibt die Interpolation von Tabellen mit LINE/POLY5-Bewegungsabschnitten.


Verarbeitung der Stützpunkttabellen

Mehr:

button Online - Interpolation der Stützpunkttabellen

button Geschlossene Abarbeitung für eine endlos drehende Slaveachse


Online - Interpolation der Stützpunkttabellen

TwinCAT CNC: Überblick

Online  Interpolation der Stützpunkttabellen

Die aktuelle Tabellenbeschreibung definiert, wie oben aufgezeigt, die Slaveposition am Ende der Kurve gleich der Slaveposition am Beginn der Kurve und ist somit nur für die Verwendung mit geschlossener Abtastung geeignet.

Geht man einen Schritt weiter, und will zwischen den Stützpunkten interpolieren, so werden an den Modulogrenzen zusätzlich die Slavepositionen aus den benachbarten Modulobereichen herangezogen um Informationen wie z.B. die Steigung der interpolierten Kurve in einem bestimmten Punkt zu berechnen.

Eine solche Interpolation verwendet also Informationen, die nicht in der Tabelle als solcher enthalten sind, sondern in der Festlegung der geschlossenen Abtastung.

Unter den soeben aufgezeigten Randbedingungen kann zwischen den äquidistanten Slave-Stützpunkten linear, kubisch oder (nur bei sehr feinen Tabellen sinnvoll) überhaupt nicht interpoliert werden.

Der herstellerspezifische Input MC_CamIn.TableFctType am PLCopen FB gibt dabei an, wie zwischen zwei Tabellenstützpunkten interpoliert wird:

HLI_STEP_DIRECT : UDINT := 0;

Innerhalb des Master-Positionsintervalls smi, smi+1 wird der Slave-Positionseintrag ssi ausgegeben.

HLI_LINEAR : UDINT := 1;

Innerhalb des Master-Positionsintervalls smi, smi+1 wird zwischen den Slave-Positionseinträgen ssi, ssi+1 linear interpoliert.

HLI_POLYNOM_3 : UDINT := 2;

Innerhalb des Master-Positionsintervalls smi, smi+1 wird zwischen aus den vier benachbarten Slave-Positionseinträgen ssi-1, ssi, ssi+1, ssi+2 ein tangentenstetiger, kubischer Bezier-Spline interpoliert. Die Polynomkoeffizientenberechnung findet online statt.

Diese Interpolationsarten sind im folgenden Bild dargestellt. Im unteren Bild ist zusätzlich die Gewinnung von Tangenteninformationen in jedem Stützpunkt und auch an den Modulogrenzen angedeutet: Die Tangente ist in jedem Stützpunkt eine Parallele zu der Geraden, die durch die beiden benachbarten Stützpunkte geht.

Bild 1-5: Interpolationsarten: StepDirect, Linear und Polynom_3


Geschlossene Abarbeitung für eine endlos drehende Slaveachse

Bei der Interpolation zwischen den Stützpunkten ergibt sich die Notwendigkeit zu unterscheiden, ob der Slave die Kurve endlos drehend oder endlich drehend abarbeiten soll. Diese Information ist bei der aktuellen Kurvenbeschreibung ebenfalls nicht enthalten. Da ein und dieselbe Kurvenbeschreibung für beide Arten verwendet werden kann, ist diese Unterscheidung nicht eine Eigenschaft der Kurve sondern vielmehr Bestandteil des (CamIn )Auftrags.

Bild 1-6: Endlos drehende vs. endlich drehende Kurvenabarbeitung

Bei endlos drehender Abarbeitung müssen an den Definitionsgrenzen der Kurve die Tabellenstützpunkte, die zur Berechnung der Interpolation herangezogen werden, um einen Modulobereich korrigiert werden. Die Korrekturrichtung ist dabei davon abhängig, ob die Kurve für einen vorwärts oder rückwärts drehenden Slave modelliert wurde.

Der ISG Slopekernel für die Kurvenabarbeitung (sl_cam_kernel) kann dies jedoch nur dann automatisch richtig machen, falls zwischen den Tabellenstützpunkten keine Zwischeninterpolation verwendet wird. (MC_CamIn.TableFctType = HLI_STEP_DIRECT), indem er sicherstellt, dass für zwei aufeinanderfolgende, abgetastete Slavepositionen immer die kürzeste Modulodistanz als relativer Weg pro Echtzeitzyklus ausgegeben wird. Für diese Berechnung wird der Modulobereich der Slaveachse herangezogen, weshalb die Kurvenabarbeitung auch ausschließlich mit modulo drehenden Slaveachsen möglich ist.

Falls die Kurve für eine endlos drehende Slaveachse modelliert wurde, muss im Zusammenhang mit der Verwendung einer Stützpunktinterpolation (MC_CamIn.TableFctType = HLI_LINEAR oder HLI_POLYNOM_3), angegeben werden, in welche Richtung die Modulokorrektur durchzuführen ist .

Falls die Kurve so modelliert wurde, dass sie den Modulobereich des Slaves in positive Richtung durchläuft, so muss im MC_CamIn.StartMode das Bit:

HLI_CI_ENDLESS_POSITIVE : DWORD := 16#0x00000020;

verodert werden.

Durchläuft die Kurve den Modulobereich des Slaves in negativer Richtung, so muss im MC_CamIn.StartMode das Bit:

HLI_CI_ENDLESS_NEGATIVE : DWORD := 16#0x00000040;

verodert werden.

Nichtsdestotrotz muss der Kurvenverlauf immer zu der gewählten Abarbeitungsart passen, da sich ansonsten Sprünge in der Slaveposition ergeben.

Bild 1-7: Verwendung der MC_CamIn.StartMode-Flags für endlos drehende Slaveachse.

Mehr:

button Beispiel: Einfachst mögliche lineare Kurve für endlos drehende Abarbeitung


Beispiel: Einfachst mögliche lineare Kurve für endlos drehende Abarbeitung

Bild 1-8: Einfachst mögliche lineare Kurve für endlos drehende Abarbeitung

Die oben abgebildete Tabelle mit zwei Slave-Positionseinträgen ist die einfachste denkbare Kurvenbeschreibung einer Geraden in Tabellenform.

Besonderheiten:

Die Kurve muss endlos in positiver Richtung verwendet werden. Ansonsten wird die gestrichelt dargestellte Kurve gefahren.

Bei geschlossener Abtastung muss die sich ergebende Gerade genau den Modulobereich des Slaves durchlaufen, sprich sie muss die Steigung 1 haben, ansonsten ergibt sich an der Modulogrenze ein Positionssprung. D.h. mit einer Geraden der Steigung 1 als Kurve lässt sich ein GearIn mit dem Verhältnis 1:1 nachbauen:

Will man mit einer Geraden mit einer Steigung ungleich 1 ein GearIn nachbauen, so ist dies mit geschlossener Abtastung nicht möglich!


Verarbeitung der Tabellen mit Bewegungsabschnitten LINE/POLY5

Mehr:

button Definition des Bewegungsmusters

button Berechnung der Polynomkoeffizienten und Interpolation

button Tabellenformat

button Eigenschaften der Tabellen

button Verhalten der Slaveachse an der Modulogrenze

button Slavepositionen außerhalb des Modulobereichs

button Änderung von Tabellen mit Bewegungsabschnitten


Definition des Bewegungsmusters

Analog zur Programmierung einer Bahnbewegung über DIN 66025 wird mit dem Interpolationstyp festgelegt, auf welcher Trajektorie die vorgegebene Slaveposition in Richtung aufsteigender Masterpositionen angefahren wird. Der Interpolationstyp POLY5-LINE definiert dem zu Folge, dass der erste Tabellenpunkt über ein Polynom angefahren wird und somit das erste Intervall in der Tabelle mit konstanter Geschwindigkeit zurückgelegt wird. Beim Typ LINE-POLY5 wird dann entsprechend die erste Slaveposition mit konstanter Geschwindigkeit angefahren und im ersten Intervall liegt ein Polynom. In Bild 1-19 ist dargestellt, welche Muster sich bei LINE-POLY5 und POLY5-LINE Abfolgen aufgrund der Lage des ersten Tabellenstützpunktes ergeben können.

Bild 1- 9 : LINE-POLY5 und POLY5-LINE Abfolgen.


Berechnung der Polynomkoeffizienten und Interpolation

Die Polynome 5. Grades zur Bestimmung der Slaveposition s in Abhängigkeit der Masterposition t in den Bereichen nicht konstanter Geschwindigkeit sind von der Form

Sie sind bestimmt durch 6 Randbedingungen. In Start- und Endpunkt müssen die Lage s sowie die erste (Geschwindigkeit v) und die zweite Ableitung (Beschleunigung a) mit den benachbarten Intervallen übereinstimmen. Die zweite Ableitung, also die Beschleunigung, soll links und rechts gleich 0 sein. Bild 1-20 zeigt 3 aufeinander folgende Intervalle, mit Hilfe derer die Berechnung der Polynomkoeffizienten erfolgt.

Bild 1- 10 : Master-Slave-Intervalle einer Cam-Tabelle

Als Beispiel wird nachfolgend eine Cam-Tabelle vom Typ POLY5-LINE berechnet und mit Lage, Geschwindigkeit und Beschleunigung in den einzelnen Intervallen dargestellt.

Tablename = poly5line_2 # Tabellen-Name

Table-ID = 402 # Tabellen-ID

Tabletype = 7 # Tabellentyp

Functiontype = 5 # Interpolationstyp, 5 = POLY5-LINE

Lines = 10 # Anzahl der Zeilen

Begintable # Beginn Tabelle

100000 0

200000 400000

400000 1600000

670000 1800000

900000 300000

980000 1700000

1500000 3400000

1800000 2700000

2700000 1700000

3000000 2600000

EndTable

Im ersten Diagramm sind die Intervalle mit Polynomen in rot und die Intervalle mit konstanter Geschwindigkeit in blau dargestellt.

Bild 1- 11 : Beispiel für Cam mit POLY5-LINE


Tabellenformat

Als Tabellenformat wird das sog. Zebraformat verwendet, bei dem sich, wie im vorigen Kapitel dargestellt, Abschnitte, die über Geraden (entspricht konstanter Geschwindigkeit) verbunden sind und Abschnitte die mit Polynomen 5. Grades (Poly5-Abschnitt) verbunden sind, abwechseln. Die Anzahl der Abschnitte muss immer geradzahlig sein. Zusätzlich muss definiert werden, ob der erste Abschnitt mit einer Geraden oder einem Polynom beginnt. Als erster Abschnitt wird der Bereich zwischen dem letzten Punkt der Tabelle und dem ersten Punkt der Tabelle bezeichnet.

Die Gestalt der Kurve im ersten Abschnitt wird durch den Interpolationstyp festgelegt. Der Interpolationstyp LINE-POLY5 legt fest, dass der erste Abschnitt mit einer Geraden durchfahren wird, beim Typ POLY5-LINE enthält dieser Abschnitt einen Polynom. Im Gegensatz zu den Stützpunkttabellen kann bei diesen Tabellen der Interpolationstyp LINE-POLY5 oder POLY5-LINE im Tabellenkopf im Token Functiontype angegeben werden. Wenn dieser Eintrag wirken soll, muss die SPS im Parameter FunctionType des PLCopen-Bausteins MC_CamIn den Werte "TableDefined" übergeben. Ansonsten wirkt der bei der Beauftragung im MC_CamIn eingetragenen Interpolationstyp. Inkonsistenzen zwischen Tabelleneintrag und SPS-Beauftragung werden somit vermieden.

Für den InterpolationstypLINE/POLY5 muss in der Tabelle oder im MC_CamIn der Wert 4 angegeben werden, der Typ POLY5/LINE erfordert den Wert 5.

Die Nutzdaten der Tabelle enthalten, wie bereits erwähnt, pro Zeile Master-Slave-Wertepaare, wobei die Masterposition in Spalte 0 und die Slaveposition in Spalte 1 jeweils in der Einheit 1E-4° bzw. 1E-4 mm angegeben wird.

Im Tabellenkopf muss der Tabellentyp im Token Tabletype auf das 2-spaltige Integerformat durch Eintrag des Werts 7 eingestellt werden.


Eigenschaften der Tabellen

Die Tabellen(einträge) müssen folgende Eigenschaften besitzen:

q die Masterpositionen sind sequentiell aufsteigend,

q die Masterpositionen besitzen einen Mindestabstand von 0.1° zueinander,

q die Master-Slave-Wertepaare müssen nicht bei der Masterposition 0 beginnen,

q die kleinste Tabelle besteht aus 2 Master-Slave-Wertepaaren und somit aus nur 2 Intervallen

q die maximale Tabellengröße ist auf 360 Master-Slave-Wertepaare beschränkt,

q Master- und Slaveachse müssen eine Modulachse sein.

Nachfolgend ist ein Beispiel für eine typische Cam-Tabelle dargestellt

Tablename = EndlessNegative # Tabellen-Name

Table-ID = 422 # Tabellen-ID

Tabletype = 7 # Tabellentyp

Functiontype = 5 # Interpolationstyp

Lines = 6 # Anzahl der Zeilen

Begintable # Beginn Tabelle

15000 0 # MasterPos[0] SlavePos[0]

450000 3400000 # MasterPos[1] SlavePos[1]

900000 2400000 # MasterPos[2] SlavePos[2]

1350000 2000000 # MasterPos[3] SlavePos[3]

2700000 1300000 # MasterPos[4] SlavePos[4]

3400000 300000 # MasterPos[5] SlavePos[5]

EndTable # Ende Tabelle


Verhalten der Slaveachse an der Modulogrenze

Speziell definiert werden muss das Verhalten des Slaves an der Modulogrenze. Per Default wird sich der Slave immer innerhalb seiner Modulogrenzen bewegen, d.h. er macht maximal eine Umdrehung in die selbe Richtung. Wird ein endlos drehender Slave gewünscht, so muß im StartMode des FB MC_CamIn entweder EndlessPositive oder EndlessNegative vorgegeben werden. Der Slave wird sich dann entweder in positiver oder negativer Drehrichtung endlos über die Modulogrenze hinweg drehen. In den Abbildungen 2, 3 und 4 sind Fälle für alle drei Varianten bezüglich dem Verhalten an der Modulogrenze der Slaveachse dargestellt. In allen 3 Beispielen wurde folgende Cam-Tabelle verwendet:

Tablename = Smallest_Table # Tabellen-Name

Table-ID = 404 # Tabellen-ID

Tabletype = 7 # Tabellentyp, 7 = 2-spaltige Tabelle, SGN32-Format

Functiontype = 4 # Interpolationstyp, 4 = LINE-POLY5, 5 = POLY5-LINE

Lines = 2 # Anzahl der Zeilen

Begintable # Beginn Tabelle

100000 0

1500000 3400000

EndTable

Bild 1- 12 : Master-Slave-Kopplung ohne Endlos-Übergang an der Modulogrenze.

Bild 1- 13 : Master-Slave-Kopplung mit Endlos-Übergang positiv an der Modulogrenze.

Bild 1- 14 : Master-Slave-Kopplung mit Endlos-Übergang negativ an der Modulogrenze.


Slavepositionen außerhalb des Modulobereichs

Wenn das Übersetzungsverhältnis zwischen Master und Slave sehr groß sein soll, kann es notwendig werden, Slavepositionen zu definieren, die außerhalb des Modulobereichs liegen. Deshalb werden Slavepositionen außerhalb des Modulobereichs nicht in den Modulobereich transformiert, sondern unverändert als Stützpunkt verwendet. Die nachfolgende Abbildung zeigt eine solche Tabelle und das damit gefahrene Profil.

Tablename = extremetable4 # Tabellen-Name

Table-ID = 414 # Tabellen-ID

Tabletype = 7 # Tabellentyp

Functiontype = 5 # Interpolationstyp

Lines = 8 # Anzahl der Zeilen

Begintable # Beginn Tabelle

0 0

200000 0

900000 -500000

1800000 -10000000

2100000 -16000000

2700000 -12000000

3200000 -19000000

3400000 -20000000

EndTable

Bild 1- 15 : Tabelle mit großer Übersetzung, endlos negativ.


Änderung von Tabellen mit Bewegungsabschnitten

Die Online-Änderung von Tabellen mit Bewegungsabschnitten (Zebra-Tabellen) erfolgt direkt auf dem Tabellenspeicher (Shared Memory), da der Kernel nur mit einer Kopie der aktiven Cam-Tabelle arbeitet. Da maximal 360 Master-Slave-Wertepaare im SGN32-Format pro Tabelle definiert werden können, beläuft sich der interne Speicherbedarf der Nutzdaten auf lediglich 2880 Byte.

Durch eine erneute Beauftragung des MC_CamIn wird die geänderte Tabelle aktiviert. Das Umschalten der Tabelle sollte möglichst in einem sicheren Bereich stattfinden, in dem sich der Slave nicht bewegt (LINE mit Geschwindigkeit 0). Die Synchronisierung auf eine neue Tabelle erfordert trotz Stillstand des Slaves eine Phase der Synchronisierung auf Geschwindigkeit (gleich 0) und einen Ausgleich der Phasenlage. Dieser Vorgang kann abhängig von der Einstellung im Achs-MDS einige Takte dauern. Unter der Voraussetzung, dass der Slave sich nicht bewegt und keinen Phasenausgleich durchführen muss (Eigenschaft des sicheren Bereichs), wird die Synchronisierung auf die Cam-Tabelle in der im Achs-MDS eingestellten Zeit für das Verweilen innerhalb des Geschwindigkeitsfensters (für gewöhnlich ca. 20 bis 30 ms) abgeschlossen sein. Wenn der Slave im Stillstand synchronisiert wird und die Verweilzeit innerhalb des Geschwindigkeitsfensters bereits abgelaufen ist, könnte hier noch eine Optimierung stattfinden, so dass der gesamte Vorgang in wenigen Takten abgeschlossen ist.

Der Bereich, in dem der Slave neu synchronisiert wird, sollte vom Typ LINE sein, da nur dann gewährleistet ist, dass die Geschwindigkeit über das gesamte Intervall konstant gleich 0 ist. Im Falle eines Polynoms wird sich i.a. eine Bewegung des Slaves ergeben.


Zugriff auf Cam-Tabellen

PLCopen erfordert die Bereitstellung einer Struktur namens MC_CAM_REF, die als Inputparameter an den PLCopen-FB MC_CamTableSelect übergeben werden muss. Der PLCopen-FB MC_CamTableSelect liefert bei erfolgreichem Aufruf eine - ebenfalls in PLCopen definierte - sogenannte MC_CAM_ID.

Sowohl MC_CAM_REF, als auch MC_CAM_ID sind per PLCopen-Definition herstellerspezifisch. Beide Datentypen enthalten die Identifikationsnummer der Cam-Tabelle. Bei der Datenstruktur MC_CAM_REF ist zusätzlich der Name der Datei enthalten, in der die Cam-Tabelle angelegt ist.

Es gibt FBs zur Änderung von Tabellen. Die geänderten Tabellen können jedoch nicht gespeichert werden.

Während des Hochlaufs wird die Datei tab_ldr.lis interpretiert. Diese enthält die Dateinamen der zu ladenden CAM-Tabellen. Sämtliche (*.tab) Tabellenfiles, die sich ebenfalls im Listen-Verzeichnis der ISG-MCE befinden müssen, werden interpretiert und in den Tabellenspeicher geladen.

Das nachfolgende Bild verdeutlicht dies.

Bild 1-16: Integration der Datenhaltung für Cam-Tabellen in das Gesamtsystem.


Dateiformat der Kurventabellen (ASCII Interpreter)

Die Kurventabellen werden im ASCII-Format abgelegt. Es ist eine Datei pro Kurventabelle erforderlich. Die Zeilen der Kurventabelle stellen die Stützpunkte der Slaveachse über dem Modulobereich der Masterachse dar, der von 0° - 360° reicht.

Der ASCII-Interpreter ist so realisiert, dass er intern in zwei Interpretationsmodi arbeitet.

1.) Interpretation des Tabellenkopfes

2.) Interpretation der Tabellendaten

Mehr:

button Der Tabellenkopf

button Die Tabellendaten

button Tabellentypen

button Funktionstypen

button Tokens und Separatorzeichen

button Kommentare

button Beispiel für ein korrektes Dateiformat


Der Tabellenkopf

Der Tabellenkopf muss die folgenden Schlüsselwörter enthalten, damit die Tabelle korrekt interpretiert werden kann

Tablename = Sinus_360°

Tabletype = 3 # 3 = TABLE_ONE_COLUMN_REAL64

Table-ID = 402 # Tabellen-ID

Functiontype = 5 # Interpolationstyp, 5 = POLY5-LINE

Lines = 36

Tabelle 1- 1 : Beispiel für einen Tabellenkopf

q Tabellenname (Tablename):
Ein beliebiger Name ohne Leerzeichen.

q Tabellentyp (Tabletype):
Der Tabellentyp, der verwendet werden soll. Die Angabe erfolgt über den Index, s. Tabelle in 1.3.7.3 Tabellentypen.

q Table-ID:
ID der Cam-Tabelle.

q Funktionstyp (Functiontype):
Funktionstyp, s. 1.3.7.4 Funktionstypen.

q Anzahl Zeilen (Lines):
Anzahl der Zeilen, in denen die Tabellenwerte eingetragen sind.


Die Tabellendaten

Das Auffinden des Schlüsselwortes Begintable schaltet den Interpreter in die Interpretationsart TSF (= Tabulator Separated Format). D.h. nach dem Schlüsselwort
Begintable erwartet der Interpreter Zahlenkolonnen, die dem Tabellentyp entsprechen.

Begintable

625133,4396

1231272,516

1800000

2314035,395

2757759,995

3117691,454

3382893,435

3545307,911

3600000

....

-2757759,995

-2314035,395

-1800000

-1231272,516

-625133,4396

-8,82107E-10

EndTable

Tabelle 1- 2 : Beispiel für Tabellendaten


Tabellentypen

Die folgende Tabelle zeigt die verschiedenen zu Verfügung stehenden Tabellentypen. Der Tabellentyp TABLE_MOTION_PATTERNS wird dabei nur intern für den automatischen Test verwendet.

Index | Tabellentyp | Anzahl Spalten | Daten-Format
1 | TABLE_ONE_COLUMN_SGN16 | 1 | Signed 16
2 | TABLE_ONE_COLUMN_SGN32 | 1 | Signed 32
3 | TABLE_ONE_COLUMN_REAL64 | 1 | Real 64
4 | TABLE_4_COLUMNS_SGN32 | 4 | Signed 32
5 | TABLE_4_COLUMN_REAL64 | 4 | Real 64
6 | TABLE_MOTION_PATTERNS | - | -
7 | TABLE_TWO_COLUMNS_SGN32 | 2 | Signed 32

Tabelle 1- 3 : Die Tabellentypen


Funktionstypen

Funktionstypen für die Cam-Tabellen:

Index | Funktionstyp | Beschreibung
0 | STEP_DIRECT | Konstante Positionen werden aus der Cam-Tabelle gelesen.
1 | LINEAR | Die Slave-Position zwischen zwei Tabelleneinträgen wird linear interpoliert.
2 | POLYNOM_3 | Im Moment nicht implementiert
3 | POLYNOM_3_KOEFF | Vorausberechnete Polynom-Koeffizienten
4 | LINE_POLY5 | Linear  Poly5
5 | POLY5_LINE | Poly5  Linear
6 | TABLE_DEFINED | Funktionstyp ist in der Cam-Tabelle definiert

Tabelle 1- 4 : Die Funktionstypen


Tokens und Separatorzeichen

Der Interpreter trennt den ASCII-Dateiinhalt zeilenweise in Tokens, die durch Separator- (deutsch: Trenn-) Zeichen getrennt sind. Innerhalb der Tabellendaten sind folgende Separatorzeichen zulässig:

q Leerzeichen

q Tabulator

Innerhalb des Tabellenkopfes wird zusätzlich das

q Gleichheitszeichen

als Separatorzeichen unterstützt.


Kommentare

Als Kommentare können die Zeichen # (Doppelkreuz) und ; (Semikolon) als erstes Zeichen in einer Zeile verwendet werden. Stehen die Kommentarzeichen nicht als erstes Zeichen in der Zeile, so wird die Zeile ganz normal interpretiert, was zu einer Fehlermeldung führt. Der Interpreter kennt die Anzahl der zu entnehmenden Tokens pro Zeile und entnimmt nur genau so viele. D.h. alles, was durch ein Separatorzeichen (Leerzeichen oder Tabulator) getrennt hinter dem letzten Token einer Zeile steht, wird vom Interpreter nicht berücksichtigt.

Tablename = CAM-Profile-0815 gültiger kommentar

Tabletype = 5 # 5 = TABLE_4_COLUMN_REAL64

Table-ID = 123 # Tabellen-ID

Lines = 36

#Begintable !!! mit '#' Auskommentiert !!!

0,174532925 0,173648178 0,984807753 2,342020143 gültiger kommentar

Tabelle 1-5: Beispiele für syntaktisch korrekte Kommentare


Beispiel für ein korrektes Dateiformat

Tablename = CAM-Profile-0815

Tabletype = 5 # 5 = TABLE_4_COLUMN_REAL64

Table-ID = 123 # Tabellen-ID

Lines = 36

Begintable

0,174532925 0,173648178 0,984807753 2,342020143

0,34906585 0,342020143 0,939692621 2,64278761

0,523598776 0,5 0,866025404 2,866025404

0,698131701 0,64278761 0,766044443 2,984807753

0,872664626 0,766044443 0,64278761 2,984807753

1,047197551 0,866025404 0,5 2,866025404

1,221730476 0,939692621 0,342020143 2,64278761

1,396263402 0,984807753 0,173648178 2,342020143

1,570796327 1 6,12574E-17 2

1,745329252 0,984807753 -0,173648178 1,657979857

1,919862177 0,939692621 -0,342020143 1,35721239

2,094395102 0,866025404 -0,5 1,133974596

2,268928028 0,766044443 -0,64278761 1,015192247

2,443460953 0,64278761 -0,766044443 1,015192247

2,617993878 0,5 -0,866025404 1,133974596

2,792526803 0,342020143 -0,939692621 1,35721239

2,967059728 0,173648178 -0,984807753 1,657979857

3,141592654 1,22515E-16 -1 2

3,316125579 -0,173648178 -0,984807753 2,342020143

3,490658504 -0,342020143 -0,939692621 2,64278761

3,665191429 -0,5 -0,866025404 2,866025404

3,839724354 -0,64278761 -0,766044443 2,984807753

4,01425728 -0,766044443 -0,64278761 2,984807753

4,188790205 -0,866025404 -0,5 2,866025404

4,36332313 -0,939692621 -0,342020143 2,64278761

4,537856055 -0,984807753 -0,173648178 2,342020143

4,71238898 -1 -1,83772E-16 2

4,886921906 -0,984807753 0,173648178 1,657979857

5,061454831 -0,939692621 0,342020143 1,35721239

5,235987756 -0,866025404 0,5 1,133974596

5,410520681 -0,766044443 0,64278761 1,015192247

5,585053606 -0,64278761 0,766044443 1,015192247

5,759586532 -0,5 0,866025404 1,133974596

5,934119457 -0,342020143 0,939692621 1,35721239

6,108652382 -0,173648178 0,984807753 1,657979857

6,283185307 -2,4503E-16 1 2

Tabelle 1-6: Beispiel für eine korrekte Tabelle


Übersicht der PLCopen FBs

Die folgende Tabelle gibt eine Übersicht über die Verfügbarkeit der PLCopen FBs in den von ISG unterstützten SPS- bzw. Antriebssystemen.

Funktionsbaustein | SPS-Systeme
 | KW | 3S | TwinCat
MC_Power | SIMU DSE SERCOS | SIMU - SERCOS | SIMU
MC_ReadAxisInfo | SIMU DSE SERCOS | SIMU - SERCOS | SIMU
MC_ReadMotionState | SIMU DSE SERCOS | SIMU - SERCOS | SIMU
MC_ReadStatus | SIMU DSE SERCOS | SIMU - SERCOS | SIMU
MC_ReadAxisError | SIMU DSE SERCOS | SIMU - SERCOS | SIMU
MC_ReadActualPosition | SIMU DSE SERCOS | SIMU - SERCOS | SIMU
MC_Reset | SIMU DSE SERCOS | SIMU - SERCOS | SIMU
MC_Home | SIMU DSE SERCOS | SIMU - SERCOS | SIMU
MC_MoveAbsolute | SIMU DSE SERCOS | SIMU - SERCOS | SIMU
MC_MoveAdditive | SIMU DSE SERCOS | SIMU - SERCOS | SIMU
MC_MoveRelative | SIMU DSE SERCOS | SIMU - SERCOS | SIMU
MC_MoveSuperImposed | SIMU DSE SERCOS | SIMU - SERCOS | SIMU
MC_MoveVelocity | SIMU DSE SERCOS | SIMU - SERCOS | SIMU
MC_Stop | SIMU DSE SERCOS | SIMU - SERCOS | SIMU
MC_AbortTrigger | - DSE SERCOS | - - SERCOS | -
MC_TouchProbe | - DSE SERCOS | - - SERCOS | -
MC_CamIn | SIMU DSE SERCOS | SIMU - SERCOS | -
MC_CamOut | SIMU DSE SERCOS | SIMU - SERCOS | -
MC_CamTableSelect | SIMU DSE SERCOS | SIMU - SERCOS | SIMU
MC_GearIn | SIMU DSE SERCOS | SIMU - SERCOS | SIMU
MC_GearOut | SIMU DSE SERCOS | SIMU - SERCOS | SIMU
MC_Phasing | SIMU DSE SERCOS | SIMU - SERCOS | SIMU
MC_ReadParameter | SIMU DSE SERCOS | SIMU 1) - SERCOS 1) | -
MC_WriteParameter | SIMU DSE SERCOS | SIMU 1) - SERCOS 1) | -
MC_SetPosition | SIMU DSE SERCOS | SIMU - SERCOS | SIMU
MC_SetOverride | SIMU DSE SERCOS | SIMU - SERCOS | SIMU
MC_Halt | SIMU DSE SERCOS | SIMU - SERCOS | SIMU

1) Verfügbarkeit ist abhängig von der eingesetzten MCE.

Mehr:

button MC_Power

button MC_ReadAxisInfo

button MC_ReadMotionState

button MC_ReadStatus

button MC_ReadAxisError

button MC_ReadActualPosition

button MC_Reset

button MC_Home

button MC_MoveAbsolute

button MC_MoveAdditive

button MC_MoveRelative

button MC_MoveSuperImposed

button MC_MoveVelocity

button MC_Stop

button MC_AbortTrigger

button MC_TouchProbe

button MC_CamIn

button MC_CamOut

button MC_CamTableSelect

button MC_GearIn

button MC_GearOut

button MC_Phasing

button MC_ReadParameter

button MC_WriteParameter

button MC_SetPosition

button MC_SetOverride

button MC_Halt


MC_Power

Der FB MC_Power schaltet die Leistung des Antriebs der durch AXIS_REF definierten Achse ein oder aus. Er ist der Gruppe der administrativen FB zugeordnet.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Enable | BOOL | Muss den Wert TRUE besitzen, sonst wird keine Leistung zugeschaltet.
 | Enable_Positive | BOOL | Muss den Wert TRUE besitzen, sonst wird keine Leistung zugeschaltet. Derzeit wird die Freigabe nur der positiven Verfahrrichtung nicht unterstützt
 | Enable_Negative | BOOL | Muss den Wert TRUE besitzen, sonst wird keine Leistung zugeschaltet. Derzeit wird die Freigabe nur der negativen Verfahrrichtung nicht unterstützt
VAR_OUTPUT
 | Status | BOOL | Der Wert TRUE zeigt an, dass der Antrieb drehmomentbehaftet ist und sich in Regelung befindet..
 | Error | BOOL | Zeigt an, ob innerhalb des FB ein Fehler aufgetreten ist.
 | ErrorID | WORD | Fehlerkennung
 | DriveEnabled | BOOL | Der Wert TRUE zeigt an, ob der Antrieb bereit zur Leistungsfreigabe ist.
 | DriveReady | BOOL | Der Wert TRUE bedeutet, dass sich der Antrieb in Regelung befindet.

Verhalten des FB:

q Die Leistung für den Antrieb wird nur dann zugeschaltet, wenn sämtliche 3 Eingänge den Wert TRUE besitzen.

q Unabhängig vom Zustand der Achse, lässt sich dieser FB beauftragen und der Auftrag an den Motion Controller absetzen.

q Falls ein Fehler in anderen Achsen vorliegt, reagiert der FB MC_Power mit einem Achsfehler (ErrorID = 40001 und MC_ReadAxisError.AxisErrorID = 294039)

q Das Verhalten der Achse hängt vom parametrierten Antriebstyp ab. Ist für die Achse der Antriebstyp Simulation (kenngr.antr_typ 4) parametriert, so wird auch der Output Status simuliert.

q Ist für die Achse der Antriebstyp DSE (siehe kenngr.antr_typ) parametriert und werden Motoren mit integrierter Bremse verwendet, so beinhaltet der FB zusätzlich auch das öffnen der Bremsen.
Die Einstellung der Bremsverzögerungszeiten beim Setzen / Nehmen der Reglerfreigaben mittels dieses FB werden in den Achslisten achsmds[X].lis über folgende Einträge:

antr_digital.typ.dse.brake_open_delay_time
antr_digital.typ.dse.brake_open_time
antr_digital.typ.dse.brake_close_premature_time

parametriert.
Das genaue Verhalten ist den nachfolgenden Timing-Diagrammen zu entnehmen:

Bremse öffnen:

Bild 2-1: Zeitverhalten beim Öffnen der Bremse

Bremse schließen:

Bild 2-2: Zeitverhalten beim Schließen der Bremse


MC_ReadAxisInfo

Dieser FB wird eingesetzt, um die aktuellen Zustandsdaten einer Achse zu erhalten. Er ist der Gruppe der administrativen FB zugeordnet.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Enable | BOOL | Ist der Wert TRUE, werden kontinuierlich die Zustandsdaten der Achse angezeigt.
VAR_OUTPUT
 | Valid | BOOL | Ist TRUE, wenn gültige Werte verfügbar sind.
 | Error | BOOL | Zeigt an, ob innerhalb eines FB ein Fehler aufgetreten ist.
 | ErrorID | WORD | Fehlerkennung
 | IsHomed | BOOL | Referenzpunktfahrt abgeschlossen

Verhalten des FB:

q Solange Enable den Wert TRUE besitzt werden die Daten einer Achse zyklisch aktualisiert.


MC_ReadMotionState

Dieser FB wird eingesetzt, um die aktuellen einer Achse in Bezug auf den aktuell ausgeführte Bewegungsauftrag. Er ist der Gruppe der administrativen FB zugeordnet.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Enable | BOOL | Ist der Wert TRUE, werden kontinuierlich die Zustandsdaten der Achse angezeigt.
VAR_OUTPUT
 | Valid | BOOL | Ist TRUE, wenn gültige Werte verfügbar sind.
 | Error | BOOL | Zeigt an, ob innerhalb eines FB ein Fehler aufgetreten ist.
 | ErrorID | WORD | Fehlerkennung
 | ConstantVelocity | BOOL | Achse hat die Drehzahl erreicht.
 | RevZero | BOOL | Antrieb ruht, Drehzahl = 0
 | InWindow | BOOL | Achse befindet sich im Regelfenster um die Zielposition
 | InPosition | BOOL | Achse befindet sich in Position
 | LrCommandedPos | LREAL | Zielposition einer Achse, Standard-Einheit [0,1 µm]
 | LrActualPos | LREAL | Istposition einer Achse, Standard-Einheit [0,1 µm]
 | LrSetPos | LREAL | Sollposition der Achse, Standard-Einheit [0,1 µm]
 | LrCommandedRev | LREAL | Programmierte Drehzahl einer Einzelachse (SAI), Standard-Einheit [10-3 °/s]
 | LrActualRev | LREAL | Istdrehzahl der Achse, Standard-Einheit [10-3 °/s]
 | LrSetRev | LREAL | Solldrehzahl der Achse, Standard-Einheit [10-3 °/ s]
 | LrActualAccel | LREAL | Istbeschleunigung der Achse, Standard-Einheit [1°/s2]
 | LrSetAccel | LREAL | Sollbeschleunigung der Achse, Standard-Einheit [1°/s2]
 | IpoCommandedPos | LREAL | Zielposition einer Einzelachse (SAI), Standard-Einheit [10-4 °]
 | IpoSetPos | LREAL | Sollposition einer Einzelachse (SAI), Standard-Einheit [10-4 °]
 | IpoDistToGo | LREAL | Restfahrweg einer Einzelachse (SAI), Standard-Einheit [10-4 °]
 | IpoSetVel | LREAL | Sollgeschwindigkeit einer Einzelachse (SAI), Standard-Einheit [10-3°/s]
 | IpoSetAccel | LREAL | Sollbeschleunigung einer Einzelachse (SAI), Standard-Einheit [1°/s2]

Verhalten des FB:

q Solange Enable den Wert TRUE besitzt werden die Daten einer Achse zyklisch aktualisiert.


MC_ReadStatus

Dieser FB wird eingesetzt, um den aktuellen PLCopen-Zustand einer Achse zu erhalten. Er ist der Gruppe der administrativen FB zugeordnet.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Enable | BOOL | Ist der Wert TRUE, werden kontinuierlich die Zustandsdaten der Achse angezeigt.
VAR_OUTPUT
 | Valid | BOOL | Ist TRUE, wenn gültige Werte verfügbar sind.
 | Error | BOOL | Zeigt an, ob innerhalb eines FB ein Fehler aufgetreten ist.
 | ErrorID | WORD | Fehlerkennung
 | Errorstop | BOOL | Achse ist im Zustand Errorstop
 | Disabled | BOOL | Achse ist im Zustand Disabled
 | Stopping | BOOL | Achse ist im Zustand Stopping
 | Homing | BOOL | Achse ist im Zustand Homing
 | Standstill | BOOL | Achse ist im Zustand Standstill
 | TorqueControl | BOOL | Achse ist im Zustand Torque Control
 | DiscreteMotion | BOOL | Achse ist im Zustand Discrete Motion
 | ContinuousMotion | BOOL | Achse ist im Zustand Continuous Motion
 | SynchronizedMotion | BOOL | Achse ist im Zustand Synchronized Motion

Verhalten des FB:

q Solange Enable den Wert TRUE besitzt werden die Daten einer Achse zyklisch aktualisiert.


MC_ReadAxisError

Bei einem Fehler auf einer Achse liefert der FB MC_ReadAxisError an seinem Ausgang ErrorID die Fehlerkennung 40001 (Achsfehler im Motion Controller aufgetreten). Am Ausgang AxisErrorID kann dann die Fehlerkennung des Motion Controllers ausgelesen werden. Die dazugehörigen Fehlermeldungstexte sind in separaten Text- oder XML-Dateien hinterlegt. Alle anderen Fehlerkennungen am Ausgang ErrrorID, die nicht dem Wert 40001 entsprechen, zeigen interne FB-Fehler an.

Erläuterungen zu den Werten an den Ausgängen ErrorID und AxisErrorID sind [DIAG] zu entnehmen.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Enable | BOOL | Ist der Wert TRUE, werden die Fehlerkennungen für Achsfehler geliefert.
VAR_OUTPUT
 | Valid | BOOL | Ist der Wert TRUE, dann sind die Fehlerkennungen gültig.
 | Error | BOOL | Ist TRUE, wenn ein Fehler auf der Achse auftritt
 | ErrorID | WORD | Fehlerkennung
 | AxisErrorID | UDINT | Kennung des Achsfehlers aus dem Motion Controller

Verhalten des FB:

q Ist die Achse im Zustand Errorstop wird der Ausgang Error TRUE und am Ausgang ErrorID erscheint die Fehlerkennung 40001 (Achsfehler im Motion Controller aufgetreten). Am Ausgang AxisErrorID kann dann die Fehlerkennung des Motion Controllers entnommen werden.


MC_ReadActualPosition

An seinem Ausgang Position liefert der FB MC_ReadActualPosition die aktuelle Position einer Achse. Er ist der Gruppe der administrativen FB zugeordnet.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Enable | BOOL | Ist der Wert TRUE, werden die Positionen kontinuierlich geliefert.
VAR_OUTPUT
 | Valid | BOOL | Am Ausgang Position des FB liegt eine aktuelle Position an
 | Error | BOOL | Ist TRUE, wenn ein Fehler im FB auftritt.
 | ErrorID | WORD | Fehlerkennung
 | Position | REAL | Istposition der Achse, Standard-Einheit [0,1 µm]

Verhalten des FB:

q Ist Enable FALSE, wird am Ausgang Position der Wert 0.0 ausgegeben.

q Wenn Done TRUE ist, wurde die Position der Achse am Ausgang Position aktualisiert.


MC_Reset

Der FB MC_Reset führt eine Achse vom Zustand Errorstop in den Zustand Standstill über und verwirft dabei alle Achsfehler. Der Aufruf von MC_Reset hat keinen Einfluss auf die Ausgänge der übrigen FB.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Execute | BOOL | Ist der Wert TRUE, wird ein Reset der zugeordneten Achse ausgeführt.
VAR_OUTPUT
 | Done | BOOL | Die Achse befindet sich im Zustand Standstill.
 | Error | BOOL | Ist TRUE, wenn ein Fehler im FB auftritt.
 | ErrorID | WORD | Fehlerkennung

Verhalten des FB:

q Die Beauftragung eines Reset ist nur zulässig, wenn sich die Achse im Zustand Errorstop befindet. Ist dies nicht Fall wird Ausgang Error FALSE und ErrorID zeigt einen Fehlerwert, der den Zustand bezeichnet, in dem sich die Achse aktuell befindet.

q Ist der FB aktiv, kann kein neuer Auftrag abgesetzt werden. Er ist nicht retriggerbar.

q Kann die Reset-Beauftragung nicht innerhalb der durch das globale Datum MAX_RESET_RETRAILS vorgegebenen Anzahl von FB-Aufrufen an die Achse abgesetzt werden, wird der Ausgang Error FALSE und ErrorID zeigt den Fehlerwert 44075 (ERR_PO_AX_DID_NOT_TAKE_ORDER). Der Wert von MAX_RESET_RETRAILS kann applikationsspezifisch angepasst werden.

q Ist eine Reset-Beauftragung nach einer bestimmten Anzahl von FB-Aufrufen nicht erfolgreich quittiert worden, wird dies durch die Fehlerkennung 44002 (ERR_PO_AX_ANSWER_TIME_OUT) an Ausgang ErrorID angezeigt und Ausgang Error wird TRUE. Die Anzahl der FB-Aufrufe kann im globalen Datum MAX_RESET_WAIT_CYCLES applikationsspezifisch angegeben werden.

q Befindet sich die Achse im Zustand TorqueControl und geht dann in einen Fehler, so wird nach einem erfolgreichen Reset dieser Zustand wieder hergestellt. In allen anderen Fällen geht die Achse in den Zustand StandStill.


MC_Home

Mit dem FB MC_Home wird eine Referenzpunktfahrt (Justage) der Achse beauftragt. Wie eine Achse auf diese Beauftragung reagiert, hängt im wesentlichen von der Art des Referenzierungsvorganges ab. Diese wird in der Achsliste (achsmdsX.lis) über das Element kenngr.homing.homing_type vorgegeben.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Execute | BOOL | Eine steigende Flanke am Eingang beauftragt eine Referenzpunktfahrt
VAR_OUTPUT
 | Done | BOOL | Bei TRUE ist die Referenzpunktfahrt abgeschlossen und die Achse befindet sich im Zustand Standstill.
 | CommandAborted | BOOL | TRUE signalisiert, dass das Kommando durch eine andere Beauftragung abgebrochen wurde.
 | Error | BOOL | Ist TRUE, wenn ein Fehler im FB auftritt
 | ErrorID | WORD | Fehlerkennung

Allgemeines Verhalten des FB:

q Die Beauftragung einer Referenzpunktfahrt ist nur zulässig, wenn sich die Achse im Zustand Standstill befindet. Ist dies nicht Fall wird Ausgang Error FALSE und ErrorID zeigt einen Fehlerwert an, der den Zustand bezeichnet, in dem sich die Achse aktuell befindet.

q Ist der FB aktiv, kann kein neuer Auftrag abgesetzt werden. Er ist nicht retriggerbar. Beim Versuch dies trotzdem zu tun, liefert der FB den Fehler 44007 (ERR_PO_AX_HOMING_RETRIGGERD).

q Unmittelbar nach der Beauftragung der Referenzpunktfahrt wechselt die Achse in den Zustand Homing.

Mehr:

button Abhängigkeiten von der Art des Referenzierungsverfahrens


Abhängigkeiten von der Art des Referenzierungsverfahrens

Wie eingangs erwähnt stehen unterschiedliche Referenzierungsverfahren zur Verfügung. Die Auswahl eines Verfahren erfolgt durch Vorgabe in den jeweiligen Achslisten (achsmdsX.lis) über das Element kenngr.homing.homing_type. Dort wird über eine definierte Zeichenkette das jeweilige Verfahren ausgewählt. Die zur Verfügung stehenden Verfahren sind der folgenden Tabelle zu entnehmen:

Methode | Schlüsselwort
Fahren auf Festanschlag, NC-geführt | TORQ
Kompatibilitätsmodus | NONE

Verhalten der Achse bei Referenzierungstyp NONE

q Ist die Beauftragung ausgeführt, ist für die Achse der Wert als Referenzposition übernommen worden, der im Element getriebe[i].pos_refpkt in der Achsliste (achsmdsX.lis) hinterlegt ist.

q Das Verhalten der Achse während der Beauftragung hängt vom parametrierten Antriebstyp ab. Ist für die Achse der Antriebstyp DSE (siehe kenngr.antr_typ) parametriert, wird sich die Achse bei einer Beauftragung des FB nicht bewegen. Es wird unmittelbar die parametrierte Referenzposition übernommen und der Ausgang Done auf TRUE gesetzt.

Ist für die Achse der Antriebstyp Simulation (siehe kenngr.antr_typ) parametriert, wird sich die Achse bewegen und nach einem kurzen Weg die parametrierte Referenzposition übernehmen.

Verhalten der Achse bei Referenzierungstyp TORQ

q Ist für die Achse der Antriebstyp DSE parametriert, wird sich die Achse bei einer Beauftragung des FB bewegen.

q Bei Anwendung des Referenzierungstyp TORQ sind weitere Parameter in der Achsliste (achsmdsX.lis) mit Werten zu belegen. Es gibt allgemeine Parametern, die sich auf den Referenzierungsvorgang als solchen beziehen. Sie sind in der Achsliste mit dem Präfix kenngr.homing. versehen.

Name | Dimension | Wertebereich | Beschreibung
torq_min_distance | 0,1 μm | < torq_max_distance | Mindestweg bis zur Detektierung der Referenzposition
torq_max_distance | 0,1 μm | 0 ... MAX_SGN23 | Maximalweg bis zur Detektierung der Referenzposition
torq_homing_dir |  | [POSITIVE | NEGATIVE] | Richtung der Referenzpunktfahrt
torq_detect_velocity_limit | 0,1 % | 0 ... 1000 | Geschwindigkeitsgrenzwert zur Detektierung der Referenzposition
torq_retraction_distance | 0,1 μm | MAX_SGN32 | Rückzugsweg nach erkennen der Referenzposition
torq_homing_position | 0,1 μm | MAX_SGN32 | Referenzposition
torq_detect_time | μs | MAX_UNS32 | Mindestzeit, die das Grenzmoment überschritten sein muss, damit die Referenzposition erkannt wird.

Allgemeine Parameter für das Referenzieren auf Festanschlag

Die getriebestufen-abhängigen Parameter sind mit dem Präfix getriebe[X].homing. versehen. Wobei für X eine Ordnungszahl für die jeweilige Getriebestufe eingetragen ist.

Name | Dimension | Wertebereich | Beschreibung
torq_move_acceleration | mm/s2 | <= a_max | Beschleunigung
torq_move_velocity | μm/s | <= vb_max | Geschwindigkeit für Achsbewegung
torq_move_torque_limit | 0,1 % | 0 ... 1000 | Prozentualer Drehmomentgrenzwert für Bewegung.
torq_detect_torque_limit | 0,1 % | 0 ... 1000 | Grenzmoment für die Detektion der stehenden Achse. Prozentualer Wert bezogen auf torq_move_torque_limit.

Getriebestufen-spezifische Parameter für das Referenzieren auf Festanschlag

Nachstehende Grafik zeigt, auf welche Weise die aufgeführten Parameter Einfluss beim Fahren auf Festanschlag besitzen.

Bild 2-3: Einfluss der Parameter beim Fahren auf Festanschlag


MC_MoveAbsolute

Mit dem FB MC_MoveAbsolute wird eine Bewegung der Achse auf eine absolute Position beauftragt. Die Bewegung wird immer ruckbegrenzt mit dem in Jerk eingestellten konstanten Ruck ausgeführt. Der Wert gilt sowohl für das Beschleunigen mit Acceleration, als auch für das Bremsen mit Deceleration.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Execute | BOOL | Eine steigende Flanke am Eingang beauftragt die Bewegung auf eine absolute Position.
 | Position | REAL | Zielposition der Bewegung, Wertebereich [-2147483648.0, 2147483647.0] Standard-Einheit [0,1µm bzw. 10-4 °]
 | Velocity | REAL | Maximale Geschwindigkeit der Bewegung. Dieser Wert ist positiv anzugeben. Die Geschwindigkeit wird nicht zwangsläufig erreicht. Wertebereich [1.0, 2147483647.0] Standard-Einheit [1µm/s bzw. 10-3 °/s]
 | Acceleration | REAL | Wert der Beschleunigung. Dieser Wert ist positiv anzugeben. Wertebereich [0.0, 2147483647.0] Standard-Einheit [1mm/s2 bzw. 1°/s2]
 | Deceleration | REAL | Wert der Verzögerung. Dieser Wert ist immer positiv anzugeben. Wertebereich [0.0, 2147483647.0] Standard-Einheit [1mm/s2 bzw. 1°/s2]
 | Jerk | REAL | Wert des Rucks. Dieser Wert ist immer positiv anzugeben. Wertebereich [0.0, 2147483647.0] Standard-Einheit [1mm/s3 bzw. 1°/s3]
 | Direction | INT | Richtung in der die Bewegung gestartet wird. Einer der 4 Werte: 1 positive Richtung 2 kürzester Weg 3 negative Richtung 4 derzeitige Richtung Die Angabe der Richtung ist nur dann wirksam, wenn für die Achse in den achsspezifischen Maschinendaten über den Parameter kenngr.achs_mode ein Modulo-Koordinatensystem definiert wurde, da bei linearen Achsen die Richtung durch die Zielposition immer eindeutig ist.
VAR_OUTPUT
 | Done | BOOL | Die Achse befindet sich innerhalb eines Bereiches, vorgegeben durch den Parameter getriebe[..].window der achsspezifischen Maschinendaten, in der Nähe der Zielposition.
 | CommandAborted | BOOL | TRUE signalisiert, dass das Kommando durch eine andere Beauftragung abgebrochen wurde.
 | Error | BOOL | Ist TRUE, wenn ein Fehler im FB auftritt
 | ErrorID | WORD | Fehlerkennung

Verhalten des FB:

q Die Beauftragung dieser Bewegung erfolgt nur, wenn die Achse sich im Zustand Standstill oder Continuous Motion oder Discrete Motion oder Synchronized Motion befindet. Ist dies nicht Fall wird Ausgang Error FALSE und ErrorID zeigt einen Fehlerwert an, der den Zustand bezeichnet, in dem sich die Achse aktuell befindet.

q Die Eingangsvariablen Position, Velocity, Acceleration, Deceleration und Jerk werden innerhalb des FB nur auf ihren Wertebereich überwacht. Bei Überschreiten wird eine die Variable betreffende Fehlernummer am Ausgang ErrorID ausgegeben und Error auf TRUE gesetzt. Darüber hinaus findet eine Begrenzung der maximalen Geschwindigkeits- und Beschleunigungsdaten innerhalb des Motion Controllers statt. Werden Geschwindigkeitswerte größer als getriebe[0].dynamik.vb_max bzw. Beschleunigungs- oder Verzögerungswerte größer als getriebe[0].dynamik.a_max kommandiert, so wird die Bewegung trotzdem durchgeführt, die Werte werden jedoch auf die parametrierten Werte begrenzt und der Motion Controller gibt eine Warnung 60211 oder 60188 bis 60194 aus.

q Als Ruck sind Werte sinnvoll, die einer minimalen Rampenzeit von TA (Zykluszeit des IPO, z.B. 2 ms) und einer maximalen Rampenzeit von 100s entsprechen. Bei der minimalen Rampenzeit von TA liegt der Grenzübergang zur nicht ruckbegrenzten Geschwindigkeitsführung. Bei einem Wert von 0 wird zur Bestimmung des Rucks die maximale Rampenzeit aus dem Achs-MDS verwendet.

q Mit diesem Funktionsbaustein können aktive Beauftragungen durch neue Aufträge ersetzt werden, der Baustein ist damit retriggerbar. Der aktive Auftrag wird dadurch abgebrochen.

q Wird durch diesen FB eine nicht referenzierte Achse beauftragt, fährt die Achse nicht los. Am Baustein MC_ReadAxisError wird die Fehlerkennung 60142 gemeldet.

q Die Positionen der Softwareendschaltern (kenngr.swe_pos, kenngr.swe_neg, kenngr.swe_toleranz) werden überwacht, wenn die Achse entweder als Linearachse oder Rundachse definiert wurde. Dies bedeutet dass der Parameter kenngr.achs_typ der Achsmaschinendaten den Wert 0x0001 oder 0x0002 besitzt. Wenn durch die Beauftragung die Zielposition die Position der Softwareendschalter überschreitet, fährt die Achse dennoch los. Wird eine Softwareendschalter-Position erreicht, wird die Achse unter Einhaltung der definierten Beschleunigung abgebremst.


MC_MoveAdditive

Mit dem FB MC_MoveAdditive wird eine relative Bewegung beauftragt, zuzüglich zur kommandierten Position, wenn die Achse im Zustand Discrete Motion ist. Die Bewegung wird immer ruckbegrenzt mit dem in Jerk eingestellten konstanten Ruck ausgeführt. Der Wert gilt sowohl für das Beschleunigen mit Acceleration, als auch für das Bremsen mit Deceleration.

Befindet sich die Achse im Zustand Continuous Motion und erhält eine Beauftragung durch diesen FB, wird die relative Strecke zur aktuellen Position zum Zeitpunkt der Beauftragung addiert.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Execute | BOOL | Die steigende Flanke dieses Eingangssignals startet die Bewegung.
 | Distance | REAL | Zielposition der Bewegung, Wertebereich [-2147483648.0, 2147483647.0] Standard-Einheit [0,1µm bzw. 10-4 °]
 | Velocity | REAL | Maximale Geschwindigkeit der Bewegung. Dieser Wert ist positiv anzugeben. Die Geschwindigkeit wird nicht zwangsläufig erreicht. Wertebereich [1.0, 2147483647.0] Standard-Einheit [1µm/s bzw. 10-3 °/s]
 | Acceleration | REAL | Wert der Beschleunigung. Dieser Wert ist positiv anzugeben. Wertebereich [0.0, 2147483647.0] Standard-Einheit [1mm/s2 bzw. 1°/s2]
 | Deceleration | REAL | Wert der Verzögerung. Dieser Wert ist immer positiv anzugeben. Wertebereich [0.0, 2147483647.0] Standard-Einheit [1mm/s2 bzw. 1°/s2]

 | Jerk | REAL | Wert des Rucks. Dieser Wert ist immer positiv anzugeben. Wertebereich [0.0, 2147483647.0] Standard-Einheit [1mm/s3 bzw. 1°/s3]
VAR_OUTPUT
 | Done | BOOL | Die Achse befindet sich innerhalb eines Bereiches, vorgegeben durch den Parameter getriebe[..].window der achsspezifischen Maschinendaten, in der Nähe der Zielposition.
 | CommandAborted | BOOL | TRUE signalisiert, dass das Kommando durch eine andere Beauftragung abgebrochen wurde.
 | Error | BOOL | Ist TRUE, wenn ein Fehler im FB auftritt
 | ErrorID | WORD | Fehlerkennung

Verhalten des FB:

q Die Beauftragung dieser Bewegung erfolgt nur, wenn die Achse sich im Zustand Standstill oder Continuous Motion oder Discrete Motion oder Synchronized Motion befindet. Ist dies nicht Fall wird Ausgang Error FALSE und ErrorID zeigt einen Fehlerwert an, der den Zustand bezeichnet, in dem sich die Achse aktuell befindet.

q Die Eingangsvariablen Position, Velocity, Acceleration, Deceleration und Jerk werden innerhalb des FB nur auf ihren Wertebereich überwacht. Bei Überschreiten wird eine die Variable betreffende Fehlernummer am Ausgang ErrorID ausgegeben und Error auf TRUE gesetzt. Darüber hinaus findet eine Begrenzung der maximalen Geschwindigkeits- und Beschleunigungsdaten innerhalb des Motion Controllers statt. Werden Geschwindigkeitswerte größer als getriebe[0].dynamik.vb_max bzw. Beschleunigungs- oder Verzögerungswerte grösser als getriebe[0].dynamik.a_max kommandiert, so wird die Bewegung trotzdem durchgeführt, die Werte werden jedoch auf die parametrierten Werte begrenzt und eine Warnung, 60211 oder 60188 bis 60194, wird ausgegeben.

q Als Ruck sind Werte sinnvoll, die einer minimalen Rampenzeit von TA (Zykluszeit des IPO, z.B. 2 ms) und einer maximalen Rampenzeit von 100s entsprechen. Bei der minimalen Rampenzeit von TA liegt der Grenzübergang zur nicht ruckbegrenzten Geschwindigkeitsführung. Bei einem Wert von 0 wird zur Bestimmung des Rucks die maximale Rampenzeit aus dem Achs-MDS verwendet.

q Mit diesem Funktionsbaustein können aktive Beauftragungen durch neue Aufträge ersetzt werden, der Baustein ist damit retriggerbar. Der aktive Auftrag wird dadurch abgebrochen.

q Wird durch diesen FB eine nicht referenzierte Achse beauftragt, fährt die Achse mit der Geschwindigkeit, die durch den Parameter getriebe[...].vb_reflow der Achsmaschinendaten definiert wird.

q Die Positionen der Softwareendschaltern (kenngr.swe_pos, kenngr.swe_neg, kenngr.swe_toleranz) werden überwacht, wenn die Achse entweder als Linearachse oder Rundachse definiert wurde. Dies bedeutet dass der Parameter kenngr.achs_typ der Achsmaschinendaten den Wert 0x0001 oder 0x0002 besitzt. Wenn durch die Beauftragung die Zielposition die Position der Softwareendschalter überschreitet, fährt die Achse dennoch los. Wird eine Softwareendschalter-Position erreicht, wird die Achse unter Einhaltung der definierten Beschleunigung abgebremst.


MC_MoveRelative

Mit dem FB MC_MoveRelative wird eine relative Bewegung beauftragt, zuzüglich zur aktuellen Position, beauftragt. Unabhängig davon, ob sich die Achse im Zustand Discrete Motion oder Continuous Motion befindet. Die Bewegung wird immer ruckbegrenzt mit dem in Jerk eingestellten konstanten Ruck ausgeführt. Der Wert gilt sowohl für das Beschleunigen mit Acceleration, als auch für das Bremsen mit Deceleration.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Execute | BOOL | Die steigende Flanke dieses Eingangssignals startet die Bewegung.
 | Distance | REAL | Relative Strecke der Bewegung. Wertebereich [-2147483648.0, 2147483647.0] Standard-Einheit [0,1µm bzw. 10-4 °]
 | Velocity | REAL | Maximale Geschwindigkeit der Bewegung. Dieser Wert ist positiv anzugeben. Die Geschwindigkeit wird nicht zwangsläufig erreicht. Wertebereich [1.0, 2147483647.0] Standard-Einheit [1µm/s bzw. 10-3 °/s]
 | Acceleration | REAL | Wert der Beschleunigung. Dieser Wert ist positiv anzugeben. Wertebereich [0.0, 2147483647.0] Standard-Einheit [1mm/s2 bzw. 1°/s2]
 | Deceleration | REAL | Wert der Verzögerung. Dieser Wert ist immer positiv anzugeben. Wertebereich [0.0, 2147483647.0] Standard-Einheit [1mm/s2 bzw. 1°/s2]
 | Jerk | REAL | Wert des Rucks. Dieser Wert ist immer positiv anzugeben. Wertebereich [0.0, 2147483647.0] Standard-Einheit [1mm/s3 bzw. 1°/s3]

VAR_OUTPUT
 | Done | BOOL | Die Achse befindet sich innerhalb eines Bereiches, vorgegeben durch den Parameter getriebe[..].window der achsspezifischen Maschinendaten, in der Nähe der Zielposition.
 | CommandAborted | BOOL | TRUE signalisiert, dass das Kommando durch eine andere Beauftragung abgebrochen wurde.
 | Error | BOOL | Ist TRUE, wenn ein Fehler im FB auftritt
 | ErrorID | WORD | Fehlerkennung

Verhalten des FB:

q Die Beauftragung dieser Bewegung erfolgt nur, wenn die Achse sich im Zustand Standstill oder Continuous Motion oder Discrete Motion oder Synchronized Motion befindet. Ist dies nicht Fall wird Ausgang Error FALSE und ErrorID zeigt einen Fehlerwert an, der den Zustand bezeichnet, in dem sich die Achse aktuell befindet.

q Die Eingangsvariablen Position, Velocity, Acceleration, Deceleration und Jerk werden innerhalb des FB nur auf ihren Wertebereich überwacht. Bei Überschreiten wird eine die Variable betreffende Fehlernummer am Ausgang ErrorID ausgegeben und Error auf TRUE gesetzt. Darüber hinaus findet eine Begrenzung der maximalen Geschwindigkeits- und Beschleunigungsdaten innerhalb des Motion Controllers statt. Werden Geschwindigkeitswerte größer als getriebe[0].dynamik.vb_max bzw. Beschleunigungs- oder Verzögerungswerte grösser als getriebe[0].dynamik.a_max kommandiert, so wird die Bewegung trotzdem durchgeführt, die Werte werden jedoch auf die parametrierten Werte begrenzt und eine Warnung, 60211 oder 60188 bis 60194, wird ausgegeben.

q Als Ruck sind Werte sinnvoll, die einer minimalen Rampenzeit von TA (Zykluszeit des IPO, z. Bsp. 2 ms) und einer maximalen Rampenzeit von 100s entsprechen. Bei der minimalen Rampenzeit von TA liegt der Grenzübergang zur nicht ruckbegrenzten Geschwindigkeitsführung. Bei einem Wert von 0 wird zur Bestimmung des Rucks die maximale Rampenzeit aus dem Achs-MDS verwendet.

q Mit diesem Funktionsbaustein können aktive Beauftragungen durch neue Aufträge ersetzt werden, der Baustein ist damit retriggerbar. Der aktive Auftrag wird dadurch abgebrochen.

q Wird durch diesen FB eine nicht referenzierte Achse beauftragt, fährt die Achse mit der Geschwindigkeit, die durch den Parameter getriebe[...].vb_reflow der Achsmaschinendaten definiert wird.

q Die Positionen von Softwareendschaltern (kenngr.swe_pos, kenngr.swe_neg, kenngr.swe_toleranz) wird überwacht, wenn die Achse entweder als Linearachse oder Rundachse definiert wurde. Dies bedeutet dass der Parameter kenngr.achs_typ der Achsmaschinendaten den Wert 0x0001 oder 0x0002 besitzt. Die Achse fährt auch dann los, wenn durch die Beauftragung die Zielposition die Position der Softwareendschalter überschreitet. Wird eine Softwareendschalter-Position erreicht, wird die Achse unter Einhaltung der definierten Beschleunigung abgebremst.


MC_MoveSuperImposed

Mit dem FB MC_MoveSuperImposed wird eine relative Bewegung beauftragt, zusätzlich zu einer bereits aktiven Bewegung. Die aktive Bewegung wird nicht unterbrochen, sondern mit der beauftragten überlagert. Die Bewegung wird immer ruckbegrenzt mit dem in Jerk eingestellten konstanten Ruck ausgeführt. Der Wert gilt sowohl für das Beschleunigen mit Acceleration, als auch für das Bremsen mit Deceleration.

Befindet sich die Achse bereits in einem Bewegungszustand und erhält eine Beauftragung durch diesen FB, führt dies zu einer überlagerten Interpolation und somit zu einer Geschwindigkeitsänderung und Änderung der Zielposition der aktiven Bewegung.

Ist die Achse im Zustand Standstill wirkt eine Beauftragung durch den FB MC_MoveSuperImposed wie eine Beauftragung durch eine FB MC_MoveRelative.

Da sich bei der überlagerten Interpolation auch die Beschleunigungen überlagern, ist durch entsprechende Achsparametrierung sicherzustellen, dass die Achse nicht dynamisch überfordert wird.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Execute | BOOL | Die steigende Flanke dieses Eingangssignals startet die Überlagerung der Bewegung.
 | Distance | REAL | Relative Strecke der Bewegung Wertebereich [-2147483648.0, 2147483647.0] Standard-Einheit [0,1µm bzw. 10-4 °]
 | VelocityDiff | REAL | Maximale Differenz zur Geschwindigkeit der unterlagerten Bewegung. Dieser Wert ist positiv anzugeben. Die Geschwindigkeit wird nicht zwangsläufig erreicht. Wertebereich [1. 0, 2147483647.0] Standard-Einheit [1µm/s bzw. 10-3 °/s]
 | Acceleration | REAL | Wert der Beschleunigung. Dieser Wert ist positiv anzugeben. Wertebereich [0.0, 2147483647.0] Standard-Einheit [1mm/s2 bzw. 1°/s2]
 | Deceleration | REAL | Wert der Verzögerung. Dieser Wert ist immer positiv anzugeben. Wertebereich [0.0, 2147483647.0] Standard-Einheit [1mm/s2 bzw. 1°/s2]
 | Jerk | REAL | Wert des Rucks. Dieser Wert ist immer positiv anzugeben. Wertebereich [0.0, 2147483647.0] Standard-Einheit [1mm/s3 bzw. 1°/s3]
VAR_OUTPUT
 | Done | BOOL | Die relative Strecke wurde der aktiven Bewegung überlagert.
 | CommandAborted | BOOL | TRUE signalisiert, dass das Kommando durch eine andere Beauftragung abgebrochen wurde.
 | Error | BOOL | Ist TRUE, wenn ein Fehler im FB auftritt
 | ErrorID | WORD | Fehlerkennung

Verhalten des FB:

q Die Beauftragung dieser Bewegung erfolgt nur, wenn die Achse sich im Zustand Standstill oder Continuous Motion oder Discrete Motion oder Synchronized Motion befindet. Ist dies nicht Fall wird Ausgang Error FALSE und ErrorID zeigt einen Fehlerwert an, der den Zustand bezeichnet, in dem sich die Achse aktuell befindet.

q Die Eingangsvariablen Distance, VelocityDiff, Acceleration, Deceleration und Jerk werden innerhalb des FB nur auf ihren Wertebereich überwacht. Bei Überschreiten wird eine die Variable betreffende Fehlernummer am Ausgang ErrorID ausgegeben und Error auf TRUE gesetzt. Darüber hinaus findet eine Begrenzung der maximalen Geschwindigkeits- und Beschleunigungsdaten innerhalb des Motion Controllers statt. Werden Geschwindigkeitswerte größer als getriebe[0].dynamik.vb_max bzw. Beschleunigungs- oder Verzögerungswerte größer als getriebe[0].dynamik.a_max kommandiert, wird die Bewegung trotzdem durchgeführt. Die Werte werden auf die parametrierten Werte begrenzt und eine Warnung, 60211 oder 60188 bis 60194, wird ausgegeben.

q Als Ruck sind Werte sinnvoll, die einer minimalen Rampenzeit von TA (Zykluszeit des IPO, z.B. 2 ms) und einer maximalen Rampenzeit von 100s entsprechen. Bei der minimalen Rampenzeit von TA liegt der Grenzübergang zur nicht ruckbegrenzten Geschwindigkeitsführung. Bei einem Wert von 0 wird zur Bestimmung des Rucks die maximale Rampenzeit aus dem Achs-MDS verwendet.

q Mit diesem Funktionsbaustein können aktive Beauftragungen durch eine zusätzliche, überlagerte Bewegung modifiziert werden. Bezüglich der Auftragsdurchsetzung und des Auftragsabbruchs gelten folgende Regeln:

Ist keine Interpolation aktiv, sprich ist die Achse im Zustand Standstill, wirkt eine Beauftragung durch den FB MC_MoveSuperImposed wie eine Beauftragung durch einen FB MC_MoveRelative.

Ist bereits eine Interpolation aktiv, sprich ist die Achse in einem der Zustände Continuous Motion, Discrete Motion oder Synchronized Motion, startet eine Beauftragung durch den FB MC_MoveSuperImposed eine weitere, überlagerte Interpolation.

Ist bereits eine überlagerte Interpolation (vgl2.) aktiv, so bewirkt eine erneute Beauftragung durch den FB MC_MoveSuperImposed, dass nur die momentan aktive überlagerte Interpolation durch den neuen MC_MoveSuperImposed Auftrag ersetzt wird, die unterlagerte Interpolation bleibt davon unberührt.

Ist bereits eine überlagerte Interpolation (vgl2.) aktiv, und es erfolgt eine erneute Beauftragung mit einem beliebigen MC_Move*** außer MC_MoveSuperImposed, so bewirkt dies einen Abbruch beider aktiver Interpolationen, also sowohl die unterlagerte als auch die überlagerte Interpolation werden durch den neuen MC_Move*** Auftrag ersetzt.

q Wird durch diesen FB eine nicht referenzierte Achse beauftragt, fährt die Achse mit der Geschwindigkeit, die durch den Parameter getriebe[...].vb_reflow der Achsmaschinendaten definiert wird.

q Die Positionen von Softwareendschaltern (kenngr.swe_pos, kenngr.swe_neg, kenngr.swe_toleranz) wird überwacht, wenn die Achse entweder als Linearachse oder Rundachse definiert wurde. Dies bedeutet dass der Parameter kenngr.achs_typ der Achsmaschinendaten den Wert 0x0001 oder 0x0002 besitzt. Die Achse fährt auch dann los, wenn durch die Beauftragung die Zielposition die Position der Softwareendschalter überschreitet. Wird eine Softwareendschalter-Position erreicht, wird die Achse unter Einhaltung der definierten Beschleunigung abgebremst.


MC_MoveVelocity

Mit dem FB MC_MoveVelocity beauftragt man eine endlose Bewegung mit der angegebenen Geschwindigkeit. Die Bewegung wird immer ruckbegrenzt mit dem in Jerk eingestellten konstanten Ruck ausgeführt. Der Wert gilt sowohl für das Beschleunigen mit Acceleration, als auch für das Bremsen mit Deceleration.

Um die Bewegung zu stoppen muss der FB durch einen anderen FB unterbrochen werden, der eine neue Beauftragung an die Achse absetzt.

Der Ausgang InVelocity wird zurückgesetzt, wenn eine fallende Flanke am Eingang Execute festgestellt wird oder wenn die Wirkung des FB wegen der Beauftragung eines anderen FB beendet wird.

In Verbindung mit einem FB MC_MoveSuperImposed bleibt der Ausgang InVelocity TRUE.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Execute | BOOL | Die steigende Flanke dieses Eingangssignals startet die Bewegung.
 | Velocity | REAL | Betrag der Geschwindigkeit der endlos Bewegung. Dieser Wert ist positiv anzugeben. Wertebereich [1. 0, 2147483647.0] Standard-Einheit [1µm/s bzw. 10-3 °/s]
 | Acceleration | REAL | Wert der Beschleunigung. Dieser Wert ist positiv anzugeben. Wertebereich [0. 0, 2147483647.0] Standard-Einheit [1mm/s2 bzw. 1°/s2]
 | Deceleration | REAL | Wert der Verzögerung. Dieser Wert ist immer positiv anzugeben. Wertebereich [0. 0, 2147483647.0] Standard-Einheit [1mm/s2 bzw. 1°/s2]
 | Jerk | REAL | Wert des Rucks. Dieser Wert ist immer positiv anzugeben. Wertebereich [0. 0, 2147483647.0] Standard-Einheit [1mm/s3 bzw. 1°/s3]
 | Direction | INT | Richtung in der die Bewegung gestartet wird. Einer der 4 Werte: 1 positive Richtung 3 negative Richtung 4 derzeitige Richtung
VAR_OUTPUT
 | InVelocity | BOOL | Die beauftragte Geschwindigkeit wurde erreicht (zum ersten Mal)
 | CommandAborted | BOOL | TRUE signalisiert, dass das Kommando durch eine andere Beauftragung abgebrochen wurde.
 | Error | BOOL | Ist TRUE, wenn ein Fehler im FB auftritt
 | ErrorID | WORD | Fehlerkennung

Verhalten des FB:

q Die Beauftragung dieser Bewegung erfolgt nur, wenn die Achse sich im Zustand Standstill oder Continuous Motion oder Discrete Motion oder Synchronized Motion befindet. Ist dies nicht Fall wird Ausgang Error FALSE und ErrorID zeigt einen Fehlerwert an, der den Zustand bezeichnet, in dem sich die Achse aktuell befindet.

q Die Eingangsvariablen Position, Velocity, Acceleration, Deceleration und Jerk werden innerhalb des FB nur auf ihren Wertebereich überwacht. Bei Überschreiten wird eine die Variable betreffende Fehlernummer am Ausgang ErrorID ausgegeben und Error auf TRUE gesetzt. Darüber hinaus findet eine Begrenzung der maximalen Geschwindigkeits- und Beschleunigungsdaten innerhalb des Motion Controllers statt. Werden Geschwindigkeitswerte größer als getriebe[0].dynamik.vb_max bzw. Beschleunigungs- oder Verzögerungswerte grösser als getriebe[0].dynamik.a_max kommandiert, so wird die Bewegung trotzdem durchgeführt, die Werte werden jedoch auf die parametrierten Werte begrenzt und eine Warnung, 60211 oder 60188 bis 60194, wird ausgegeben.

q Als Ruck sind Werte sinnvoll, die einer minimalen Rampenzeit von TA (Zykluszeit des IPO, z. Bsp. 2 ms) und einer maximalen Rampenzeit von 100s entsprechen. Bei der minimalen Rampenzeit von TA liegt der Grenzübergang zur nicht ruckbegrenzten Geschwindigkeitsführung. Bei einem Wert von 0 wird zur Bestimmung des Rucks die maximale Rampenzeit aus dem Achs-MDS verwendet.

q Mit diesem Funktionsbaustein können aktive Beauftragungen durch neue Aufträge ersetzt werden, der Baustein ist damit retriggerbar. Der aktive Auftrag wird dadurch abgebrochen.

q Wird durch diesen FB eine nicht referenzierte Achse beauftragt, fährt die Achse mit der Geschwindigkeit, die durch den Parameter getriebe[...].vb_reflow der Achsmaschinendaten definiert wird.

q Die Positionen von Softwareendschaltern (kenngr.swe_pos, kenngr.swe_neg, kenngr.swe_toleranz) wird überwacht, wenn die Achse entweder als Linearachse oder Rundachse definiert wurde. Dies bedeutet dass der Parameter kenngr.achs_typ der Achsmaschinendaten den Wert 0x0001 oder 0x0002 besitzt. Wird eine Softwareendschalter-Position erreicht, wird die Achse unter Einhaltung der definierten Beschleunigung abgebremst.

q Die Quittierung am Output InVelocity hängt von der Einstellung des Wertes kenngr.vb_prozent [Einheit 0.1 %] ab. Dieser Wert definiert ein Prozentuales Toleranzfenster für die Zielgeschwindigkeit. Die InVelocity Quittierung erfolgt sobald man in das Toleranzfenster eintritt.


MC_Stop

Der FB MC_Stop führt zu einem gesteuerten Bewegungshalt und führt die Achse in den Zustand Stopping. Der Bewegungshalt wird immer ruckbegrenzt mit dem in Jerk eingestellten konstanten Ruck für den Aufbau der Bremsverzögerung ausgeführt.

Er bricht jede laufende Beauftragung durch andere Bewegungs-FBs ab. Entgegen der Definition des Zustandsgraphen bei PLCopen hat es sich in der Praxis als nützlich erwiesen, auch eine Achse, die sich im Zustand Stopping befindet, durch die Beauftragung mit einem anderen Bewegungs-FB abbrechen zu können. Der FB MC_Stop setzt den Ausgang Done, sobald die Achse steht. Der Achszustand Stopping wird jedoch weiterhin noch solange beibehalten, wie der Eingang Execute noch TRUE ist.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Execute | BOOL | Startet die Beauftragung mit steigender Flanke.
 | Deceleration | REAL | Wert der Verzögerung. Dieser Wert ist immer positiv anzugeben. Wertebereich [0. 0, 2147483647.0] Standard-Einheit [1mm/s2 bzw. 1°/s2]
 | Jerk | REAL | Wert des Rucks. Dieser Wert ist immer positiv anzugeben. Wertebereich [0. 0, 2147483647.0] Standard-Einheit [1mm/s3 bzw. 1°/s3]
VAR_OUTPUT
 | Done | BOOL | Geschwindigkeit 0 wurde erreicht. Achtung! Der Done Ausgang zeigt nur an, dass die Achse nun stillsteht. Der Achszustandsautomat bleibt aber zunächst im Zustand STOPPING, erst wenn zusätzlich der Eingang Execute ist FALSE ist, geht der Achszustandsautomat in den Zustand STANDSTILL.
 | Error | BOOL | Ist TRUE, wenn ein Fehler im FB auftritt
 | ErrorID | WORD | Fehlerkennung

Verhalten des FB:

q Die Beauftragung zum Anhalten der Achse erfolgt nur, wenn die Achse sich im Zustand Standstill oder Continuous Motion oder Discrete Motion oder Synchronized Motion oder Homing befindet. Ist dies nicht Fall wird Ausgang Error FALSE und ErrorID zeigt einen Fehlerwert an, der den Zustand bezeichnet, in dem sich die Achse aktuell befindet.

q Die Eingangsvariablen Deceleration und Jerk werden innerhalb des FB nur auf ihren Wertebereich überwacht. Bei Überschreiten wird eine die Variable betreffende Fehlernummer am Ausgang ErrorID ausgegeben und Error auf TRUE gesetzt. Darüber hinaus findet eine Begrenzung der Verzögerung findet innerhalb des Motion Controllers statt. Wird eine Verzögerung größer als getriebe[0].dynamik.a_max kommandiert, so wird die Bewegung trotzdem durchgeführt, die Werte werden jedoch auf die parametrierten Werte begrenzt und eine Warnung wird ausgegeben.

q Als Ruck sind Werte sinnvoll, die einer minimalen Rampenzeit von TA (Zykluszeit des IPO, z.B. 2 ms) und einer maximalen Rampenzeit von 100s entsprechen. Bei der minimalen Rampenzeit von TA liegt der Grenzübergang zur nicht ruckbegrenzten Geschwindigkeitsführung. Bei einem Wert von 0 wird zur Bestimmung des Rucks die maximale Rampenzeit aus dem Achs-MDS verwendet.

q Ist der FB aktiv, kann kein neuer Auftrag abgesetzt werden. Er ist nicht retriggerbar und wird deshalb den Fehlerausgang Error TRUE setzen und die ErrorID 44008 (ERR_PO_AX_STOP_RETRIGGERD) anzeigen.


MC_AbortTrigger

Der FB MC_AbortTrigger wird dazu verwendet Beauftragungen abzubrechen, die mit Triggerereignissen zusammenhängen (z.B. MC_TouchProbe).

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
 | TriggerInput | TRIGGER_REF | Referenz für die Trigger-Signalquelle (siehe Kapitel 1.2.1).
VAR_INPUT
 | Execute | BOOL | Bricht eine Beauftragung eines FB MC_TouchProbe bei steigender Flanke ab.
VAR_OUTPUT
 | Done | BOOL | Abbruch eines Messauftrages wurde durchgeführt.
 | Busy | BOOL | Ist TRUE, währenddem der Messauftrag abgebrochen wird.
 | Error | BOOL | Ist TRUE, wenn ein Fehler im FB auftritt
 | ErrorID | WORD | Fehlerkennung

Verhalten des FB:

q Der Abbruch eines Messauftrags erfolgt nur, wenn die Achse sich im Zustand Standstill oder Continuous Motion oder Discrete Motion oder Synchronized Motion oder Stopping befindet. Außerdem darf auf dem durch TriggerInput spezifizierten Messkanal keine Beauftragung für einen Abbruch eines Messauftrags aktiv sein. Der Zustand des Messkanals muss deshalb den Zustand TP_IDLE oder TOUCHPROBING besitzen. Ist dies nicht Fall wird Ausgang Error TRUE und ErrorID zeigt einen Fehlerwert an, der den Zustand bezeichnet, in dem sich die Achse aktuell befindet.

q Ist ein Auftrag zum Abbruch eines Messauftrag in einem Messkanal aktiv, so kann kein weiterer Auftrag zum Abbruch über diesen Messkanal abgesetzt werden. Der FB ist also nicht retriggerbar. Wird er dennoch beauftragt, wird der Ausgang Error TRUE und meldet an ErrorID den Wert 44010 (ERR_PO_AX_TPABORT_RETRIG).

q Fehler werden ebenfalls erzeugt, wenn sich bei einer Beauftragung im aktiven Zustand die Achsreferenz, der Messkanal oder die Messart geändert haben. Die Kennungen dieser Fehler besitzen die folgenden Werte:
44001 (ERR_PO_AX_REF_CHG_WHILE_ACTIVE),
44011 (ERR_PO_AX_INPREF_TPCH_CHW_ACTIVE),
44012 (ERR_PO_AX_INPREF_TPMD_CHW_ACTIVE).


MC_TouchProbe

Der FB MC_TouchProbe zeichnet eine Achsposition auf, wenn ein Triggerereignis auftritt. Der Messkanal und das Messverfahren (steigende, fallende Flanke des Triggersignals) wird über die Referenz für die Trigger-Signalquelle festgelegt.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
 | TriggerInput | TRIGGER_REF | Referenz für die Trigger-Signalquelle (siehe Kapitel 1.2.1).
VAR_INPUT
 | Execute | BOOL | Startet die Beauftragung mit steigender Flanke.
VAR_OUTPUT
 | Done | BOOL | Das Triggerereignis wurde detektiert.
 | Busy | BOOL | Ist TRUE, solange auf das Triggerereignis gewartet wird.
 | Error | BOOL | Ist TRUE, wenn ein Fehler im FB auftritt.
 | ErrorID | WORD | Fehlerkennung
 | CommandAborted | BOOL | Beauftragung wurde abgebrochen durch eine Beauftragung eines FB MC_AbortTrigger.
 | RecordedPosition | REAL | Position der Achse, als das Triggerereignis auftrat. Standard-Einheit [0,1µm bzw. 10-4 °]

Verhalten des FB:

q Die Beauftragung eines Messauftrags erfolgt nur, wenn die Achse sich im Zustand Standstill oder Continuous Motion oder Discrete Motion oder Synchronized Motion oder Stopping befindet. Außerdem darf auf dem durch TriggerInput spezifizierten Messkanal kein Messauftrag aktiv sein. Der Zustand des Messkanals muss deshalb den Zustand TP_IDLE besitzen. Ist dies nicht Fall wird Ausgang Error FALSE und ErrorID zeigt einen Fehlerwert an, der den Zustand bezeichnet, in dem sich die Achse aktuell befindet.

q Ist ein Messauftrag in einem Messkanal aktiv, so kann kein weiterer Messauftrag über diesen Messkanal abgesetzt werden. Der FB ist also nicht retriggerbar. Wird er dennoch beauftragt, wird der Ausgang Error TRUE und meldet an ErrorID den Wert 44009 (ERR_PO_AX_TPROBE_RETRIG).

q Fehler werden ebenfalls erzeugt, wenn sich, während ein Messauftrag aktiv ist, die Achsreferenz, der Messkanal, oder die Messart geändert hat. Die Kennungen dieser Fehler besitzen die Werte:
44001 (ERR_PO_AX_REF_CHG_WHILE_ACTIVE),
44011 (ERR_PO_AX_INPREF_TPCH_CHW_ACTIVE),
44012 (ERR_PO_AX_INPREF_TPMD_CHW_ACTIVE).


MC_CamIn

Der FB MC_CamIn ermöglicht das Abfahren von Kurvenscheiben, die in Tabellenform angelegt sind.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Master | AXIS_REF | Achsreferenz der Masterachse
 | Slave | AXIS_REF | Achsreferenz der Slaveachse
VAR_INPUT
 | Execute | BOOL | Startet die Beauftragung mit steigender Flanke.
 | MasterOffset | REAL | Offset der Tabelle der Masterachse Wertebereich [-2147483648.0, 2147483647.0] Standard-Einheit [0,1µm bzw. 10-4 °]
 | SlaveOffset | REAL | Offset der Tabelle der Slaveachse Wertebereich [-2147483648.0, 2147483647.0] Standard-Einheit [0,1µm bzw. 10-4 °]
 | MasterScaling | REAL | Faktor für das Profil der Masterachse Wertebereich [-2147483648.0, 2147483647.0] Achtung ! zur Zeit sollten nur ganzzahlige Werte verwendet werden!
 | SlaveScaling | REAL | Faktor für das Profil der Slaveachse Wertebereich [-2147483648.0, 2147483647.0]
 | StartMode | DWORD | Bits 2-0: Startmodus 001: Ramp in (16#1) 010: Absolute (16#2) 100: Relative (16#4)
 | CamTableID | UINT | Identifikationsnummer der Kurvenscheibe, die der Bewegung zu Grunde liegt.
 | TableFctType | UDINT | Funktionstypen: 0: STEP_DIRECT 1: LINEAR 2: POLYNOM_3 3: POLYNOM_3_KOEFF 4: LINE_POLY5 5: POLY5_LINE 6: TABLE_DEFINED
VAR_OUTPUT
 | InSync | BOOL | Zeigt an, dass die Bewegung der Slaveachse nun synchron zur Kurvenscheibe ist.
 | CommandAborted | BOOL | TRUE signalisiert, dass das Kommando durch eine andere Beauftragung abgebrochen wurde.
 | Error | BOOL | Ist TRUE, wenn ein Fehler im FB auftritt
 | ErrorID | WORD | Fehlerkennung
 | EndOfProfile | BOOL | Ausgang der das zyklische Ende des Kurvenscheibenprofils anzeigt.

Verhalten des FB:

q Die Beauftragung zum Abfahren einer Kurvenscheibe kann nur dann beauftragt werden, wenn die Slaveachse sich im Zustand Standstill oder Continuous Motion oder Discrete Motion oder Synchronized Motion befindet. Ist dies nicht Fall wird Ausgang Error FALSE und ErrorID zeigt einen Fehlerwert an, der den Zustand bezeichnet, in dem sich die Achse aktuell befindet.

q Der Wertebereich der Eingangsvariablen MasterOffset, SlaveOffset, MasterScaling und SlaveScaling wird überwacht und bei Überschreiten wird eine die Variable betreffende Fehlernummer am Ausgang ErrorID ausgegeben und Error auf TRUE gesetzt.

q Ist keine Tabelle geladen und der FB CamIn wird beauftragt, wird ein Achsfehler angezeigt (ErrorID = 40001) und am Ausgang AxisErrorID eines MC_ReadAxisError Funktionsblockes die Fehler-ID 60172 ausgegeben.

q Der Baustein ist retriggerbar. Er kann also im aktiven Zustand erneut eine Beauftragung abschicken.

q Damit eine Achse als Cam- bzw. Gear-Masterachse arbeitet und die notwendigen Synchronisationsinformationen an alle Achsen (Slaves) zyklisch überträgt, muss für eine solche Masterachse in der Achsparameterkonfiguration der Parameter cam_gear.is_master auf 1 gesetzt werden. Eine als Master konfigurierte Achse kann gleichzeitig auch als Slave mit einer anderen Masterachse gekoppelt sein.

q Der MC_CamIn FB kann sowohl für rotatorische als auch lineare Slaveachsen angewendet werden.

q Die Master-Slave-Kopplung erfolgt mit den Sollwerten des Masters.

q Die Parametrierung eines Cam-Slaves erfolgt mit folgenden Achsparametern:

- cam_gear.v_diff_percent

- cam_gear.time_in_window

- cam_gear.time_out_in_window

- cam_gear.v_max_slave

- cam_gear.a_max_slave

- cam_gear.v_phasing

- cam_gear.a_phasing

- cam_gear.d_phasing

- cam_gear.j_phasing

- cam_gear.j_vel_sync

Mehr:

button Verwendung des MC_CamIn


Verwendung des MC_CamIn

q MC_CamIn.StartMode

HLI_CI_RAMP_IN : HLI_UNS32:= 16#00000001;

HLI_CI_ABSOLUTE : HLI_UNS32:= 16#00000002;

HLI_CI_RELATIVE : HLI_UNS32:= 16#00000004;

Ramp-In und Absolute wird immer verwendet. Deshalb sind diese drei Bits derzeit ohne Wirkung

HLI_CI_LOCK_TABLE : HLI_UNS32:= 16#00000008;

Gibt an, ob die verwendete Tabelle für Online-Werteänderung während der Koppelung verriegelt ist. Dies sollte bei Tabellendatentypen, auf die nicht atomar zugegriffen werden kann, immer gesetzt sein. Ansonsten ist die Problematik des gleichzeitigen Speicherzugriffs zu beachten.

HLI_CI_F_PERIODIC : HLI_UNS32:= 16#00000010;

Falls dieses Flag bei MC_CamIn nicht gesetzt ist, wird die hinterlegte Kurve genau einmal pro Aufflanke an MC_CamIn.Execute durchfahren. Das Abfahren der Kurve ist dabei auf den Modulo-Durchgang der Masterposition synchronisiert. Wenn sich die Slaveachse nicht bereits an der Anfangsposition der CAM-Tabelle befindet, wird im Augenblick der Aufflanke an MC_CamIn.Execute die Slaveachse sofort auf die Kurvenanfangsposition gezogen und verbleibt dort bis zum nächsten Nulldurchgang der Masterachse. Von dort wird das Kurvenprofil genau einmal durchfahren. Erfolgt während des Zyklus eine erneute Triggerung des MC_CamIn.Execute, dann wird die Kurve ein weiteres Mal durchfahren so, als ob Periodic = TRUE wäre. Ohne erneute Triggerung wird die Slaveachse am Ende der CAM-Tabelle vom Master entkoppelt. D.h., wenn sich die Slaveachse zu diesem Zeitpunkt nicht im Stillstand befindet, wird sie abrupt gestoppt.

Falls die Kurve für eine endlos drehende Slaveachse modelliert wurde, muss im Zusammenhang mit der Verwendung einer Stützpunktinterpolation (MC_CamIn.TableFctType = HLI_LINEAR oder HLI_POLYNOM_3) angegeben werden, in welche Richtung die Modulo-Korrektur durchzuführen ist.

Falls die Kurve so modelliert wurde, dass sie den Modulobereich der Slaveachse in positive Richtung durchläuft, muss im MC_CamIn.StartMode das Bit

HLI_CI_ENDLESS_POSITIVE : HLI_UNS32:= 16#0x00000020;

verodert werden.

Durchläuft die Kurve den Modulobereich der Slaveachse in negativer Richtung, so muss im MC_CamIn.StartMode das Bit

HLI_CI_ENDLESS_NEGATIVE : HLI_UNS32:= 16#0x00000040;

verodert werden.

q Der herstellerspezifische Input MC_CamIn.TableFctType gibt an, wie zwischen zwei Tabellenzeilen interpoliert wird:

HLI_STEP_DIRECT : HLI_UNS32 := 0;

Innerhalb des Positionsintervalls der Masterachse smi, smi+1 wird der Positionseintrag der Slaveachse ssi ausgegeben.

HLI_LINEAR : HLI_UNS32 := 1;

Innerhalb des Positionsintervalls der Masterachse smi, smi+1 wird zwischen den Positionseinträgen der Slaveachse ssi, ssi+1 linear interpoliert.

HLI_POLYNOM_3 : HLI_UNS32 := 2;

Innerhalb des Positionsintervalls der Masterachse smi, smi+1 wird aus den vier benachbarten Positionseinträgen der Slaveachse ssi-1, ssi, ssi+1, ssi+2 ein tangentenstetiger, kubischer Bezier-Spline interpoliert. Die Polynomkoeffizientenberechnung findet online statt.

HLI_POLYNOM_3_KOEFF : HLI_UNS32 := 3;

Innerhalb des Positionsintervalls der Masterachse smi, smi+1 besteht der Positionseintrag der Slaveachse ssi (Zeile mit 4 Werten ai) aus den Koeffizienten eines Polynoms der Form

X = a0 + a1t + a2t2 + a3t3.

Die Polynomkoeffizientenberechnung findet somit offline statt.

LINE_POLY5 : HLI_UNS32 := 4;

Bewegungsabschnitte abwechselnd mit LINE und POLY5, beginnend mit LINE.

POLY5_LINE : HLI_UNS32 := 5;

Bewegungsabschnitte abwechselnd mit LINE und POLY5, beginnend mit POLY5.

TABLE_DEFINED : HLI_UNS32 := 6;

Der Interpolationstyp ist in der Tabelle definiert.

q Verhalten des MC_CamIn:

Sowohl bei bereits laufender Masterachse als auch bei Stillstand erfolgt ein sog. amplitudentreues Ramp-In.

Bei bereits laufender Masterachse entspricht dies folgender mechanischer Analogie: Einkuppeln einer Kurvenscheibe auf eine laufende Masterwelle. Die Kupplung hat solange Schlupf bis die mitzunehmende Kurvenscheibe auf Geschwindigkeit ist. Danach wird die Scheibe noch auf die richtige Lage gebracht.

Folgende Parameter der achsmds.lis beeinflussen dieses Verhalten:

cam_gear.v_diff_percent: Geschwindigkeitstoleranz in Phase 2. Default: 10

cam_gear.time_in_window: min. Zeitdauer der Phase 2. Default: 8000[µs]

cam_gear.time_out_in_window: max. Zeitdauer der Phase 2. Default: 1000000[µs].

Die Synchronisierung der Geschwindigkeit erfolgt ruckbegrenzt. Der Ruckwert muss im Achs-MDS im Parameter cam_gear.j_vel_sync eingestellt werden. Als Ruck sind Werte sinnvoll, die einer minimalen Rampenzeit von TA (Zykluszeit des IPO, z.B. 2 ms) und einer maximalen Rampenzeit von 100s entsprechen. Bei der minimalen Rampenzeit von TA liegt der Grenzübergang zur nicht ruckbegrenzten Geschwindigkeitsführung. Bei einem Wert von 0 wird zur Bestimmung des Rucks die maximale Rampenzeit aus dem Achs-MDS verwendet.

q Wenn es sich bei der Slaveachse um eine Linearachse handelt, muss beim Positionssynchronisieren darauf geachtet werden, dass die Slaveachse den Softwareendschalter nicht überfährt.

q Im gekoppelten Zustand ist die Koppelung heilig, das bedeutet, dass achsspezifisches Feedhold, achsspezifischer Override auf den Cam-Slave NICHT wirken können, weil dies im Widerspruch zur Koppelvorschrift stünde.

q Ähnlich ist die Situation bei Not-Aus: In der aktuellen Realisierung erfährt die MCE ausschließlich über die Antriebsschnittstelle von einer Not-Aus Situation. Bei einem Not-Aus wird die Gear-Kopplung aufgelöst und mit der Stromgrenze, die im Achs_mds Parameter getriebe[0].lslope_profil.a_grenz_stufe_1 eingetragen ist, gebremst. Dieses Standard verhalten bei Not-Aus kann mit dem Parameter cam_gear.keep_coupling_on_lr_error außer Kraft gesetzt werden. Dann ist die Kurven-Koppelung selbst im Not-Aus Fall sichergestellt solange der Antrieb noch den Sollwerten folgt. Ähnlich ist die Situation beim Abfallen des Enable Feed Watchdog; dies führt zu einem Fehler für gekoppelte Slaveachsen, da die Bewegungsverhinderung, da es sich um eine Sicherheitsfunktion handelt, eine höhere Priorität als die Kurven-Koppelung hat. Dieses Standard verhalten beim Abfallen des Feed-Enable-Watchdog kann mit dem Parameter cam_gear.keep_coupling_on_fe_drop außer Kraft gesetzt werden. Dann ist die Kurvenkoppelung selbst im Fall eines abgefallenen Feed-Enable-Watchdog sichergestellt.

Der automatische Phasenausgleich nach Erreichen der Geschwindigkeitssynchronität erfolgt ebenfalls ruckbegrenzt. Im Slave sind hierzu folgende Achsparameter einzustellen:

- cam_gear.v_phasing
Geschwindigkeit der überlagerten Bewegung für den Phasenausgleich.

- cam_gear.a_phasing
Beschleunigung der überlagerten Bewegung für den Phasenausgleich.

- cam_gear.d_phasing
Verzögerung der überlagerten Bewegung für den Phasenausgleich.

- cam_gear.j_phasing
Ruck der überlagerten Bewegung für den Phasenausgleich.


MC_CamOut

Die Beauftragung eines FB MC_CamOut löst die Koppelung der Slaveachse an die Masterachse, die über eine Kurvenscheibe vorgegeben wurde. Die aktuelle Geschwindigkeit des Slave wird beibehalten (Endlosbewegung).

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Slave | AXIS_REF | Achsreferenz der Slaveachse
VAR_INPUT
 | Execute | BOOL | Startet die Lösung der Koppelung über eine Kurvenscheibe mit steigender Flanke.
VAR_OUTPUT
 | Done | BOOL | Die Koppelung über eine Kurvenscheibe ist aufgelöst.
 | Error | BOOL | Ist TRUE, wenn ein Fehler im FB auftritt
 | ErrorID | WORD | Fehlerkennung

Verhalten des FB:

q Die Lösung der Koppelung der Slaveachse an die Masterachse kann nur dann beauftragt werden, wenn sich die Slaveachse im Zustand Synchronized Motion befindet. Ist dies nicht Fall wird Ausgang Error FALSE und ErrorID zeigt einen Fehlerwert an, der den Zustand bezeichnet, in dem sich die Achse aktuell befindet.

q Hier sei nochmals auf die (eigenwillige) Festlegung des PLCopen-Standards, dass die beauftragte Slaveachse nach Aufhebung der Koppelung in ihrer momentanen Geschwindigkeit verbleibt. Also nicht notwendigerweise stehen bleibt.

q Der Baustein ist retriggerbar. Er kann also im aktiven Zustand erneut eine Beauftragung abschicken.


MC_CamTableSelect

Der FB MC_CamTableSelect wird dazu verwendet um über den Dateinamen die CAM-Tabellen-ID zu ermitteln. Diese kann dann als Input für den FB MC_CamIn verwendet werden.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Master | AXIS_REF | Achsreferenz der Masterachse
 | Slave | AXIS_REF | Achsreferenz der Slaveachse
 | CamTable | MC_CAM_REF | Diese Struktur enthält den Dateinamen der CAM-Tabelle
VAR_INPUT
 | Execute | BOOL | Bei steigender Flanke wird die Identifikationsnummer der CAM-Tabelle bereitgestellt.
VAR_OUTPUT
 | Done | BOOL | Die Identifikationsnummer der CAM-Tabelle wurde bereitgestellt
 | Error | BOOL | Ist TRUE, wenn ein Fehler im FB auftritt
 | ErrorID | WORD | Fehlerkennung
 | CamTableID | MC_CAM_ID | Identifikationsnummer der CAM-Tabelle

Verhalten des FB:

q Ist im Input CamTable sowohl der Dateiname, also auch die CAM-Table-ID belegt, so hat der Dateiname höhere Priorität, d.h. es wird die dazugehörige CAM-Table-ID ermittelt.

q Die Beauftragung kann unabhängig vom Zustand der Master- oder Slaveachse zu jedem Zeitpunkt durchgeführt werden.


MC_GearIn

Der FB MC_GearIn kommandiert eine Getriebekopplung mit einer Getriebeübersetzung. Die Getriebe-Übersetzung definiert das Geschwindigkeitsverhältnis zwischen Master- und Slaveachse. Die Synchronisierung auf Geschwindigkeit erfolgt ruckbegrenzt. Der Ruckwert ist am FB als Input anzugeben.

Die Slaveachse kann entweder auf Mastersollwerte oder auf Masteristwerte gekoppelt werden. Die Auswahl wird im Eingangsparameter Mode getroffen.

Für Testzwecke wurde außerdem ein automatischer Phasenausgleich implementiert. Aktiviert wird diese Funktion ebenfalls über den Parameter Mode. Nach erfolgreicher Geschwindigkeits-Synchronisierung (Istwert- oder Sollwert-Kopplung) erfolgt ein automatischer Phasenausgleich zwischen Master und Slave, basierend auf den Ist-Positionen beider Achsen. Ein Phasenoffset ungleich 0 kann momentan nicht eingestellt werden, d.h. für eine sinnvolle Synchronisierung müssen Master- und Slave-Koordinatensystem den selben Ursprung haben. Oder die Lagesynchronität muss vom SPS Programmierer durch den Aufruf eine MC_MoveSuperImposed explizit hergestellt wird.

Der automatische Phasenausgleich sollte, wenn überhaupt notwendig, nur für den Test, nicht jedoch für den Betrieb an einer Anlage verwendet werden. Hierbei muss jedoch das Verhalten bei der jeweiligen Achsmode-Kombination genau betrachtet werden.

Für die verschiedenen Achsmodi bei Master und Slave ergibt sich folgendes Verhalten beim automatischen Phasing:

- Master linear, Slave linear
Ein Phasenausgleich auf Master-Slave-Offset 0 wird durchgeführt

- Master modulo, Slave modulo
Ein Phasenausgleich auf Master-Slave-Offset 0 wird auf kürzestem Weg durchgeführt. Master und Slave sollten sinnvollerweise den selben Modulobereich besitzen. Wenn dies nicht der Fall ist, wird zur Fahrwegbestimmung der Modulobereich der Masterachse verwendet.

- Master modulo, Slave linear
Ein Phasenausgleich auf Master-Slave-Offset 0 wird durchgeführt. Der Fahrweg wird nicht modulo gerechnet.

- Master linear, Slave modulo
Ein Phasenausgleich auf Master-Slave-Offset 0 wird durchgeführt. Der Fahrweg wird nicht modulo gerechnet (da der Modulobereich der Masterachse (+231-1) bis (-231) ist).

Blockdiagramm

Parameter des FB

VAR_IN_OUT

Master

AXIS_REF

Achsreferenz der Masterachse

Slave

AXIS_REF

Achsreferenz der Slaveachse

VAR_INPUT

Execute

BOOL

Startet die Beauftragung mit steigender Flanke.

RatioNumerator

DINT

Zähler des Verhältnisses der Getriebeübersetzung

RatioDenominator

DINT

Nenner des Verhältnisses der Getriebeübersetzung

Acceleration

REAL

Wert der Beschleunigung. Dieser Wert ist immer positiv anzugeben.

Wertebereich [0.0, 2147483647.0]
Standard-Einheit [1mm/s2 bzw. 1°/s2]

Deceleration

REAL

Wert der Verzögerung. Dieser Wert ist immer positiv anzugeben.

Wertebereich [0.0, 2147483647.0]
Standard-Einheit [1mm/s2 bzw. 1°/s2]

Jerk

REAL

Wert des Rucks. Dieser Wert ist immer positiv anzugeben.

Wertebereich [0.0, 2147483647.0]
Standard-Einheit [1mm/s3 bzw. 1°/s3]

Mode

UDINT

Derzeit mögliche Werte sind:

0: (16#0) | Kopplungsart zwischen Master- und Slaveachse: Sollwertseitige-Kopplung. Automatischer Phasenausgleich: aus.
128: (16#80) | Kopplungsart zwischen Master- und Slaveachse: Istwertseitige-Kopplung.
256: (16#100) | Automatischer Phasenausgleich: ein. Darf nur für Testzwecke verwendet werden!

VAR_OUTPUT

InGear

BOOL

Die beauftragte Getriebekopplung ist hergestellt.

Error

BOOL

Ist TRUE, wenn ein Fehler im FB auftritt

ErrorID

WORD

Fehlerkennung

CommandAborted

BOOL

TRUE signalisiert, dass das Kommando durch eine andere Beauftragung abgebrochen wurde.

Verhalten des FB:

q Die Beauftragung zur Getriebekopplung kann nur dann beauftragt werden, wenn die Slaveachse sich im Zustand Standstill oder Continuous Motion oder Discrete Motion oder Synchronized Motion befindet. Ist dies nicht Fall wird Ausgang Error FALSE und ErrorID zeigt einen Fehlerwert an, der den Zustand bezeichnet, in dem sich die Achse aktuell befindet.

q Der Wertebereich der Eingangsvariablen Acceleration, Deceleration, und Jerk wird überwacht und bei Überschreiten wird eine die Variable betreffende Fehlernummer am Ausgang ErrorID ausgegeben und Error auf TRUE gesetzt. Die Eingabevariable RatioDenominator ist der Nenner des Getriebeverhältnisses, weshalb dieses ungleich 0 sein muss. Im Fehlerfall RatioDenominator = 0 wird die ErrorID 44040 (ERR_PO_AX_RATIO_DENOM_ZERO) ausgegeben und Error TRUE.

q Als Ruck sind Werte sinnvoll, die einer minimalen Rampenzeit von TA (Zykluszeit des IPO, z.B. 2 ms) und einer maximalen Rampenzeit von 100s entsprechen. Bei der minimalen Rampenzeit von TA liegt der Grenzübergang zur nicht ruckbegrenzten Geschwindigkeitsführung. Bei einem Wert von 0 wird zur Bestimmung des Rucks die maximale Rampenzeit aus dem Achs-MDS verwendet.

q Der Baustein ist retriggerbar. Er kann also im aktiven Zustand erneut eine Beauftragung abschicken.

q Damit eine Achse als Cam- bzw. Gear-Masterachse arbeitet und die notwendigen Synchronisationsinformationen an alle Achsen (Slaves) zyklisch überträgt, muss für eine solche Masterachse in der Achsparameterkonfiguration der Parameter cam_gear.is_master auf 1 gesetzt werden. Eine als Master konfigurierte Achse kann gleichzeitig auch als Slave mit einer anderen Masterachse gekoppelt sein.

q Der MC_GearIn FB kann für lineare und rotatorische Slaveachsen angewendet werden. Bei linearen Slaveachsen ist die Softwareendschalterüberwachung nach erfolgtem Homing aktiv. Beim Bremsen auf den SWE wird die Stromgrenzen Rampe verwendet und die Gear- Koppelung gelöst.

q In allen anderen Situationen ist die Gear- Koppelung heilig, das bedeutet, dass achsspezifisches Feedhold, achsspezifischer Override auf den Gearing Slave NICHT wirken können, weil dies im Widerspruch zur Koppelvorschrift stünde.

q Ähnlich ist die Situation bei Not-Aus: In der aktuellen Realisierung erfährt die MCE ausschließlich über die Antriebsschnittstelle von einer Not-Aus Situation. Bei einem Not-Aus wird die GearKopplung aufgelöst und mit der Stromgrenze, die im Achs_mds Parameter: getriebe[0].lslope_profil.a_grenz_stufe_1 eingetragen ist, gebremst. Dieses Standard verhalten bei Not-Aus kann mit dem Parameter cam_gear.keep_coupling_on_lr_erroraußer Kraft gesetzt werden. Dann ist die Gear-Koppelung selbst im Not-Aus Fall sichergestellt solange der Antrieb noch den Sollwerten folgt. Ähnlich ist die Situation beim Abfallen des Enable Feed Watchdog; dies führt zu einem Fehler für gekoppelte Slaveachsen, da die Bewegungsverhinderung, da es sich um eine Sicherheitsfunktion handelt, eine höhere Priorität als die GearKopplung hat. Dieses Standard verhalten beim Abfallen des Feed-Enable-Watchdog kann mit dem Parameter cam_gear.keep_coupling_on_fe_drop außer Kraft gesetzt werden. Dann ist die Gear-Koppelung selbst im Fall eines abgefallenen Feed-Enable-Watchdog sichergestellt.

q Mit dem Eingangsparameter Mode kann eingestellt werden, ob die Master-Slave-Kopplung mit den Istwerten oder den Sollwerten des Masters erfolgen soll und ob ein automatisches Phasing nach Geschwindigkeitssynchronisierung erfolgen soll.

Jede SAI-Achse kann als Slaveachse betrieben werden. Folgende Standard-Achsparameter sind in einer Slaveachse sowohl bei der Istwertkopplung als auch bei der Sollwertkopplung einzustellen:

- cam_gear.v_diff_percent

- cam_gear.time_in_window

- cam_gear.time_out_in_window

- cam_gear.v_max_slave

- cam_gear.a_max_slave

- getriebe[0].vb_min_null

Bei einer Istwertkopplung müssen in der Slaveachse noch folgende Parameter eingestellt werden:

Filterung der Masteristwerte

- cam_gear.mv_type
Digitales FIR Filter ein/aus.

- cam_gear.mv_nbr_cycles
Anzahl der Werte, über die gefiltert wird.

Totzeitkompensation für konstante Geschwindigkeit bei Istwertkopplung

- cam_gear.delay_time
Die Totzeit-Kompensation bewirkt, dass sich bei konstanter Geschwindigkeit und einem Kopplungsverhältnis von 1 immer die selbe Phasenlage zwischen Master und Slave ergibt. In Phasen nicht konstanter Geschwindigkeit ist die Kompensation fehlerbehaftet. Die Totzeit sollte experimentell bestimmt werden.

Bei der Beautragung eines automatischen Phasenausgleichs (Istwert- oder Sollwertkopplung) sind im Slave zusätzlich noch folgende Achsparameter einzustellen:

- cam_gear.v_phasing
Geschwindigkeit der überlagerten Bewegung für den Phasenausgleich.

- cam_gear.a_phasing
Beschleunigung der überlagerten Bewegung für den Phasenausgleich.

- cam_gear.d_phasing
Verzögerung der überlagerten Bewegung für den Phasenausgleich.

- cam_gear.j_phasing
Ruck der überlagerten Bewegung für den Phasenausgleich.


MC_GearOut

Der FB MC_GearOut löst die Koppelung der Slaveachse an die Masterachse, welche durch die Vorgabe eines Geschwindigkeitsverhältnisses hergestellt wurde. Die aktuelle Geschwindigkeit des Slave wird beibehalten (Endlosbewegung).

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Slave | AXIS_REF | Achsreferenz der Slaveachse
VAR_INPUT
 | Execute | BOOL | Startet die Auflösung der Geschwindigkeitskoppelung mit steigender Flanke.
VAR_OUTPUT
 | Done | BOOL | Die Geschwindigkeitskoppelung der Slaveachse ist aufgelöst.
 | Error | BOOL | Ist TRUE, wenn ein Fehler im FB auftritt
 | ErrorID | WORD | Fehlerkennung

Verhalten des FB:

q Die Beauftragung zur Aufhebung der Getriebekoppelung wird nur dann kommandiert, wenn sich die Achse im Zustand Synchronized Motion befindet. Ist dies nicht Fall wird Ausgang Error FALSE und ErrorID zeigt einen Fehlerwert an, der den Zustand bezeichnet, in dem sich die Achse aktuell befindet.

q Hier sei nochmals auf die (eigenwillige) Festlegung des PLCopen-Standards, dass die beauftragte Slaveachse nach Aufhebung der Koppelung in ihrer momentanen Geschwindigkeit verbleibt. Also nicht notwendigerweise stehen bleibt.

q Der Baustein ist retriggerbar, kann also einen Auftrag absetzen, wenn er sich im aktiven Zustand befindet.


MC_Phasing

Der FB MC_Phasing wird dazu benutzt, um eine Verschiebung der Slaveachse bezüglich der Masterachse zu erreichen. Dazu wird aus Sicht der Slaveachse eine Phasenverschiebung der Masterachse vorgegeben und die Slaveachse versucht durch Beschleunigung oder Verzögerung diese Verschiebung zu beseitigen. Die Bewegung wird immer ruckbegrenzt mit dem in Jerk eingestellten konstanten Ruck ausgeführt. Der Wert gilt sowohl für das Beschleunigen mit Acceleration, als auch für das Bremsen mit Deceleration.

Das mechanische Analogon ist die Lösung der Kopplung von Masterachse und Slaveachse für einen begrenzten Zeitraum.

Beim Cam bewirkt dieser FB eine Veränderung der scheinbaren Masterposition aus Sicht des Slaves. Beim Gearing wird eine Phasenverschiebung zwischen Master und Slave durch Beauftragung einer überlagerten Bewegung im Slave veranlasst. Der MC_Phasing wirkt beim Gering somit also wie ein MC_MoveSuperImposed (in den er steuerungsintern tatsächlich umgewandelt wird).

Die Dynamikwerte: Velocity, Acceleration und Deceleration beziehen sich beim Cam auf das Verändern der scheinbaren Masterposition aus Sicht des Slaves, während sie sich beim Gearing auf die überlagerte Bewegung der Slaveachse selbst beziehen.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Master | AXIS_REF | Achsreferenz der Masterachse
 | Slave | AXIS_REF | Achsreferenz der Slaveachse
VAR_INPUT
 | Execute | BOOL | Startet die Beauftragung mit steigender Flanke.
 | PhaseShift | REAL | Phasenverschiebung, die mit der Position, die die Slaveachse von der Masterachse sieht, verrechnet wird und dann der Slaveachse als Masterachsposition weitergeleitet wird. Wertebereich [-2147483648.0, 2147483647.0] Standard-Einheit [0,1µm bzw. 10-4 °]
 | Velocity | REAL | Maximaler Wert der Geschwindigkeit die bei der Erzeugung der Phasenverschiebung erreicht werden darf. Dieser Wert ist immer positiv anzugeben. Die Geschwindigkeit wird nicht zwangsläufig erreicht. Wertebereich [0.0, 2147483647.0] Standard-Einheit [1µm/s bzw. 10-3 °/s]
 | Acceleration | REAL | Maximaler Wert der Beschleunigung. Dieser Wert ist immer positiv anzugeben. Wertebereich [0.0, 2147483647.0] Standard-Einheit [1mm/s2 bzw. 1°/s2]
 | Deceleration | REAL | Maximaler Wert der Verzögerung. Dieser Wert ist immer positiv anzugeben. Wertebereich [0.0, 2147483647.0] Standard-Einheit [1mm/s2 bzw. 1°/s2]
 | Jerk | REAL | Maximaler Wert des Rucks. Dieser Wert ist immer positiv anzugeben. Wertebereich [0.0, 2147483647.0] Standard-Einheit [1mm/s3 bzw. 1°/s3]
VAR_OUTPUT
 | Done | BOOL | Die beauftragte Phasenverschiebung ist hergestellt.
 | CommandAborted | BOOL | TRUE signalisiert, dass das Kommando durch eine andere Beauftragung abgebrochen wurde.
 | Error | BOOL | Ist TRUE, wenn ein Fehler im FB auftritt
 | ErrorID | WORD | Fehlerkennung

Verhalten des FB:

q Die Beauftragung zur Phasenverschiebung kann nur dann beauftragt werden, wenn die Slaveachse sich im Zustand Synchronized Motion befindet.

q Ist dies nicht Fall wird Ausgang Error FALSE und ErrorID zeigt einen Fehlerwert an, der den Zustand bezeichnet, in dem sich die Achse aktuell befindet.

q Der Wertebereich der Eingangsvariablen PhaseShift, Velocity, Acceleration, Deceleration, und Jerk wird überwacht und bei Überschreiten wird eine die Variable betreffende Fehlernummer am Ausgang ErrorID ausgegeben und Error auf TRUE gesetzt.

q Als Ruck sind Werte sinnvoll, die einer minimalen Rampenzeit von TA (Zykluszeit des IPO, z.B. 2 ms) und einer maximalen Rampenzeit von 100s entsprechen. Bei der minimalen Rampenzeit von TA liegt der Grenzübergang zur nicht ruckbegrenzten Geschwindigkeitsführung. Bei einem Wert von 0 wird zur Bestimmung des Rucks die maximale Rampenzeit aus dem Achs-MDS verwendet.

q Der Baustein ist retriggerbar, kann also einen Auftrag absetzen, wenn er sich im aktiven Zustand befindet.


MC_ReadParameter

Dieser Funktionsbaustein entspricht dem in PLCopen beschriebenen Funktionsbaustein zum Lesen von Parametern.

In der aktuellen Implementierung können nur Parameter aus den Achslisten (achsmdsX.lis) gelesen werden. Default-Listen (default_achs_mds.lis) werden nicht unterstützt.

Es wird standardmäßig der Parametersatz 0 und der Listentyp ACHS_MDS verwendet.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Enable | BOOL | Muss den Wert TRUE besitzen, um kontinuierliches Lesen zu starten.
 | ParameterNumber | STRING | Kennung des Parameters, dessen Wert gelesen werden soll. z.B. kenngr.swe_pos
 | ParameterType | STRING | Art des Parameters der gelesen werden soll. Derzeit: ACHS_MDS
VAR_OUTPUT
 | Valid | BOOL | Ist TRUE, wenn der Parameterwert erfolgreich gelesen werden konnte.
 | Busy | BOOL | Ist TRUE, wenn der FB noch aktiv ist.
 | Error | BOOL | Zeigt an, ob innerhalb des FB ein Fehler aufgetreten ist.
 | ErrorID | WORD | Fehlerkennung
 | Value | STRING | Parameterwert aus der Originalliste.
 | InternalErrorID | UDINT | Interne Fehlerkennung der ISG-MCP.

Verhalten des FB:

q Das Verhalten des FB entspricht dem Verhalten des Funktionsbausteins MCV_ReadParamValue.


MC_WriteParameter

Dieser Funktionsbaustein entspricht dem in PLCopen beschriebenen Funktionsbaustein zum Schreiben von Parametern.

Beim Schreiben eines Parameters mit diesem Funktionsbaustein werden 3 Schritte durchgeführt:

1) Schreiben des Parameterwerts in die Arbeitsliste

2) Aktivieren der Arbeitsliste (Parameter werden in der ISG-MCP wirksam)

3) Zurücksichern der Arbeitsliste in die Originalliste

Dies bedeutet, dass ein Parameterwert, der mit diesem FB geschrieben wird auch sofort wirksam und dauerhaft gespeichert wird.

Um mehrere Parameterwerte konsistent zu schreiben, ist dieser FB nicht geeignet. In diesem Falle müssen die Funktionsbausteine MCV_ChgParamValue, MCV_ActivateParamChg und MCV_SaveParamChg verwendet werden.

In der aktuellen Implementierung können nur Parameter in die Achslisten (achsmdsX.lis) geschrieben werden. Default-Listen werden nicht unterstützt.

Während dem Schreibvorgang muss sich die Achse im Stillstand befinden und es darf keine Bewegungsbeauftragung für die Achse gestartet sein oder gestartet werden. Die Achse darf erst wieder verfahren werden, nachdem der Parameter geschrieben und der neue Wert in der Steuerung wirksam ist (Output Done = TRUE).

Dieser Funktionsbaustein benötigt für das Ändern eines Parameters eine Originalliste, die ohne Warnungen und Fehlermeldungen von der Steuerung eingelesen werden kann.

Es wird standardmäßig der Parametersatz 0 und der Listentyp ACHS_MDS verwendet.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Execute | BOOL | Muss den Wert TRUE besitzen, den Wert des Parameters zu schreiben.
 | ParameterNumber | STRING | Kennung des Parameters, dessen Wert geschrieben werden soll. z.B. kenngr.swe_pos
 | ParameterType | STRING | Art des Parameters der geschrieben werden soll. Derzeit: ACHS_MDS
 | Value | STRING | Neuer Wert des Parameters
VAR_OUTPUT
 | Done | BOOL | Ist TRUE, wenn der Parameterwert erfolgreich geschrieben werden konnte.
 | Busy | BOOL | Ist TRUE, wenn der FB noch aktiv ist.
 | Error | BOOL | Zeigt an, ob innerhalb des FB ein Fehler aufgetreten ist.
 | ErrorID | WORD | Fehlerkennung
 | InternalErrorID | UDINT | Interne Fehlerkennung der ISG-MCP.

Verhalten des FB:

Häufige Fehlerursache der ISG-MCP sind fehlende Schreibrechte oder eine schreibgeschützte Arbeitsliste bzw. Originalliste, da in diesen Fällen eine Arbeitsliste nicht angelegt bzw. eine Originalliste nicht ersetzt werden kann.


MC_SetPosition

Der Funktionsblock verschiebt das Koordinatensystem einer Achse indem er sowohl die Sollposition als auch die Istposition auf denselben Positionswert ändert, der am Eingang Position anliegt. Die Achse wird dabei nicht bewegt.

Damit der Baustein seine Funktion erfüllen kann, muss in der jeweiligen Achsparameterliste der Parameter kenngr.set_refpos_mode (P-AXIS-00278) folgendermaßen belegt werden:

kenngr.set_refpos_mode PLC

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Execute | BOOL | Startet die Beauftragung mit steigender Flanke.
 | Position | REAL | Position, die als Soll- und Istposition übernommen werden soll, wenn am Eingang Execute eine steigende Flanke detektiert wird. Wertebereich [-2147483648.0, 2147483647.0] Standard-Einheit [0,1µm bzw. 10-4 °].
VAR_OUTPUT
 | Done | BOOL | Ist TRUE, wenn die Position erfolgreich übernommen werden konnte.
 | Error | BOOL | Zeigt an, ob innerhalb des FB ein Fehler aufgetreten ist.
 | ErrorID | WORD | Fehlerkennung


MC_SetOverride

Über den FB MC_SetOverride wird ein Wichtungsfaktor vorgegeben, der auf die kommandierte Geschwindigkeit der Achse wirkt.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Enable | BOOL | Ist der Wert TRUE, wird der Wichtungsfaktor auf die kommandierte Geschwindigkeit angewendet.
 | VelFactor | REAL | Wichtungsfaktor in 0,1% Wertebereich [0.0 .. P-AXIS-00109 / 1000]
VAR_OUTPUT
 | Enabled | BOOL | Ist der Wert TRUE, wird der am Eingang VelFactor anliegende Wert kontinuierlich auf die Achse angewendet.
 | Error | BOOL | Ist TRUE, wenn ein Fehler im FB auftritt
 | ErrorID | WORD | Fehlerkennung

Verhalten des FB:

q Diese Funktion wirkt nicht auf Achsen, die sich im Zustand SYNCHRONIZED_MOTION befinden !

Anmerkung: Im Umfeld typischer Verpackungsapplikationen finden sich häufig ineinander greifende Maschinen-Bauteile, die mittels Cam/Gear  Koppelung angesteuert werden. Ein Verlust der Kopplungs-Synchronität kann dabei zu schwersten Maschinenschäden führen. Deshalb ist in der Realisierung grundsätzlich die Cam/Gear - Koppelung heilig, das bedeutet, dass achsspezifisches Feedhold, achsspezifischer Override auf den Cam/Gear Slave NICHT wirken können, weil dies im Widerspruch zur Koppelvorschrift stünde.

q Die Vorgabe des Wichtungsfaktors kann immer dann erfolgen, wenn die ISG-MCP korrekt initialisiert wurde.

q Ist der Wert am Eingang VelFactor größer als P-AXIS-00109/1000, wird er ohne weitere Meldung auf P-AXIS-00109/1000 begrenzt (typischer Wert für die Obergrenze ist 200%).

q Der über den Eingang VelFactor vorgegebene Wert wird zyklisch auf die Achse angewendet, solange der Eingang Enable TRUE ist. Wird Enable von TRUE auf FALSE gesetzt, wirkt als Geschwindigkeitsfaktor der Wert, der beim Übergang von Enable am Eingang VelFactor anlag.


MC_Halt

Der FB MC_Halt führt zu einem gesteuerten Bewegungshalt. Der Bewegungshalt wird immer ruckbegrenzt mit dem in Jerk eingestellten konstanten Ruck für den Aufbau der Bremsverzögerung ausgeführt. Er bricht jede laufende Beauftragung durch andere Bewegungs-FBs ab. Im Gegensatz zum FB MC_Stop kann ein beauftragter MC_Halt durch eine Beauftragung mit einem anderen Bewegungs-FB abgebrochen werden. Dabei wird der Ausgang CommandAborted auf TRUE gesetzt.

Der FB MC_Halt setzt den Ausgang Done, sobald die Achse steht.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Execute | BOOL | Startet die Beauftragung mit steigender Flanke.
 | Deceleration | REAL | Wert der Verzögerung. Dieser Wert ist immer positiv anzugeben. Wertebereich [0. 0, 2147483647.0] Standard-Einheit [1mm/s2 bzw. 1°/s2]
 | Jerk | REAL | Wert des Rucks. Dieser Wert ist immer positiv anzugeben. Wertebereich [0. 0, 2147483647.0] Standard-Einheit [1mm/s3 bzw. 1°/s3]
VAR_OUTPUT
 | Done | BOOL | Geschwindigkeit 0 wurde erreicht.
 | CommandAborted | BOOL | TRUE signalisiert, dass das Kommando durch eine andere Beauftragung abgebrochen wurde.
 | Error | BOOL | Ist TRUE, wenn ein Fehler im FB auftritt
 | ErrorID | WORD | Fehlerkennung

Verhalten des FB:

q Die Eingangsvariablen Deceleration und Jerk werden innerhalb des FB nur auf ihren Wertebereich überwacht. Bei Überschreiten wird eine die Variable betreffende Fehlernummer am Ausgang ErrorID ausgegeben und Error auf TRUE gesetzt. Darüber hinaus findet eine Begrenzung der Verzögerung findet innerhalb des Motion Controllers statt. Wird eine Verzögerung größer als getriebe[0].dynamik.a_max kommandiert, so wird die Bewegung trotzdem durchgeführt, die Werte werden jedoch auf die parametrierten Werte begrenzt und eine Warnung wird ausgegeben.

q Als Ruck sind Werte sinnvoll, die einer minimalen Rampenzeit von TA (Zykluszeit des IPO, z.B. 2 ms) und einer maximalen Rampenzeit von 100s entsprechen. Bei der minimalen Rampenzeit von TA liegt der Grenzübergang zur nicht ruckbegrenzten Geschwindigkeitsführung. Bei einem Wert von 0 wird zur Bestimmung des Rucks die maximale Rampenzeit aus dem Achs-MDS verwendet.


SPS-Bibliothek McpPLCopenP1" - ISG Erweiterungen

TwinCAT CNC: Überblick

SPS-Bibliothek McpPLCopenP1  ISG Erweiterungen

Die in diesem Kapitel beschriebenen Funktionsbausteine bieten zusätzliche Funktionen zu den Standard PLCopen-Bausteinen. Sie befinden sich ebenfalls in der Bibliothek, in der die PLCopen-Bausteine Function blocks for motion control angesiedelt sind.

Mehr:

button Übersicht der zusätzlichen ISG FBs

button MCV_CamSwitch

button MCV_TorqueLimit

button MCV_RmvPlug

button MCV_SetFollowUp

button MCV_SetDriveMode

button MCV_SetTorqueValue

button MCV_PosLagMonitor

button MCV_Home

button MCV_DisableFeedbackMon

button MCV_ChgParamSet

button MCV_ReqParamSetId

button MCV_ChgParamValue

button MCV_ActivateParamChg

button MCV_SaveParamChg

button MCV_ReadParamValue

button MCV_DiscardParamChg

button MCV_UnHome

button MCV_DeactivateAxis

button MCV_UpdateDriveData

button MCV_Decouple

button MCV_Couple

button MCV_ConveyorControl

button MCV_SetReducedFilter

button MCV_SuppressSoftLimSw

button MCV_TorqueFreeStop


Übersicht der zusätzlichen ISG FBs

Die folgende Tabelle gibt eine Übersicht über die Verfügbarkeit der von ISG zusätzlich bereitgestellten FBs für die von ISG unterstützten SPS- bzw. Antriebssystemen.

FB | SPS-Systeme
 | KW | 3S | TwinCat
MCV_CamSwitch | SIMU DSE SERCOS | SIMU - SERCOS | SIMU
MCV_TorqueLimit | - DSE SERCOS | - - SERCOS | SIMU
MCV_SetFollowUp | SIMU DSE - | SIMU - - | SIMU
MCV_SetDriveMode | - DSE SERCOS | - - SERCOS | SIMU
MCV_SetTorqueValue | - DSE SERCOS | - - SERCOS | SIMU
MCV_PosLagMonitor | - DSE - | - - - | SIMU
MCV_Home | - - - | - - - | SIMU
MCV_DisableFeedbackMon | - DSE - | - - - | SIMU
MCV_ChgParamSet | SIMU DSE SERCOS | SIMU 1) - SERCOS 1) | SIMU
MCV_ReqParamSetId | SIMU DSE SERCOS | SIMU 1) - SERCOS 1) | SIMU
MCV_ChgParamValue | SIMU DSE SERCOS | SIMU 1) - SERCOS 1) | SIMU
MCV_ActivateParamChg | SIMU DSE SERCOS | SIMU 1) - SERCOS 1) | SIMU
MCV_SaveParamChg | SIMU DSE SERCOS | SIMU 1) - SERCOS 1) | SIMU
MCV_ReadParamValue | SIMU DSE SERCOS | SIMU 1) - SERCOS 1) | SIMU
MCV_DiscardParamChg | SIMU DSE SERCOS | SIMU 1) - SERCOS 1) | SIMU
MCV_UnHome | - DSE - | - - - |
MCV_DeactivateAxis | - DSE - | - - - |
MCV_UpdateDriveData | - DSE - | - - - |
MCV_Decouple | - DSE - | - - - |
MCV_Couple | - DSE - | - - - |
MCV_ConveyorControl 1) | SIMU DSE SERCOS | SIMU - SERCOS | SIMU - SERCOS
MCV_ SetReducedFilter | SIMU DSE SERCOS | SIMU - SERCOS | SIMU - SERCOS
MCV_SuppressSoftLimSw | SIMU DSE SERCOS | SIMU - SERCOS | SIMU - SERCOS
MCV_TorqueFreeStop | - - SERCOS | - - SERCOS | -

1) Verfügbarkeit ist abhängig von der eingesetzten MCE.


MCV_CamSwitch

Der FB MCV_CamSwitch realisiert den Ausgang eines nockengesteuerten Schalters der einer Achse zugeordnet ist. Dabei ist der Bereich des Nocken frei parametrierbar.

Den FB-internen Berechnungen liegt ein Modulo-Koordinatensystem mit dem Wertebereich [0, 3600000] 0,1 µm bzw. 10-4 ° zu Grunde.

Zusätzlich muss die Voraussetzung erfüllt sein, dass von der Achse je SPS-Zyklus nicht mehr als der halbe Modulowertebereich zurückgelegt wird.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Enable | BOOL | Aktiviert den nockengesteuerten Schalter.
 | FirstOnPosition | DINT | Position der Achse, bei der der Ausgang des nockengesteuerten Schalters von FALSE auf TRUE wechselt, wenn sich die Achse in positive Richtung bewegt. Standard-Einheit [0,1µm bzw. 10-4 °]
 | LastOnPosition | DINT | Position der Achse, bei der der Ausgang des nockengesteuerten Schalters von TRUE auf FALSE wechselt, wenn sich die Achse in positiver Richtung bewegt. Standard-Einheit [0,1µm bzw. 10-4 °]
 | CompTime | DINT | Kompensationszeit, um welche die Einschaltphase des Schalters vorgezogen oder verzögert wird. Standard-Einheit [1ms]
 | PosType | INT | Auswahl ob Soll- oder Istposition der Achse zum Vergleich mit den Eingangsgrößen und zur Berechnung der durch die Kompensationszeit veränderten Einschalt-/Ausschaltposition herangezogen werden soll. 0: Sollposition der Achse (ACTIVE_POS) 1: Istposition der Achse (CURRENT_POS)
VAR_OUTPUT
 | Active | BOOL | Zeigt an dass das der nockengesteuerte Schalter aktiv ist.
 | State | BOOL | Ausgang des nockengesteuerten Schalters. Der Ausgang ist TRUE, wenn der Wert der Achsposition zwischen FirstOnPosition und LastOnPosition liegt die Achsposition zum Zeitpunk t0vor und dem darauffolgenden t1hinter dem durch FirstOnPosition und LastOnPosition aufgespannten Bereich liegt. Das Signal liegt dann mindestens 1 SPS-Zyklus lang auf TRUE.
 | Error | BOOL | Ist TRUE, wenn ein Fehler im FB auftritt
 | ErrorID | WORD | Fehlerkennung
 | Pulsed | BOOL | Dient zu Visualisierungszwecken. Wird der Ausgang State TRUE, zeigt der Ausgang Pulsed für 1s ebenfalls TRUE.

Verhalten des FB:

q Eingabewerte für FirstOnPosition und LastOnPosition, die kleiner als der untere Grenzwert des Modulo-Koordinatensystems sind, werden auf den unteren Grenzwert gesetzt, Eingabewerte die größer als der obere Grenzwert sind, auf den oberen Grenzwert. Dies erfolgt ohne Rückmeldung intern im FB.

q Die Vorgabe einer Kompensationszeit führt im FB zu einer Modifikation der durch FirstOnPosition und LastOnPosition definierten Schaltpositionen. Falls sich für die modifizierten Schaltpositionen Werte ergeben, die außerhalb des Wertebereichs des Modulo-Koordinatensystems liegen, werden diese auf Werte innerhalb des Wertebereichs umgerechnet. Dies erfolgt ohne Rückmeldung intern im FB.

q Die Modifikation der Schaltpositionen durch Vorgabe einer Kompensationszeit wird unmittelbar in dem SPS-Zyklus durchgeführt in dem sie am Eingang CompTime übergeben wurde und wirkt sofort in vollem Umfang.

q Die Vorgabe der Kompensationszeit CompTime wirkt auf die FirstOnPosition und LastOnPosition gleichermaßen. Positive Werte für CompTime führen dazu, dass sich der Ausgang State zeitlich verzögert zum Erreichen einer Schaltposition ändert. Negative Werte führen dazu, dass sich der Ausgang State vor Erreichen der Schaltposition ändert.

Bild 3-1: Auswirkung der Kompensationszeit auf Schaltzeitpunkte

q Verhalten des Ausgang State des nockengesteuerten Schalters und der Lage der Positionen, die an die Eingänge FirstOnPosition und LastOnPosition übergeben werden. Die Achse bewegt sich dabei in positiver Richtung von unterer Grenze des Modulo-Koordinatensystems zu der oberen Grenze.

Fall 1: FirstOnPosition < LastOnPosition

Bild 3-2: Verhalten von Ausgang State wenn FirstOnPosition < LastOnPosition

Fall 2: FirstOnPosition > LastOnPosition

Bild 3-3: Verhalten von Ausgang State wenn FirstOnPosition < LastOnPosition

q Der FB berücksichtigt 2 Sonderfälle, die sich aus der Tatsache ergeben, dass es sich bei dem SPS-System um ein diskretes System handelt. Diese sind:

- Die Achsposition zum Zeitpunkt tn liegt vor der Einschaltposition, und zum Zeitpunkt tn+1 nach der Ausschaltposition. Der Schaltbereich ist also kleiner als der in einem SPS-Zyklus zurückgelegte Weg der Achse.

- Liegt zum Zeitpunkt tn die Achsposition vor der Einschaltposition kann sich durch Vorgabe einer Kompensationszeit die Situation ergeben, dass die Achsposition zum Zeitpunkt tn+1 durch die Modifikation der Einschaltpunkte nach der Ausschaltposition liegt.

q Bei diesen Sonderfällen wird der Ausgang State für mindestens einen SPS-Takt TRUE, obwohl innerhalb einer Umdrehung der Achse nicht detektiert wurde, dass sich die Achsposition zwischen den Schaltpositionen befunden hat.


MCV_TorqueLimit

Der FB MCV_TorqueLimit begrenzt das maximale Drehmoment des Antriebs für jede Bewegungsrichtung unabhängig von einander.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Enable | BOOL | Ist Enable TRUE, ist die Drehmomentbegrenzung wirksam.
 | TorqueLimitPositive | INT | Maximales Drehmoment des Antriebs, das bei positiver Bewegungsrichtung auftreten darf. Standard-Einheit [0,1%]
 | TorqueLimitNegative | INT | Maximales Drehmoment des Antriebs, wenn das bei negativer Bewegungsrichtung auftreten darf. Standard-Einheit [0,1%]
VAR_OUTPUT
 | ActualTorque | INT | Aktuell wirksames Drehmoment des Antriebs. Standard-Einheit [0,1%]
 | LimitActive | BOOL | Die Drehmomentbegrenzung ist aktiviert.
 | LimitReachedPositive | BOOL | Das maximale Drehmoment für die positive Bewegungsrichtung ist erreicht
 | LimitReachedNegative | BOOL | Das maximale Drehmoment für die negative Bewegungsrichtung ist erreicht
 | Error | BOOL | Ist TRUE, wenn ein Fehler im FB auftritt
 | ErrorID | WORD | Fehlerkennung

Verhalten des FB:

q Die Beauftragung der Drehmomentbegrenzung kann immer dann erfolgen, wenn die ISG-MCP korrekt initialisiert wurde.

q Die Drehmomentbegrenzung ist für jede Bewegungsrichtung der Achse getrennt anzugeben. Wird kein Wert für die Drehmomentgrenze über die Eingänge torque_limit_pos bzw. torque_limit_neg angegeben, ist der Standardwert 100% durch den FB vorgegeben. Eingangswerte kleiner als 0% und Werte größer als 100% werden ohne weitere Rückmeldung auf 0% bzw. 100% umgesetzt.

q Zum Deaktivieren der Schleppabstandüberwachung wird der FB MVC_PosLagMonitor verwendet.

q Die Ausgänge limit_reached_pos und limit_reached_neg werden dann TRUE, wenn das aktuell wirkende Drehmoment mindestens 95% des Drehmoments entspricht, das über diesen FB beauftragt wurde.


MCV_RmvPlug

Mit dem FB MCV_RmvPlug wird überprüft, ob und welche der 16 Achsschnittstellen durch nicht quittierte Aufträge der PLCopen-FB blockiert sind. Nach erfolgter Überprüfung können detektierte Blockierungen unter Verwendung dieses FB entfernt werden.

Der FB dient zu Diagnosezwecken und ist nur während der Entwicklungsphase eines Projektes zu verwenden.

Blockdiagramm

Parameter des FB

VAR_INPUT
 | check_plug | BOOL | Startet die Überprüfung, welche der maximal 16 Achsschnittstellen durch einen von der SPS nicht quittierten Auftrag blockiert ist.
 | clear_all_plugs | BOOL | Quittiert alle die Aufträge, die eine Achsschnittstelle blockieren.
 | clear_ax_01 | BOOL | Mit diesen 16 Eingängen kann für jede Achse separat die Blockierung ihrer Achsschnittstelle durch einen nicht quittierten Auftrag behoben werden.
 | clear_ax_16 | BOOL
VAR_OUTPUT
 | any_blocked | BOOL | Ist TRUE, wenn nach dem Start der Überprüfung der Achsschnittstellen auf irgendeiner Achsschnittstelle die Blockierung durch einen nicht quittierten Auftrag detektiert wurde.
 | highest_id_blocked | BOOL | Zeigt die Ordnungsnummer der Achse mit der größten Nummer an, die durch einen nicht quittierten Auftrag blockiert ist.
 | blocked_ax_01 | BOOL | Es existieren 16 Ausgänge, wobei jeder für genau eine Achse anzeigt, ob diese durch einen nicht quittierten Auftrag blockiert ist. Ist der Wert TRUE, ist die Achse blockiert.
 | blocked_ax_16 | BOOL

Verhalten des FB:

q Die Beauftragung des Bausteins ist unabhängig vom Zustand der Achse möglich.

q Über den Eingang check_plug wird die Überprüfung auf blockierte Achsschnittstellen gestartet. Eine Achsschnittstelle gilt als blockiert und damit unfähig die Abarbeitung anderer Beauftragungen der zugeordneten Achse zu melden, wenn mehr als 10 aufeinanderfolgende SPS-Zyklen ein Auftrag an der Schnittstelle als abgearbeitet anliegt, aber durch die SPS nicht quittiert wird. Der blockierende Auftrag wird durch seine Ordnungsnummer identifiziert und diese gespeichert.

q Der Ausgang any_blocked wird TRUE, wenn mindestens eine Achsschnittstelle blockiert ist.

q Ist eine Achse blockiert wird der einer Achse zugeordnete Ausgang blocked_ax_01 ... blocked_ax_16 TRUE.

q Ist irgendeine Achse blockiert, zeigt der Ausgangs highest_id_blocked die größte Ordnungsnummer aller blockierten Achsen an.

q Über den Eingang clear_all_plugs wird für jede blockierte Achse genau der Auftrag durch diesen FB quittiert, dessen Ordnungsnummer für diese Achse gespeichert wurde.

q Über die Eingänge clear_ax_01 ... clear_ax_16 kann die Blockierung für jede Achse einzeln entfernt werden.


MCV_SetFollowUp

Mit dem FB MCV_SetFollowUp wird der Nachführbetrieb aktiviert bzw. deaktiviert.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Enable | BOOL | Ist Enable TRUE, ist der Nachführbetrieb aktiv.
VAR_OUTPUT
 | Active | BOOL | Nachführbetrieb ist aktiviert.
 | Error | BOOL | Ist TRUE, wenn ein Fehler im FB auftritt
 | ErrorID | WORD | Fehlerkennung

Verhalten des FB:

q Über den Eingang Enable wird der Nachführbetrieb aktiviert bzw. deaktiviert.

q Die Beauftragung des Nachführbetriebs während der Interpolation ist nicht möglich und führt zum Fehler mit der ErrorID 44051 (ERR_PO_AX_FOLLOW_UP_NOT_ALLOWED) im FB.


MCV_SetDriveMode

Mit dem FB MCV_SetDriveMode können unterschiedliche Betriebsarten eingestellt werden. Die möglichen Betriebsarten sind der unten stehenden Tabelle zu entnehmen.

Blockdiagramm

Parameter des FB

VAR_IN_OUT

Axis

AXIS_REF

Achsreferenz

VAR_INPUT

Execute

BOOL

Durch die steigende Flanke des Eingangssignals wird in die angegebene Betriebsart gewechselt.

DriveMode

INT

Derzeit unterstützte Betriebsarten:

(0) | Lageregelung
(1) | Geschwindigkeitsregelung
(2) | Momentenregelung
(3) | Lageregelung mit Momentenvorsteuerung

VAR_OUTPUT

ActiveDriveMode

BOOL

Der FB MCV_SetDriveMode ist aktiv.

ActualDriveMode

INT

Aktuelle Betriebsart.

Error

BOOL

Ist TRUE, wenn ein Fehler im FB auftritt

ErrorID

WORD

Fehlerkennung

Verhalten des FB:

q Damit während der Momentenregelung kein Schleppabstandsfehler auftritt, muss die Schleppabstandüberachwung deaktiviert werden (s. FB MCV_PosLagMonitor).

q Die Verwendung einer unzulässigen Betriebsart setzt den Ausgang Error auf TRUE. ErrorID erhält die Fehlerkennung 44049 (ERR_PO_AX_INVALID_DRIVE_MODE).

q Die Änderung der Betriebsart nach TorqueControl erfolgt nur, wenn sich die Achse im Zustand Standstill oder Continuous Motion oder Discrete Motion oder Synchronized Motion befindet. Ist dies nicht Fall wird Ausgang Error TRUE und ErrorID = 44050 (ERR_PO_AX_TNA_TORQUE_CTRL_ACTIVE).


MCV_SetTorqueValue

Mit dem FB MCV_SetTorqueValue wird der Wert für das maximale Drehmoment in ±0,1% eingestellt.

Blockdiagramm

Parameter des FB

 | VAR_IN_OUT
 |  | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 |  | Enable | BOOL | Aktiviert das eingegebene Drehmoment für die Betriebsart Momentenvorsteuerung.
 |  | TorqueValue | INT | Maximales Drehmoment in ±0.1%
VAR_OUTPUT
 |  | ActiveTorqueCommand | BOOL | Drehmoment ist aktiv.
 |  | ActualTorqueValue | INT | Aktuelles Drehmoment in ±0.1%
 |  | Error | BOOL | Ist TRUE, wenn ein Fehler im FB auftritt
 |  | ErrorID | WORD | Fehlerkennung

Verhalten des FB:

Die Eingabe des maximalen Drehmoments erfolgt im Wertebereich -1000 ≤ 0 ≤ +1000, die Einheit ist 0,1% des maximalen Drehmoments, jeweils in positiver bzw. negativer Drehrichtung.

Der eingegebene Wert ist aktiv, sobald Enable auf TRUE gesetzt ist. Bei dauerhafter Aktivierung des FB wird der eingegeben Wert sofort übernommen.


MCV_PosLagMonitor

Mit dem FB MCV_PosLagMonitor kann die Schleppabstandüberwachung deaktiviert werden. Standardmäßig ist die Schleppabstandüberwachung aktiv.

Blockdiagramm

Parameter des FB

 | VAR_IN_OUT
 |  | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 |  | Enable | BOOL | Ist Enable TRUE, ist der FB aktiv
 |  | DisableMonitoring | BOOL | Ist DisableMonitoring TRUE, dann ist die Schleppabstandsüberwachung deaktiviert
VAR_OUTPUT
 |  | IsDisabled | BOOL | Ist TRUE, wenn die Schleppabstandüberwachung deaktiviert ist
 |  | Error | BOOL | Ist TRUE, wenn ein Fehler im FB auftritt
 |  | ErrorID | WORD | Fehlerkennung

Verhalten des FB:

Das Eingangssignal DisableMonitoring dient als Ein-/Ausschalter für die Schleppabstandüberwachung. Aktiviert wird die Einstellung durch Enable. Eine Koppelung der beiden Eingänge ist möglich.


MCV_Home

Mit dem FB MCV_Home wird eine Referenzpunktfahrt (Justage) der Achse beauftragt. Der MCV_Home erweitert die Funktionalität des PLCOpen-FB MC_Home um einen zusätzlichen Eingang CamSignal, der als Signal für die Übernahme der Referenzposition ausgewertet wird. Üblicherweise ist die Signalquelle für CamSignal das Referenznockensignal des Antriebs.

Voraussetzung für die korrekte Funktion ist, dass der Parameter P-AXIS-00036 mit dem Wert 0 belegt ist. Ob die Übernahme der Referenzposition bei steigender oder fallender Flanke am CamSignal erfolgt wird über den Parameter P-AXIS-00038 festgelegt.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Execute | BOOL | Eine steigende Flanke am Eingang beauftragt eine Referenzpunktfahrt
 | CamSignal | BOOL | Signal zur Beauftragung der Übernahme der Referenzposition
VAR_OUTPUT
 | Done | BOOL | Bei TRUE ist die Referenzpunktfahrt abgeschlossen und die Achse befindet sich im Zustand Standstill.
 | CommandAborted | BOOL | TRUE signalisiert, dass das Kommando durch eine andere Beauftragung abgebrochen wurde.
 | Error | BOOL | Ist TRUE, wenn ein Fehler im FB auftritt
 | ErrorID | WORD | Fehlerkennung

Verhalten des FB:

q Die Beauftragung einer Referenzpunktfahrt ist nur zulässig, wenn sich die Achse im Zustand Standstill befindet. Ist dies nicht Fall wird Ausgang Error FALSE und ErrorID zeigt einen Fehlerwert an, der den Zustand bezeichnet, in dem sich die Achse aktuell befindet.

q Ist der FB aktiv, kann kein neuer Auftrag abgesetzt werden. Er ist nicht retriggerbar. Beim Versuch dies trotzdem zu tun, liefert der FB den Fehler 44007 (ERR_PO_AX_HOMING_RETRIGGERD).

q Unmittelbar nach der Beauftragung der Referenzpunktfahrt wechselt die Achse in den Zustand Homing.


MCV_DisableFeedbackMon

Mit dem FB MCV_DisableFeedbackMon kann die Motorgeberüberwachung deaktiviert werden, so dass z.B. online abgekoppelt werden kann.

Mit dem FB werden die folgenden DSE-Fehlermeldungen deaktiviert:

q Encoderfehler

q Istgeschwindigkeitsfehler

q Schleppfehler

q Resolverfehler

q Motortemperaturfehler

Standardmäßig ist die Motorgeberüberwachung aktiv.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Enable | BOOL | Ist dieser Eingang TRUE, wird die Motorgeberüberwachung deaktiviert, bei FALSE aktiviert.
VAR_OUTPUT
 | IsDisabled | BOOL | Ist TRUE, wenn die Motorgeberüberwachung deaktiviert ist.
 | Error | BOOL | Ist TRUE, wenn ein Fehler im FB auftritt.
 | ErrorID | WORD | Fehlerkennung


MCV_ChgParamSet

Parametersatz wechseln

Mit diesem Funktionsbaustein kann der Parametersatz einer Achse gewechselt werden. Der zu aktivierende Parametersatz muss bereits vorhanden sein und wird durch die Belegung des Eingangs NCParamSetIDIn ausgewählt. Diese Funktionalität wird beispielsweise bei einem Werkzeugwechsel benutzt, um die geänderten Werkzeugabmessungen im Motion Controller bekannt zu machen.

Während dem Parametersatzwechsel muss sich die Achse im Stillstand befinden und es darf keine Bewegungsbeauftragung für die Achse gestartet sein oder gestartet werden. Die Achse darf erst wieder verfahren werden, nachdem alle Parameter des neuen Parametersatzes eingelesen und in der Steuerung wirksam geworden sind (Valid = TRUE).

Beim Wechseln des Parametersatzes kann sich das Verhalten der Steuerung verändern. Es können dadurch sicherheitskritische Funktionen verändert bzw. deaktiviert werden.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Execute | BOOL | Das Wechseln eines Parametersatzes wird mit steigender Flanke durchgeführt.
 | NcListTypeIn | STRING | Kennung für Parameter- bzw. Listentyp z.B. ACHS_MDS
 | NcParamSetIDIn | UINT | Nummer des Parametersatzes, zu dem gewechselt werden soll. Der Wert 0 für die Parametersatz-ID bezeichnet den Standardparametersatz, der beim Hochlaufen des Motion Controllers interpretiert und aktiviert wird. Vorschrift für alternative Parametersätze bitte beachten.
VAR_OUTPUT
 | Valid | BOOL | Ist TRUE, wenn der Wechsel des Parametersatzes erfolgreich durchgeführt wurde.
 | Busy | BOOL | Ist TRUE, wenn der FB noch aktiv ist.
 | NCListTypeOut | STRING | Kennung für Parameter- bzw. Listentyp z.B. ACHS_MDS
 | NCParamSetIDOut | UINT | Nummer des Parametersatzes, zu dem gewechselt wurde/werden sollte.
 | NCParamConsistent | BOOL | Ist FALSE, wenn beim Wechsel des Parametersatzes in der ISG-MCP die Parameter nicht vollständig übernommen wurden.
 | NCWarning | BOOL | Ist TRUE, wenn in der ISG-MCP eine Warnung aufgetreten ist.
 | NCError | BOOL | Ist TRUE, wenn in der ISG-MCP während des Parametersatzwechsels ein Fehler aufgetreten ist.
 | NCErrorCode | UDINT | Fehlercode des in der ISG-MCP aufgetretenen Fehlers bzw. Warnung.
 | Error | BOOL | Ist TRUE, wenn der FB im Fehlerzustand ist. Der Wechsel des Parametersatzes wurde nicht erfolgreich durchgeführt.
 | ErrorID | WORD | Fehlerkennung

Verhalten des FB:

q Wenn Error = TRUE ist, ist der FB in einem Fehlerzustand. Der Parametersatzwechsel wurde nicht korrekt durchgeführt. Es ist entweder ein Fehler im Funktionsbaustein selbst oder in der ISG-MCP aufgetreten. Der Ausgangsparameter NCError zeigt an, ob ein Fehler in der ISG-MCP aufgetreten ist.

q Wenn NCError = TRUE und NCParamConsistent = TRUE sind, dann wurde der neue Parametersatz nicht korrekt interpretiert. Es wurden keine neuen Parameter eingelesen und die alten Parameter bleiben unverändert erhalten.

Wenn der Funktionsbaustein beim Wechseln des Parametersatzes in den Fehlerzustand geht, d.h. Error = TRUE und gleichzeitig

· NCError = TRUE und

· NCParamConsistent = FALSE sind,

dann besitzt die Steuerung inkonsistente Daten. Es muss entweder ein neuer Parametersatz korrekt eingelesen werden oder die Steuerung neu gestartet werden.

q Wenn der FB eine Warnung zurückliefert (NCWarning = TRUE), konnte mindestens ein Parameter nicht übernommen werden und der Wert dieses Parameters wurde von der Steuerung intern korrigiert.

Sind die Parametersätze in Dateien gespeichert, wie es bei denen vom Typ ACHS_MDS der Fall ist, so ist der Standardparametersatz derjenige, der in der Hochlaufliste für die entsprechende Achse angegeben ist und beim Hochlauf des Motion Controller interpretiert und aktiviert wird. Beispielsweise für die 1. Achse im System:

achs_mds[0] isgnc\listen\achsmds1.lis

Wird am Eingang NCParamSetIDIn der Wert 0 angelegt, wird damit der Standardparametersatz angewählt.

Die Bezeichnungen aller weiteren Dateien mit alternativen Parametersätzen für diese Achse leiten sich aus dem Namen des Standardparametersatzes und eine durch einen Unterstrich getrennte zusätzlichen Nummer ab.

achsmds1_1.lis

achsmds1_2.lis

...

Diese angehängte Nummer wird am Eingang NCParamSetIDIn angelegt, wenn ein alternativer Parametersatz aktiviert werden soll.

Die Dateien mit den alternativen Parametersätzen müssen in demselben Verzeichnis liegen, wie die Datei des Standardparametersatzes.


MCV_ReqParamSetId

Parametersatznummer anfordern

Damit in der SPS bekannt ist, welcher Parametersatz gerade für eine Achse verwendet wird, kann die Nummer des aktiven Parametersatzes von der Achsverwaltung angefordert werden.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Execute | BOOL | Mit der steigenden Flanke wird die Anforderung der aktuellen Parametersatznummer gestartet.
 | NCListTypeIn | STRING | Kennung für Parameter- bzw. Listentyp z.B. ACHS_MDS
VAR_OUTPUT
 | Valid | BOOL | Ist TRUE, wenn die aktuelle Parametersatznummer erfolgreich gelesen werden konnte.
 | Busy | BOOL | Ist TRUE, wenn der FB noch aktiv ist.
 | NCListTypeOut | STRING | Kennung für Parameter- bzw. Listentyp z.B. ACHS_MDS
 | NCParamSetIdOut | UINT | Nummer des Parametersatzes, der gerade für diese Achse verwendet wird.
 | NCWarning | BOOL | Ist TRUE, wenn in der ISG-MCP eine Warnung aufgetreten ist.
 | NCError | BOOL | Ist TRUE, wenn in der ISG-MCP während der Anforderung der Parametersatznummer ein Fehler aufgetreten ist.
 | NCErrorCode | UDINT | Fehlercode des in der ISG-MCP aufgetretenen Fehlers bzw. Warnung.
 | Error | BOOL | Ist TRUE, wenn der FB im Fehlerzustand ist. Die Anforderung der Parametersatznummer ist fehlgeschlagen.
 | ErrorID | WORD | Fehlerkennung

Verhalten des FB:

q Wenn Error = TRUE ist, ist der FB in einem Fehlerzustand. Die aktive Parametersatznummer konnte nicht gelesen werden. Es ist entweder ein Fehler im Funktionsbaustein selbst oder in der ISG-MCP aufgetreten. Der Ausgangsparameter NCError zeigt an, ob ein Fehler in der ISG-MCP aufgetreten ist.


MCV_ChgParamValue

Parameterwert ändern

Mit diesem Funktionsbaustein ist es möglich einen Parameter zu ändern. Um Probleme durch eine fehlerhafte Parametrierung zu verhindern ändert dieser Baustein nicht den Originalparametersatz, sondern legt eine Kopie davon an und schreibt dort die Änderungen hinein. Diese Kopie wird im weiteren Verlauf der Dokumentation als Arbeitsliste bezeichnet. Der Originalparametersatz muss nicht dem gerade aktiven Parameterdatensatz entsprechen, sondern wird durch Angabe seiner Kennung am Eingang NcParamSetIDIn ausgewählt.

Die geänderten Parameter der Arbeitsliste werden erst nach dem Aktivieren mit dem Funktionsbaustein MCV_ActivateParamChg von der ISG-MCP übernommen und wirksam.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Execute | BOOL | Die Änderung eines Parameterwertes wird mit steigender Flanke durchgeführt.
 | NCListTypeIn | STRING | Kennung für Parameter- bzw. Listentyp z.B. ACHS_MDS
 | NCParamSetIDIn | UINT | Nummer des Parametersatzes, in dem der Parameterwert geändert werden soll.
 | NCParamIdentIn | STRING | Kennung des zu ändernden Parameters z.B. kenngr.swe_pos
 | NCParamValueIn | STRING | Neuer Wert des Parameters.
VAR_OUTPUT
 | Valid | BOOL | Ist TRUE, wenn die Änderung des Parameterwerts erfolgreich durchgeführt wurde.
 | Busy | BOOL | Ist TRUE, wenn der FB noch aktiv ist.
 | NCListTypeOut | STRING | Kennung für Parameter- bzw. Listentyp z.B. ACHS_MDS
 | NCParamSetIDOut | UINT | Nummer des Parametersatzes, in dem der Parameterwert gewechselt wurde/werden sollte.
 | NCParamIdentOut | STRING | Kennung des zu ändernden Parameters z.B. kenngr.swe_pos
 | NCParamValueOut | STRING | Neuer Wert des Parameters.
 | NCWarning | BOOL | Ist TRUE, wenn in der ISG-MCP eine Warnung aufgetreten ist.
 | NCError | BOOL | Ist TRUE, wenn in der ISG-MCP während der Änderung des Parameterwerts ein Fehler aufgetreten ist.
 | NCErrorCode | UDINT | Fehlercode des in der ISG-MCP aufgetretenen Fehlers bzw. Warnung.
 | Error | BOOL | Ist TRUE, wenn der FB im Fehlerzustand ist. Die Änderung des Parameterwerts wurde nicht erfolgreich durchgeführt.
 | ErrorID | WORD | Fehlerkennung

Verhalten des FB:

q Wenn Error = TRUE ist, ist der FB in einem Fehlerzustand. Der Parameter wurde nicht in die Arbeitsliste geschrieben. Es ist entweder ein Fehler im Funktionsbaustein selbst oder in der ISG-MCP aufgetreten. Der Ausgangsparameter NCError zeigt an, ob ein Fehler in der ISG-MCP aufgetreten ist.

q Häufige Fehlerursache der ISG-MCP sind fehlende Schreibrechte oder eine schreibgeschützte Arbeitsliste, da in diesen Fällen eine Arbeitsliste nicht angelegt bzw. ein Parameter nicht geschrieben werden kann.


MCV_ActivateParamChg

Geänderte Parameter aus der Arbeitsliste aktivieren

Durch diese Aktivierung werden die in der Arbeitsliste abgespeicherten geänderten Parameter von der ISG-MCP übernommen und in der Steuerung wirksam. Bei dieser Aktivierung werden die Parameterwerte gleichzeitig auf Plausibilität geprüft.

Während dem Aktivieren eines Parametersatzes muss sich die Achse im Stillstand befinden und es darf keine Bewegungsbeauftragung für die Achse gestartet sein oder gestartet werden. Erst nach abgeschlossener Aktivierung aller Parameter (Valid = TRUE) darf die Achse wieder verfahren werden.

Beim Aktivieren eines Parametersatzes mit der Arbeitsliste kann sich das Verhalten der Steuerung verändern. Es können dadurch sicherheitskritische Funktionen verändert bzw. deaktiviert werden.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Execute | BOOL | Die Aktivierung des Parameters wird mit steigender Flanke durchgeführt.
 | NCListTypeIn | STRING | Kennung für Parameter- bzw. Listentyp z.B. ACHS_MDS
 | NCParamSetIDIn | UINT | Nummer des Parametersatzes, der aktiviert werden soll.
VAR_OUTPUT
 | Valid | BOOL | Ist TRUE, wenn die Aktivierung erfolgreich durchgeführt wurde.
 | Busy | BOOL | Ist TRUE, wenn der FB noch aktiv ist.
 | NCListTypeOut | STRING | Kennung für Parameter- bzw. Listentyp z.B. ACHS_MDS
 | NCParamSetIDOut | UINT | Nummer des Parametersatzes, der aktiviert wurde.
 | NCParamConsistent | BOOL | Ist FALSE, wenn beim Aktualisieren eines Parameters in der ISG-MCP ein Fehler aufgetreten ist und in der ISG-MCP Werte aus unterschiedlichen Parametersätzen verwendet werden.
 | NCWarning | BOOL | Ist TRUE, wenn in der ISG-MCP eine Warnung aufgetreten ist.
 | NCError | BOOL | Ist TRUE, wenn in der ISG-MCP während des Aktivierens ein Fehler aufgetreten ist.
 | NCErrorCode | UDINT | Fehlercode des in der ISG-MCP aufgetretenen Fehlers bzw. Warnung.
 | Error | BOOL | Ist TRUE, wenn der FB im Fehlerzustand ist. Die Aktivierung des Parameters wurde nicht erfolgreich durchgeführt.
 | ErrorID | WORD | Fehlerkennung

Verhalten des FB:

q Wenn Error = TRUE ist, ist der FB in einem Fehlerzustand. Die Aktualisierung des Parametersatzes wurde nicht korrekt durchgeführt. Es ist entweder ein Fehler im Funktionsbaustein selbst oder in der ISG-MCP aufgetreten. Der Ausgangsparameter NCError zeigt an, ob ein Fehler in der ISG-MCP aufgetreten ist.

q Wenn NCError = TRUE und NCParamConsistent = TRUE sind, dann wurde der neue Parametersatz nicht korrekt interpretiert. Es wurden keine neuen Parameter von der Arbeitsliste eingelesen und die alten Parameter bleiben in der Steuerung unverändert erhalten.

Wenn der Funktionsbaustein beim Aktualisieren des Parametersatzes mit der Arbeitsliste in den Fehlerzustand geht, d.h. Error = TRUE und gleichzeitig

· NCError = TRUE und

· NCParamConsistent = FALSE sind,

dann besitzt die Steuerung inkonsistente Daten. Es muss entweder ein neuer Parametersatz korrekt eingelesen werden oder die Steuerung neu gestartet werden.

q Wenn der FB eine Warnung zurückliefert (NCWarning = TRUE), konnte mindestens ein Parameter nicht übernommen werden und der Wert dieses Parameters wurde von der Steuerung intern korrigiert.

q Eine erfolgreiche Aktivierung der Arbeitsliste ist Voraussetzung, dass sie anschließend mit dem Funktionsbaustein MCV_SaveParamChg als Originalliste zurückgeschrieben werden kann.

q Falls die Parameter der Arbeitsliste nicht erfolgreich aktiviert werden konnten, kann die Arbeitsliste mit dem Funktionsbaustein MCV_DiscardParamChg gelöscht und damit alle vorgenommen Parameteränderungen verworfen werden.


MCV_SaveParamChg

Geänderte Parameter speichern

Dieser Funktionsbaustein speichert nach der erfolgreichen Aktivierung einer Arbeitsliste die Arbeitsliste als Originalliste ab. Nach erfolgreicher Speicherung wird die bisherige Arbeitsliste gelöscht.

Nach einem Neustart der Steuerung oder einem Parametersatzwechsel stehen somit die geänderten Parameter remanent in der Originalliste zur Verfügung.

Wenn beim Aktivieren der Arbeitsliste eine Warnung aufgetreten ist, wurde in der Steuerung mindestens ein Parameter korrigiert. Dieser korrigierte Wert wird nicht in die Originalliste aufgenommen. Beim einlesen der Originalliste tritt die Warnung erneut auf und der Parameterwert wird erneut korrigiert.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Execute | BOOL | Mit steigender Flanke wird das Speichern der geänderten Parameter gestartet.
 | NCListTypeIn | STRING | Kennung für Parameter- bzw. Listentyp z.B. ACHS_MDS
 | NCParamSetIDIn | UINT | Nummer des Parametersatzes, der gespeichert werden soll.
VAR_OUTPUT
 | Valid | BOOL | Ist TRUE, wenn das Speichern der geänderten Parameter erfolgreich durchgeführt wurde.
 | Busy | BOOL | Ist TRUE, wenn der FB noch aktiv ist.
 | NCListTypeOut | STRING | Kennung für Parameter- bzw. Listentyp z.B. ACHS_MDS.
 | NCParamSetIDOut | UINT | Nummer des Parametersatzes, der gespeichert wurde/werden sollte.
 | NCWarning | BOOL | Ist TRUE, wenn in der ISG-MCP eine Warnung aufgetreten ist.
 | NCError | BOOL | Ist TRUE, wenn in der ISG-MCP während des Speicherns der geänderten Parameter ein Fehler aufgetreten ist.
 | NCErrorCode | UDINT | Fehlercode des in der ISG-MCP aufgetretenen Fehlers bzw. Warnung.
 | Error | BOOL | Ist TRUE, wenn der FB im Fehlerzustand ist. Das Speichern der geänderten Parameter konnte nicht erfolgreich durchgeführt werden.
 | ErrorID | WORD | Fehlerkennung

Verhalten des FB:

q Wenn Error = TRUE ist, ist der FB in einem Fehlerzustand. Das Sichern der Arbeitsliste wurde nicht korrekt durchgeführt. Es ist entweder ein Fehler im Funktionsbaustein selbst oder in der ISG-MCP aufgetreten. Der Ausgangsparameter NCError zeigt an, ob ein Fehler in der ISG-MCP aufgetreten ist.

q Häufige Fehlerursache der ISG-MCP sind fehlende Schreibrechte oder eine schreibgeschützte Originalliste, da in diesen Fällen die Originalliste nicht ersetzt werden kann.


MCV_ReadParamValue

Parameterwert lesen

Mit diesem Funktionsbaustein können die Parameterwerte aus der Originalliste bzw. Arbeitsliste eines gewählten Parametersatzes gelesen werden. Wenn der gesuchte Parameterwert in der immer vorhandenen Originalliste vorhanden ist, wird dieser als old parameter zurückgegeben. Wenn eine Arbeitsliste vorhanden ist und der Parameterwert darin enthalten ist, wird er als new parameter zurückgegeben.

· Der in der Steuerung wirksame Parameterwert kann sich von den beiden gelesenen Parameterwerten unterscheiden, wenn aufgrund einer Warnung beim Interpretieren der Originalliste bzw. Arbeitsliste der Parameterwert in der Steuerung korrigiert wurde.

· Nach dem warnungsfreien Aktivieren ist der Parameterwert der Arbeitsliste in der Steuerung wirksam, ansonsten der Wert der Originalliste.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Execute | BOOL | Das Lesen eines Parameterwertes wird mit steigender Flanke durchgeführt.
 | NCListTypeIn | STRING | Kennung für Parameter- bzw. Listentyp z.B. ACHS_MDS
 | NCParamSetIDIn | UINT | Nummer des Parametersatzes, aus dem der Parameterwert gelesen werden soll.
 | NCParamIdentIn | STRING | Kennung des Parameters, dessen Wert gelesen werden soll. z.B. kenngr.swe_pos
VAR_OUTPUT
 | Valid | BOOL | Ist TRUE, wenn der Parameterwert erfolgreich gelesen wurde.
 | Busy | BOOL | Ist TRUE, wenn der FB noch aktiv ist.
 | NCListTypeOut | STRING | Kennung für Parameter- bzw. Listentyp z.B. ACHS_MDS
 | NCParamSetIDOut | UINT | Nummer des Parametersatzes, der aus dem der Parameterwert gelesen wurde.
 | NCParamIdentOut | STRING | Kennung des zu ändernden Parameters z.B. kenngr.swe_pos
 | NCOldParamValueRead | BOOL | Ist TRUE, falls die Parameterkennung in der Originalliste gefunden wurde.
 | NCOldParamValueOut | STRING | Parameterwert aus der Originalliste.
 | NCNewParamValueRead | BOOL | Ist TRUE, falls die Parameterkennung in der Arbeitsliste gefunden wurde.
 | NCNewParamValueOut | STRING | Parameterwert aus der Arbeitsliste.
 | NCWarning | BOOL | Ist TRUE, wenn in der ISG-MCP eine Warnung aufgetreten ist.
 | NCError | BOOL | Ist TRUE, wenn in der MCE beim Lesen eines Parameterwerts ein Fehler aufgetreten ist.
 | NCErrorCode | UDINT | Fehlercode des in der ISG-MCP aufgetretenen Fehlers bzw. Warnung.
 | Error | BOOL | Ist TRUE, wenn der FB im Fehlerzustand ist. Das Lesen des Parameterwerts wurde nicht erfolgreich durchgeführt.
 | ErrorID | WORD | Fehlerkennung

Verhalten des FB:

q Wenn Error = TRUE ist, ist der FB in einem Fehlerzustand. Der Parameterwerts konnte nicht korrekt gelesen werden. Es ist entweder ein Fehler im Funktionsbaustein selbst oder in der ISG-MCP aufgetreten. Der Ausgangsparameter NCError zeigt an, ob ein Fehler in der ISG-MCP aufgetreten ist.

q Wenn der Parameterwert in keiner der Listen gefunden werden kann, liefert die ISG-MCP einen Fehler.

q Soll der Wert eines Parameters aus dem aktiven Parametersatz ermittelt werden, wird zuerst über eine Instanz des MCV_ReqParamSetID die Kennung des aktiven Parametersatzes ermittelt. Diese Kennung wird am Eingang NCParamSetIDIn des MCV_ReadParamValue angelegt. Der Wert des Parameters aus dem aktiven Parametersatz liegt dann am Ausgang NCOldParamValueOut vor und ist gültig wenn der Ausgang NCOldParamValueRead = TRUE ist. Existiert gleichzeitig eine Arbeitsliste wird der Wert aus dieser am Ausgang NCNewParamValueOut angezeigt.


MCV_DiscardParamChg

Änderungen verwerfen

Mit diesem Funktionsbaustein kann die Arbeitsliste gelöscht werden und damit alle Parameteränderungen in der Arbeitsliste verworfen werden.

Ist die Arbeitsliste bereits mit dem Funktionsbaustein MCV_ActivateParamChg aktiviert, sind diese Änderungen in der Steuerung wirksam und können mit diesem Baustein nicht mehr rückgängig gemacht werden. Um auch diese geänderten Parameterwerte rückgängig zu machen, muss die Originalliste mit dem Funktionsbaustein MCV_ChgParamSet eingelesen werden.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Execute | BOOL | Das Verwerfen von Änderung wird mit steigender Flanke durchgeführt.
 | NCListTypeIn | STRING | Kennung für Parameter- bzw. Listentyp z.B. ACHS_MDS
 | NCParamSetIDIn | UINT | Nummer des Parametersatzes, für den die Änderungen verworfen werden sollen.
VAR_OUTPUT
 | Valid | BOOL | Ist TRUE, wenn die Änderungen des Parametersatzes erfolgreich verworfen wurden.
 | Busy | BOOL | Ist TRUE, wenn der FB noch aktiv ist.
 | NCListTypeOut | STRING | Kennung für Parameter- bzw. Listentyp z.B. ACHS_MDS
 | NCParamSetIDOut | UINT | Nummer des Parametersatzes, für den die Änderungen verworfen werden sollen.
 | NCWarning | BOOL | Ist TRUE, wenn in der ISG-MCP eine Warnung aufgetreten ist.
 | NCError | BOOL | Ist TRUE, wenn in der MCE während des Verwerfens der Änderungen ein Fehler aufgetreten ist.
 | NCErrorCode | UDINT | Fehlercode des in der ISG-MCP aufgetretenen Fehlers bzw. Warnung.
 | Error | BOOL | Ist TRUE, wenn der FB im Fehlerzustand ist. Die Änderung des Parametersatzes wurden nicht erfolgreich verworfen.
 | ErrorID | WORD | Fehlerkennung

Verhalten des FB:

q Wenn Error = TRUE ist, ist der FB in einem Fehlerzustand. Die Parameteränderungen konnten nicht korrekt zurückgenommen werden. Es ist entweder ein Fehler im Funktionsbaustein selbst oder in der ISG-MCP aufgetreten. Der Ausgangsparameter NCError zeigt an, ob ein Fehler in der ISG-MCP aufgetreten ist.

Häufige Fehlerursache der ISG-MCP sind fehlende Schreibrechte oder eine schreibgeschützte Arbeitsliste, da in diesen Fällen die Arbeitsliste nicht gelöscht werden kann.


MCV_UnHome

Mit dem FB kann eine Achse dejustiert (dereferenziert) werden.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Execute | BOOL | Bei steigender Flanke wird die Dejustage der Achse durchgeführt
VAR_OUTPUT
 | Done | BOOL | Die Dejustage wurde erfolgreich durchgeführt
 | Error | BOOL | Ist TRUE, wenn ein Fehler im FB auftritt
 | ErrorID | WORD | Fehlerkennung


MCV_DeactivateAxis

Mit dem FB kann eine Achse deaktiviert bzw. geparkt werden. In diesem Zustand kann die Achse nicht mehr verfahren werden und es werden auch keine Fehlermeldungen mehr angezeigt.

Standardmäßig ist die Achse aktiviert.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Enable | BOOL | Bei TRUE wird die Achse deaktiviert
VAR_OUTPUT
 | IsDeactivated | BOOL | Bei TRUE ist die Achse deaktiviert
 | Error | BOOL | Ist TRUE, wenn ein Fehler im FB auftritt
 | ErrorID | WORD | Fehlerkennung


MCV_UpdateDriveData

Mit dem FB können die Antriebsparameter, bei DSE-Antrieben also die Servo-Files, einer Achse aktualisiert werden.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Execute | BOOL | Bei steigender Flanke werden die Antriebsparameter aktualisiert
VAR_OUTPUT
 | Done | BOOL | Das Aktualisieren der Antriebsparameter wurde erfolgreich durchgeführt
 | Error | BOOL | Ist TRUE, wenn ein Fehler im FB auftritt
 | ErrorID | WORD | Fehlerkennung


MCV_Decouple

Mit dem FB MCV_Decouple kann eine Achse abgekoppelt, also deaktiviert werden, so dass z.B. ein Motortausch durchgeführt werden kann. Die Sequenz der intern beauftragten FBs kann dem folgenden Ablaufdiagramm entnommen werden.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Execute | BOOL | Bei steigender Flanke wird die Sequenz zum Abkoppeln einer Achse angestoßen
VAR_OUTPUT
 | Done | BOOL | Die Achse wurde erfolgreich abgekoppelt
 | Error | BOOL | Ist TRUE, wenn ein Fehler im FB auftritt
 | ErrorID | WORD | Fehlerkennung

Ablaufdiagramm


MCV_Couple

Mit dem FB MCV_Couple kann eine Achse wiedereingekoppelt werden, also reaktiviert werden, z.B. nach dem Abkoppeln bei einem Motortausch. Die Sequenz der intern beauftragten FBs kann dem folgenden Ablaufdiagramm entnommen werden.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Execute | BOOL | Bei steigender Flanke wird die Sequenz zum Ankoppeln einer Achse angestoßen
VAR_OUTPUT
 | Done | BOOL | Die Achse wurde erfolgreich angekoppelt
 | Error | BOOL | Ist TRUE, wenn ein Fehler im FB auftritt
 | ErrorID | WORD | Fehlerkennung

Ablaufdiagramm


MCV_ConveyorControl

Mit dem FB MCV_ConveyorControl wird der dynamische Zustand einer Achse an den Motion Controller gemeldet, die nicht seiner Kontrolle unterliegt, weil diese Achse als Geberachse (siehe P-AXIS-00015) parametriert ist.

Mit dieser Information wird die Synchronisationsbewegung einer Achsgruppe beeinflusst, für die diese Geberachse als Masterachse parametriert wurde.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Enable | BOOL | TRUE, dynamischer Zustand der Geberachse wird an den Motion Controller übertragen.
 | ControlMode | UDINT | Legt den fest. Zulässige Werte am Eingang sind: 0: HLI_CONVEYOR_SPEED_CONST 1: HLI_CONVEYOR_ACCELERATION 2: HLI_CONVEYOR_DECELERATION 3: HLI_CONVEYOR_SPEED_ZERO
VAR_OUTPUT
 | Valid | BOOL | TRUE, Wert an Ausgang ActiveControlMode ist gültig.
 | ActiveControlMode | UDINT | Aktueller dynamischer Zustand der Geberachse, der zum Motion Controller gemeldet wurde.
 | Error | BOOL | Ist TRUE, wenn ein Fehler im FB auftritt
 | ErrorID | WORD | Fehlerkennung

Verhalten des FB:

q Diese Funktionalität steht nicht in allen Motion Controller Varianten zur Verfügung.

q In den Varianten in denen die Funktionalität zur Verfügung steht, müssen in der Achsparameterliste ([AXIS]) die Parameter der Gruppe conv_sync festgelegt werden und in der Kanalparameterliste ([CHAN]) die Parameter der Gruppe conveyor_sync gesetzt sein.


MCV_SetReducedFilter

Dieser FB MCV_SetReducedFilter beeinflusst die Istwertfilterung einer Achse, und wird üblicherweise nur in Verbindung mit einer als Geberachse (siehe P-AXIS-00015) parametrierten Achse verwendet, die nicht unter der Kontrolle des Motion Controller steht. Er wirkt sich nur aus, wenn für diese Geberachse eine Slaveachse konfiguriert wurde.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Enable | BOOL | TRUE, Parameter für die Istwertfilterung über eine reduzierte Anzahl von Werten wird wirksam
VAR_OUTPUT
 | FilterReduced | BOOL | TRUE; Istwertfilterung erfolgt nun über die parametrierte geringere Anzahl von Werten.
 | Error | BOOL | Ist TRUE, wenn ein Fehler im FB auftritt
 | ErrorID | WORD | Fehlerkennung

Verhalten des FB:

q Zur Parametrierung der Filterwirkung sind die Parameter der Gruppe conv_sync in der Achsparameterliste ([AXIS]) entsprechend zu parametrieren.


MCV_SuppressSoftLimSw

Mit dem FB MCV_SuppressSoftLimSw erreicht man, dass Diagnosemeldung im Zusammenhang mit Softwareendschaltern nicht ausgegeben werden.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Enable | BOOL | TRUE, die Ausgabe von Diagnosemeldung mit Bezug auf Softwareendschalter wird unterdrückt.
VAR_OUTPUT
 | Valid | BOOL | TRUE, Unterdrückung der Ausgabe ist aktiviert
 | Error | BOOL | Ist TRUE, wenn ein Fehler im FB auftritt
 | ErrorID | WORD | Fehlerkennung

Verhalten des FB:

q Bei den unterdrückten Diagnosemeldungen handelt es sich um: P-ERR-50041 , P-ERR-50042 , P-ERR-60158 und P-ERR-60159 .


MCV_TorqueFreeStop

Mit dem FB MCV_TorqueFreeStop kann man bei SERCOS-Antrieben beeinflussen, ob diese drehmomentbehaftet zum Stillstand kommen, oder drehmomentfrei austrudeln, wenn über eine Instanz des MC_Power die Leistung für einen Antriebs abgeschaltet wird.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
 | Axis | AXIS_REF | Achsreferenz
VAR_INPUT
 | Enable | BOOL | TRUE, der Antrieb wird drehmomentfrei austrudeln bei der Leistungsabschaltung FALSE, der Antrieb wird drehmomentbehaftet zum Stillstand kommen bei der Leistungsabschaltung.
VAR_OUTPUT
 | Enabled | BOOL | TRUE; drehmomentfreies Austrudeln bei Leistungsabschaltung ist aktiviert.
 | Error | BOOL | Ist TRUE, wenn ein Fehler im FB auftritt
 | ErrorID | WORD | Fehlerkennung

Verhalten des FB:

q Derzeit nur für SERCOS-Antriebe wirksam.


Application note: Konfiguration eines Leitgebers"

TwinCAT CNC: Überblick

Application note: Konfiguration eines Leitgebers

Mit der folgenden Vorgehensweise gibt es eine Möglichkeit eine Art Leitgeber zu realisieren.

Mehr:

button Konfiguration einer Simulationsachse in der ISG-CNC

button Achsparameter einstellen

button Bedienung der Control Units auf dem HLI

button GearIn-Kopplung

button Istwert-Filterung

button CamIn-Kopplung


Konfiguration einer Simulationsachse in der ISG-CNC

hochlauf.lis:

zahl_mds um 1 erhöhen und weitere Achse aufnehmen
achs_mds[X-1] isgnc\listen\achsmdsX.lis

achsmdsX.lis:

#-------------------------------------------------

# Allgemeine Attribute

#-------------------------------------------------

kenngr.antr_typ 4 /* 1=KONV, 2=SERCOS, 4=SIMU, 17=DSE */

kenngr.achs_mode 0x104

kenngr.achs_typ 4

Die Achse wird bereits in der ISG-CNC simuliert und somit sind keine Änderungen in den Servo-Files notwendig (die DSE-Achsanzahl NumAx in global.servo bleibt also gleich eingestellt).


Achsparameter einstellen

Um bei einer Simulationsachse das "reale" Verhalten (z.B. Reglerverhalten mit Schleppabstand) abzuschalten, muss der folgende ACHSMDS-Parameter gesetzt werden.

antr_simu.ist_gleich_soll 1

Zusätzlich müssen die Auflösungsfaktoren auf 1 eingestellt werden:

getriebe[0].wegaufz 1

getriebe[0].wegaufn 1


Bedienung der Control Units auf dem HLI

Auf der SPS-Schnittstelle (HLI) muss die folgende Control-Unit aktiviert werden.

hli.axis[X-1].lr_mc_control.add_cmd_values.enable_w = TRUE

Danach ist es möglich über die folgenden Variablen additive Werte auf die aktuelle Interpolator-Sollwertvorgabe der Achse vorzugeben.

Additive Lage-Sollwertvorgabe:

hli.axis[X-1].lr_mc_control.add_cmd_values.command_w.m_add_pos_value

Additive Geschwindigkeits-Sollwertvorgabe:

hli.axis[X-1].lr_mc_control.add_cmd_values.command_w.m_add_speed_value

Diese Werte werden in jedem Interpolatortakt auf die aktuelle Interpolatorposition/ -geschwindigkeit addiert und an den Antrieb ausgegeben (Somit bitte Vorsicht bei Verwendung der Control Unit bei realen Antrieben).

D.h., wenn z.B. die Achse zuvor mit MC_MoveAbsolute auf Position 90 verfahren wurde, bewirkt ein additiver Positions-Sollwert von 10, dass die Achse auf Position 100 verfährt. Diese Position bleibt dann so lange erhalten, bis eine neue Position vorgeben wird.

Um eine Achse kontinuierlich zu bewegen, wird empfohlen die additive Geschwindigkeitsschnittstelle zu verwenden. Falls die Genauigkeit nicht ausreicht, dann müssen die additiven Positions-Sollwerte fortlaufend vorgeben werden, also ohne Moduloumbruch, so dass die Achse nicht wieder zurückfährt.


GearIn-Kopplung

Die Leitgeber-Istposition kann also nun über die oben beschriebene Variable vorgegeben werden. Es ist allerdings zu beachten, dass man mit dieser Möglichkeit nur die Lagereglerwerte (MC_ReadStatus.lr_*) modifizieren kann, der Interpolator-Sollwert bleibt davon unberührt. Somit muss anschließend auch Istwertseitig an diese Leitgeber-Achse angekoppelt werden (MC_GearIn.Mode = 16#80).


Istwert-Filterung

Die Istwerte des Leitgebers (MC_GearIn-Master) können in bekannter Weise gefiltert werden (cam_gear.mv_type).


CamIn-Kopplung

Falls der Leitgeber als Master für ein MC_CamIn benötigt wird, dann muss eine weitere Simulationsachse in der ISG-CNC konfiguriert werden (s.o.). Diese Achse kann dann als Slave mit einem Istwertseitigen MC_GearIn an den Leitgeber gekoppelt werden, und der Slave wiederum kann als Master für die MC_CamIn-Kopplung verwendet werden.


Begriffserklärungen

Funktionssatz: Internes Beauftragungsformat des ISG Motion-Controllers.

HLI-Bibliothek: Zugriff auf die Speicherschnittstelle zur ISG-MCE.

ISG-MCE: Damit ist der ISG NC-Kern gemeint der im Zusammenhang mit dieser Dokumentation auch als Motion Control Engine bezeichnet wird.

MC-FB: Bezeichnet die SPS-Funktionsbausteine, die zur Beauftragung des ISG-MC verwendet werden.

Motion-Bibliothek: SPS-Softwareapplikation die Funktionsbausteine zur Bewegung von Achsen entsprechend der PLCopen-Spezifikation, sowie weitere FB die Aufgaben der Bewegungserzeugung übernehmen, enthält.