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] | |
| Deceleration | REAL | Wert der Verzögerung. Dieser Wert ist immer positiv anzugeben. Wertebereich [0.0, 2147483647.0] | |
| Jerk | REAL | Wert des Rucks. Dieser Wert ist immer positiv anzugeben. Wertebereich [0.0, 2147483647.0] | |
| Mode | UDINT | Derzeit mögliche Werte sind:see "Extracted nested table 0" | |
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:
- 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.
- 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.
- 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.
- Der Baustein ist retriggerbar. Er kann also im aktiven Zustand erneut eine Beauftragung abschicken.
- 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.
- 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.
- 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.
- Ä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_error“auß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.
- 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.