ActiveX Fehler mit WinCC flexible 2008 SP3

Fehnjung

Level-1
Beiträge
15
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
ActiveX Fehler bei Skript mit WinCC flexible 2008 SP3

Hallo zusammen!
Ich habe ein kleines Problem mit WinCC flexible 2008 SP3. Mit einem Script möchte ich mehrere Variablen in einer CSV-Datei abspeichern. Dazu habe ich mir auf der Siemens-Homepage ein Beispielprojekt heruntergeladen und möchte dieses simulieren. Mein Rechner ist ein Windows 7 Professional System.
Wenn das Script aktiv wird, erscheint folgende Fehlermeldung:

"Fehler 'ActiveX-Komponenten kann kein Objekt erstellen: 'FileCtl.FileSystem" in Skript ... in Zeile 13." (Fehlernummer 20010)

Der Ordner, wo die Dateien abgelegt werden, wird erstellt und ein Variablenarchiv, das ebenfalls mitläuft, hat eine Datei erstellt. Nur die Dateien für das eigene Archiv werden nicht erstellt.

Der Code des Beispielprojektes sieht so aus:
Code:
Dim fs, f, FName, Header

' Archivierungspfad (Eingangsparameter) und Dateiname zusammensetzen 
' Combine archivepath (input parameter) and filename
FName = StoragePath & "\Archiv_01_" & CStr(DatePart("m",Date)) & "_" & CStr(DatePart("yyyy",Date)) & ".csv"

' Tabellenkopf zusammenstellen 
' Create table header 
 Header = "Storage Time;Tag name;Value/Text" & Chr(10)

' FileSystemObject erstellen
' Create FileSystemObject
 Set fs = CreateObject("FileCtl.FileSystem") '[B](hier ist Zeile 13)[/B]

' FileObject erstellen
' Create FileObject
 Set f = CreateObject("FileCtl.File")

' Datei öffnen bzw. erstellen, wenn sie noch nicht existiert.
' Open File or create file if it does not exist 
 f.open FName, 8                                 

' Wenn Datei 0 Byte groß, dann ist sie neu
' If file is 0 byte the file is new
 If fs.FileLen(FName) = 0 Then                      
   f.lineprint(Header)
' =0 => Tabellenkopf muss eingefügt werden
' =0 => Table header must be inserted
 End If 

' Werte der Variablen in die Archivdatei schreiben (Parameter "TagName" z.B. Tag_01)
' Write values of variables in archive file (Parameter "TagName" for sample Tag_01)
 f.lineprint(CStr(Now) & ";" & TagName & ";" & CStr(SmartTags(TagName))) 

' Datei wieder schließen
' Close file
 f.Close

' Verwendeten Speicher wieder freigeben
' Used storage will be freed
Set f  = Nothing
Set fs = Nothing

Vielleicht kann mir jemand sagen, was es mit dieser Fehlermeldung auf sich hat und wie man dieses Problem lösen kann. Ich bin leider noch nicht so erfahren mit Skripten.

Viele Grüße
 
Zuletzt bearbeitet:
Hallo,

ich würde mich gerne der anschließen.

Frühe das script aus bevor ich ein Archiv öffne und dann starte.
Teste es ausschließlich in der Simulation, da die Änderung über Fernwartung auf das Panel übertragen wird.

TP1200 Cofort Panel 6AV2 124-0MC01-0AX0

Script :
Code:
Function MediaCheckCE(ByRef path)
'Tip:
' 1. Use the <CTRL+SPACE> or <CTRL+I> keystroke to open a list of all objects and functions
' 2. Write the code using the HMIRuntime object.
'  Example: HmiRuntime.Screens("Screen_1").
' 3. Use the <CTRL+J> keystroke to create an object reference.
'Write the code as of this position:

'NOTE: To start scripting please press <Ctrl><Space> and see the wide variety of functions.
'Write scripts by using system functions or the WinCC flexible object model. You can easily access to the
'system through the HMI runtime object. For a convenient picking of an object reference
'you can press <Alt><Right Arrow>. Design complex scripts by employing the basic features
'of the programming language VBScript and access tags directly by name e.g. tag = 5.

Dim fso, result

Set fso= CreateObject("Filectl.filesystem")

If fso.dir(path)="" Then
    result= 1
Else
    result= 0
End If
    
Set fso= Nothing

MediaCheckCE= result

End Function

Quelle: https://support.industry.siemens.co...m-hmi-gerät-schreibbereit-ist-?dti=0&lc=de-WW
 
Hallo mista,

auch für Dein Skript gilt der selbe Hinweis:
Guck mal in Volkers FAQ.
Bemerk besonders den Unterschied zwischen die Runtimeumgebungen 'normal-Windows' und Windows CE.

Bei der Simulation wird Dein Skript auf Deinem PC unter einem PC-Windows ausgeführt, und nicht wie auf dem Panel unter Windows CE. Bei den Windows-Varianten unterscheiden sich die Datei-Funktionen und wie die Filesystem-Objekte erzeugt werden müssen (CreateObject). Lies mal in der FAQ auch ein bisschen weiter und besonders den Beitrag #2

Harald
 
Also in der Simulation geht auch das MediaCheckWin Skript nicht. Egal ob Path = "C:\" oder "C:\Storage Card USB" ist.
das Result ist immer = 0.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Somit sollte das Skript beim physikalischen panel einwandfrei funktionieren?
Vermutlich ja. Ob Siemens Programmzeilen (besonders die umständlich programmierten Schnipsel aus den Support FAQ) "einwandfrei funktionieren", da kann ich erst was dazu sagen wenn ich die selber getestet habe. :cool:

In dem Siemens FAQ ist doch auch die Funktion MediaCheckWin() - die müsste bei der Simulation anstatt der MediaCheckCE() verwendet werden. Du könntest so eine Simulations-Umschaltung in Dein Projekt einbauen, wie ich in dem VBS-FAQ Beitrag #2 beschrieben habe.

Harald
 
Also in der Simulation geht auch das MediaCheckWin Skript nicht. Egal ob Path = "C:\" oder "C:\Storage Card USB" ist.
das Result ist immer = 0.
Bei der WinCC-RT-Simulation werden auch die Speichermedien simuliert und sind da immer schreibbereit. Da müsstest Du schon nach einem nicht vorhanden Laufwerk checken, z.B. B: oder J: oder irgendeinen Laufwerks-Buchstabe den es auf dem Simulations-PC nicht gibt bzw. nur dann gibt wenn ein USB-Stick angesteckt ist.

Harald
 
Zurück
Oben