WinCC Unified Dynamisierung von Textlisten

Skully

Level-2
Beiträge
18
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
TIA: V17
CPU: CPU 1515F-2 PN
HMI: MTP 1900 Comfort Panel 6AV2 128-3UB06-0AXx V17.0.0.1

Hallo,
ich möchte die Einträge in der Textliste anhand der Produktdaten dynamisieren, sprich der Kunde legt ein Produkt in der Verwaltung über ein Array an. Produkte die bereits einen Namen vergeben bekommen haben, sollen diesen dann auch in der Dropdownliste anzeigen - als Stellvertreter Produkt 1 - X.

Ich habe bereits einen Lösungsansatz gefunden, in welchem in der Textliste z.b.: Wert/Bereich 0 - <Variable etc. "DB_XX">
Nur leider scheint diese Version hier nicht zu funktionieren - die Variablen, welche ich zuvor natürlich auch in der Visu angelegt habe, werden einfach als Text registriert. Andere Lösungsansätze konnte ich nicht finden - lediglich war einmal von einem Skript die Rede, nur war die Erklärung sehr kurz und für mich als Unified-Einsteiger unverständlich.

Freue mich auf eure Lösungsideen! Beste Grüße - Skully

1736406012830.png
1736405975709.png
1736405936492.png
 
Mein Eigenversuch über einen globalen Skript funktioniert leider nicht

export function LoadDropdownItems(parameter1, parameter2) {
var productNames = [];
var NumberOfProducts = 10;

for (var i = 1; i < NumberOfProducts; i++) {
var productName = HMI.Runtime.SmartTags["Produktdaten_Produktverwaltung{"+ i +"}_Produktname"];
productNames.push(productName);
}

var dropdown = HMI.Controls.getControl("DropDownProducts");
dropdown.clearItems();

for (var j = 1; j < productNames.length; j++) {
dropdown.addItem(productNames[j]);
}

var selectedIndex = Hmi.Runtime.SmartTags["DB VISU_Produktindex"];
dropdown.setSelectedIndex(selectedIndex);
}
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Da müsstest du schon was genauer werden, was du benötigst.
Produkte ändern sich ja nicht ständig, also beim Editieren, neu anlegen des Produktes müsste der Name in deiner Textliste aktualisiert werden (Script), oder beim Neustart einlesen der Produktnamen von SPS in deine Liste (Script) und sonst in den Bildern direkt Textliste verwenden.

Könnte das ein Weg sein ?

Gruß
Thomas
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Produktnamen werden vom Kunden auf der HMI vergeben. Ab diesem Zeitpunkt soll z.b. Produkt 1 den Namen (beispiel) SL3 haben. So kann der Kunde nach und nach seine Produktdaten einfügen. Die Produktenamen werden über die Zeit wahrscheinlich auch leicht mal geändert, da sehr viele Parameter zu vergeben sind. z.b. SL3 V1 etc.

Ich brauche daher einen Skript mit dem ich das Ganze dynamisch generieren lassen kann, anhand der Eingabe des Operators.
 
Und was spricht jetzt gegen den Rezepteditor?Vielleicht verstehe ich es noch nicht.
Das sind doch gerade die Funktionen eines Rezepteditors.
 
Ja, Ok, also mit dem Event, das er einen neuen Namen eingibt (wo auch immer), diesen auch in die Textliste schreiben.

z.B: HMIRuntime.Resources.TextLists("@Default.ProdukNamen").Item(0).Item(HMIRuntime.Language) = "Neuer Name"

Und bei Neustart der Visu per Loop alle Namen lesen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie meinst du das mit dem Rezepteditor? Ich glaube das macht alles eher unübersichtlicher und schwer zu implementieren.

Und wie genau setze ich das Ganze jetzt um? Ich habe mir das Dropdownmenü reingezogen, Textliste brauch ich ja nicht einfügen oder doch? Sollte ja dann generiert werden oder?
Den Index als Prozessvariable brauche ich natürlich weiterhin, um auf die Daten zugreifen zu können.

z.B: HMIRuntime.Resources.TextLists("@Default.ProdukNamen").Item(0).Item(HMIRuntime.Language) = "Neuer Name" <- kann ich da jetzt auch mit dem Index arbeiten? Sprich eine Schleife und für alle Produkte wo etwas angelegt wurde und auch ein Name vergeben wurde, statt Produkt 1 nun SL3 etc.?

