# Globale Variablen und System Variablen Codesys 2



## Passion4Automation (8 März 2018)

Hallo,

ich arbeite mit Wago unter Codesys 2.3. Mir ist schon öfters aufgefallen, wenn ich z.B einen DI im Programm verarbeiten will, dann drücke ich F2 und wähle unter System Variablen meinen DI aus. Funktioniert auch soweit.
Alle DI und DO tauchen mit der Suche unter F2 auch als Globale Variablen auf. Worin liegt da der Unterschied?? Sollte ich die System oder Globalen Variablen im Code verarbeiten??

Besten Dank.


----------



## Passion4Automation (23 März 2018)

Hat keiner eine Antwort. Muss doch irgendwie nen Sinn haben das alle Ein und Ausgänge auch in Var_Glob erscheinen?


----------



## KingHelmer (23 März 2018)

Hi,

also ich wollte eben mal nachsehen, ob das bei mir auch so ist und nein, meine DI und DO erscheinen nicht unter den System Variablen.
Ich deklariere ohnehin in den globalen Variablen eine Liste die ich IN_OUT nenne und in der alle meine DIs und DOs auf globale Vars deklariert werden.

z.B. DI1_1 AT %IX3.0: BOOL;

Hat den Vorteil, dass ich bei verschiedenen Steuerungskonfigurationen (geänderte Adressen) aber gleichbleibendem Program nur die globale Variablenliste austauschen muss.

Gruß, 
Flo


----------



## Tiktal (23 März 2018)

Bei mir ist es ebenfalls so. Konfiguriere auch unter den System-Variablen. 
Da brauch ich mir um die Adressierung keine Gedanken machen wenn mal eine Karte dazu kommt.

Gruß

Onno


----------



## Deep Blue (23 März 2018)

KingHelmer schrieb:


> Ich deklariere ohnehin in den globalen Variablen eine Liste die ich IN_OUT nenne und in der alle meine DIs und DOs auf globale Vars deklariert werden.
> 
> z.B. DI1_1 AT %IX3.0: BOOL;
> 
> Hat den Vorteil, dass ich bei verschiedenen Steuerungskonfigurationen (geänderte Adressen) aber gleichbleibendem Program nur die globale Variablenliste austauschen muss.



Also ich deklariere meine Variablen immer in der Steuerungskonfiguration an der Klemme. So brauche ich mich bei stecken einer neuen Klemme nicht um Variablenbezeichnungen kümmern oder unter globalen Variablen etwas beachten. Diese kann ich dann sowohl als Systemvariable als auch als Globale Variable in der Auswahl F2 nutzen. Ich denke, das beide Wege auf das Gleiche Ziel münden. Eine benannte Variable an der Klemme ist sowohl global als auch eine System Variable.


----------



## jeme-Automatisierung (24 März 2018)

Deep Blue schrieb:


> Also ich deklariere meine Variablen immer in der Steuerungskonfiguration an der Klemme. So brauche ich mich bei stecken einer neuen Klemme nicht um Variablenbezeichnungen kümmern oder unter globalen Variablen etwas beachten. Diese kann ich dann sowohl als Systemvariable als auch als Globale Variable in der Auswahl F2 nutzen. Ich denke, das beide Wege auf das Gleiche Ziel münden. Eine benannte Variable an der Klemme ist sowohl global als auch eine System Variable.



Ich mache das genauso. Auch der Vorteil von K*ingHelmer* Variablenliste ist meiner Meinung nach mit der Deklaration direkt an den Eingangskarten abgedeckt. Denn bei gleichbleibenden Programm mit anderer Steuerungskonfiguration hat man bei beiden Varianten im Prinzip den gleichen Aufwand mit der Anpassung. Einmal muss ich die Vars in der Steuerungskonfig ändern, und einmal muss die Variablenliste angepasst werden.


----------



## Passion4Automation (24 März 2018)

Danke für Eure Antworten.

Ok dann mache ich zumindest nichts großartig falsch. 
@Flo: Deine Variante ist interessant, kann bei mir auch schon mal vorkommen, dass der gleiche Code auf verschiedener Hardware läuft.


----------

