Programmierung eigener FBs: Motionachsen (AxisRef) aus dem Gerätebaum immer als 'VAR_IN_OUT' deklarieren

Frage:
Programmierung eigener Funktionsbausteine (FB) im PLC-Designer-Projekt:
  • Was ist für den Zugriff auf die Daten einer Motionachse (AxisRef) zu beachten?
  • Wie werden Motionachsen korrekt deklariert?
Antwort:
Motionachsen (Axis_Ref) aus dem Gerätebaum oder Achsgruppen sind programmtechnisch nicht einfach nur Variablen, sondern Funktionsbausteine mit eigenem Programmcode. Sie werden automatisch zyklisch von der PLC aufgerufen. 
Die Deklaration muss daher anders erfolgen. 

'VAR_INPUT', 'VAR_OUTPUT':
  • Variablen und Variablen-Strukturen werden zur Wert-Übergabe an einen FB als 'VAR_INPUT', bzw. 'VAR_OUTPUT' deklariert. 
  • Im FB werden dadurch zusätzliche Variablen angelegt und eigener Speicherplatz allokiert. 
  • Zur Übergabe der Daten an den FB-Eingängen finden dadurch entsprechend viele Kopiervorgänge statt.
'VAR_IN_OUT':
  • Motionachsen (AxisRef) hingegen müssen als 'VAR_IN_OUT' deklariert werden. 
  • Diese Baustein-Schnittstelle arbeitet nach dem Prinzip "call by reference". 
  • Über diese Schnittstelle wird direkt auf die Speicherbreiche der Motionachse zugegriffen. 
Beispiel für die korrekte Programmierung zur Einbindung einer Motionachse über das VAR_IN_OUT-Element :

FUNCTION_BLOCK  Test
VAR_IN_OUT
    Axis:   Axis_Ref;
END_VAR

Bei fälschlicherweise Deklaration einer Motionachse als VAR_INPUT / VAR_OUTPUT ist:
- die beabsichtigte Funktionalität nicht gewährleistet und
- es kommt zu Laufzeiterhöhungen durch das zyklische Kopieren der zumeist umfangreichen Daten einer Motionachse.


URL zur Verlinkung dieses AKB-Artikels: https://www.lenze.com/de-de/go/akb/202100385/0/
Kontaktformular