Visu Variable direkt in Funktionsbaustein?

König777

Level-1
Beiträge
19
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

wie macht Ihr es mit euren Visualisierungen und die Verknüpfung ins Programm. Anbei ein Programm von mir mit einer Temperaturerfassung und Korrektur für einen Multiplexer. Ich habe die Visu Variblen direkt in den Baustein verknüft. In der Vorlage Visu habe ich alle Varible als Platzhalter auf meinen Programmbaustein definiert.
Jetzt kann ich pro aufgerufenen Baustein die Vorlage Visu zuteilen. Wird dies in der Praxis auch so gemacht oder ist dieses Vorgehen schlecht?

Das Gleiche mit dem Baustein für eine Karte 750-460.

Gerne hätte die Visu Variblen als Struct angelegt und dan in den Baustein verknüpft. Doch ich wußte nicht wie ich es anstelle, Teile eines Stuct als Retain zu deklarieren. Gibt es da einen Weg?

Wenn ich irgendwann mit Modbus auf die Visu Variablen zugreifen will ist dies ohne großen Aufwand überhaupt möglich. Ich weiss im Moment nicht in welchem Bereich diese liegen?

Bitte um Kommentar des Programms. Ich möchte lernen...

Gruß König.
 

Anhänge

Hallo König
Jetzt kann ich pro aufgerufenen Baustein die Vorlage Visu zuteilen. Wird dies in der Praxis auch so gemacht oder ist dieses Vorgehen schlecht?
Jein. Wenn du nur eine Visu hast (Webvisu oder WagoApp) ist dies Vorgehen eine gute Möglichkeit Templates mehrfach zu verwenden. Möchtest du wie du schreibst zukünftig über Modbus darauf zugreifen, müssen diese Variablen auf eine Adresse gemappt werden wobei sie automatisch Global werden. Dann lieber übersichtlich als Global definieren.
Gerne hätte die Visu Variblen als Struct angelegt und dan in den Baustein verknüpft. Doch ich wußte nicht wie ich es anstelle, Teile eines Stuct als Retain zu deklarieren. Gibt es da einen Weg?
Nein. In dem Fall müstest du 2 Struct anlegen. Einen der die normalen Variablen beinhaltet und einen für die Retain. Ich halte dieses Vorgehen für besser.
In deinen FB hast du zwar die Variablen schön in Normale und Retain in der Deklaration getrennt ist aber nicht nötig. Sobald eine Variable in einem Baustein Retain oder Persistend deklariert ist werden auch alle anderen Variablen Retain bzw. Persistend. Du rufst deinen FB im PRG auf. Das führt dazu, dass alle variablen im FB als auch alle Variablen im aufrufenden PRG zu Retain werden.
Somit hast du mit 3 Bausteinen bereits über 5% der maximal zur Verfügung stehenden Variablen verbraucht.

PS: in deinem FB zur 750-460 ist ein Fehler bei der Zuweisung Wert 3
PSS: Wenn du ein Programm ins Forum lädst bitte die unnötigen Lib's entfernen oder die Lib's als zip mit anhängen. Es kostet unnötig Zeit erst alle Fehler zu beseitigen die aus fehlenden Lib entstehen.
PSSS: Es macht keinen Sinn die maximale Bausteinanzahl pauschal zu erhöhen.

Holger
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Holger,

vielen Dank für deine Bemühungen das Programm anzuschauen. Deinen Ratschlag die nicht benötigten Lib's zu entfernen bzw. mit zu senden werde ich beim nächsten Upload einhalten. Wenn ich andere Leute um Hilfe bitte sollte ich dies nicht unnötig erschweren und komplizieren.

Die Anzahl der Bausteine habe ich deshalb erhöht damit ich nicht immer die unbenutzten Bausteine im Simulationsmodus ohne SPS (750-880) vom Überstzen auschließen muss.

Wenn ich die Architektur meiner Codesys 2.3 Visualisierung so gestalten will das ich später evtl. mit Modbus auf die Visu Variablen zugreifen kann würdest Du alle Visu Variablen jetzt schon Global definieren? Eine Variable vom Typ..(struct) ist doch automatisch Global?