Die restlichen Produkte sollen natürlich weiterhin Produkt2, Produkt3 usw. heißen, bis sie zugewiesen werden.
 
Ja, du must dann ev. an einem Leerstring oder einer Variable erkennen, das das Produkt nicht benannt ist und den vorhanden Namen lassen, oder auf der SPS steht ebenfalls Default Produkt2, .. etc.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Javascript:
export function ReadAllProductNames() {

  let count = 10; // Anzahl Einträge auf SPS und Textliste Anpassen oder Funktion mit übergeben
  let productName = Tags("TestDaten_ProduktNamen").Read();
 

  for (let i = 0; i<count; i++) {
    HMIRuntime.Resources.TextLists("@Default.textListeProduktNamen").Item(i).Item(HMIRuntime.Language) = Tags('TestDaten_ProduktNamen['+ i +']').Read()
    
  }

}

Bei Systemstart über globalen Script z.B. so. Zum Testen Funktion mal auf einen Button legen.
Weiß nicht in wieweit sich Unified mit Array Tags weiterentwickelt hat, war Anfangs nicht alles möglich.
 
Verstehe ich das jetzt richtig, dass du einfach die Produktnamen aus deinem Produktverwaltung-Array in einer Textliste haben willst?
Eigentlich sollte dein erster Lösungsansatz mit der Variable in der Textliste funktionieren, wenn du es richtig anlegst. Du musst bei Format das richtige auswählen (in deinem Fall Text).
1736434237154.png
Außer bei V17 funktioniert das noch nicht...
Ich würde dir übrigens empfehlen, zumindest das Panel auf V20 upzudaten (ist abwärtskompatibel), da dort einiges besser funktionieren sollte .
 
Hallo Skully,

schau mal hier:

Ich vermute, du hast das gleiche (bzw. ein ähnliches Problem).
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Skully,

schau mal hier:

Ich vermute, du hast das gleiche (bzw. ein ähnliches Problem).

Hallo! Danke für die Antwort. Aber genau das ist der Post den ich gefunden habe und der nicht funktioniert, da sich im Unified V17 keine Variablen bei der Textliste implementieren lassen. Lg.
 
Verstehe ich das jetzt richtig, dass du einfach die Produktnamen aus deinem Produktverwaltung-Array in einer Textliste haben willst?
Eigentlich sollte dein erster Lösungsansatz mit der Variable in der Textliste funktionieren, wenn du es richtig anlegst. Du musst bei Format das richtige auswählen (in deinem Fall Text).
Anhang anzeigen 84504
Außer bei V17 funktioniert das noch nicht...
Ich würde dir übrigens empfehlen, zumindest das Panel auf V20 upzudaten (ist abwärtskompatibel), da dort einiges besser funktionieren sollte .
Danke für die Antwort, aber genau das funktioniert leider nicht (wie oben beschrieben)
 
Ich habe bereits einen Lösungsansatz gefunden, in welchem in der Textliste z.b.: Wert/Bereich 0 - <Variable etc. "DB_XX">
Nur leider scheint diese Version hier nicht zu funktionieren - die Variablen, welche ich zuvor natürlich auch in der Visu angelegt habe, werden einfach als Text registriert.
:unsure:
Wie hast Du denn die in Peters Bild blau gekennzeichneten Texte
1736507176271.png

bzw. in Deinem Zitat <Variable etc. "DB_XX"> angelegt?

Einfach als Text eingegeben oder über das Kontextmenü (Rechtsklick) und "Parameterfeld einfügen"?

PS: @ all,
:unsure: Kann es sein, dass es in Unified die Parameterfelder in Textlisten erst ab V18 gibt?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
:unsure:
Wie hast Du denn die in Peters Bild blau gekennzeichneten Texte
Anhang anzeigen 84539

bzw. in Deinem Zitat <Variable etc. "DB_XX"> angelegt?

Einfach als Text eingegeben oder über das Kontextmenü (Rechtsklick) und "Parameterfeld einfügen"?

PS: @ all,
:unsure: Kann es sein, dass es in Unified die Parameterfelder in Textlisten erst ab V18 gibt?
Servus, ja habe am Wochenende feststellen müssen, dass diese Funktion erst ab V18 mit dabei ist. Kollege von mir hat V19 und da hat es geklappt. Löst leider mein Problem nicht, da wir in der Firma erst in X Monaten auf V19 umsteigen werden.
 
Zurück
Oben