Phoenix ILC 350 PN - Werte auf Speicherkarte schreiben/lesen

Vaninger

Level-2
Beiträge
160
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich verwende für meine Hobbybrauerei eine Phoenix ILC 350 PN. In dieser Steuerung/SPS ist eine Speicherkarte inbegriffen, die per FTP auch beschrieben werden kann.
Ich würde jetzt gerne Werte (z. B. Zähler, Parameter für Temperatur, etc.) von der SPS bzw. aus dem Programmierprogramm PCWorx 5.00 auf diese Speicherkarte speichern und z. B. nach einem Kaltstart wieder auf die SPS laden.

Leider sind die Funktionsbausteine (z. B. FILE_OPEN; FILE_CLOSE; (diese Bausteine sind ja noch verständlich) FILE_WRITE) in PCWorx ziemlich kompliziert. Hat hier schon einmal jemand einen Funktionsbaustein bzw. ein Programm geschrieben, der diese Funktionen beinhaltet bzw. die Handhabung für das Speichern/Lesen erleichtert?

Bin für jeden Tipp dankbar.

Vielen dank die Antworten.

Gruß
Daniel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Erwin,

das Öffnen/Erstellen einer Datei ist soweit klar. Ebenfalls das Schließen dieser Datei.
Leider finde ich das Schreiben in die Datei ziemlich schwierig, da hier ziemlich viel Parameter abgefragt werden.
Wie schon erwähnt, würde ich gerne Werte (z. B. Laufzeitzähler; Dateityp Dint oder Temperaturwerte Typ Real) in diese Datei speichern, damit ich nach einem Kaltstart diese Werte wieder aus der Datei auslesen kann und der Zähler weiterzählen kann.

Falls du mir hier ein Beispiel mit Erklärung oder ähnliches zeiegn könntest, wäre mir schon viel geholfen.

DAnke

DAniel
 
Möchtest Du Die Werte als CSV gespeichert haben (also über den FTP lesbar) oder wirklich nur als Backup für die SPS? Falls letzteres würde ich einfach eine Struktur mit allen Werten erzeugen, diese an den Parameter BUFFER des File_Write FBs übergeben, und die Länge der Struktur am Parameter LENGTH übergeben und mit EXECUTE die Datei schreiben.


Gruß Marc
 
Hi Marc,

danke für die Antwort. Abgespeicherte Werte in CSV wären auch klasse, darum geht es mir aber erstmal nicht. Hast du hierzu wohl eine Lösung?
Ich würde gerne die Werte als Backup abspeichern und nach dem Kaltstart wieder laden.

"würde ich einfach eine Struktur mit allen Werten erzeugen, diese an den Parameter BUFFER des File_Write FBs übergeben"

Hier liegt mein Problem, ich weiß nicht genau, wie ich das bewerkstelligen soll. Falls du hierzu ein Beispiel oder dergleichen hättest...

Danke

Gruß
Daniel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hier ein kleines Besipiel.
Dem FB wird eine Struktur übergeben bei setzten der Variable BeckUp auf 1 wird diese gespeichert, bei Kaltstart wird diese von der CF zurück gelesen.
 

Anhänge

  • FC_BackUP.zip
    166,1 KB · Aufrufe: 87
Hallo Mark,

vielen Dank für das Beispiel. Nur leider gibt es ein Problem. Als ich das Modul in PCWorx öffnen wollte, wurde mir die Fehlermeldung "Das Projekt wurde mit einer neueren Version von PCWORX/Config+ erstellt" und ich konnte ihn nicht öffnen. Kann man dies irgendwie umgehen?

Meine Version ist die 5.00.26!

Nochmals vielen Dank für die bisherigen Mühen und Antworten!

Gruß
Daniel
 
Zuletzt bearbeitet:
Habe das mal versucht in eine alte Version zu konvertieren. Vielleicht klappt es jetzt.
 

Anhänge

  • Files.zip
    343,2 KB · Aufrufe: 32
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Marc,

