TIA Rezeptur-Datensatzelemente im Script auslesen

Draco Malfoy

Level-1
Beiträge
1.168
Reaktionspunkte
82
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi

Ich möchte einzelne Rezeptur-Elemente über Script addressieren und auf dem HMI darstellen
Wie funktioniert das bei den Comfort Panels ?

Aufm Panel-PC habe ich ja eine CSV Datei in der meine Rezeptur abgelegt ist. Diese kann ich zerlegen und die Variablen rausholen. Kann ich auch auf dem Comfort Panel eine Rezepturablage in einer CSV Datei erzwingen ?
 
Auf dem Panel PC ist das eine WinCC Advanced Runtime? Auf dem Comfort Panel kannst Du im Prinzip das gleiche machen/skripten, nur unterscheiden sich die Anweisungen/Methoden zum Dateihandling von der PC Runtime, weil auf den Panels Win CE läuft. Zu den Unterschieden siehe die FAQ Protool/WinCCflex/TIA Daten lesen / schreiben mit VB-Script

Rezepturvariablen von der PLC ins HMI einlesen macht man mit der Systemfunktion GetDataRecordTagsFromPLC.
Im TP700 legst Du eine Rezeptur für diese Daten an. Die Rezepturvariablen verknüpfe mit den PLC-Variablen in dem DB.
Dann kannst Du die Rezepturvariablen ins TP einlesen und die Rezeptur auf den USB Stick speichern (exportieren, ExportDataRecords). Wenn Deine csv-Datei ein bestimmtes Format haben soll, dann musst Du etwas aufwendiger skripten: eine Textdatei öffnen und die Werte und Separatoren (z.B. Semikolon) einzeln in die Datei schreiben. Für diesen Fall siehe diese FAQ Protool/WinCCflex/TIA Daten lesen / schreiben mit VB-Script und suche im Forum nach "csv vbs"

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Auf dem Panel PC ist das eine WinCC Advanced Runtime?

Richtiiiiggggg ;))

Also vielen Dank schon mal für den Hinweise. Das Problem ist, daß TIA die Rezepturdaten wohl in einem anderen Format ablegt, als WinCC Flexible.

Dazu habe ich folgende Fragen:

1) Ist das Datenformat irgendwo beschrieben ?
2) Hat das schon mal einer zerleg und (nach den Variablen) durchsuchbar gemacht ?
3) Kann man das Datenformat wenigstens unter WinCC Professional Runtime vielleicht wieder auf CSV stellen ? Gibt es irgendeine Möglichkeiten die Rezeptur auf einem Comfort Panel oder auf einer TIA Advanced Runtime wieder im alten Format abzulegen ?
 
Du kannst die Rezepturdaten als CSV exportieren und dann bearbeiten,
das geht auch mit einem Comfort Panel.

geht schon, dauert nur ca 1/2h. ich möchte die Rezepturelemente dynanisch anzeigen und die Datensätze aus einem DropDown Menü navigieren.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
eigentlich geht das ja relativ schnell, es sei den deine Rezepturverwaltung ist riesieg.
Du kannst auch einzelne Datenzätze als CSV speichern und dann zusätzlich jeden neuen
Datensatznamen seperat in einer CSV Datei speichern.
 
Ich würde nicht versuchen, die von der TIA- oder WinCCflex-Runtime erzeugten csv-Dateien irgendwo einzulesen und zu zerlegen, weil das Format nicht dokumentiert ist und sich bei jedem Update plötzlich ändern kann. Und vermutlich auch noch von den Windows-Regionaleinstellungen abhängig ist. Ich erzeuge und lese meine portablen csv-Dateien grundsätzlich durch "low Level" Schreiben und Lesen aller einzelnen Werte und Separatoren in/aus Textdateien in VBS-Skripten.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich würde nicht versuchen, die von der TIA- oder WinCCflex-Runtime erzeugten csv-Dateien irgendwo einzulesen und zu zerlegen, weil das Format nicht dokumentiert ist und sich bei jedem Update plötzlich ändern kann. Und vermutlich auch noch von den Windows-Regionaleinstellungen abhängig ist. Ich erzeuge und lese meine portablen csv-Dateien grundsätzlich durch "low Level" Schreiben und Lesen aller einzelnen Werte und Separatoren in/aus Textdateien in VBS-Skripten.

