WinCC Unified WinCC Unified User an SPS übertragen

Monstablokaz

Level-2
Beiträge
58
Reaktionspunkte
7
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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hat schonmal jemand probiert, wie @UserName sich verhält, wenn man über Webbrowser auf das HMI zugreift. ( Wir wollen das als Smart Server ersatz nutzen)
Siemens sagt mir, das der Zugriff auf ein Unified Basic Panel mittels Webbrowser eine extra Instanz aufmacht. Also es könnte am panel selbst ein user angemeldet sein, und per webbrowser zugriff ein anderer.
Hat jemand damit Erfahrung?
 
Das ist richtig was Siemens bzgl. dem Webbrowser gesagt hat. Wenn Du Dich mit einem Webbroswer von einem anderen Rechner auf das Panel verbindest ist das eine eigene Instanz. Du kannst dich max mit einem externen Webbrowser auf das Basic Panel verbinden ! Die Anzahl der unterstützen Verbindungen über Web client beträgt 1. Bei Comfort Panels sind es 3 Clients (WebInstanzen)

Siehe


5.4.4 Web client

4.6 Web-Zugriff auf das Bediengerät

Die Anzahl der unterstützen Verbindungen über Web client beträgt 1.
 
Ok...
aber dann ist ein Benutzer am realen HMI angemeldet und evtl ein anderer am Webbrowser...
Kann ich das irgendwie erkennen?
 
Du kannst noch versuchen im Sktipt über
Code:
@LocalMachineName
Eine Unterscheidung zwischen den Bediengeräten zu ermöglichen.
Damit kannst du von Seiten des Clients feststellen wo er läuft.
Von Server/SPS-Seite gibt es meines Wissens nach keine direkte Möglichkeit festzustellen welche Client-Instanzen aktuell laufen und welche User dort angemeldet sind.
Da müsste man sich dann händisch etwas entsprechendes zusammen klöppeln...
 
Damit kannst du von Seiten des Clients feststellen wo er läuft.
Von Server/SPS-Seite gibt es meines Wissens nach keine direkte Möglichkeit festzustellen welche Client-Instanzen aktuell laufen und welche User dort angemeldet sind.
Da müsste man sich dann händisch etwas entsprechendes zusammen klöppeln...
Ja, aber im HMI (Client) Skript kann entschieden, z.B. das nur Benutzer von einem bestimmten Bediengerät, an die SPS übertragen werden.
Oder in der SPS gibt es mehrere Variablen "BenutzerBediengerätA", "BenutzerBediengerätB".
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Achso, also sollte @LocalMaschineName einmal den Namen des KTP1000 liefern, und dann den von irgendeinem PC/Handy ect. weil per Webbrowser eingelockt?
Klingt nutzbar. Werd ich mal testen.
 
Zurück
Oben