TIA HMI-Variable als "ARRAY of UDT" und deren Zählung der Tags

Onkel Dagobert

Level-3
Beiträge
6.205
Reaktionspunkte
1.712
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Fans,

ich bin gerade dabei, meine erste etwas größere Visualisierung mit TIA auf einem TP1500 Comfort zu riskieren. Zunächst hatte ich Probleme, meine Bildbausteine (kurz BB) aus einem migrierten Flexible2008-Projekt zu verwenden, in deren Schnittstellen (kleinere) UDTs verwendet wurden. Diese UDTs waren irgendwie auf S73007400 getrimmt. Naja egal, dieses Vorhaben schnell über Bord geworfen und unter TIA saubere BBs erstellt. Dabei bin ich konstruktiv so vorgegangen, wie vor etwa zehn Jahren mit Flexible 2007. Ich habe nämlich "große" UDTs an den Schnittstellen der Bildbausteine verwendet, von denen eigentlich nur ein kleiner Teil der Variablen im BB Verwendung finden. Der Vorteil eines solchen Systems ist eine gute Übersichtlichkeit und dadurch natürlich auch eine verringerte Variablen-Verwechslungsgefahr.

Natürlich hatte ich meinen Reinfall von 2011 beim Hochrüsten eines MP277 von Flexible 2007 auf 2008 nicht vergessen: WinCC flexible Systemgrenzen Es wurde damals von Siemens einfach mal so die Zählung der Variablen verändert. Es wurden in der 2008er Version jede elementare Variable jeder verwendeten Instanz gezählt, unabhängig davon, ob diese Variable im BB tatsächlich verwendet wurde. Dadurch wuchs die Anzahl der Tags (nicht zu verwechseln mit den Powertags) mal eben auf stattliche 25504 (in Worten: Fünfundzwanzigtausendundfünfhundertundvier) an und überschritt damit die Systemgrenze von 4000. Ich musste damals wieder zurückrüsten auf die 2007er Version.

Für mich sieht es heute in TIA so aus, als würden erfreulicherweise(?) wieder "nur" die tatsächlich verwendeten Tags gezählt. Ist das so oder täuscht sich mein getrübtes Auge? Wenn dem so ist, bleibt es auch dabei, SIEMENS?

In diesem Zusammenhang wüßte ich auch gerne, wie man über eine HMI-Variable indiziert auf ein "ARRAY of UDT" zugreift. Ich habe also einen Global-DB mit einem "ARRAY[100..299] of UDT". In TIA hätte ich gerne eine HMI-Variable zur indizierten Verwendung der Array-Elemete. Oder muss ich statt dessen 300 einzelne Variablen anlegen? Wie würde ich das denn dann am elegantesten machen? Der "NachUntenZiehTrick" scheint hier nicht zu funktionieren? Und wie bekomme ich in dem Fall eine Symbolik in die Variablennamen? Im Zeitalter von Drugs and Drops and Siemens werde ich das doch nicht alles per Hand machen müssen?


Gruß, Onkel
 
wie die Zaehlung der Tags funktioniert, versteht wohl niemand so genau. Selbst die Angaben wie viele moeglich sind, sind unterschiedlich. Sind es nun 4000 oder 8000 bei nem TP1500??? Was genau ist der Unterschied zwischen Tags und Powertags...
nunja wenn Dus genau wissen willst musst Dus austesten, aber immer Gesamtuebersetzen machen, sonst funktioniert die Berechnung der verwendeten Variablen ueberhaupt nicht!
Gruss
 
In diesem Zusammenhang wüßte ich auch gerne, wie man über eine HMI-Variable indiziert auf ein "ARRAY of UDT" zugreift. Ich habe also einen Global-DB mit einem "ARRAY[100..299] of UDT". In TIA hätte ich gerne eine HMI-Variable zur indizierten Verwendung der Array-Elemete. Oder muss ich statt dessen 300 einzelne Variablen anlegen? Wie würde ich das denn dann am elegantesten machen? Der "NachUntenZiehTrick" scheint hier nicht zu funktionieren? Und wie bekomme ich in dem Fall eine Symbolik in die Variablennamen? Im Zeitalter von Drugs and Drops and Siemens werde ich das doch nicht alles per Hand machen müssen?
Für's HMI müsstest Du eine Multiplex-Variable anlegen. Das geht jedoch nur für Einzelvariablen, nicht für Strukturen. (Mal davon abgesehen, dass das Anlegen der Multiplex-Variablen auch immer ziemlich zeitaufwendig ist.)

Ich mach' das beim Array of UDT daher in der SPS.
Noch eine zusätzliche einzelne Variable vom UDT angelegt und dieser dann den Wert in Abhängigkeit von der HMI-Variable Ihren Wert zugewiesen:
Code:
MyHMI_UDT := MyArray_UDT [MyHMI_Choice];
PS: Wenn Du dann auch noch schreibend auf das Array zugreifen möchtest, musst Du in der SPS bei Änderungen von Werten diese auch noch zurück übertragen.
 
Zuletzt bearbeitet:
@Münchnerjunge
Danke, das ist die durchaus praktikable Plan-B-Lösung nach der ich gesucht habe. Hatte vieles probiert, komisch dass ich da nicht selbst drauf gekommen bin.

@hucki
Das Multiplexen in der SPS gehört auch bei mir zum Standard. Bei Anlagenbildern mit einer Vielzahl von Aktoren braucht man allerdings für alle Aktoren pararell mehrere Variablen für Status, Betriebsart, Stellgrad etc. Wenn ich auf einfache Art und Weise jeweils meinen komletten UDT verwenden kann, habe ich alle denkbaren Möglichkeiten ohne zusätzliche Variablen und ohne zusätzlichen Programmieraufwand. Ich hoffe nur, Siemens macht mir mit dem nächsten Update nicht wieder einen Strich durch die Rechnung.

Btw.
Gut dass man jetzt auch die elemetaren Datentypen aus den HMI-UDT-Variablen direkt verwenden. Das ging bei den Strukturvariablen im klassischen Flexible nicht.
 
In diesem Zusammenhang wüßte ich auch gerne, wie man über eine HMI-Variable indiziert auf ein "ARRAY of UDT" zugreift. Ich habe also einen Global-DB mit einem "ARRAY[100..299] of UDT". In TIA hätte ich gerne eine HMI-Variable zur indizierten Verwendung der Array-Elemete.

Gruß, Onkel

Hast du schon WinCC V14? Dort steht bei "Was ist neu":
- Symbolisch Adressmultiplexen von PlcUDT instanzen innerhalb einer ARRAY-Variablen eines Datenbausteins.

Hab mir das mal angesehen und das dürfte für dein Global-DB mit einem "ARRAY[100..299] of UDT" eigentlich das richtige sein.
links:HMI Variablen,
rechts: Datenbaustein in PLC

V14MUX.jpg

Gruß, Nico
 
Hallo Nico,

ja, die Möglichkeit mit dem Array-Multiplexen hatte ich gefunden. Beim Multiplexen kann man zu einem Zeitpunkt aber immer nur auf einen einzigen Datensatz adressieren. Das hilft nichts, wenn man eine Vielzahl an Datensätzen gleichzeitig in einem Bild visualisieren will.



@Münchnerjunge
... Hatte vieles probiert, komisch dass ich da nicht selbst drauf gekommen bin...
Ich weiß jetzt auch warum. Es ist mir auch heute wieder passiert dass ich im DB die Variablen nicht für den HMI-Zugriff frei gegeben habe :ROFLMAO: . Dann kann man drugsen and dropsen wie man will, es geht einfach nicht.
 
Zurück
Oben