TIA Multiplexen von symbolischen Variablen (Array) im HMI

Asiris

Level-2
Beiträge
8
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen

Ich habe in der S7-1500 ein Array mit ca. 100 einträgen. Die Einträge im Array sind Datentypen und enthalten diverse Variablen (Array[0..100] of "Datentyp").
In der S7 werte ich nun aus, welches Array-Element aktiv ist und möchte dies auf dem HMI variabel anzeigen lassen. Dazu habe ich ein Array-Element in den HMI-Variabeln angelegt und in die []-Klammern möchte ich meine INT-Variable aus der Steuerung setzten. Im Feld PLC-Variable würde also folgendes stehen " TestDB.Array[Wert] ". Allerdings nimmt das TIA diese Eingabe nicht an.


In der Hilfe des TIA hab ich folgendes gefunden:

Multiplexen mit symbolischer Adressierung

Beim Multiplexen mit symbolischer Adressierung greifen Sie mithilfe einer Multiplexvariable und einer Indexvariable auf ein Arrayelement einer Arrayvariable in einem Datenbaustein der verbundenen Steuerung zu. Die Multiplexvariable enthält die symbolische Adresse des Datenbausteins, auf den Sie zugreifen wollen. Die symbolische Adresse enthält außerdem die Indexvariable, über die Sie auf den Index der Arrayvariable zugreifen.
Wenn Sie z. B. auf die Arrayvariable "Arraytag_1" im Datenbaustein "Datablock_1" zugreifen wollen, sieht der Ausdruck für die symbolische Adressierung folgendermaßen aus:
"Datablock_1.Arraytag_1["HMITag_1"]
Mit der HMI-Variable "HMITag_1" steuern Sie den Zugriff auf den Index der Arrayelemente. Die Variable versorgen Sie in Runtime mit dem Index des Arrayelements, auf das Sie jeweils zugreifen wollen.


Wenn ich das richtig interpretiere müsste dies also funktionieren :confused:

Ich arbeite mit TIA V13 SP1 Upd3
CPU 1513-1 PN
HMI TP2200 Comfort

Mit freundlichen Grüssen
Asiris
 
Hallo,

das funktioniert auch so wie du dir das gedacht hast, nur kannst du die indirekte Adressierung so nicht einfach im WinCC eingeben.
Lege einfach erst einmal die Variable mit dem Index [0] an. Nach Anlegen dieser Variable klickst du diese mit der rechten Maus an und wählst die Eigenschaften an. Dort gehst du im Register Allgemein in das Feld Adresse und wählst den Reiter HMI_Variable an. Hier kannst du dann deinen Index verknüpfen.
Ist wirklich verwirrend, vor allem denkt man bei Adresse nicht unbedingt an so etwas.

Die genaue Beschreibung mit Bildern findest du im Systemhandbuch WinCC Professional V13.0 SP1 ab Seite 536. Der Download lohnt sich, da habe ich noch so einige Tricks gefunden.
Bei Advanced funktioniert das genauso.

Mit freundlichen Grüßen
q181699
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo q181699

Vielen Dank für deine Antwort. Sie hat mich des Rätsels-Lösung schon näher gebracht. ;)

Es scheint als ob es nicht möglich ist, Arrays mit selbsterstellen Datentypen variabel anzusprechen.. Beim Anlegen wird das Feld Adresse rot und die Meldung "Anwenderdatentypen können nicht verwendet werden" erscheint kurz.
Zeige ich allerdings bei der Variable auf ein Element innerhalb des Arrays, lässt sich diese Problemlos variabel anprechen.

Bleibt zu hoffen das dies noch geändert wird..

Mit freundlichen Grüssen
Asiris
 
Hallo Asiris,

ich hatte das gleiche Problem im TIA Portal V13 und dem integrierten WinCC. Leider Kann man keine komplette Datentypen (die z.B. in einem Global-Datenbaustein abgelegt worden sind) multiplexen, sondern man muss alle darin vorhandenen Variablen einzeln anlegen. Es ist außerdem noch schade, dass man auch keine mehrdimensionalen Arrays multiplexen kann.
 
Hi zusammen,

bin heute auch auf das Problem gestoßen um später halt vereinfacht die DB Werte im Touchpanel zu verarbeiten.

Was mich leider hier auch stört, dass TIA scheinbar wirklich keine UDTs hier zulässt.
Als alternative für meinen UDT hab ich aber einfach im Globalen DB nun das array als "array [...] of struct" angelegt.. das vergleichsweise ähnliche Möglichkeiten bietet (verschiedene Typen innerhalb des Arrays)

Vielleicht hilft es ja noch einem.

MfG
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi zusammen,

bin heute auch auf das Problem gestoßen um später halt vereinfacht die DB Werte im Touchpanel zu verarbeiten.

