Deklaration Konstanten PLC-Control

MarkusP

Level-2
Beiträge
324
Reaktionspunkte
31
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hätte da wieder einmal eine Frage an Euch. Eigentlich etwas ganz banales, aber offenbar doch nicht...

Eine über VAR CONSTANT deklarierte Variable erhält ja den ihr im Code zugewiesenen Wert. Als ich später einmal im Code den Wert der Konstante änderte (das dachte ich zumindest), war das Erstaunen groß, dass der Inhalt der "Variablen" nachwievor der alte war. Ich musste die Steuerung zurücksetzen, damit der Wert des Codes übernommen wurde! Damit würde sich die Konstanten ja gleich verhalten wie eine "normale" Variable, die mit einem Startwert initialisert wird :confused:

Kann mir das jemand erklären? (in der Doku finde ich weder bei Beckhoff noch bei 3S etwas darüber)

Danke und schönen Abend!
 
Hallo Markus,

laut meinem Verständnis für Konstanten behält diese den initialisierten Wert und kann nicht vom Code aus überschrieben werden.
Eine normale Variable wird immer auf 0 initialisiert. Möchte man einen anderen Wert am Anfang in der Variable stehen haben muss man dies mit einer Initialisierung machen. Egal ob mit oder ohne eigener Initialisierung sind normale Variablen aber immer vom Code schreibbar.

Grüße, Mario
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bei der Standardeinstellung des Compilers werden Konstanten tatsächlich im Datenspeicher abgelegt. Es sind sozusagen initialisierte Variablen mit Schreibschutz. Merken tut man das manchmal, wenn man zu viele Online Changes gemacht hat und die Speicherbereiche nicht mehr richtig reorganisiert werden. Dann ändern sich auch schon mal die Werte von Konstanten.
Um dies zu vermeiden, kannst Du im PLC Control unter "Projekt/Optionen/Übersetzungsoptionen" den Punkt "Konstanten ersetzen" einschalten. Dann schreibt der Compiler die Konstantenwerte direkt in das Programm. Hat ausserdem den Vorteil, dass man dann Konstanten als Bitselektor in Integervariablen verwenden kann (statt WordVar.5 WordVar.NameVonBit5).
 
Hallo Markus,
laut meinem Verständnis für Konstanten behält diese den initialisierten Wert und kann nicht vom Code aus überschrieben werden.

Ich meinte mit Code natürlich richtigerweise in der Variablendeklaration. Und das funktioniert dann nicht. Den Wert der Variable kann man jedoch jederzeit ändern. (z.B. in einer Watchliste)

Ich werde einmal die Compiler Option wie von StructuredTrash beschrieben testen.

Danke für Eure Antworten
 
Zurück
Oben