Welche Art von Variablen?

JüKo

Level-2
Beiträge
91
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo an Euch,
ich hab mal eine Anfängerfrage!
Wenn ich z. B. drei Unterprogramme habe: Motor, Bremse und Steuerung. Diese drei Programme sollen über Variablen miteinander kommunizieren.
Ich hab zwei Möglichkeiten und kann aber für mich nicht Einschätzen welche die Richtige ist, da beide funktionieren.

1. über die Namenserweiterung, dieses setzte ich dann im Unterprogramm in der die Variable nicht erzeugt wurde mit vor die Variable.
Also z. B. Motor.Motoreingang, Motor.Geschwindigkeitstufe oder Bremse.Bremsblockier.
oder
2. über die GVL.Motoreingang, GVL.Geschwindigkeitstufe oder GVL.Bremsblockier.

Welcher Programmierstil ist der bessere und wo gibt es die Vor und Nachteile?

Danke an Euch für das Wissen und Grüße,
Jürgen
 
Wenn du mit Codesys 3.5 arbeitest machen globale variablen als konstanten Sinn oder zum IO Mapping , Diagnosen…
Verwende diese möglichst sparsam, da dadurch die Abhängigkeit und die Komplexität oftmals steigt. Gleichzeitig sinkt auch die Flexibilität deiner erstellten Funktionen.
Quasi ein Relikt aus einer vergangenen Zeit in der Speicher knapp war und Programm sehr überschaubar, nichts desto trotz hat es in der modernen auch noch seine Berechtigung.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Onkel,
dann ist also meine erste Variante zu bevorzugen? Meine Variablen stehen im Deklarationsteil zwischen VAR und END_VAR.
Es gibt doch aber auch die Möglichkeit von VAR_INPUT und VAR_OUTPUT. Macht das Sinn oder ist das für was anderes?

Danke und Grüße,
Jürgen
 
Hallo Onkel,
dann ist also meine erste Variante zu bevorzugen? Meine Variablen stehen im Deklarationsteil zwischen VAR und END_VAR.
Es gibt doch aber auch die Möglichkeit von VAR_INPUT und VAR_OUTPUT. Macht das Sinn oder ist das für was anderes?

Danke und Grüße,
Jürgen

Ja VAR_INPUT und VAR_OUTPUT sind essenziell.
Für den VAR_INPUT z.B.
iGeschwindigkeitstufe:INT;
xBremsblockier:BOOL;

Für den VAR_OUTPUT deine Ansteuerungen.


VAR und END_VAR Sind deine Internen variablen für diverse Aufgaben(Verriegelungen,Berechnungen…)
Auch wenn es die Möglichkeit gibt diese mittels Punktoperator zu manipulieren also z. B. Motor.Motoreingang:= True; ist das ein schlechter Stil, weil es interne Probleme verursachen kann in deiner anderen Logik.

Grüße Florian
 
Hallo Onkel,
dann ist also meine erste Variante zu bevorzugen? Meine Variablen stehen im Deklarationsteil zwischen VAR und END_VAR.
Es gibt doch aber auch die Möglichkeit von VAR_INPUT und VAR_OUTPUT. Macht das Sinn oder ist das für was anderes?

Danke und Grüße,
Jürgen

Vielleicht wäre es durchaus sinnvoll sich fertige FBs anzuschauen um zu verstehen wie andere das machen, eine beliebte wäre die OSCAT.

 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Florian,
das Programm funktioniert zwar ohne "VAR_INPUT und VAR_OUTPUT", also nur mit "VAR und END_VAR" aber dann schreib ich das Programm nochmal um. Also alle Variablen die ich nur in einem Unterprogramm verwende, die deklarier ich dann zwischen VAR und END_VAR? DIe anderen Variablen die an andere Unterprogramme übergeben werden, die stehen dann zwischen VAR_INPUT und VAR_OUTPUT. Richtig?
Ach und noch ne Frage: Hat eigentlich die Länge des Namens der Variable einen Einfluss auf die Größe des Programms, oder ist die Namenslänge hierbei egal?

Danke und Grüße,
Jürgen
 
Hallo Florian,
das Programm funktioniert zwar ohne "VAR_INPUT und VAR_OUTPUT", also nur mit "VAR und END_VAR" aber dann schreib ich das Programm nochmal um. Also alle Variablen die ich nur in einem Unterprogramm verwende, die deklarier ich dann zwischen VAR und END_VAR? DIe anderen Variablen die an andere Unterprogramme übergeben werden, die stehen dann zwischen VAR_INPUT und VAR_OUTPUT. Richtig?
Ach und noch ne Frage: Hat eigentlich die Länge des Namens der Variable einen Einfluss auf die Größe des Programms, oder ist die Namenslänge hierbei egal?

Danke und Grüße,
Jürgen
Ja Input zu Input und Output zu Output.

Die läge des Variablennamens ist nicht verantwortlich für die Größe des Codes, nur das Datenformat z.B. Real = 32 Bit, dies wiederum betrifft nur den Arbeitsspeicher. Der programmspeicher wird durch Operationen gefüllt.

In der heutigen Zeit sind RAM und programmspeicher fast schon zu vernachlässigen in der SPS, es gibt einfach reichlich. Nichts desto trotz sollte man immer bestrebt sein das Optimum herauszubekommen. Gerade am Anfang, damit man das Paradigma verinnerlicht.
 
Zurück
Oben