Syntax (ab Version V254)

Die Syntax der Konfiguration ab Version V254 wurde so erweitert, dass Elemente mit Defaultwerten vorbelegt sind und Einstellungen über textuelle Konstanten vorgegeben werden können.

Kommentare können ganzzeilig, oder am Ende einer Zeile eingefügt werden.

Bei ganzzeiligem Kommentar muss am Zeilenanfang das Kommentarzeichen "'#", gefolgt von einem Leerzeichen eingefügt werden.

Soll am Ende einer Zeile ein Kommentar eingefügt werden, so muss vor dem Kommentar lediglich ein Leerzeichen vorhanden sein. Wurde in der Zeile jedoch ein String definiert, so muss dem Kommentar das Kommentarzeichen "(" vorangestellt werden.

Leerzeilen sind ebenfalls möglich.

Beispiele für Kommentare:

# ************************************************************************ 
# Daten
# ************************************************************************
#
# Auflistung
dummy[1] 1 Kommentar
dummy[2] 1 # Kommentar
dummy[3] 1 ( Kommentar
dummy[4] 1 /* Kommentar
...
beispiel[0].bezeichnung STRING_2 (Kommentar, hier Kommentarklammer nötig!)

Beispiel einer ASCII Liste:

# *************************************** 
# Externe Variablen V254
# ****************************************
#
anzahl_belegt 2
#
var[0].name GLOBAL_SWR (Globale VE)
var[0].index 0
var[0].type SGN16
var[0].scope GLOBAL
var[0].synchronisation FALSE
var[0].access_rights READ_ONLY
var[0].array_size 0
var[0].size 2 # 2 Byte pro Element
var[0].create_hmi_interface FALSE
#
var[1].name CHANNEL_WR (Kanal VE)
var[1].index 0
var[1].type SGN32
var[1].scope CHANNEL
var[1].synchronisation FALSE
var[1].access_rights READ_ONLY
var[1].array_size 10
var[1].size 4 # 4 Byte pro Element
var[1].create_hmi_interface FALSE
#
Ende

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>). Der Name darf dabei nicht länger als 20 Zeichen sein.

Gross- und Kleinbuchstaben werden unterschieden.

index

[0; MAX_SGN32]

-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.

type

[BOOLEAN,
SGN08, UNS08, SGN16, UNS16, SGN32; UNS32, REAL64, STRING]

UNS32

Der Typ gibt den Datentyp der Variablen an. Neben elementaren Datentypen (SGN08,...,REAL64) existiert der Datentyp STRING, welcher derzeit inklusiv Endmarke 24 Byte umfasst.

scope

[GLOBAL; CHANNEL]

CHANNEL

Beim Gültigkeitsbereich wird zwischen einem kanalspezifischen und einem kanalübergreifenden, globalen unterschieden.

synchronisation

[TRUE, FALSE]

TRUE

Der Schreib-/Lesezugriff erfolgt normalerweise synchron zur Bearbeitung. In Einzelfällen kann diese implizite Synchronisierung unterdrückt werden (s. Kapitel 3.1.1).

access_rights

[READ_WRITE, READ_ONLY, WRITE_ONLY]

READ_WRITE

Per Default ist ein Schreib-/Lesezugriff auf die Variablen möglich, welcher über den Zugriffsschutz eingeschränkt werden kann.

array_size

[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.

size

[0; MAX_UNS32]

4

Gibt die Grösse der Variablen an inclusiv evtl. Alignmentbytes, d.h. die Differenz zweier nachfolgenden Elemente eines Feldes. Je nach Rechnerarchitektur und Alignmentstrategie kann sich diese Grösse aus den realen Nutzdaten und zusätzlichen Alignmentbytes zusammensetzen.

Größe der Datentypen:

1 BYTE-BOOLEAN,UNS08, SGN08

2-BYTE-SGN16, UNS16

4 BYTE-SGN32, UNS32

8 BYTE-REAL64

24 BYTE-STRING

create_hmi_interface

[TRUE, FALSE]

FALSE

Für jede Variable kann zusätzlich der Zugriff über die Oberfläche durch ein entsprechendes Kommunikationsobjekt ermöglicht werden, falls das Flag gesetzt ist.