TIA Scriptbearbeitung in Runtime Professional zur Laufzeit fehlerhaft

MSP

Level-2
Beiträge
210
Reaktionspunkte
21
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen Zusammen,

ich bin gerade dabei einen Fehler bei meiner Visualisierung unter WinCC Professional v16 Update 2 zu finden.
Dazu habe ich in meinen Scripten die Funktion HMIRuntime.Trace verwendet um mir den Variableninhalt anzeigen zu lassen bei einem Script für Bildwechsel.

Zuerst einmal das Script:

Code:
Sub VB_ChangeMainScreenWithWindowPicture(ByRef MainScreen, ByRef TopArea, ByRef SideArea, ByRef MainArea, ByRef BottomArea)

Dim oWinName               ' Hauptfenster
Dim oTopArea               ' Bildfenster obere Meldeleiste
Dim oSideArea              ' Bildfenster Seitenfenster
Dim oMainArea              ' Bildfenster Hauptbereich Mitte
Dim oBottomArea            ' Bildfenster untere Bedien-/Menüleiste

'Aktiviere Fehlerauswertung
On Error Resume Next

HMIRuntime.Trace vbNewLine + "---> Call of VB-Script -- VB_ChangeMainScreenWithWindowPicture" + vbNewLine

' Bildfenster im Grundbild auslesen (linker oder rechter Monitor)
Set oWinName = HMIRuntime.ActiveScreen.Parent.Parent.Parent

' Neues Hauptbild im Bildfenster scrwinXXXWindow laden (links oder rechts)
If MainScreen <> "" Then
  ActivateScreenInScreenWindow HMIRuntime.BaseScreenName, oWinName.ObjectName, MainScreen
  ' Neues Bild im Bildfenster scrwinTopArea laden
  If TopArea = "" Then
    HMIRuntime.Trace "TopArea ist leer" + vbNewLine
  Else
    Set oTopArea = HMIRuntime.ActiveScreen.Parent.Parent.ScreenItems("scrwinTopArea")
      oTopArea.PictureName = TopArea      ' Name des Bildes im Bildfenster
      HMIRuntime.Trace "String oTopArea.PictureName =" + oTopArea.PictureName + vbNewLine
  End If
  
  ' Neues Bild im Bildfenster scrwinSideArea laden
  If SideArea = "" Then
    HMIRuntime.Trace "SideArea ist leer" + vbNewLine
  Else  
    Set oSideArea = HMIRuntime.ActiveScreen.Parent.Parent.ScreenItems("scrwinSideArea")
      oSideArea.PictureName = SideArea     ' Name des Bildes im Bildfenster
      HMIRuntime.Trace "String oSideArea.PictureName =" + oSideArea.PictureName + vbNewLine
  End If
    
  ' Neues Bild im Bildfenster scrwinMainArea laden
  If MainArea = "" Then
    HMIRuntime.Trace "MainArea ist leer" + vbNewLine
  Else
    Set oMainArea = HMIRuntime.ActiveScreen.Parent.Parent.ScreenItems("scrwinMainArea")
      oMainArea.PictureName = MainArea     ' Name des Bildes im Bildfenster
      HMIRuntime.Trace "String oMainArea.PictureName =" + oMainArea.PictureName + vbNewLine
  End If
        
  ' Neues Bild im Bildfenster scrwinBottomArea laden
  If BottomArea = "" Then
    HMIRuntime.Trace "BottomArea ist leer" + vbNewLine
  Else
    Set oBottomArea = HMIRuntime.ActiveScreen.Parent.Parent.ScreenItems("scrwinBottomArea")
      oBottomArea.PictureName = BottomArea   ' Name des Bildes im Bildfenster
      HMIRuntime.Trace "String oBottomArea.PictureName =" + oBottomArea.PictureName + vbNewLine
  End If
Else
  MsgBox "Parameter MainScreen empty! Please define the parameter!", vbCritical
  HMIRuntime.Trace "Parameter MainScreen empty! Please define the parameter!" + vbNewLine
End If

' Fehlercode ausgeben
If Err.Number <> 0 Then
  HMIRuntime.Trace "--------------------------------------------------------" + vbNewLine
  HMIRuntime.Trace "Fehlernummer: " & Err.Number & vbNewLine
  HMIRuntime.Trace "Fehlerbeschreibung: " & Err.Source & vbNewLine
  HMIRuntime.Trace "Fehlerbeschreibung: " & Err.Description & vbNewLine
  HMIRuntime.Trace "--------------------------------------------------------" + vbNewLine
  Err.Clear
  On Error GoTo 0
End If
End Sub

Ich habe diverse Taster mit dem Ereigniss klicken die dieses Script ohne Probleme ausführen, allerdings auch Taster wo das Script komische Dinge treibt.

Es wird mir im apdiag teilweise der falsche Inhalt für übergebene Parameter angezeigt. So ist die Variable "BottomArea" am Script mit dem String "Service - Slitter adjustment right" projektiert, im apdiag wird mir aber als Inhalt für diesen Parameter der String "Main Menu Service Positioning System" angezeigt.

Zusätzlich wird auch manchmal der Teil "BottomArea" nicht bearbeitet, zumindest erhalte ich hier teilweise keine Ausgabe im apdiag durch den Trace. Dies tritt ebenfalls sporadisch auf...

Das schaut dann im apdiag so aus:

Code:
---> Call of VB-Script -- VB_ChangeMainScreenWithWindowPicture
TopArea ist leer
SideArea ist leer
String oMainArea.PictureName =Main Menu Service TurboWinder.PDL
--------------------------------------------------------
Fehlernummer: 424
Fehlerbeschreibung: Laufzeitfehler in Microsoft VBScript
Fehlerbeschreibung: Objekt erforderlich
--------------------------------------------------------

Nachtrag: Ich habe jetzt den Fehlercode mit ausgegeben, da bekomme ich immer den Fehler 424.
Seltsamerweise gibt es aber die Objekte und auch die Referenzierung ist m.M.n. Ok. Und wie gesagt, das gleichte Script funktioniert an manchen Stellen ohne Probleme, an manchen aber wie oben...


Nun bin ich nicht der Experte bei den Scripten, aber gibt es hier irgendwelche Zykluszeiten oder Aktualisierungszyklen die man einstellen / anschauen kann?
Ich finde dass das Script jetzt nicht wirklich schwere Sachen machen muss, aber wenn die Parameter nicht sauber übergeben werden finde ich es schon recht seltsam.

Komplettes Übersetzen oder löschen des IM-Ordners bringen leider keine Besserung.

Vielleicht hat ja Jemand von Euch eine Idee oder erkennt einen Fehler oder dergleichen...

Gruss,
Michael

Nachtrag:

So sieht die Meldung aus wenn das Script ohne Fehler durchläuft:

Code:
---> Call of VB-Script -- VB_ChangeMainScreenWithWindowPicture
String oTopArea.PictureName =2000 Status and message bar.PDL
String oSideArea.PictureName =2000 Winder operation bar.PDL
String oMainArea.PictureName =Operation Winder.PDL
String oBottomArea.PictureName =Operation winder menu bar.PDL

oder

Code:
---> Call of VB-Script -- VB_ChangeMainScreenWithWindowPicture
TopArea ist leer
SideArea ist leer
String oMainArea.PictureName =Main Menu.PDL
String oBottomArea.PictureName =Main Menu menu bar.PDL
 
Zuletzt bearbeitet:
Zurück
Oben