Variablen richtig deklarieren

JüKo

Level-2
Beiträge
111
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo wissendes Forum,

wenn ich z.B. ein SR-Glied in einem von mir angelegten POU-Programm (in ST geschrieben) verwende, dann schreibe ich im Deklarationsteil des POU-Programms z.B. "MerkerSR: SR;"
Wo aber schreibe ich die Deklaration der dazugehörigen Variablen, also SET1, RESET und Q1 hin, wenn diese auch übergreifend in anderen Programmteilen verwendet werden sollen?
Gehört das in die globale Variablenliste? oder brauch ich da die Variablen IN / OUT?

Noch eine Frage. Wenn ich Variablen in die PVL schreibe, müssen diese dann damit diese überall verfügbar sind, dann auch in einem Programm an einer Stelle übergeben werde?
Also so "GVL.Var1:= PVL.Var1", oder ist die PVL auch global?

Danke und freundliche Grüße,
Jürgen
 
Zu eins)
Die Variablen der Ein- und Ausgänge musst Du nicht deklarieren, dass erfolgt im FB schon. Soweit Du an die Eingänge aber Variablen übergibst musst diese natürlich deklarieren.
So zum Beispiel
Code:
VAR
  fbFlipFlop : SR;
  xSet : BOOL;
  xReset : BOOL;
  xQ : BOOL
END_VAR

fbFlipFlop(SET1 := xSet, RESET := xReset);
xQ := fbFlipFlop.Q1
Sollen die Eingangsvariablen von außen kommen müssen diese unter VAR_INPUT deklariert werden, außer sie sollen von einer Visu gesetzt werden, dann ist das nicht erforderlich. Der Ausgang entsprechen bei VAR_OUTPUT, aber halt auch nicht SET1, RESET und Q1.

Zu zwei) Nein, global heißt global. Auf eine in einer GVL deklarierten Variable kannst Du von überall aus zugreifen ohne Sie noch irgendwie zu übergeben, dass ist ja gerade der Sinn der GVL. Soweit in der GVL das Pragma "qualiofied_only" genutzt wird musst Du auch den Namen der GVL beim Zugriff auf die Variable mit angeben.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Oliver,
nochmal zu eins), wenn ich diese Variablen dann noch in mehreren Programmbausteinen verwende, dann deklariere ich die Variablen in der GVL und das SR-Glied da wo es einsetzt ist?
Also bezogen auf dein Beispiel müsste dann das so wie folgt aussehen? GVL.fbFlipFlop.SET1 GVL.fbFlipFlop.Q1 ...

zu zwei), ich meinte die PVL. Kann ich diese Variablen auch überall verwenden? Also so wie auch in der GVL. Danke schon mal...
Und freundliche Grüße,
Jürgen
 
Hallo Jürgen,
Hallo Oliver,
nochmal zu eins), wenn ich diese Variablen dann noch in mehreren Programmbausteinen verwende, dann deklariere ich die Variablen in der GVL und das SR-Glied da wo es einsetzt ist?
Also bezogen auf dein Beispiel müsste dann das so wie folgt aussehen? GVL.fbFlipFlop.SET1 GVL.fbFlipFlop.Q1 ...
Wie ich schon schrieb werden die Ein- und Ausgänge die ein FB nutzt vom FB deklariert, dass musst Du nicht machen und kannst es auch gar nicht. Was Du machen musst sind die Variablen zu deklarieren, die die Eingänge des FBs beschreiben, bzw. die die Daten der Ausgänge erhalten sollen, aber das sollte eigentlich schon aus meinem Codebeispiel deutlich geworden sein, denn da habe ich ja auch nicht die Ein- und Ausgänge des FBs deklariert. Du kannst Variablen in einer GVL deklarieren, diese "verknüpfst" Du dann mit den Ein- und Ausgängen des FBs und kannst dann von überall auf diese Variablen zugreifen, allerdings ist das schlechter Programmierstil. Man sollte eine Variable nicht in mehreren FBs beschreiben, sowas fällt einem beim Debuggen immer auf die Füße. Vielmehr sollte jeder FB der das FlipFlop steuern soll einen entsprechenden Ausgang haben, diese sammelst Du ein, verknüpfst sie (z.B. durch ein ODER) und übergibst das Ergebnis an den FB mit dem FlipFlop, wo Du die Variablen die Daten an das FlipFlop übergeben als VAR_INPUT deklarierst. So siehst Du gleich auf einen Blick, welcher FB das FlipFlop wie ansteuert.
zu zwei), ich meinte die PVL. Kann ich diese Variablen auch überall verwenden? Also so wie auch in der GVL. Danke schon mal...
Und freundliche Grüße,
Jürgen
Was ist eine PVL, finde den Begriff gerade nicht?
Bei der Gelegenheit, um welche Entwicklungsumgebung geht es eigentlich Codesys 2.3/3.5, TwinCAT 2/3, WAGO e!Cockpit?
 
Hallo Oliver,
zu eins) PERFEKT! Danke
zu zwei) Ich arbeite mit der Codesys 3.5. Mit PVL meine ich die Liste in der ich die persistenten Variablen reinschreibe.
Freundliche Grüße,
Jürgen
 
Ja ich glaub schon...
Erzeugt hab ich die unter Application, rechte Maustaste, Objekt hinzufügen, Persistente Variablen.
 
Zurück
Oben