schon mal besten dank für den Funktionsbaustein. Konnte ihn schon mal anschauen und probieren, hab leider noch ein paar Probleme (mein ILC 350 PN läuft mit ARM_L_32 und nicht mit ARM_L_40) die ich heute noch versuchen werde zu lösen.
Ich hoffe es funktioniert trotzdem. Sollte ich hier noch Hilfe benötigen, hoffe ich mal, dass du mir nochmal helfen kannst...;)

Ich probier es aber erst mal allein.

Also nochmal vielen Dank für deine Hilfe. Ist echt klasse von dir...

Gruß
Daniel
 
Brauchst Du nur in den Einstellungen der POU bei SPS spezifisch von ARM_L_40 auf ARM_L umstellen.
Bei der aktuellen PC-Worx Version braucht man die Einstellung gar nicht mehr.
Welche FW hast Du auf der SPS? Sieht man im Online Dialog wenn man auf Info klickt.
Falls älter als 2.xx dann würde ich ein update empfehlen.
Dann kannst Du das PC Worx Projekt auch auf ARM_L_40 umstellen.
 
Hallo Marc,

der Funktionsbaustein funktioniert jetzt soweit, habe ihn mit meinem Elektriker heute zum Laufen gebracht. Echt klasse und danke. Was uns dabei aufgefallen ist, kann der Baustein auch Strukturen in Strukturen verarbeiten oder liegt es hierbei an den Strings, die in den Strukturen enthalten sind? Was meinst du dazu?

Wie hast du das mit den CSV Dateien bewerkstelligt? Hier müßte ja zwischen jedem Wert ein Komma oder dergleichen gesetzt werden oder die Werte als String herausgespeichert werden. Hast du das schon mal gelöst? Damit könnte ich Auswertungen meiner Temperaturen bewerkstelligen.

Also nochmal vielen Dank für die Hilfe!!!!!

Gruß
Daniel
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Die art der übergebenen Struktur ist egal. Wichtig ist nur das Du den Namen "udtFileData" nicht veränderst.
Wenn Du CSV Dateien erzeugen willst müssen alle Werte in ASCII Zeichen konvertiert werden, und dann mit Kommas getrennt werden. Das Konvertieren kann man mit Funktionen wie REAL_TO_BUFF machen.
Die Programmierung wird schon etwas aufwändiger.
Vielleicht habe ich noch ein Beispiel dafür, wenn ich es finde werde ich es mal posten.
 
Hallo Marc,

wenn ich eine neue Struktur erstelle mit einem anderen Namen, deinen Baustein unter einen anderen Namen nochmals erstelle und hier den Namen vom Dateityp dieser Struktur verwende, müßte das Lesen und Schreiben ja trotzdem wieder klappen.
In diesem Fall wäre dies unabhängig von dem KAltstart und soll Rezeptdaten einlesen. Dies sollte ja eigentlich klappen. Werd ich nochmal probieren.

"Wenn Du CSV Dateien erzeugen willst müssen alle Werte in ASCII Zeichen konvertiert werden, und dann mit Kommas getrennt werden. Das Konvertieren kann man mit Funktionen wie REAL_TO_BUFF machen.
Die Programmierung wird schon etwas aufwändiger.
Vielleicht habe ich noch ein Beispiel dafür, wenn ich es finde werde ich es mal posten."

Falls du das Beispiel noch finden solltest und mir zur Verfügung stellen könntest könnte ich nur noch vor dir niederknien...:)


Also besten nochmals.

Daniel
 
Hallo Marc,

nochmal danke für die Hilfe. Funktioniert soweit. Noch kurz eine Frage zu dem Baustein, der eine CSV Datei speichert. Hast du hier noch was gefunden? Muß ja nicht funktionieren aber ein Ansatz wäre super...

Falls du hier noch was hast, wäre ich dir sehr dankbar.

Gruß
Daniel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Daniel,
[FONT=&quot]habe mal den gefunden Code in zwei FBs gebaut.
Einfach entpacken und als Bibliothek einbinden und FBs aufrufen.
Den FB DataLogReal_V0_00 musst Du für jede Real Variable aufrufen.
Den FB DataLogger_V0_00 nur einmalig.
Wenn der DataLogger aktiv ist und der Eingang xReq = true werden die aktuellen Werte der Realvariablen in eine CSV Datei geschrieben.[/FONT]
 

