13.15.5
Ermittlung von Offsetadressen auf Datenbaustein-Strukturen
Funktion
Eine weitere häufig vorkommende Aufgabe ist die symbolische Ermittlung einer
Offsetadresse innerhalb eines strukturierten DBs. In diesem DB liegt z. B. an beliebiger
Stelle ein ARRAY oder eine STRUKTUR. Man möchte, nachdem das Adressregister
symbolisch mit der Anfangsadresse geladen wurde, über ein Adressregister auf einzelne
Elemente des ARRAY oder der STRUKTUR zugreifen. Ein Weg wie man das Adressregister
symbolisch laden kann, führt über einen FC, der als Eingangsparameter einen Pointer hat.
Diesem Eingangsparameter des FC wird nun im Programm symbolisch die Adresse des
ARRAY oder der STRUKTUR zugewiesen. Der Programmcode im FC ermittelt nun die
Offsetadresse aus dem Eingangsparameter und übergibt die Offsetadresse im
Adressregister (AR1) an die rufende Funktion. Somit ist auch bei indirekten Zugriffen eine
Symbolische Adressierung möglich.
Beispiel
Code
FUNCTION FC 99: VOID
VAR_INPUT
END_VAR
BEGIN
NETWORK
TITLE =
L
LAR1 ;
L
LAR1 ;
END_FUNCTION
13.15.6
Aufrufe von FBs
Funktion
Zur Optimierung von Ablaufgeschwindigkeiten ist es sinnvoll, alle Funktionsbausteinaufrufe
mit vielen statischen Parametern, wie z. B. die vom Grundprogramm zur Verfügung
gestellten Bausteine FB 2, 3, 4, 5 und 7, schon im Anlauf mit den zugehörigen
Instanzparametern aufzurufen. Im Anlauf (OB 100) sollte die Vorbesetzung von Parametern
erfolgen, die anschließend im zyklischen Teil (OB 1) nicht mehr verändert werden. Diese
festen Parameterwerte werden in dem zyklischen Aufruf nicht mehr parametriert, da sie
bereits im Anlauf in den Instanz-DB geschrieben worden sind.
Grundfunktionen
Funktionshandbuch, 03/2010, 6FC5397-0BP20-1AA0
Addr : POINTER ;
P##Addr;
D [AR1,P#2.0];
P3: PLC-Grundprogramm für SINUMERIK 840D sl
13.15 Programmiertipps mit STEP 7
Kommentar
//Zeigt auf Variable
//Pointer holen von Addr
//Offsetteil des Pointers der Variable
1103