TIA VB-Skript: CSV wird mit "0" beschrieben

Sooooo.......
Ich habe jetzt mal die HMI Variablen als E/A auf eine Test Seite gebracht. Und siehe da: leer bzw "0".
Allerdings die Verbundenen SPS Variablen (im Datenbaustein) haben Werte.

hmmmmm...... Verstehe ich nicht
Ich vermute das Problem bei deiner Array in Array Geschichte. Lös das doch mal auf ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja, ich Lösche die Datei und sie wird dann jedes mal neu erzeugt. Hab keine Ahnung wie ich die Zeilen überschreiben kann ... 🙈
Wär natürlich schöner wenn die Zeilen einfach überschrieben werden.
Zeilen überschreiben geht nicht, gibts nicht. (nur selektiv in andere Datei umkopieren)

Du müsstest entscheiden, was du willst und es dann so machen:
- mehrere Datensätze in der Datei: Append / anfügen
- nur ein Datensatz in der Datei: Datei löschen und neu erzeugen

Auch mal ein Auge drauf haben, wie viele Variablen zu einem Datensatz gehören und wie lang dann eine Zeile wird.

Ich will einfach nur eine CSV mit Komponenten Daten Importieren und Exportieren, damit ich das nicht alles am HMI eintippen muss
Wie hast du dir denn das spätere Importieren vorgestellt? Die ganze Datei importieren oder nur die letzte Zeile (den letzten Datensatz)?


Code:
path = "\\dbd2004n\d\3defacto\Herstellung_" & CStr(year(now)) & "_" & CStr(month(now)) & "_" & CStr(date(now))  & "_" & CStr(hour(now)) & "_" & CStr(minute(now)) & ".csv"
Bei jedem now wird erneut die Systemzeit abgefragt. Theoretisch kann genau dazwischen das Datum wechseln oder die Uhrzeit. Deshalb now nur einmal abfragen und zwischenspeichern.
Wenn die csv-Datei mehrere Datensätze enthalten soll, dann ist ein Zeitstempel im Dateiname kontraproduktiv. Man könnte allerdings am Zeilenanfang einen Zeitstempel mit speichern.
 
Sind diese Variablen in einer HMI-Rezeptur projektiert?
Wenn ja: Bitte einmal einen Screenshot von dieser Projektierung (inkl. ALLER Einstellungen)

OK...
Ich hatte die Variablen auch in einer Rezeptur (war ein versuch). Nicht die Rezeptur die ich im Programm verwende. Also in einer zweiten Rezeptur.
Die zweite Rezeptur habe ich jetzt mal gelöscht, ... und siehe da: jetzt werden Daten in die CSV geschrieben :).
Ich frage mich jetzt aber: Warum geht das jetzt? Was Passiert mit den Variablen, wenn die in einer Rezeptur stehen?

Danke für diesen Hinweis.

Allerdings bin ich noch nicht ganz am ende angekommen.
Ich würde jetzt gerne diese CSV auch gerne in den DB schreiben. Ich denke das Skript dafür dürfte sicherlich ähnlich sein.
Kann mir da noch mal jemand Licht ans Fahrrad machen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich will einfach nur eine CSV mit Komponenten Daten Importieren und Exportieren, damit ich das nicht alles am HMI eintippen muss
Scheint mich ein Rezept zu sein.
An ein Comfort Panel wurde ich das Standard Rezept System verwenden. Dann kümmert das Panel sich u.A um die Datenkonsistenz.
Ich möchte eine Datenbank (DB in SPS), über ein VB-Skript im HMI, als CSV Exportieren und auch Importieren können, so das ich die Daten bequem am PC bearbeiten kann
Ein Rezept kann als CSV eksportiert und importiert werden.
 
Zeilen überschreiben geht nicht, gibts nicht. (nur selektiv in andere Datei umkopieren)

Du müsstest entscheiden, was du willst und es dann so machen:
- mehrere Datensätze in der Datei: Append / anfügen
- nur ein Datensatz in der Datei: Datei löschen und neu erzeugen

Auch mal ein Auge drauf haben, wie viele Variablen zu einem Datensatz gehören und wie lang dann eine Zeile wird.


Wie hast du dir denn das spätere Importieren vorgestellt? Die ganze Datei importieren oder nur die letzte Zeile (den letzten Datensatz)?



Bei jedem now wird erneut die Systemzeit abgefragt. Theoretisch kann genau dazwischen das Datum wechseln oder die Uhrzeit. Deshalb now nur einmal abfragen und zwischenspeichern.
Wenn die csv-Datei mehrere Datensätze enthalten soll, dann ist ein Zeitstempel im Dateiname kontraproduktiv. Man könnte allerdings am Zeilenanfang einen Zeitstempel mit speichern.