Harald

Die Frage ist bloß, wie mache ich das mit der Rezeptverwaltung wenn ich einen Datensatz nach Element X durchsuchen möchte oder Elemet X auslesen und im HMI darstellen will, ohne mir diese Suppe jedesmal in die Steuerung zu laden. Die Anforderung besteht auch darin, möglichst viele Datensätze gleichzeitig auf einer Seite darzustellen. Um, zum Beispiel, eine 10er Übersicht über die vorhandenen Rezepte zu schaffen, mit Werkzeugnummer und Änderungsdatum. Ggf. auch noch mit dem Benutzer, der diesen Datensatz abgelegt hat.

Gibt es hier irgendwelche möglichkeiten, die keinen Off-Label Use irgendwelcher unbekannt-formatiger Datensätze implementieren ?
 
Wenn Dir die von Siemens vorgefertigte Rezepturanzeige/-verwaltung nicht ausreicht, dann hilft wohl nur selbst skripten oder ein Control entwickeln. In WinCC Advanced gibt es ja noch nicht mal ein Grid/Tabellen-Control.

PS: Du kannst mal den Siemens Support fragen, was die für die Lösung Deiner Aufgabe vorschlagen.

Harald
 
Hallo Draco,

kannst vielleicht mal genauer beschreiben (vielleicht mit Bildern/Code), was du anscheinend mit einer PC-Runtime schon realisiert hast?

Ich verstehe nämlich ehrlich gesagt deine Aussage
"... im HMI darstellen will, ohne mir diese Suppe jedesmal in die Steuerung zu laden."
nicht so ganz, eine Rezeptur kann ich doch "offline" schalten, sodass Werte nur auf Anweisung übertragen werden (und nicht schon beim Laden).


Gruß, Fred


PS: Ähnlich wie Harald nutze ich auch ein selbst definiertes Format für meine Rezepturverwaltung und lasse die Siemens-Rezepturanzeige/die Rezepturfunktionen nahezu vollständig aussen vor.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Draco, kannst vielleicht mal genauer beschreiben (vielleicht mit Bildern/Code), was du anscheinend mit einer PC-Runtime schon realisiert hast? Ich verstehe nämlich ehrlich gesagt deine Aussage "... im HMI darstellen will, ohne mir diese Suppe jedesmal in die Steuerung zu laden." nicht so ganz, eine Rezeptur kann ich doch "offline" schalten, sodass Werte nur auf Anweisung übertragen werden (und nicht schon beim Laden). Gruß, Fred PS: Ähnlich wie Harald nutze ich auch ein selbst definiertes Format für meine Rezepturverwaltung und lasse die Siemens-Rezepturanzeige/die Rezepturfunktionen nahezu vollständig aussen vor.
Ich weiß nicht, ob wir das Gleiche meinen. Ich finde insgesamt dieses Thema Rezepturen ziemlich schwierig zum Verständnis und jedenfalls nicht anschaulich. Um deine Frage zu beantworten: Mit einer Rezeptur kann ich vieles machen, sofern ich das vordefinierte Betrachtungsfenster der Firma Siemens einsetze. Dann kann ich off schalten und on schalten und was weiß ich was. Dieses Fenster möchte ich aber nunmal nicht haben. Ich möchte eine Übersicht haben, die navigierbar ist ("So eine Art Pseudo-Browser") die mir bestimmte charakteristische Inhalte aus den Datensätzen anschaulich in 10er Bündeln darstellt. Zum Beispiel Werkzeugnummer, Teilenummer, Datum wann das Rezept angelegt wurde, und von wem wurde es angelegt. Aber ich möchte dabei diese Informationen nicht irgendwie aufwändig in dem Namen des Datensatzes verpackt haben.

By The Way: Beim Versuch, mit dem Standardbefehl einen Rezepturdatensatz zu speichen (GetDataFromThePLC oder wie das da heißt) bekomme ich folgende aussagekräftige Fehlermeldungen:


