der online Modus darf immer alle Variablen überschreiben (Konstanten sind auch Variablen - dein Programm darf es aber nicht so solltest du eigentlich genau das erreicht haben was du willst. Willst du auch im Online-Mode nicht beschreibbare Konstanten, so musst du in Projekt-->Optionen-->Übersetzungsoptionen den Hacken bei Konstanten ersetzen machen.
Gruß
Ralph
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Ich war nur irritiert, da Konstanten beim Simulieren grün dargestellt werden und man ihren Wert nicht ändern kann. Allerdings war das beim Array und bei der Struktur möglich. Vielleicht sind nur die skalaren Variablen grün?!
Wenn ich jedoch im Programm vorschreibe, auf dieses Array schreibend zuzugreifen, dann kommt der Fehler 4020 ("Operanden von ST, STN, S, R müssen Variable mit Schreibzugriff sein") - also, wie erwartet.
Also war es doch richtig.
Zitat:
der online Modus darf immer alle Variablen überschreiben
Was heißt das genau? Laufe ich Gefahr, dass Konstanten mal verändert werden können?
Ok, danke!
Grüße
Sara
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2009-04-24
Originally created by: Bernhard Werner
Sara hat geschrieben:
Allerdings war das beim Array und bei der Struktur möglich. Vielleicht sind nur die skalaren Variablen grün?!
Richtig: grün sind die Variablen die es sozusagen auf der Steuerung gar nicht gibt sondern direkt im Code ersetzt werden. Für Strukturen und Arrays funktioniert das nicht. Die gibt es genauso im Speicher wie wenn
sie nicht konstant wären, der Compiler testet nur, ob auf diese geschrieben wird.
Sara hat geschrieben:
Was heißt das genau? Laufe ich Gefahr, dass Konstanten mal verändert werden können?
Ralph meint, mit Variablen schreiben darf man auch (nichtgrüne) Konstanten zur Laufzeit verändern, aber das ist dann ein bewusster Akt und wir nehmen an, dass derjenige der das tut schon weiss was er macht.
Über Fehler in der Programmierung (Pointer oder Arrays die ausserhalb ihres Bereichs zugegriffen werden) kann eine solche Konstante auch verändert werden.
Bernhard
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Vielen Dank für deine Antwort. Das erklärt mir einiges.
Zitat:
Ralph meint, mit Variablen schreiben darf man auch (nichtgrüne) Konstanten zur Laufzeit verändern, aber das ist dann ein bewusster Akt
Wie genau geht das? Man kann diese Variable ja nicht wie eine normale behandeln, da nicht drauf geschrieben werden kann. Über Pointer auf diese Variable?
Danke.
Viele Grüße
Sara
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi ihr,
ich möchte ein Array und eine Struktur als konstant definieren. Grob sieht's so aus:
VAR_GLOBAL CONSTANT
arr_const : ARRAY [1..10] OF BOOL := 10(FALSE);
struct_reset : selbstdef_Struct; (die Details lass ich hier mal weg)
END_VAR
Im Online-Modus kann jedoch auf diese Konstanten schreibend zugegriffen werden, was ich ja vermeiden will.
Was mach ich falsch? Geht das überhaupt, wie ich das will?
Danke für eure Hilfe!
Sara
Hallo Sara,
der online Modus darf immer alle Variablen überschreiben (Konstanten sind auch Variablen - dein Programm darf es aber nicht so solltest du eigentlich genau das erreicht haben was du willst. Willst du auch im Online-Mode nicht beschreibbare Konstanten, so musst du in Projekt-->Optionen-->Übersetzungsoptionen den Hacken bei Konstanten ersetzen machen.
Gruß
Ralph
Hallo Ralph,
"Konstanten ersetzen" war schon aktiviert.
Ich war nur irritiert, da Konstanten beim Simulieren grün dargestellt werden und man ihren Wert nicht ändern kann. Allerdings war das beim Array und bei der Struktur möglich. Vielleicht sind nur die skalaren Variablen grün?!
Wenn ich jedoch im Programm vorschreibe, auf dieses Array schreibend zuzugreifen, dann kommt der Fehler 4020 ("Operanden von ST, STN, S, R müssen Variable mit Schreibzugriff sein") - also, wie erwartet.
Also war es doch richtig.
Was heißt das genau? Laufe ich Gefahr, dass Konstanten mal verändert werden können?
Ok, danke!
Grüße
Sara
Originally created by: Bernhard Werner
Richtig: grün sind die Variablen die es sozusagen auf der Steuerung gar nicht gibt sondern direkt im Code ersetzt werden. Für Strukturen und Arrays funktioniert das nicht. Die gibt es genauso im Speicher wie wenn
sie nicht konstant wären, der Compiler testet nur, ob auf diese geschrieben wird.
Ralph meint, mit Variablen schreiben darf man auch (nichtgrüne) Konstanten zur Laufzeit verändern, aber das ist dann ein bewusster Akt und wir nehmen an, dass derjenige der das tut schon weiss was er macht.
Über Fehler in der Programmierung (Pointer oder Arrays die ausserhalb ihres Bereichs zugegriffen werden) kann eine solche Konstante auch verändert werden.
Bernhard
Hallo Bernhard!
Vielen Dank für deine Antwort. Das erklärt mir einiges.
Wie genau geht das? Man kann diese Variable ja nicht wie eine normale behandeln, da nicht drauf geschrieben werden kann. Über Pointer auf diese Variable?
Danke.
Viele Grüße
Sara