Also mein Datenbaustein dient ausschließlich als "Datenbank" für die maximal (50stk) möglichen Komponenten. Jede Komponente bekommt einen "Identifier" [Int] von 1-50. Anhand der Nummer weiß ich dann wie die Komponente heißt [String 30], welchen Code [String 81] die Komponente hat, sowie die Dichte und Viskosität der Komponente ist.
In der Rezeptur kann ich dann so der Komponente den richtigen Namen usw. zuweisen.
Da jede Komponente mit dem Ident 1-40 an acht verschiedenen Stellen sein kann, ist es mir dann auch so möglich den Bediener darauf hin zuweisen das evtl. eine Komponente mit einer hohen Viskosität nicht unbedingt für den von Ihm ausgesuchten Platz geeignet ist.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Scheint mich ein Rezept zu sein.
An ein Comfort Panel wurde ich das Standard Rezept System verwenden. Dann kümmert das Panel sich u.A um die Datenkonsistenz.

Ein Rezept kann als CSV eksportiert und importiert werden.

Das war auch Grundsätzlich meine Idee, funktionierte aber nicht so wie ich das wollte. Und da ich ein Skript als Vorlage hatte hab ich mich für diesen Weg entschieden. Das hätte wahrscheinlich auch auf abhieb funktioniert, wenn ich die Rezeptur "Komponenten" vorher gelöscht hätte.


Systemfunktion SetDataRecordToPLC
Dies übertragt die Rezepturwerte zu den PLC.

Im Bild "Rezeptureditor" mache ich das über eine Schaltfläche mit dem Ereignis "ImportiereDatensätze". Das Funktioniert auch wunderbar.
 
mal bloß so am Rande:
Übersetzen => Software komplett übersetzen

schon mal zwischendurch gemacht?

Weil bei TIA funktioniert nach meinem Gefühl das Änderungsübersetzen 10x schlechter als bei WinCC flexible.
Das ist eigentlich ein absoluter Witz!
 
OK...
Ich hatte die Variablen auch in einer Rezeptur (war ein versuch). Nicht die Rezeptur die ich im Programm verwende. Also in einer zweiten Rezeptur.
Die zweite Rezeptur habe ich jetzt mal gelöscht, ... und siehe da: jetzt werden Daten in die CSV geschrieben :).
Ich frage mich jetzt aber: Warum geht das jetzt? Was Passiert mit den Variablen, wenn die in einer Rezeptur stehen?

Schau dir mal die Einstellungen von Rezepturen an:
1714647348138.png
"Rezepturvariablen abgleichen" bedeutet, dass Wertänderungen der projektierten Variablen sofort sichtbar werden bzw. in der Steuerung aktualisiert werden.
"Manuelle Übertragung ..." bedeutet, dass die o.g. Steuerungsaktualisierung nur auf Befehl (also Systemfunktion oder Taste in einer Rezepturanzeige) und nur einmalig erfolgt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Schau dir mal die Einstellungen von Rezepturen an:
Anhang anzeigen 77839
"Rezepturvariablen abgleichen" bedeutet, dass Wertänderungen der projektierten Variablen sofort sichtbar werden bzw. in der Steuerung aktualisiert werden.
"Manuelle Übertragung ..." bedeutet, dass die o.g. Steuerungsaktualisierung nur auf Befehl (also Systemfunktion oder Taste in einer Rezepturanzeige) und nur einmalig erfolgt.

Ja, verstehe 👍

Ich suche aber immer noch nach einem Weg die erstellte CSV wieder zu importieren.
Das müsste dann doch ähnlich aussehen. Allerdings weiß ich noch nicht wie 😒
 
Das war auch Grundsätzlich meine Idee, funktionierte aber nicht so wie ich das wollte.
Was denn genau nicht so, wie du wolltest?
Denn Jesper hat schon recht: für deinen Anwendungsfall hätte auch eine Siemens-Rezeptur "gereicht".


Mein Angebot aus #35 steht übrigens immer noch, gerne auch grundsätzlicherer Natur.
 
Hallo @ all

Danke an alle für eure Inputs👍
Ich bin dadurch um einiges weiter gekommen.

Ein ganz besonderer DANK an "faust", der sich besonders um meine Problematik gekümmert hat, und mir an vielen Stellen Licht ans Fahrrad gemacht hat. (Die erste runde geht an mich) DANKE.

Ich schreibe morgen (wenn man mich lässt) etwas über die derzeitige Lösung.


:) Danke :)
 
Zurück
Oben