TIA Netzlaufwerk für Archivexport überprüfen

TMaroni

Level-2
Beiträge
129
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich möchte einen Bit setzen wenn der Netzlaufwerk des Servers nicht vorhanden oder keine Berechtigung habe. Es werden diverse Archive (Audittrail, Alarmarchiv, Trend) verschoben oder kopiert. Der Serverpfad sieht beispielweise so aus \\Servername\Station\Audit. Touchpanel ist ein Comfortpanel TP1500

Gemäss Forum suche habe folgendes gefunden:


Dim fs, Pfad,
Pfad= \\Servername\Station\Audit

Set fs = CreateObject("filectl.filesystem")
If fs.dir("Pfad") = "Pfad" Then
Setbit Export i.O.
Else
Setbit Export n.i.O
End if

Danke für eure Unterstützung!
 
Und was ist jetzt Deine Frage?

Funktioniert der gefundene Code nicht bei Dir und wir sollen Dir sagen warum? Oder suchst Du alternative Lösungen?
Wo hast Du den Code gefunden? Vielleicht wurde da auch schon eine Korrektur gepostet und Du müsstest da nur ein paar Postings weiter lesen?
Wie heißt Dein "Bit" (Deine HMI-Variable?) genau?
Weißt Du nicht wo/wie der Code aufgerufen werden soll?
Wie oft/häufig soll der Status überprüft werden?
Was meinst Du mit "Berechtigung"? Ob das Panel auf der Freigabe/Netzlaufwerk Dateien anlegen/schreiben darf, kann man m.W. nur ermitteln, indem man da eine Datei anlegt und schreibt und auswertet ob das geklappt hat. In meinen Augen macht es wenig Sinn, den Berechtigungs-Status zyklisch zu prüfen.

Hast Du diese FAQ schon gefunden und gelesen?
FAQ: Protool/WinCCflex/TIA Daten lesen / schreiben mit VB-Script


Ich möchte einen Bit setzen wenn
Und dann soll das Bit für immer und ewig gesetzt bleiben?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe ein änliches Beispiel im FAQ: Protool/WinCCflex/TIA Daten lesen / schreiben mit VB-Script #1 und #8 gefunden und angepasst.


Bespiel:
Code:
Function MediaCheckCE(ByRef path)[INDENT] 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 
[/INDENT]
 End Function

Die Überprüfung wird nur einmal täglich aufgerufen. Wenn der Bit "LF_vorhanden"gesetzt ist, kann man mit dem verschieben oder kopieren der Archive begonnen werden.

Code:
Dim fs, Pfad,
Pfad= \\Servername\Station\Audit
 

Set fs = CreateObject("filectl.filesystem")
If fs.dir("Pfad") = "Pfad" Then 
Setbit LF_vorhanden
Else
Setbit LF_nicht_vorhanden
End if
Set fs= Nothing

Mit fs.dir überprüfe ich doch ob den komplette Pfad vorhanden ist, oder?
 
Zuletzt bearbeitet:
Und was ist jetzt Deine Frage?

Was meinst Du mit "Berechtigung"? Ob das Panel auf der Freigabe/Netzlaufwerk Dateien anlegen/schreiben darf, kann man m.W. nur ermitteln, indem man da eine Datei anlegt und schreibt und auswertet ob das geklappt hat. In meinen Augen macht es wenig Sinn, den Berechtigungs-Status zyklisch zu prüfen.

Harald

Gibt es evtl. eine Systemmeldung wenn das Panel ein Archiv nicht verschieben kann, weil er die Berechtigung nicht mehr hat?
 
ja. es gibt eine systemmeldung wenn im script folgende zeile nicht vor dem error auftaucht.
on error resume next.

ist vorige zeile vorhanden kannst du die errornummer im script abfragen. das machst du direkt hinter der stelle wo der fehler auftachen könnte.

fehler = err.number oder fehlertext = err.description

err.clear setzt den fehlercode zurück
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Auf diesen Link https://support.industry.siemens.co...m-hmi-gerät-schreibbereit-ist-?dti=0&lc=de-WW ist unten folgendes Beispiel ersichtlich.

Meine Ergänzungen habe ich rot markiert.

Code:
Dim fso, result, path
[COLOR=#ff0000]path = "\\Servername\Station\Audit[/COLOR]

 Set fso= CreateObject("Filectl.filesystem")

 If fso.dir(path)="" Then      [COLOR=#ff0000] ' If fso.dir(path) = "" überprüft ob der Netzlaufwerk nicht vorhanden ist? wenn ja result = 1 ansonsten result = 0[/COLOR]
 result= 1                             [COLOR=#ff0000]' Bis zu welcher tiefe wird der path überprüft?[/COLOR]
 Else
 result= 0
 End If

 Set fso= Nothing

 MediaCheckCE= result  
End Function
 
Bis zu welcher Tiefe wir mit Path "path = "\\Servername\Station\Audit" überprüft?
Komplett bis zum Ende.
Es muß der Netzwerk-Pfad "\\Servername\Station\" existieren und in dem Pfad muß ein Ordner oder eine Datei (!) "Audit" vorhanden sein. Um unter WinCE die Prüfung auf Ordner zu beschränken, muß der Pfad mit "\" am Ende angegeben werden.


Ich habe ein änliches Beispiel im FAQ: Protool/WinCCflex/TIA Daten lesen / schreiben mit VB-Script #1 und #8 gefunden und angepasst.
Das Beispiel ist der Code aus dem Siemens-FAQ-Beitrag.
Das Siemens Skript-Beispiel tut allerdings nicht das, was die Überschrift verspricht. Es prüft nicht, ob ein Medium oder Pfad "schreibbereit" ist. Es prüft lediglich, ob der Pfad existiert. (Das steht allerdings in dem Siemens Beitrag als Hinweis.)
Weiterer Logik-Stolperstein: die Rückgabe der Function MediaCheckCE sagt eigentlich nicht, ob der Ordner oder Datei existiert, sondern ob bei der Dir-Methode ein Fehler aufgetreten ist:
0 = kein Fehler = Ordner/Datei existiert
1 = Fehler = Ordner/Datei existiert nicht

In der FAQ: Protool/WinCCflex/TIA Daten lesen / schreiben mit VB-Script gibt es im Beitrag #2 eine fertige Function FolderExist(Path) mit reichlich Hinweisen. Die Function kann man unter Windows CE und auch unter normalem PC-Windows verwenden (z.B. für die HMI/Panel Simulation auf PC).
Die Function könntest Du auf nur den WinCE-Code reduzieren und anpassen:
Code:
Dim fso, Pfad

Pfad = "\\Servername\Station\Audit\"

'WinCE
Set fso = CreateObject("FileCtl.FileSystem")
If fso.Dir(Pfad) <> "" Then
    SmartTags("LF_vorhanden") = 1
Else
    SmartTags("LF_vorhanden") = 0
End If

Harald
 
Zurück
Oben