WinCC Unified WinCC Unified User an SPS übertragen

Monstablokaz

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

ich habe folgende Problemstellung:

Ich möchte gerne den aktuellen angemeldeten User aus dem HMI in meine SPS übertragen. Dazu habe ich ein Login Feld erstellt und zur Darstellung zwei E/A Felder für den aktuellen Nutzer und den Inhalt der Variable aus einen Datenbaustein. Für die Realisierung frage ich über die Aufgabenverwaltung die Variable "@UserName" ab (habe bereits zyklisch aller 250ms, als auch die Variable selbst als Trigger getestet) und will diesen Wert über Ereignisse mit "SetzeVariablenWert" -> Variable: DB_CPU.User -> Wert: @UserName schreiben. Das E/A Feld, welches @UserName auswertet steht nach Anmeldung auch der richtige User drin, jedoch wird nie ein Wert in den Datenbaustein geschrieben. Hat jemand eine Idee?

CPU: 1510SP-1 PN
Panel: MTP1500 Unified Comfort PRO
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe es aktuell so realisiert:
1719993279619.png

Also zumindest mit TIA simuliert, funktioniert es.
Habe es mit echter Hardware noch nicht getestet.
Installiert habe ich Unified 19 Update 1.

Zum kopieren:
Code:
export function Text_2_Text_Trigger(item) {
let user=Tags('@UserName').Read();

let roles = HMIRuntime.UserManagement.GetRolesFromUser();
if(roles.length > 0){
  let strRoles = '';
  roles.forEach((roleName) => {
    strRoles += roleName + ';';
  });
  Tags('DbAllgemein_VisuWinccUnified_AktuelleBenutzerRollen').Write(strRoles.substring(0, 254));
}
else{
  Tags('DbAllgemein_VisuWinccUnified_AktuelleBenutzerRollen').Write('');
}


Tags('DbAllgemein_VisuWinccUnified_AktuellerBenutzer').Write(user);
return user;
}
 
Ok, also über Script sollte es gehen laut Simulation. Ich hatte kurz über ein Script überlegt, dachte mir aber wenn es über den "einfachen" Weg nicht geht warum dann über Script. Ich werde es heute Nachmittag testen und ein Update geben.
 
Also über das Scipt geht es nun, aber ich kann als der neu angemeldete Nutzer keinen Button mehr bedienen. Warum? Ich habe unter Security keine spezielle Bedingung definiert.
 
Ich hatte einfach alle Gruppen zugeordnet und anscheinend hat er das nicht vertragen. Nur die Gruppe HMI Administrators und schon gings.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Javascript:
export function EA_Feld_1_ProcessValue_Trigger(item) {
    let user=Tags('@UserName').Read();

    Tags('user').Write(user);

    return user;

}

Damit ging es dann am Ende.
Kannst du mal mit ein paar screenshots zeigen was du da genau gemacht hast?
Was ist dein EA_Feld_1_processValue_Trigger für ein EA Feld,
Welches Format hat dein Variable User?
 
Also zunächst habe ich folgende Variable angelegt.

1720083429616.png

Wenn diese dann beschreiben wird, wandle ich noch in SCL mit WSTRING_TO_STRING um.

Dann habe ich mir ein nomrales E/A Feld in meinem Bild platziert und den Prozesswert dynamisiert mit dem obigen Script

1720083556047.png

1720083594057.png


Da ich es jetzt nicht besser wusste und auch das E/A Feld zur Anzeige nicht benötige, habe ich noch die Sichtbarkeit auf "FALSE" gesetzt.

1720083674407.png
 
Also zunächst habe ich folgende Variable angelegt.

Anhang anzeigen 79488

Wenn diese dann beschreiben wird, wandle ich noch in SCL mit WSTRING_TO_STRING um.

Dann habe ich mir ein nomrales E/A Feld in meinem Bild platziert und den Prozesswert dynamisiert mit dem obigen Script

Anhang anzeigen 79489

Anhang anzeigen 79490


Da ich es jetzt nicht besser wusste und auch das E/A Feld zur Anzeige nicht benötige, habe ich noch die Sichtbarkeit auf "FALSE" gesetzt.

Anhang anzeigen 79492
Danke für die Beschreibung
 
Zurück
Oben