TIA Protokollierung angemeldeter Benutzer - TP1200 comfort - TIA V14

Fireman_Frank

Level-2
Beiträge
152
Reaktionspunkte
28
Zuviel Werbung?
-> Hier kostenlos registrieren
Auf dem TP gibt es drei Button, die verschiedene Funktionen auslösen. Diese Button lassen sich erst nach Benutzeranmeldung betätigen. Ich brauche nun ein Protokoll (ähnlich wie der Störmeldepuffer), in dem zu erkennen ist welcher Benutzer wann welchen Button betätigt hat. Wie gehe ich da vor?

Gruß
Frank
 
Bei jedem Button beim Auslöseereignis zusätzlich ein Skript aufrufen:
Code:
Dim CurrentUser

[COLOR="#008000"]' Falls der Benutzername beim Ereignis "Benutzerwechsel" in die HMI-Variable "CurrentUser" geschrieben wurde:[/COLOR]
CurrentUser = SmartTags("CurrentUser")

[COLOR="#008000"]' [COLOR="#0000FF"]ODER[/COLOR] Name des angemeldeten Benutzers jetzt lesen:[/COLOR]
GetUserName CurrentUser

If CurrentUser = "" Then
  CurrentUser = "<nicht angemeldeter Bediener>"
End If

[COLOR="#008000"]' Meldung in Meldepuffer schreiben:[/COLOR]
ShowSystemAlarm "Der Benutzer '" & CurrentUser & "' hat den Button x betätigt"
Siehe auch im TIA-Informationssystem Index > Benutzerwechsel > Beispiel: Benutzer bei Benutzerwechsel aktualisieren

Soll auch eine Systemmeldung in den Meldepuffer geschrieben werden, wann immer irgendein Benutzer eingeloggt hat oder versucht hat oder ausgeloggt hat/wurde, dann im Aufgabenplaner beim Ereignis (Trigger) "Benutzerwechsel" die Systemfunktion "VerfolgeBenutzeränderung" aufrufen.

Harald
 
Bei jedem Button beim Auslöseereignis zusätzlich ein Skript aufrufen:
Code:
Dim CurrentUser

[COLOR=#008000]' Falls der Benutzername beim Ereignis "Benutzerwechsel" in die HMI-Variable "CurrentUser" geschrieben wurde:[/COLOR]
CurrentUser = SmartTags("CurrentUser")

[COLOR=#008000]' [COLOR=#0000FF]ODER[/COLOR] Name des angemeldeten Benutzers jetzt lesen:[/COLOR]
GetUserName CurrentUser

If CurrentUser = "" Then
  CurrentUser = "<nicht angemeldeter Bediener>"
End If

[COLOR=#008000]' Meldung in Meldepuffer schreiben:[/COLOR]
ShowSystemAlarm "Der Benutzer '" & CurrentUser & "' hat den Button x betätigt"
Siehe auch im TIA-Informationssystem Index > Benutzerwechsel > Beispiel: Benutzer bei Benutzerwechsel aktualisieren

Soll auch eine Systemmeldung in den Meldepuffer geschrieben werden, wann immer irgendein Benutzer eingeloggt hat oder versucht hat oder ausgeloggt hat/wurde, dann im Aufgabenplaner beim Ereignis (Trigger) "Benutzerwechsel" die Systemfunktion "VerfolgeBenutzeränderung" aufrufen.

Harald

Danke Harald, das funktioniert so wie gewünscht!

Die 'Betriebsrat-Problematik' wurde bereits auf einer anderen Ebene behandelt.

Gruß Frank
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Da ich ein Skript-Anaphabeth bin möchte ich hier nochmal nachfassen.

Kann ich bei

hat den Button x betätigt"

statt x auch eine Variable nehmen die mir den Namen der Schaltfläche mit einträgt?
 
Du könntest dem Skript einen Übergabe-Parameter geben und darüber beim Aufruf einen Text übergeben, der dann mit ausgegeben wird.
Code:
[COLOR="#0000FF"]Sub[/COLOR] BedienLog([COLOR="#0000FF"]ByRef[/COLOR] ButtonName)
[COLOR="#0000FF"]Dim[/COLOR] CurrentUser

[ ... Skript wie oben in #2 ... ]

[COLOR="#008000"]' Meldung in Meldepuffer schreiben:[/COLOR]
ShowSystemAlarm "Der Benutzer '" & CurrentUser & "' hat den Button '" & ButtonName & "' betätigt"

[COLOR="#0000FF"]End Sub[/COLOR]
Beim Bedien-Ereignis der Schaltfläche das Skript aufrufen:
BedienLog
. ButtonName : Button x

Den Übergabetext musst Du bei jedem Button bzw. Skriptaufruf anpassen. Ich denke, das kann man bei WinCC Comfort/Advanced nicht automatisieren (also: nicht automatisch den Name der Schaltfläche eintragen lassen).

Harald
 
Danke Harald, funktioniert so. Bin aber noch auf was anderes gestoßen: HmiRuntime.ActiveScreen.ActiveScreenItem.ObjectName
Liest den Objektnamen aus, nicht den Querverweis.

(Eigenschaften > Verschiedenes > Name: Üblicherweise "Schaltfläche 3" oder so. Wenn man hier einen
aussagkräftigen Namen vergibt wird der mit angezeigt.

Sieht bei mir jetzt so aus:

Code:
Sub BedienLog()
Dim LastButton

'Last Button liest den Namen der Schaltfäche aus      Eigenschaften > Verschiedenes > Name:
LastButton = HmiRuntime.ActiveScreen.ActiveScreenItem.ObjectName

If CurrentUserName = "" Then
  CurrentUserName = "<nicht angemeldet>"
End If

' Meldung in Meldepuffer schreiben:
ShowSystemAlarm "Der Benutzer '" & CurrentUserName & "' hat den Button '" & LastButton &"' betätigt"

End Sub

Fazit: Der Aufwand bleibt gleich ob ich meine Bezeichnung nun in den Eigenschaften einstelle oder als Übergabeparameter
eintippsen muss.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bin aber noch auf was anderes gestoßen: HmiRuntime.ActiveScreen.ActiveScreenItem.ObjectName
Mit ActiveScreenItem und ObjectName hätte ich Bedenken:
- es ist nicht garantiert, daß während Ausführung des Skriptes das auslösende Bedienelement noch das ActiveScreenItem ist
- bei Übergabe einer Zeichenkette können Texte mit beliebigen Zeichen verwendet werden, als Objektname sind nicht alle Zeichen zulässig
- falls mehrere gleichartige Bedienelemente in einem Bild vorhanden sind (z.B. eine STOP-Taste im linken Bildschirmbereich und eine STOP-Taste im rechten Bildschirmbereich, oder mehrere Sichtbarkeit-animierte Bedienelemente) dann kann man bei mehreren Elementen den gleichen Text übergeben
- falls etwas "Faceplate"-ähnliches mit gemultiplexten Variablen gebastelt wird dann möchte man bestimmt übergeben, bei welcher Auswahl die "Übernahme"-Taste gedrückt wurde
- der Übergabetext kann ggf. leichter in verschiedenen Sprachen projektiert werden als der Objektname

Harald
 
OK. Hatte ich so nicht auf dem Schrim, aber wie du es erklärst macht es Sinn.
Dann nehme ich doch die Variante von dir. Danke nochmal ;)
 
Zurück
Oben