WinCC TP700 Comfort MySQL Script

Zuviel Werbung?
-> Hier kostenlos registrieren
Okay vielen Dank, kann ich auf diesem PC mehrere Runtimes laufen lassen? Ich hab mehrere CPUS von denen ich die Daten sammeln möchten

Aktuell ist die Überlegung auf den einzelnen Maschinen die daten mit dem Panel über ein script in eine csv datei zu schreiben und auf einen Rechner im Netzwerk zu kopieren , diese daten mit einem vb Programm in die DB zu schreiben , gibt es da noch eine elegantere Lösung?

Danke :)
 
auf einem pc kann nur 1 runtime laufen.

du kannst in der runtime aber mehrere verbindungen anlegen zu den verschiedenen cpu's. diese müssen dann aber alle im gleichen subnetz sein.

einfacher wäre es wenn die panels die dateien erzeugen zu lassen und auf netz zu kopieren. das hast du ja auch vor.

auf irgendeinem pc liest du dann die csv ein und dieser schreibt die daten in die db. das muss nicht mal vb sein. vb-script geht auch.
also einfach das script aus der faq passend machen.
Das Script könntest du über die Aufgabenplanung starten. Ob das von der anforderungsrate reicht kann ich nicht beurteilen. bei win 10 ist das glaube 5 minuten.
oder eine runtime. dort kannst du über die aufgabenplanung minütlich ein script aufrufen.
 
Hey vielen Dank, hab mir jetzt ein kleines VB Programm erstellt, welche die CSV Dateien und in meine DB schreibt , welches auch gut funktioniert. Die Daten werden in der Regel jede Schicht eingespielt (bzw mal beim Auftragswechsel) Wollte das ganze über eine zusätzliche txt datei realisieren , die mir sagt , das daten eingespeichert werden sollen oder nicht , diese txt wird alle 30 min abgerufen.

Jetzt hätte ich auch noch "Status-Daten" ( Hand/Automatik/Einrichter Betrieb, Störung aktuelle Stückzahl , Restmenge etc) die ich in die DB laden möchte. Macht es sind dies über den gleichen weg zu machen oder gibt es da etwas besseres ( Die Daten sollen in die DB damit diese dann von anderen Standorten jederzeit eingesehen werden können)

Stückzahl und aktuelle Menge wollte ich nach jedem Arbeitszyklus ( ca 35 s ) einspeichern.

Hatte mir das folgendermaßen gedacht: Nach jedem Arbeitsgang werden die aktuelle daten in eine csv gespeichert, mein VB Programm liest diese Daten ein
Beim nächsten Arbeitsgang wird die csv mit den aktuellen Daten überschrieben und so weiter ( macht das sinn?)
was würde passieren, wenn mein VB programm die Daten noch einließt während das Panel überschreiben will? Hätte nämlich sonst eine temporäre Kopie der csv Datei gemacht die eingelesen wird und wieder gelöscht damit da kein Konflikt entsteht oder geht das auch so ?
Danke :)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hatte mir das folgendermaßen gedacht: Nach jedem Arbeitsgang werden die aktuelle daten in eine csv gespeichert, mein VB Programm liest diese Daten ein
Beim nächsten Arbeitsgang wird die csv mit den aktuellen Daten überschrieben und so weiter ( macht das sinn?)
in dem fall könnten daten verloren gehen.
anderer ansatz.
du erzeugst die datei mit einem zeitstempel. z.b. dateiname_JJJJ-MM-TT_hh-mm-ss.csv auf ein lokales verzeichnis im hmi.
nachdem die datei erzeugt wurde kopierst du diese in das verzeichnis netzwerkkopie (auf dem hmi). anschliessend macht du ein move von den dateien in diesem verzeichnis auf das netzlaufwerk.
du hast in diesem fall also immer daten gesichert, auch bei netzausfall. die dateien aus netzwerkkopie werden verschoben sobald das netzlaufwerk wieder verfügbar ist.

dein vb-programm liest nun die datei vom netzlaufwerk ein. nachdem die daten der datei in der db abgelegt sind löscht das vb-programm diese datei auf dem netzlaufwerk.

aber beim ordner wo du im hmi deine dateien ablegst musst du ein wenig aufpassen.
schreibst du alle dateien in das gleiche verzeichnis können dort unmengen an dateien liegen. das könnte das dateisystem irgendwann überfordern.
ich halte es deshalb so, dass ich mir entsprechende verzeichnisse erzeuge. \Jahr \Monat \Tag und dort die dateien ablege. auf tag kann an evtl verzichten wenn es nur tagesdateien gibt.
muss man halt schauen wieviel dateien auflaufen und dann mehr oder weniger unterverzeichnisse schaffen.
und gegebenenfalls uraltdaten löschen damit die speicherkarte nicht voll wird.

ich hatte hier ein scenario auf einem hmi (pc-system)
daten wurden lokal im ordner \jahr\monat\usw erzeugt. anschliessend in den ordner netzkopie (auch auf dem hmi) kopiert. diese dateien wurden vom bde augeholt und gelöscht.
bde erzeugte aber eine sicherungskopie im verzeichnis bde_sicherung (auch auf dem hmi)
das war eine säge mit relativ kurzer taktzeit. nach nicht allzu langer zeit waren in dem verzeichnis weit über 100.000 dateien vorhanden. keine chance die zu löschen.
das windows schmiert dort dann gnadenlos ab.


was würde passieren, wenn mein VB programm die Daten noch einließt während das Panel überschreiben will? Hätte nämlich sonst eine temporäre Kopie der csv Datei gemacht die eingelesen wird und wieder gelöscht damit da kein Konflikt entsteht oder geht das auch so ?
kommt drauf an wie dein programm die datei öffnet.
normaler ablauf ist soweit ich das weiß
dein vbs möchte eine neue datei erzeugen. ist diese datei bereits vorhanden wird diese gelöscht und eine neue datei erzeugt. diese ist dann erst mal leer und wird mit den daten beschrieben.
öffnet dein vb-programm die datei so, dass diese nicht gelöscht werden kann, würde keine neue datei erzeugt. das script würde einen fehler generieren. es würden also keine daten geschrieben.
 
Hallo Volker

vielen Dank für die Hilfe, Scripte und Software sind heute in Betrieb gegangen und funktionieren einwandfrei!
 
Zurück
Oben