Fehler_Datensatz_Laden.JPG

Weiß einer Rat ??
 
Zuletzt bearbeitet:
Wo bekommst Du die Meldungen? Kommen die aus Deinem Programm oder automatisch/aus dem System? Haben die Meldungen Meldungsnummern?
Wie sieht der Versuch im Programm aus? Was soll das Programmstück tun?

Harald
 
Wo bekommst Du die Meldungen? Kommen die aus Deinem Programm oder automatisch/aus dem System? Haben die Meldungen Meldungsnummern?
Wie sieht der Versuch im Programm aus? Was soll das Programmstück tun?

Harald

Die Meldungen sind Systemmeldungen, die auftauchen sofern ich die Systemfunktion "GetDataRecordFromPLC", hinterlegt an einer Bedientaste am HMI nutzen möchte. Ich habe einfach festgestellt daß noch nichtmal die Scripte zum Laden / Speichern von Rezepten funktionieren, und dann wollte ich es explizit mit einem Funktionsaufruf mit einem OnButton-Event ausprobieren. Aber nein, geht auch nicht.

Das Ganze ist kein reales Panel und CPU sondern läuft unter Simulation ab.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
By The Way: Beim Versuch, mit dem Standardbefehl einen Rezepturdatensatz zu speichen (GetDataFromThePLC oder wie das da heißt) bekomme ich folgende aussagekräftige Fehlermeldungen:


Anhang anzeigen 43697

Weiß einer Rat ??
Speichern? Die Funktion heisst Speichere Datensatz bzw im Script SaveDataRecord
Dann gibt es noch Lade Datensatz. Kannst du über die rezeptur-Nr oder über den Name ansprechen
Ich denke das ist das was du haben möchtest.

ABER
So kannst du nach und nach mehrere Datensätze laden. Du kannst aber nicht mehrere Datensätze parallel anzeigen. Dazu müsstest du das dann umkopieren.

mit GetDataRecordFromPLC liest du du aktuelle Rezeptur aus der Steuerung aus
 
Speichern? Die Funktion heisst Speichere Datensatz bzw im Script SaveDataRecord Dann gibt es noch Lade Datensatz. Kannst du über die rezeptur-Nr oder über den Name ansprechen Ich denke das ist das was du haben möchtest. ABER So kannst du nach und nach mehrere Datensätze laden. Du kannst aber nicht mehrere Datensätze parallel anzeigen. Dazu müsstest du das dann umkopieren. mit GetDataRecordFromPLC liest du du aktuelle Rezeptur aus der Steuerung aus

Volker ich bin aktuell im Stress und ich drücke mich nicht immer richtig aus.

Ich weiß schon den Unterschied zwischen diesen Funktionen und welche Funktion was macht. Ich weiß auch, wo ich welche Funktionen brauche. Die Sachverhalte die ich am Ende des Treads angesprochen habe und diese eine seltsame Fehlermeldung mit dem Verbindungsabbruch, haben auch unterschiedliche Genese bzw. genau genommen nichts miteinander zu tun.

Die Funktion lade Datensatz macht für mich keinen Sinn, da sie die Datensätze in das Anschauungsfenster der Fa. Siemens lädt, den ich aber nicht habe. Genau so die Funktion SaveDataRecord denn die speichert diesen Wisch den ich mir im Fenster angucken kann. Ich habe aber kein Fenster.

Nichtdestorotz: Es ist irgend ein generelles Problem dem ich aufsitze. Die Rezeptur ist korrekt angelegt und es muss möglich sein, diesen "GetDataRecordFromPLC" Befehl fehlerfrei auszuführen.
 
@Volker:

Ich habe das Problem im Übrigen gefunden. Das ist Tricky. Ich habe bei der Rezeptur einen Pfad vergeben, den es in der Simulation offensichtlich nicht gibt oder die Simulation aus irgendwelchen anderen Gründen damit ein Problem hat. Sobald man ein Default-Pfad vergibt, funktioniert die Übertragung. Mich würd man interessieren wie es sich bei einem echten Panel verhält.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
...
Die Funktion lade Datensatz macht für mich keinen Sinn, da sie die Datensätze in das Anschauungsfenster der Fa. Siemens lädt, den ich aber nicht habe. Genau so die Funktion SaveDataRecord denn die speichert diesen Wisch den ich mir im Fenster angucken kann. Ich habe aber kein Fenster.
...

