Astralavista
Level-1
- Beiträge
- 799
- Reaktionspunkte
- 112
-> Hier kostenlos registrieren
Guten Morgen an alle,
ich habe ein Problem bei der Skripterstellung in VB. Speziell geht es mir darum, in den Faceplates der von Siemens bereitgestellten LBP-Bibliothek Benutzeraktionen mittels User messages zu tracken. Grundsätzlich funktioniert mein Skript und die Meldungen werden ausgegeben, ich bekomme allerdings nicht den User Name oder den Ventiltag in meine Meldung übergeben. Es funktioniert nur wenn ich die Strings fix in das Skript eingebe. Da Siemens in den Faceplates überall VB verwendet würde ich gerne dabei bleiben.
Hier mal mein kompletter (funktionierender) Code:
Ich wollte nun den User Name variabel übergeben und habe folgende Alternativen ausprobiert, welche alle nicht funktionieren.
Komisch ist auch, das ein I/O-Feld, welches ich auf dem Faceplate platziere und mit @CurrentUserName verknüpfe, keinen Wert anzeigt.
Zweiter Schritt wäre noch den Ventilnamen in die Meldung zu übergeben.
Hier zeigt mir ein I/O-Feld im gleichen Bild den gewünschten Namen an.
Hat jemand eine Idee und kann mir weiter helfen?
Viele Grüße
ich habe ein Problem bei der Skripterstellung in VB. Speziell geht es mir darum, in den Faceplates der von Siemens bereitgestellten LBP-Bibliothek Benutzeraktionen mittels User messages zu tracken. Grundsätzlich funktioniert mein Skript und die Meldungen werden ausgegeben, ich bekomme allerdings nicht den User Name oder den Ventiltag in meine Meldung übergeben. Es funktioniert nur wenn ich die Strings fix in das Skript eingebe. Da Siemens in den Faceplates überall VB verwendet würde ich gerne dabei bleiben.
Hier mal mein kompletter (funktionierender) Code:
Code:
Sub OnClick(ByVal item)
Dim AuditMessage
Set AuditMessage = HMIRuntime.Alarms(4)
AuditMessage.State = 5 'hmiAlarmStateCome + hmiAlarmStateComment
AuditMessage.UserName = "Test-User 123456"
AuditMessage.ProcessValues(1) = "V0xABC123"
If Parent.Parent.DataSet("txtDoubleConfirmation").Value = 0 Then
AuditMessage.Comment = "Ventil im Handbetrieb geschlossen"
AuditMessage.ProcessValues(4) = "geschlossen"
ElseIf Parent.Parent.DataSet("txtDoubleConfirmation").Value = 1 Then
AuditMessage.Comment = "Ventil im Handbetrieb geöffnet"
AuditMessage.ProcessValues(4) = "geöffnet"
ElseIf Parent.Parent.DataSet("txtDoubleConfirmation").Value = 2 Then
AuditMessage.Comment = "Ventil in Modus HAND geschaltet"
AuditMessage.ProcessValues(4) = "umgeschaltet auf HAND"
ElseIf Parent.Parent.DataSet("txtDoubleConfirmation").Value = 3 Then
AuditMessage.Comment = "Ventil in Modus AUTO geschaltet"
AuditMessage.ProcessValues(4) = "umgeschaltet auf AUTO"
ElseIf Parent.Parent.DataSet("txtDoubleConfirmation").Value = 4 Then
AuditMessage.Comment = "Ventil RESET"
AuditMessage.ProcessValues(4) = "resettet"
End If
AuditMessage.Create "MyApplication"
SetBitInTag ""&".settingsHMI.cmd", Parent.Parent.DataSet("txtDoubleConfirmation").Value
Parent.Visible = False
End Sub
Ich wollte nun den User Name variabel übergeben und habe folgende Alternativen ausprobiert, welche alle nicht funktionieren.
Komisch ist auch, das ein I/O-Feld, welches ich auf dem Faceplate platziere und mit @CurrentUserName verknüpfe, keinen Wert anzeigt.
Code:
AuditMessage.UserName = SmartTags("@CurrentUserName")
AuditMessage.UserName = HMIRuntime.SmartTags("@CurrentUserName")
AuditMessage.UserName = HMIRuntime.SmartTags("@CurrentUserName").Value
'Umkopieren der Variable @CurrentUserName in eine interne Variable hat nicht funktioniert
'folgender Code hat ebenfalls nicht funktioniert:
Dim CurrentUser
Set CurrentUser = HMIRuntime.Tags("@CurrentUser")
AuditMessage.UserName = CurrentUser
Zweiter Schritt wäre noch den Ventilnamen in die Meldung zu übergeben.
Hier zeigt mir ein I/O-Feld im gleichen Bild den gewünschten Namen an.
Code:
'Funktioniert nicht:
AuditMessage.ProcessValues(1) = Parent.Parent.ScreenItems("ioName").Value
AuditMessage.ProcessValues(1) = SmartTags(".statusHMI.identName")
AuditMessage.ProcessValues(1) = SmartTags(""&".statusHMI.identName")
'Funktioniert, aber fixe Variable, ohne Präfix:
AuditMessage.ProcessValues(1) = HMIRuntime.SmartTags("Workstation2_1_DB_TC11_Instance_V0x2406_statDataVlv.statusHMI.identName").Value
Hat jemand eine Idee und kann mir weiter helfen?
Viele Grüße