Funktions-Erweiterung:
L_MC1P: Die AxisRef der Motion-Achsen wurde jetzt um eine Kennung (Property) für Mehrachs-Geräte erweitert.
Z.B. bei einer i700 Doppelachse lässt sich jetzt anhand dieser Kennung ermitteln ob Achse A oder Achse B einer Motion-Achse zugeordnet ist.
Enthalten in welchen Produkten?
Bibliothek: L_MC1P_MotionControlBasic (FAST Motion) ab V03.19.00.101
(Update via Package-Manager)
Anwendung:Für das Lesen/Schreiben von Parametern über die PLC-Applikation ist bei Mehrachs-Geräten die Information erforderlich, ob Achse A oder Achse B des Gerätes der zu parametrierenden Motion-Achse zugeordnet ist.
Bisher stand für diese Aufgabe nur eine weniger komfortable Lösung zur Verfügung (Programm-Beispiel unter Application Ideas Pool). Bei dieser bisherigen Lösung wird per Pointer auf eine interne Variable aus der AxisRef (_AXIS_REF_i700) zugegriffen. In Hinsicht auf Kompatibilitäts-Aspekte ist dieses Verfahren jedoch nicht als Zukunfts-sicher anzusehen und des Weiteren birgt der Pointer-Zugriff ein erhöhtes Fehlerrisiko.
Mit der neuen Kennung für Achse A oder B in der AxisRef-Struktur steht jetzt eine einfache und sichere Möglichkeit zur Bestimmung zur Verfügung.
Programmierbeispiel:
//Variablen Deklaration
VAR
eA1_Offset: L_MC1P_AxisSlot ;
eA2_Offset: L_MC1P_AxisSlot ;
END_VAR
// Programmcode zur Abfrage ob Geräte-AchseA oder AchseB zugeordnet ist.
eA1_Offset := A1.AxisSlot ;
eA2_Offset := A2.AxisSlot ;
Hinweis:
Die Variablen eA1_Offset und eA2_Offset können als Offset zur Vorgabe des Parameter-Index für die Funktionen L_MC1P_IndexToParameter und L_MC1P_IndexToParameter verwendet werden. Dazu die Offset-Variable zum Index einer Einzelachse addieren.
Soll besipielsweise für die Funktion "Istposition setzen" der Startwert unter Parameter 0x2983 geschrieben werden:
Index der Einzelachse oder Achse A einer Doppelachse: 0x2983-Istposition setzen: Startwert
Der resultierende Index der Achse-B: 0x2983+AxisB = 0x3183
Enumbeschreibung L_MC1P_AxisSlot (Werte vom Typ UINT):
Bezeichner | Wert (hex) | Wert (dec) | Info |
eA1_Offset | 0x0 | 0 | Axis_Ref entspricht der Achse A |
eA2_Offset | 0x800 | 2048 | Axis_Ref entspricht der Achse B |