Hallo Draco,

das ist nicht ganz richtig. Die Siemens-Rezepturanzeige ist dafür nicht notwendig bzw. keine Voraussetzung, es werden nur die in der jeweiligen Rezeptur verwendeten Variablen "behandelt". Auch Funktionen für den Wertetransfer von und zur SPS bzw. Off-/Online-Schalten gehen solo.

Du kannst allerdings -wie auch von anderen schon angemerkt- immer nur einen Datensatz gleichzeitig behandeln.
Dein Ansatz hört sich für mich eher nach klassischer Datenbankarbeit an; dazu könnte man tatsächlich eine CSV-Datei mit allen Datensätzen verwenden, bedingt aber eine Menge Skripterei und wird vermutlich auf Panels recht lange Ausführungszeiten haben (je nach Anzahl der Datensätze).


Gruß, Fred
 
...
Ich habe das Problem im Übrigen gefunden. Das ist Tricky. Ich habe bei der Rezeptur einen Pfad vergeben, den es in der Simulation offensichtlich nicht gibt oder die Simulation aus irgendwelchen anderen Gründen damit ein Problem hat. Sobald man ein Default-Pfad vergibt, funktioniert die Übertragung.
...

Hallo Draco,

standardmäßig sind Pfade zur Ablage von z.B. Archiven und Rezepturen bei Projekten für Panels immer ohne Laufwerksbuchstaben angelegt (z.B. "\Storage Card SD"). Das -und z.B. auch diverse Scriptbefehle zum Handling von Dateien- kann bei der Simulation eines HMI auf einem Entwicklungsrechner durchaus zu Problemen führen (u.a. Zugriffsrechte-Probleme).


Gruß, Fred
 
Hallo Draco,

das ist nicht ganz richtig. Die Siemens-Rezepturanzeige ist dafür nicht notwendig bzw. keine Voraussetzung, es werden nur die in der jeweiligen Rezeptur verwendeten Variablen "behandelt". Auch Funktionen für den Wertetransfer von und zur SPS bzw. Off-/Online-Schalten gehen solo.

Das verstehe ich nicht. Was bringt mir das On-/Off schalten einer Rezeptur oder der Befehl "Lade Datensatz" ohne Fenster ? Wo lädt er diesen Datensatz hin ? Wenn er ihn nicht in die Steuerungsvariablen lädt, dann kann ich ihn nicht mehr auslesen. Wenn er ihn in die Steuerungsvariablen lädt, dann ist es doch die Doppelung von dem Befehl "SetDataRecordToPLC" also Jacke wie Hose und alles dasselbe.

Du kannst allerdings -wie auch von anderen schon angemerkt- immer nur einen Datensatz gleichzeitig behandeln.
Also mein Ansatz funktioniert(e) bisher auf einem 677 IPC und FlexibleRuntime folgendermaßen: Es gibt ein Script "ReadPage" der 10x das Script "ReadLine" aufruft. ReadLine greift wiederum auf die CSV-Datei anhand vom Index, der mitgeschickt wird, und liest die relevanten Daten aus die dann in Lokalvariablen kopiert werden. ReadPage setzt daraus dann die aktuelle Anzeige zusammen.

Meine aktuelle Idee war es, das Script "ReadLine" so anzupassen, daß es jeweils aktuellen Rezepturdatensatz lädt, wobei die Rezeptur dann aber nur mit Lokalvariablen arbeiten würde, welche dann sofort die relevanten Inhalte bereit stellen würde. Wenn es hinreichend schnell funktioniert.... Zum Kopieren in die SPS oder Rückladen aus der SPS würde man dann ein separates Script benötigen, der die Lokalvariablen der Rezeptur in die Steuerung schreibt bzw. umgekehrt. Ist dennoch aber eigentlich kacke, sofern die Rezepturen irgendwann dynamisch erweiterbar und/oder umfangreich werden sollen.
 
Zurück
Oben