WinCC Daten aus DB ueber WinCC (Advanced oder Pro) in einer Datei speichern

Schpeidaman

Level-1
Beiträge
6
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich habe folgende Aufgabe bekommen.
Unser Kunde moechte ueber die HMI-Oberflaeche Rezepturdaten eingeben - diese Daten landen dann in einem DB
-> Das ist soweit klar.

Diese Daten hat er Teilweise auch vom alten System (Oberflaeche in einer Hochsprache programmiert - keine Ahnung welche) die er über einen Button "Rezept laden" einlesen moechte.
-> Das bekomm ich denke ich auch so weit hin
-> Das Auswaehlen der Datei hab ich über folgendes Script geloest, damit der Bediener komfortabel die Datei ueber den Explorer suchen und auswählen kann die er einlesen moechte.
Code:
Dim oExec, wShell
Set wShell=CreateObject("WScript.Shell")
Set oExec=wShell.Exec("mshta.exe ""about:<input type=file id=FILE><script>FILE.click();new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).WriteLine(FILE.value);close();resizeTo(0,0);</script>""")
SelectFile = oExec.StdOut.ReadLine

Für neue Rezepturen moechte er aber auch noch einen "Rezept speichern" Button mit dem er die Datensaetze entweder in eine vorhandene Datei oder aber auch in eine neue Datei speichern kann. Und wenn die gewaehlte Datei schon vorhanden ist soll nachgefragt werden ob man die Datei wirklich ueberschreiben moechte (wie man es von anderen Anwendungen her auch kennt).
-> genau an diesem Fall haeng ich grad und komm nicht weiter
-> hat hier einer von euch eine Idee wie man das loesen koennte?

Wie gesagt voraussetzung ist WinCC Advanced oder vermutlich eher Professional auf einem PC als RT.

Danke schonmal vielmals!!!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So Mittlerweile hab ich einen Ansatz gefunden:
Code:
Sub File_Save()
Dim FName, fso, DatenSet, fout, Pfad

Call FileSave_Folder(Pfad)
FName = Pfad
DatenSet = "Das ist ein Test vom " & Date & " um " & Time & " Uhr"

    
Set fso = CreateObject("Scripting.FileSystemObject")

'If Not fso.FileExists(FName) Then
    
    fso.CreateTextFile(FName)
    
    Set fout = fso.OpenTextFile(FName,8, True)

    fout.WriteLine(DatenSet)
    
    fout.Close

End Sub

Code:
Function FileSave_Folder(ByRef Pfad)
Dim objDlg, objF, objItem, Dateiname

Call FileSave_File(Dateiname)

Set objDlg = CreateObject("Shell.Application")
Set objF = objDlg.BrowseForFolder (0,"Ordner auswählen",0,17)
Set objItem = objF.Self
Pfad = objItem.Path & "\" & Dateiname & ".cor"

End Function

Code:
Function FileSave_File(ByRef Dateiname)
Dateiname=InputBox("Bitte Dateinamen angeben","Speichern unter","")
End Function

Jetzt hab ich nur noch das Problem, dass sich die Ordnerauswahl im Hintergrund öffnet.

Das Ganze könnte ich dann mit folgendem C-Script in den Vordergrund holen:
Code:
#include "GlobalDefinitions.h" 
void Show_OrdnerSuchen()
{
HWND Handle = NULL;

Handle = FindWindow(NULL,"Ordner suchen");

if(Handle)

{

ShowWindow(Handle,SW_MINIMIZE);

ShowWindow(Handle,SW_SHOWNORMAL);

SetForegroundWindow(Handle);

}

}

Jetzt schaffe ich es nur nicht das C-Script automatisch (z.B. bei Wertänderung) zu starten, da es im Professional anscheinend keine Möglichkeit für Ereignisse bei Variablen gibt - oder übersehe ich hier was?
Oder habt ihr evtl eine andere Idee wie ich das lösen könnte?
 
Da das alles momentan noch ne Machbarkeitsstudie ist gibt es noch keine genauen Vorgaben.
Es ist ein PC mit Windows XP glaub ich auf dem die RT laufen soll.
Momentan sind wir bei WinCC Professional (TIA) angelagnt, da wir mit Advanced bestimmte Sachen nicht lösen konnten.

SPS ist ne S7-300
Die Rezeptdateien die gespeichert und geladen werden sollen sind eigentlich .txt-Files mit der Dateiendung .cor (vom alten System her zwingend vorgegeben da die alten Rezepturen weiter verwendet werden müssen)

Dateien lesen / schreiben ist kein Thema - jedoch soll das Ganze eher nach Windows-Anwendung als nach WinCC ausschauen, deshalb brauche ich die Navigation durch den Explorer wie oben schon beschrieben.

Ich hab jetzt mit ein paar Umwegen mittlerweile alles so weit hin bekommen.
Jetzt muss ich nur noch die Daten die ich mittlerweile im DB hab auseinandersortieren.
Vorerst denke ich aber brauch ich keine Hilfe mehr!

Danke!
 
Zurück
Oben