MC_CamIn Anhang
Ankoppeln mit Kurvenscheiben
Mit dem Funktionsbaustein MC_CamIn kann eine Kurvenscheibenkopplung (auch Tabellenkopplung) zwischen einer Master- und einer Slave-Achse hergestellt werden. Dabei ist zu beachten, dass die Slave-Achse bereits vor der Kopplung auf einer durch die Kurvenscheibe definierten Position stehen muss. Nach dem Koppeln und Starten des Masters wird die Slave-Position direkt aus der Kurvenscheibe berechnet. Die Slave-Achse wird also nicht langsam mit der Kurvenscheibe synchronisiert sondern springt, wenn sie nicht schon an der Tabellenposition steht.
In der Praxis stellt sich die Frage, welche Position der Slave vor der Kopplung einnehmen muss und wie diese berechnet wird. Die folgenden Abbildungen veranschaulichen, wie hier vorgegangen werden kann.
Hinweis | |
Mögliche Berechnungsfehler beachten
|
Lineare Kurvenscheiben
Eine lineare Kurvenscheibe ist nur über einen begrenzten Master-Positionsbereich definiert. Außerhalb dieses Bereiches ist die Slave-Position durch die erste bzw. letzte Position in der Tabelle definiert. Der Slave bleibt also an den Tabellenrändern stehen sobald der Master aus dem definierten Bereich herausfährt.
Die Abbildung zeigt, dass das absolute Achskoordinatensystem (blau) nicht mit dem Kurvenscheibenkoordinatensystem (rot) übereinstimmen muss. Das Koordinatensystem der Kurvenscheibe kann durch einen Master-Offset und einen Slave-Offset verschoben sein und eine Skalierung ist ebenfalls möglich.
Die zu einer bestimmten Master-Position gehörende Slave-Position kann durch den Funktionsbaustein MC_ReadCamTableSlaveDynamics bestimmt werden. Der Baustein bezieht sich auf die Rohdaten der Tabelle, so dass Offsets und Skalierungen durch das SPS-Programm selbst berücksichtigt werden müssen. Zunächst wird der Master-Offset zur aktuellen Masterposition addiert und falls die Kurvenscheibe skaliert werden soll, wird durch diese Skalierung dividiert.
MasterCamTablePosition := (MasterPosition + MasterOffset) / MasterScaling;
Die Master-Tabellenposition ist Eingangsparameter für den Funktionsbaustein MC_ReadCamTableSlaveDynamics. Das Ergebnis wird gegebenenfalls mit Slave-Offset und -Skalierung auf eine absolute Slave-Position umgerechnet.
SlaveCamTablePosition := ReadSlaveDynamics.SlavePosition;
SlavePosition := (SlaveCamTablePosition * SlaveScaling) + SlaveOffset;
Der Slave wird vor der Kopplung an diese Position gefahren. Alternativ kann auch der Master zu einer Position gefahren werden, die mit der aktuellen Slave-Position korrespondiert. Es ist aber nicht allgemein möglich, diese Position aus der Kurvenscheibe zu ermitteln, da die Kurvenscheibe bei dieser Betrachtung mehrdeutig sein kann.
Da der Master-Offset additiv in die erste Formel eingeht, führt ein positiver Offset zu einer Verschiebung des Kurvenscheibenkoordinatensystems nach links in negative Richtung. Der Master-Offset in der Abbildung ist demnach negativ. Ein positiver Slave-Offset führt zu einer Verschiebung des Kurvenscheibenkoordinatensystems in positive Richtung nach oben. |
Zyklische Kurvenscheiben ohne Hub
Eine zyklische Kurvenscheibe ohne Hub zeichnet sich dadurch aus, dass die Slave-Anfangs- und die Endposition in der Tabelle identisch sind. Der Slave beweg sich dadurch zyklisch in einem definierten Bereich, ohne seine Position stetig in eine Richtung zu verändern.
Die Master-Slave-Kopplung erfordert bei diesem Kurvenscheibentypen dieselbe Vorbereitung wie bei einer linearen Kurvenscheibe. Die Ausgangsposition des Slaves kann also wie oben berechnet werden. Es ist nicht notwendig, die Modulo-Position des Masters zur Berechnung heranzuziehen, da die absolute Position bereits durch das Koppelkommando korrekt berücksichtigt wird.
Zyklische Kurvenscheiben mit Hub
Der Hub einer zyklischen Kurvenscheibe ist die Differenz zwischen der letzten und der ersten Tabellenposition des Slaves.
Eine solchen Kurvenscheibe wird am Tabellenende zyklisch fortgesetzt. Dabei springt die Slave-Position nicht zurück auf den Tabellen-Anfangswert, sondern die Bewegung wird kontinuierlich fortgesetzt. Mit jedem neuen Zyklus wird also der Hub als zusätzlicher interner Slave-Offset aufaddiert bzw. bei Bewegungsumkehr subtrahiert.
Abkoppeln und Wiederankoppeln bei zyklischen Kurvenscheiben mit Hub
Wenn ein Slave mit einer Kurvenscheibe mit Hub gekoppelt wird, so wird immer im Grundzyklus (rotes Koordinatensystem), das heißt ohne aufaddierte Hübe, angekoppelt. Wird der Slave nach einigen Zyklen abgekoppelt, und dann erneut angekoppelt, fällt die Position des Slaves in den Grundzyklus zurück. Dieses Verhalten ist gegebenenfalls durch eine Neuberechnung des Slave-Offsets zu berücksichtigen und auszugleichen.
MasterCamTablePos := (MasterPosition + MasterOffset) / MasterScaling;
Die Master-Tabellenposition ist Eingangsparameter für den Funktionsbaustein MC_ReadCamTableSlaveDynamics. Das Ergebnis wird gegebenenfalls mit Slave-Offset und -Skalierung auf eine absolute Slave-Position umgerechnet. Zusätzlich muss die Anzahl der bereits aufgelaufenen Hübe berechnet und zur Slave-Position addiert werden.
SlaveCamTablePosition := ReadSlaveDynamics.SlavePosition;
Hubanzahl := MODTURNS( (SlavePosition - SlaveOffset), SlaveHub );
NewSlaveOffset := SlaveOffset + (SlaveHub * Hubanzahl);
SlavePosition := (SlaveCamTablePosition * SlaveScaling) + NewSlaveOffset;
Die Autooffset-Funktion kann die Berechnung von Offsets insbesondere beim Umschalten von Kurvenscheiben vereinfachen.