don_looney
Level-2
- Beiträge
- 103
- Reaktionspunkte
- 6
-> Hier kostenlos registrieren
Moin zusammen,
ich habe ein Problem mit der Alarming Funktion in Javascript. Ich nutze Textlisten mit Parameterfeldern in denen ich auf andere Textlisten verweise. Als Beispiel habe ich eine Masterliste in der ich auf Wert 1 einen Verweis auf zwei weitere Textlisten habe - Achse XYZ: Meldung XYZ (<Textliste : Slot1>:<TextlisteSlot2>)
In dem zugehörigen Symbolischen EA Feld übergebe ich dann drei Integer und die Meldung wird mir dort in der richtigen Sprache angezeigt.
Das funktioniert auch sehr gut, nur möchte ich jetzt zusätzlich für jede Meldung aus der Textliste auch eine Systemmeldung auslösen, damit ich diese in einem Archiv speichern kann. Momentan wird das noch über Bitmeldungen gemacht und das möchte ich ändern, weil es einfach ein riesen Aufwand ist beides zu pflegen.
Jetzt zum Problem.
Mein erster Ansatz war einen ProgramAlarm auszulösen wenn sich der Text im Meldefenster ändert. Das funktioniert auch, nur habe ich dann zusätzliche Kommunikation zwischen SPS&HMI und ich müsste für jede Sprache eine eigene Meldung erzeugen. Den Text kann ich über Javascript auslesen und bei Textänderung triggern lassen. Der effizientere Weg wäre direkt einen Alarm über das Script auszulösen. Das funktioniert auch, nur kann ich die Begleitwerte für die Verweise nicht übergeben oder ich weiß nicht wie.
Mein Script sieht momentan so aus:
Es gibt Beispiele unter Snippets die das ähnlich nutzen, nur müsste ich so alle Textlisten mit einem zusätzlichen Platzhalter "@1%t#2T@" versehen. Das funktioniert dann für das normale symbolische EA-Feld nicht so wie ich das möchte. Auf dem Bild von dem HMI kann man sehen wie die Meldung dann aussieht.
Mit Javascript kenne ich mich nicht aus, ist mein erster Anwendungsfall.
ich habe ein Problem mit der Alarming Funktion in Javascript. Ich nutze Textlisten mit Parameterfeldern in denen ich auf andere Textlisten verweise. Als Beispiel habe ich eine Masterliste in der ich auf Wert 1 einen Verweis auf zwei weitere Textlisten habe - Achse XYZ: Meldung XYZ (<Textliste : Slot1>:<TextlisteSlot2>)
In dem zugehörigen Symbolischen EA Feld übergebe ich dann drei Integer und die Meldung wird mir dort in der richtigen Sprache angezeigt.
Das funktioniert auch sehr gut, nur möchte ich jetzt zusätzlich für jede Meldung aus der Textliste auch eine Systemmeldung auslösen, damit ich diese in einem Archiv speichern kann. Momentan wird das noch über Bitmeldungen gemacht und das möchte ich ändern, weil es einfach ein riesen Aufwand ist beides zu pflegen.
Jetzt zum Problem.
Mein erster Ansatz war einen ProgramAlarm auszulösen wenn sich der Text im Meldefenster ändert. Das funktioniert auch, nur habe ich dann zusätzliche Kommunikation zwischen SPS&HMI und ich müsste für jede Sprache eine eigene Meldung erzeugen. Den Text kann ich über Javascript auslesen und bei Textänderung triggern lassen. Der effizientere Weg wäre direkt einen Alarm über das Script auszulösen. Das funktioniert auch, nur kann ich die Begleitwerte für die Verweise nicht übergeben oder ich weiß nicht wie.
Mein Script sieht momentan so aus:
Code:
export function Button_Test_OnDown(item, x, y, modifiers, trigger) {
//Textlisten ID
let ID = Tags("MessageSlot{1}_ID").Read();
//Slot 1
let ID_Value1 = Tags("MessageSlot{1}_Value1").Read();
//Slot 2
let ID_Value2 = Tags("MessageSlot{1}_Value2").Read();
//Ländercode Deutschland
let German = 1031;
//Ländercode UK
let English = 2057;
//Meldungen als Zeichenketten in SPS schreiben
Tags("MessageSlot{1}_TextGerman").Write(HMIRuntime.Resources.TextLists("@Default.MasterList").Item(ID).Item(German));
Tags("MessageSlot{1}_TextEnglish").Write(HMIRuntime.Resources.TextLists("@Default.MasterList").Item(ID).Item(English));
//Alarm auslösen
HMIRuntime.Alarming.SysFct.CreateOperatorInputInformation(
HMIRuntime.Resources.TextLists("@Default.MasterList").Item(ID));
}
Es gibt Beispiele unter Snippets die das ähnlich nutzen, nur müsste ich so alle Textlisten mit einem zusätzlichen Platzhalter "@1%t#2T@" versehen. Das funktioniert dann für das normale symbolische EA-Feld nicht so wie ich das möchte. Auf dem Bild von dem HMI kann man sehen wie die Meldung dann aussieht.
Mit Javascript kenne ich mich nicht aus, ist mein erster Anwendungsfall.