WinCC Unified Zugriff auf Element in einem UDT-Array dynamisch über Javascript

georg_demmler

Level-2
Beiträge
131
Reaktionspunkte
21
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

gibt es die Möglichkeit auf ein Element in einem Array von UDTs dynamisch über JavaScript zuzugreifen?

Das geht (Zugriff auf ein Arrayelement über Variable):
let i=1;
let tag3 = Tags(`Werte[${i}]`);
tag3.Write(3);

Das geht auch:
let tag6 = Tags('Testwertearray[1].Wert1');
tag6.Write(6);

Und das geht nicht:
i=2;
let tag6 = Tags('Testwertearray[${i}]`.Wert1');
tag6.Write(6);

Vielen Dank für die Hilfe

Gruß
 
Hallo Georg.

Sehe da ein Hochkomma zu viel bei
Code:
let tag6 = Tags('Testwertearray[${i}]   `    .Wert1');


Gruß, Fred
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

vielen Dank für die Antwort - nein das Hochkomma ist nicht die Ursache - Fehler meinerseits.

Hintergrund der Frage ist - ich möchte aus einem csv-File sehr viele Daten lesen, und den entsprechenden Variablen zuweisen.
Das ganze muss ja JavaScript sein und da hat man schon seine Freude.
Array of UDT geht in der HMI nicht, beim Verwenden eines Array of UDT in der PLC bekommt Probleme mit dem Lesen und Zuweisen der Variablen und die Unterlagen von Siemens sind bescheiden -> ::--((.

Schönes Wochenende
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

vielen Dank für die Antworten - nun einmal der Hintergrund meiner Frage. Der Kunde möchte sein Rezept in einer csv-Datei bearbeiten,
Datei wird auf dem Panel geöffnet und Werte in Variable geschrieben. Eigentlich ganz einfach - wenn man Unified nicht hätte und folgende
Einschränkungen - Array of HMI-eigener UDT geht nicht, da bleibt nur der Zugriff auf die Array-UDT in der PLC.

Und wir sprechen von ca. 500 Paramtern - Anlage ist vorerst eine Testmaschine. Nun ist die Frage - wie bekommt man effektiv die csv.-Daten in
die PLC-Variablen und daher die Überlegung mit der Indexvariablen in der UDT-Tagvariable.

Es fängt ja schon damit an, dass man Variablen mit Hochkomma, accent grave und doppelten Anführungszeichen deklarieren kann - was besonders lustig bei Strings ist.

Ich habe auch deswegen einen Siemens-Request gestellt und werde mal deren Antwort hier mitteilen.

Ich kann nur sagen - man hat noch sehr viel Spass mit Unified - allein das Trendcontrol ist ein Erlebnis - Erst mit Update 17.0.0.5 funktioniert die
Darstellung in der Zeitache zweizeilig in deutschen Format. Die aktuellen Trendwerte am Lineal sucht man vergebens. Das Ein-und Ausblenden der
Trends kann mal selbst programmieren.

Vielen Dank für die Beiträge

Schönes Wochenende
 
Auch wenn das keine Antwort auf unsere Vorschläge war hab ich es mal nachgestellt mit einem DB mit UDT-Array im PLCSim, bei mir (V17) klappt es einwandfrei, das Syntaxhighlighting zeigt dir sogar ob es ein Templatestring ist oder nicht.

Hast schonmal ins Trace geschaut? Da steht normalerweise wo es hakt.

Und bestimmt ist dir niemand hier böse wenn er statt halbrichtig-kopiertem, unformatiertem Text Screenshots und etwas mehr vom Codekontext bekommt. ;)

1669999091210.png
 
Hallo,

vielen Dank für die Unterstützung - ja so funktioniert es. Man muss den ganzen Tag als Literal definieren und nicht nur einen Teil, wie ich es gemacht
haben.

Gruß
 
Zurück
Oben