Was mich leider hier auch stört, dass TIA scheinbar wirklich keine UDTs hier zulässt.
Als alternative für meinen UDT hab ich aber einfach im Globalen DB nun das array als "array [...] of struct" angelegt.. das vergleichsweise ähnliche Möglichkeiten bietet (verschiedene Typen innerhalb des Arrays)

Vielleicht hilft es ja noch einem.

MfG

Ich bin mir nicht sicher, ob es wirklich so ist, daß TIA keine UDTs zulässt ? Ich meine, es lässt es wohl zu, aber die UDTs müssen als anlagenweiter TYP in der Projektbibliothek hinterlegt sein (und "Version freigegeben"). Zumindest so funktioniert es bei Bildbausteinen.

Ich arbeite aber auch mit der Version V14, muss ich dazu sagen.
 
In die Projektbibliothek habe ich ihn nun nicht ausprobiert. Da haben wir bei uns nur Bildobjekte hinterlegt.
Wäre aber noch einen Versuch wert .. aber erst im nächsten Projekt. Hab es jetzt so am laufen ;)

Edit:

Habe es nun mit der V14 mal getestet. Hier nimmt er direkt UDTs an, auch ohne sie in die Bibliothek einzubringen.
 
Zuletzt bearbeitet:
Hallo!

Ich muss mich mal einbringen:
Ich möchte mit Bildbausteinen Typicals erstellen. Konkret soll das so ablaufen:
Ich erstelle einen Bildbaustein, den ich mit einem UDT verschalte.
Der UDT wird in der SPS mehrmals in einem Global-DB adressiert.
Nun möchte ich über mehrere Visu-Buttons das gleiche PopUp-Bild aufrufen. In dem PopUp-Bild ist mein Bildbaustein. Jetzt soll der Bildbaustein aber je nachdem welcher Visu-Button gedrückt wurde, unterschiedliche Daten, also Instanzen des UDT aus meinem Global-DB, darstellen.
Was kann ich da machen?

Beispiel:
Mein DB heißt: DB_Tank
Darin sind drei Einträge (Tank1, Tank2 und Tank3) jeweils vom Datentyp UDT_Tank
Wenn ich einen Visu-Button drücke, schreibe ich einen Wert auf eine Textvariable names Nummer, z.B.: den Wert "Tank1"
Nun möchte ich in der Visu an die Schnittstelle meines Bildbausteins eine Multiplex-Variable adressieren, z.B.: DB_Tank.["Nummer"]
Das funktioniert jedoch nicht.

Hat das von euch schon jemand gemacht und kann mir helfen?

mfg mephisto
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Multiplexen geht ganz sicher nur bei WinCC Advanced, nicht bei WinCC Professional

Hallo,

das funktioniert auch so wie du dir das gedacht hast, nur kannst du die indirekte Adressierung so nicht einfach im WinCC eingeben.
Lege einfach erst einmal die Variable mit dem Index [0] an. Nach Anlegen dieser Variable klickst du diese mit der rechten Maus an und wählst die Eigenschaften an. Dort gehst du im Register Allgemein in das Feld Adresse und wählst den Reiter HMI_Variable an. Hier kannst du dann deinen Index verknüpfen.
Ist wirklich verwirrend, vor allem denkt man bei Adresse nicht unbedingt an so etwas.

Die genaue Beschreibung mit Bildern findest du im Systemhandbuch WinCC Professional V13.0 SP1 ab Seite 536. Der Download lohnt sich, da habe ich noch so einige Tricks gefunden.
Bei Advanced funktioniert das genauso.

Mit freundlichen Grüßen
q181699

Ich hatte das gleiche Problem, und auch diese Anleitung im WinnCC Professional V13 und V14 Handbuch gefunden, das dies so geht. In WinCC Advance konnte ich es auch nachvollziehen, jedoch nicht unter WinCC Prof. Erst beim genauen hinschauen, sieht man, dass hier das Handbuch in der Überschrift dann nur auf WinCC Advanced und darunter verweist, WinCC Professional wurde in diesem Kapitel immer ausgenommen:eek:. Da ich es immer noch nicht glauben konnte:confused:, dass ein "PROFFESSIONAL" Version so etwas grundlegendes nicht unterstüzt, habe ich bei Siemens Support nachgefragt. Der hat mir das bestätigt, das man nicht über einen dynamichen Index ein Multiplexen unter WinCC Prof. machen kann :cry:. Man kann jedoch ein Array oder einee Struktur fest in den Variablentabellen anlegen und auf diese fest verweisen.
Oder man könnte mit Sktripts ein Multiplexen selber nachbauen. Viel Spass dabei. :p
 
Zurück
Oben