Hat jemand eine Idee, wie ich die interne Variable @UserName (angemeldeter Benutzer) des HMI, als String in einen DB der CPU schreiben kann?
Das ist eine komplexere Frage als du vllt erwartest...
@UserName ist eine sitzungslokale Variable.
DEN angemeldeten User gibt es also nicht.
Zum Kontext:
Unified besteht aus einem Server-Dienst ohne UI & den eigentlichen Client-Instanzen, die auf den Server zugreifen.
Auf den Paneln ist das ebenfalls so, auch wenn man diese schnell als ein einzelnes, physisches Gerät abtut.
Nachdem der Server-Dienst gestartet wurde öffnet sich auf dem Panel schlicht ein Browser, der die eigentliche Darstellung der UI übernimmt.
Greifst du per WebClient auf das Panel zu, startet ebenfalls eine neue Client-Instanz in deinem Web-Browser die die Daten des Servers darstellt.
Dabei können in deinem Browser und auf dem Panel unterschiedliche Benutzer angemeldet sein.
Damit gäbe es also in diesem Beispiel zwei mögliche Benutzernamen, welche in die SPS geschrieben werden könnten.
Welcher darfst also sein?
Mit WebClients können von Haus aus 3 Clients am Panel aktiv sein, für mehr brauchst du ne entsprechende Lizenz.
Wie viele Clients max. auf einem Panel möglich sind, weiß ich aber leider nicht auswendig.
Zur Umsetzung einer Lösung:
Du könntest im Aufgebaut-Ereignis deines Startbildes eine Subscription auf @Username erstellen & damit die SPS-Variable aktualisieren.
Irgendwo in UI gab's auch eine Scriptfunktion um den Namen der Station, auf dem der Client läuft, auszulesen (siehe F1).
Damit könntest du beispielsweise gleich mitteilen auf welchem Client sich angemeldet wurde.
Das eignet sich aber nur bedingt für SPS-seitige Verriegelung von Funktionen!!
Für autorisierte Aktionen und deren Dokumentation gibt es seitens Unified entsprechende Möglichkeiten, siehe z.B. GMP-Konforme Projektierung.