1.) Pointer sind 4 Bytes groß und werden verwendet, um auf Bits im E-, A-, M- oder D-Bereich zu zeigen. In ihm werden keine Prozessdaten gespeichert, sondern eine Adresse innerhalb der SPS. Das interne Format ist schwer zu lesen, aber wenn Sie die P# - Notation verwenden, lässt sich unmittelbar erkennen, auf welche Speicherstelle der Pointer zeigt:
P#5.7 |
zeigt auf das Bit 5.7 irgendeines Datenbereiches |
|
P#E 4.5 |
zeigt auf das Bit E 4.5 |
|
P#A 3.1 |
zeigt auf das Bit A 3.1 |
|
P#M 12.0 |
zeigt auf das Bit M 12.0 |
|
P#D 3.2 |
diese Notation ist nicht erlaubt, auf Datenbits muss man anders zugreifen. |
Ein Verwendungsbeispiel:
L P#6.8
T MD 10
....
....
U E[MD10]
2.) Der Datentyp POINTER im Deklarationsteil von FB/FC ist 6 Bytes groß, da hierbei auch evtl. noch eine DB-Nr gespeichert wird.
Intern wird im HSB eines Pointers zunächst gespeichert, auf welchen Datenbereich er zeigt:
E |
81h |
// Eingangsbereich |
A |
82h |
// Ausgangsbereich |
M |
83h |
// Merkerbereich |
D |
84h |
// Global-DB |
ID |
85h |
// Instanz-DB |
L |
86h |
// Lokaldaten |
FX |
87h |
// Parameterbereich einer Funktion (vorherige Lokaldaten) |
In den nächsten 24 Bits kommt dann die Byte-Adresse, aber um 3 - Bits nach links verschoben. In den 3 Bits, die dadurch auf der rechten Seite frei werden, wird schließlich die Bit-Nr. gespeichert.
Zusammengesezte Datentypen werden als DB-Zeiger an Funktionen übergeben.
CALL "RotationControl" (struct_motor_data := "db_motor_data".struct_motor_4)
Der Zugriff auf die Datenelemente innerhalb der Funktion erfolgt so.
// DB-Register einstellen.
L P##struct_motor_data
LAR1
L W[AR1, P#0.0]
T #i_db_number
AUF DB [#i_db_number]
// Bereichsinternen Zeiger auf die zu verarbeitende Datenstruktur in das
// Adressregister 1 laden.
L D[AR1, P#2.0]
LAR1
Nun kann auf die Elemente der Datenstruktur zugegriffen werden.
z.B.
L W[AR1, P#2.0]
So können große Datenmengen in Datenbausteinen zusammengefasst werden. Dies erleichtert die
Konfiguration von Kommunikationsbausteinen, und die weitere Verarbeitung der Daten.
z.B. OPC-Server, Visualisierungen, Netzwerkübertragungen, Datenbanken u.s.w.
Siehe auch:
STEP®7 ist eingetragenes Warenzeichen der Siemens AG.