Konfigurationssyntax bis einschließlich V253
Bis einschließlich Version V253 erfolgt die Konfiguration der Variablen eines Kanals in der textuellen ASCII Liste (ext_var*.lis) wie folgt:
Beispiel:
# ****************************************
#
# Externe Variablen V253
#
# ****************************************
#
anzahl_belegt 2
#
var[0].name GLOBAL_SWR
var[0].index 0 # Startposition
var[0].var_typ 16 # SGN16_Array
var[0].mode 0x1 # 1 : VE_SYNCH, 2 : VE_ASYNCH
var[0].access 0x0202 # 0x100 : local, 0x200 global
# 0x1 : read, 0x2 : write
var[0].max_element 0 # Arraygrösse
var[0].offset 2 # 2 Byte pro Element
var[0].kennung 0 # Unbenutzt
#
var[1].name CHANNEL_WR
var[1].index 0 # Startposition
var[1].var_typ 8 # SGN32
var[1].mode 0x2 # 1 : VE_SYNCH, 2 : VE_ASYNCH
var[1].access 0x0101 # 0x100 : local, 0x200 global
# 0x1 : read, 0x2 : write
var[1].max_element 10 # Arraygrösse
var[1].offset 4 # 4 Byte pro Element
var[1].kennung 0 # Unbenutzt
#
Ende
Die Elemente haben folgende Bedeutung:
Bezeichner | Wertebereich | Default | Bedeutung |
anzahl_belegt | [0; MAX_UNS16] | 0 | Bei lückenloser Belegung von var[i].* wird hier der Index der zuletzt definierten Variable +1 eingetragen (ilast+1). Bei lückender Belegung von var[i].* wird hier der höchste Index der definierten Variablen +1 eingetragen (imax+1). |
var[i].* | i:= [0; 214] | Datensätze zur Definition der Variablen | |
name | ASCII-String |
| Über den Namen wird die Variable identifiziert. Aus diesem wird ein Gesamtname für den NC-Kanal und die Oberfläche zusammengesetzt (z.B. V.E.<name>). Gross- und Kleinbuchstaben werden unterschieden. |
index | [0; MAX_SNG32] | -1 | Der Index legt die Position im Speicher fest, an welcher die Variable abgelegt wird. Der gesamte Speicher ist dabei als Feld von 24 Byte grossen Einheiten aufgebaut. Ein Index von -1 zeigt an, dass der Eintrag nicht belegt ist. |
var_typ | 2 - BOOLEAN, 12 -BOOLEAN Array, | UNS32 | Der Typ gibt den Datentyp der Variablen an. Neben elementaren Datentypen (SGN08, ..., REAL64, ARRAY_OF_SGN08, ...) existiert der Datentyp String, welcher derzeit inklusiv Endmarke 24 Byte umfasst. |
mode | 1 - synchron, | 1 | Für Optimierungen kann der Zugriff auf Variablen während der Dekodierung auch nicht-synchron zur aktuellen Programmbearbeitung erfolgen. |
access | 0x100 - CHANNEL, 0x1 - READ | 0x103 | Beim Gültigkeitsbereich wird zwischen einem kanalspezifischen und einem kanalübergreifenden, globalen unterschieden. Per Default ist ein Schreib-/Lesezugriff (0x3) auf die Variablen möglich, welcher über den Zugriffsschutz eingeschränkt werden kann. |
max_element | [0; MAX_UNS16] | 0 | Ist die Variable nicht als Feld ausgelegt, so muss die Feldgrösse mit 0 angegeben werden. Ansonsten wird an dieser Stelle die Gesamtgrösse des Feldes festgelegt. |
offset | [0; MAX_UNS32] | 4 | Gibt die Grösse der Variablen an inclusiv evtl. Alignmentbytes, d.h. die Differenz zweier nachfolgenden Feldelemente. Je nach Rechnerarchitektur und Alignmentstrategie kann sich diese Grösse aus den realen Nutzdaten und zusätzlichen Alignmentbytes zusammensetzen. |
kennung | [0; MAX_SGN16] | 0 | Nicht benutzt. Frei vergebbare anwenderspezifische Kennung. |