Die Zuweisung auf feste Merkerbereiche ist dann wohl auch angebracht? Wenn die Archtektur nicht vorab gemacht wird ist dies überhaupt im Nachgang einfach möglich und wie finde ich dann später heraus wo das System welche Variblen ablegt? Gibt es da ein Übersicht?

Wenn ich bestimmte Visu Komponenten als Vorlage gestalte und dann mehrfach im Projekt verwenden will, muss ich doch ein Typ Struct mit den Visu Variablen anlegen. Ist es dann besser die gleichen Visu Komponenten in ein Array of typ zu definieren oder einzeln eine Variable vom Typ ... im verwendetem Programmteil zu definieren (Küche:TypVisu, Wohnzimmer:TypVisu usw.). Wie ist es dann mit dem Platzhalterkonzept der Visu? Geht das Eine wie das Andere, bzw. was ist Besser?

Wenn ich die Visu Variablen in einem Struct definiere und auf meinen Baustein auf lege habe ich dann teilweise ja die doppelte Anzahl einiger Variablen (z.B. Anzeige Visu Ist wert und FB Ausgang Ist Wert).

Wie gestaltest Du deine Programme diesbezüglich. Auch in Bezug der Variblendeklaration auf Global und Lokal. Da tue ich mir als Anfänger immer noch schwer. Irgendwann habe ich mal gelesen..."Global so wenig wie möglich und nur so viel wie nötig". Und mit der Visu kann ich direkt in einen FB lokal zugreifen.

Vielen Dank

Gruß König
 
Zuletzt bearbeitet:
Wenn ich die Architektur meiner Codesys 2.3 Visualisierung so gestalten will das ich später evtl. mit Modbus auf die Visu Variablen zugreifen kann würdest Du alle Visu Variablen jetzt schon Global definieren?
Ja würde ich machen.
Eine Variable vom Typ..(struct) ist doch automatisch Global?
Nein
Die Zuweisung auf feste Merkerbereiche ist dann wohl auch angebracht? Wenn die Archtektur nicht vorab gemacht wird ist dies überhaupt im Nachgang einfach möglich und wie finde ich dann später heraus wo das System welche Variblen ablegt? Gibt es da ein Übersicht?
Die Adresse steht im Controllerhandbuch.
Ic h würde es wie folgt aufbauen:
Code:
Var
  Ausgang_Lampe_Visu : Bool;
end_var
Jetzt kannst du dein Programm fertig schreiben und die Visu basteln. Die Zuweisung auf eine Adresse ist dann relativ einfach.
Code:
Var
  Ausgang_Lampe_Visu at %MX100.0: Bool;
end_var
Wenn ich bestimmte Visu Komponenten als Vorlage gestalte und dann mehrfach im Projekt verwenden will, muss ich doch ein Typ Struct mit den Visu Variablen anlegen. Ist es dann besser die gleichen Visu Komponenten in ein Array of typ zu definieren oder einzeln eine Variable vom Typ ... im verwendetem Programmteil zu definieren (Küche:TypVisu, Wohnzimmer:TypVisu usw.). Wie ist es dann mit dem Platzhalterkonzept der Visu? Geht das Eine wie das Andere, bzw. was ist Besser?
Ich würde für gleiche Visuteile ein Template wie du erstellen. Die Variablen würde ich als Struct INOUT übergeben.
Holger
 
Hallo Holger,

ist es in Bezug auf die Verlinkung auf Modbus besser im "Visu Struct" die Variablen einzeln aufzuführen oder kann ich dort die gleichen Typen in einem Array zusammenfassen?

Gruß König
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das hängt von deiner Visu und der Dynamik ab.
Wenn du jeden Wert einzeln liest/schreibst ist es ein höherer Zeitaufwand. Per Modbus TCP/IP kannst du maximal 125 Worte in einem rutsch lesen/schreiben.
Wie man Variablen zusammenfasst ist sicher Geschmackssache. Ich habe immer einen Struct erstellt je Raum der alle Variablen enthält. Andere mögen es lieber funktionsbedingt. Also alle Lampen zusammen usw.
 
Zurück
Oben