WinCC Unified Aktuellen Parametersatzname auslesen

joachim93

Level-2
Beiträge
48
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen, ich würde gerne den aktuellen Parametersatznamen auslesen und in einem EA-Feld aktuell anzeigen lassen.
Der aktuelle Parametersatztyp wird über eine Variable (Parametersettype) festgelegt, und die ID des aktuellen Parametersets wird durch eine weitere Variable (Steps_counter) dargestellt.

export function EA_Feld_8_ProcessValue_Trigger(item) {
let tag1 = Tags("ScriptParameterSetName");

let tag2 = Tags("Parametersettype");
let parameterSetType = tag2.Read();

let tag3 = Tags("Steps_counter");
let parameterSet = tag3.Read();

let language = 1033; // ist englisch

let status = "ScriptReadStatus";

HMIRuntime.ParameterSetTypes.SysFct.GetParameterSetName(parameterSetType, parameterSet, 1033, tag, status);

let parametersetName = tag1.Read();
return parametersetName;
}

Leider zeigt das EA-Feld so keinen Wert an... "ScriptParameterSetName" ist leer. Woran könnte es liegen?
Das ganze wird mir im TIA Portal auch blau unterringelt mit der Meldung "Ungültiges Objekt oder ungültiger Member auf dem Gerät".
Parametersettype ist der Name nicht die ID des aktuellen Parametersettypes, aber laut dem sollte das auch passen:
1702729605379.png

Danke vielmals!!!
 

Anhänge

  • 1702729556525.png
    1702729556525.png
    88,2 KB · Aufrufe: 10
Hi,

du musst einige der Rückgabeparameter als Variable vom Typ "TagSetCommand" erzeugen.
In der Doku wird das auch erwähnt.

In dem großen Unified-Demoprojekt ist es in einem der Bild auch umgesetzt:

Dort wird die Funktion bei einem onChange-Event des Parameter-Controls aufgerufen (wenn sich die ID des Namen ändert)
Javascript:
export function Parameter_set_control_1_CurrentParameterSetID_OnPropertyChanged(item, value) {

let CurrentPSID = Tags("Current_PS_ID");
CurrentPSID.Write(value);

let tag1 = Tags("Current_PST_ID");
let tagValue1 = tag1.Read();
HMIRuntime.Trace("value of MyTag1: " + tagValue1);

let PSName, ProcessingStatus, CurrentLanguageID;
CurrentLanguageID = 1033;
//HMIRuntime.ParameterSetTypes.SysFct.GetParameterSetName(tagValue1,value,CurrentLanguageID,PSName,ProcessingStatus);
//PSName = ParameterSetTypes(HMIRuntime.Tags.SysFct.GetTagValue("Current_PS_ID")).GetName(0);
HMIRuntime.ParameterSetTypes.SysFct.GetParameterSetName(HMIRuntime.Tags.SysFct.GetTagValue("Current_PST_ID"), HMIRuntime.Tags.SysFct.GetTagValue("Current_PS_ID"), 1033, HMIRuntime.Tags.SysFct.CreateSetTagCommand("Current_PS_Name"), HMIRuntime.Tags.SysFct.CreateSetTagCommand("ProcessingStatus"));
HMIRuntime.Trace("Trace Message PSName: "+PSName);
HMIRuntime.Trace("Trace Message ProcessingStatus: "+ProcessingStatus);

//let PS_Name = Tags("PS_Name");
//PS_Name.Write(PSName);


}
 
Zuviel Werbung?
-> Hier kostenlos registrieren
export function EA_Feld_24_ProcessValue_Trigger(item) {


Hi,

du musst einige der Rückgabeparameter als Variable vom Typ "TagSetCommand" erzeugen.
In der Doku wird das auch erwähnt.

In dem großen Unified-Demoprojekt ist es in einem der Bild auch umgesetzt:

Dort wird die Funktion bei einem onChange-Event des Parameter-Controls aufgerufen (wenn sich die ID des Namen ändert)
Javascript:
export function Parameter_set_control_1_CurrentParameterSetID_OnPropertyChanged(item, value) {

let CurrentPSID = Tags("Current_PS_ID");
CurrentPSID.Write(value);

let tag1 = Tags("Current_PST_ID");
let tagValue1 = tag1.Read();
HMIRuntime.Trace("value of MyTag1: " + tagValue1);

let PSName, ProcessingStatus, CurrentLanguageID;
CurrentLanguageID = 1033;
//HMIRuntime.ParameterSetTypes.SysFct.GetParameterSetName(tagValue1,value,CurrentLanguageID,PSName,ProcessingStatus);
//PSName = ParameterSetTypes(HMIRuntime.Tags.SysFct.GetTagValue("Current_PS_ID")).GetName(0);
HMIRuntime.ParameterSetTypes.SysFct.GetParameterSetName(HMIRuntime.Tags.SysFct.GetTagValue("Current_PST_ID"), HMIRuntime.Tags.SysFct.GetTagValue("Current_PS_ID"), 1033, HMIRuntime.Tags.SysFct.CreateSetTagCommand("Current_PS_Name"), HMIRuntime.Tags.SysFct.CreateSetTagCommand("ProcessingStatus"));
HMIRuntime.Trace("Trace Message PSName: "+PSName);
HMIRuntime.Trace("Trace Message ProcessingStatus: "+ProcessingStatus);

//let PS_Name = Tags("PS_Name");
//PS_Name.Write(PSName);


}
Danke schonmal! Im TIA-Infosystem hab ich das gefunden:
1703177302756.png

Und es entsprechend geändert:

1703177194077.png
Mit dem Skript hängt sich mein Panel jetzt aber leider immer auf - wenn ich auf das Bild gehen will wo das EA-Feld mit dem Skript ist, springt das Panel immer zurück zum Start-Bild...

Woran könnte das liegen?
 
export function EA_Feld_24_ProcessValue_Trigger(item) {



Danke schonmal! Im TIA-Infosystem hab ich das gefunden:
Anhang anzeigen 73910

Und es entsprechend geändert:

Anhang anzeigen 73909
Mit dem Skript hängt sich mein Panel jetzt aber leider immer auf - wenn ich auf das Bild gehen will wo das EA-Feld mit dem Skript ist, springt das Panel immer zurück zum Start-Bild...

Woran könnte das liegen?
Hmm...springt nur das Panel zurück auf das Startbild oder hast du das Verhalten auch in der Simulation?
Dort kann man Skripte im Debugger des Browsers debuggen und sich z.B. zeilenweise oder mit Breakpoints durchklicken.

Ansonsten kannst du dir auch mal die Traces vom Panel anschauen. Der Trace Viewer der PC-Runtime kann nicht nur die Fehlermeldungen der lokal installierten Runtime oder Simulation anzeigen, sondern sich auch mit einem Panel verbinden.
Dort sollten wahrscheinlich irgendwelche Skriptfehler auflaufen.
 
Hallo zusammen,

ich arbeite aktuell mit dem HMI Unified Comfort 1200 und habe eine Frage:

Ich möchte, dass beim Eingeben eines Namens und einer Nummer im Parametersatztyp „Artikel“ der Parametersatzname automatisch in meinen Datenbaustein geschrieben und dort als Rezeptname (strRezeptname) gespeichert wird (siehe Beispiel im Bild).

da statt von Anzeigename ( Artikel Rohr) zeigen kann.

Hat jemand Erfahrung damit oder kann mir bei der Umsetzung weiterhelfen?
Ich wäre für jede Unterstützung dankbar!

Viele Grüße

Screenshot 2025-06-24 132855.png
 
Zurück
Oben