Anhänge

  • WriteAsAsciiFile.zip
    209,2 KB · Aufrufe: 61
Hallo Marc,

vielen Dank für deine Hilfe und die klasse Bausteine. :TOOL: Vielleicht kannst du mir hier noch eine kurze Erklärung dazu geben. So habe ich deine Baustein aufgerufen, müßte ja stimmen, oder?

Stimmen meine Annahmen?

xActivate = Aktivieren des Bausteins
xReq = schreibt Wert bei TRUE
iCreate = Es wird eine neue Datei nach n Tagen oder Stunden erstellt?
xAddDate = Datum zu Filenamen hinzufügen
strFileName = Dateiname
iSave = nach n Werten werden die Werte gespeichert
xAddTime = Zeit wird Wert in Spalte hinzugefügt
iCreateNewFile = es wird eine neue Datei nach n Tagen erstellt?
udtWriteCSV = Eingang für Wert aus DataLogReal
ActFile = ?
LastFile?
Was gehört hier rein, ein Vorgabewert oder wie?

Also nochmal vielen dank für deine Hilfe.

Gruß
Daniel


attachment.php
 

Anhänge

  • Data.JPG
    Data.JPG
    33,9 KB · Aufrufe: 112
In deinem Screenshot sind
iCreate = 5
iCreateNewFile = 5
Dann solltest Du noch xAddDate = true setzten.

Dann hättest Du folgende Funktion, alle 5 Tage wird um 5 Uhr eine neue Datei CSV1_Zeitstempel.csv erzeugt.

ActFile = Der FB würde den Dateinamen anzeigen in die er jetzt schreibt.
LastFile= Der FB zeigt den Dateinamen in die er zuletzt geschrieben hat.

Dann könnte man LastFile nehmen und per Mail verschicken und dein Datenlogger ist komplett!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Marc,

vielen dank für die Informationen. Jetzt ist aber noch eine Frage aufgetaucht. Ich hätte gerne das Format des Wert-Strings auf zwei Stellen nach dem Komma begrenzt.
Normal könnte ich ja in deinem Programmtext des Bausteins DataLogger das Format auf '%3.2f' anstatt '%f' ändern und somit hätte ich nur noch 2 Nachkommastellen und drei Vorkammastellen. Sobald ich aber hier was ändere, funktioniert das Programm nicht mehr.
Woran kann das liegen? Außerdem würde mich interessieren, wieso beim Doppelklick auf den Baustein nicht der Programmteil in ST sondern nur die Information bezüglich SizeFiledata?
Wenn der Programmteil "Code" an die dritte Stelle anstatt an der fünften Stelle verschoben wird, kann man ihn zwar anschauen, aber das Programm funktioniet nicht mehr.

Ist der Baustein gesichert oder mit einem Schreibschutz versehen?

Naja, vielen Dank für die Antwort.

Gruß
Daniel
 
Der Baustein ist offen!
Wenn man einen Doppelklick in FBD auf den FB mach öffnet man automatisch das erste Codearbeitsblatt des Fbs.
Wenn Du ein anderes öffnen möchtest musst Du über den Reiter Bibliotheken das Arbeitsblatt öffnen.
Ich habe mal ein anderes Format getestet und es hat geklappt.
Ich habe noch ein paar Funktionen in einer V0.01 eingebaut, werde ich mal hochladen wenn es fertig ist.
 
Hi Marc,
vielen Dank für die Antwort. Habe es gestern noch einmal pobiert, habe die Module einzeln und nicht als Bibliothek eingebunden und nun funktioniert es auch nach den Änderungen...
Da bin ich ja gespannt, was du noch für Änderunegn eingebaut hast...
Du programmierst doch sicherlich auch beruflich oder? Die Bausteine sind ja doch ziemlich komplex und für mich als Hobbyprogrammierer sowieso...

Vielen Dank

Daniel
 
Zurück
Oben