TC3 schreiben von CSV dateien optimieren

Minehunter

Level-1
Beiträge
25
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Forum,

ich habe eigentliche nur eine kurze Frage an euch.
Bevor ich mein ganzen Code um sonst Ändere möchte ich gern eine zweite Meinung wissen.

Situation,
ich habe ein Messsystem mit mehreren Prüflingen. Alle Prüflinge werden im 1 sekundentakt aktualisiert und berechnungen durchgeführt.
Diese ergebnisse möchte cih nun (eigentlich gern im Sekundentakt) auch in eine CSV schreiben. Im einsatz ist eine CP6606 mit Display (schön klein und kompakt)
Da jeder Prüfling seine eigene CSV bekommt, habe ich es bisher so gelöst.

Im sekundentakt, nach dem die Messwerte werfasst sind, wird nun mein CSV schreiben angestoßen

Prüfling := 0
FB aufruf - öffne - schreibe - schließe csv - warte bis fertig
erhöhe Prüflingum 1
FB aufruf - öffne - schreibe - schließe CSV- warte bis fertig
erhöhe Prüflingum 1
FB aufruf - öffne - schreibe - schließe CSV- warte bis fertig


Mit dieser Methode komme ich aber bei 30 Prüflingen nur auf ein intervall von 4 Sekunden.



Meine Frage:
ist es sinnvoll den FB zum schreiben der Datei mit jedem Prüfling zu instanzieren und bei ausführbefehl zum schreiben einer CSV mit Hilfe iener FOR Schleife alle Instanzen des FB mit einmal aufzurufen?

FOR
FB aufruf - öffne - schreibe - schließe csv
ENF_FOR

anschließend Warte bis alles Fertig ist.

In beiden Varianten muss och warten bis die CSV geschrieben wurde, bevor ich eine Neue Datei schreiben kann.
in der Variante mit der FOR Schleife, werden aber gleich mehrere Befehle zum schreiben an mein TWinCat System gesendet. Hier weiß ich nicht, ob es "Überfordert " werden kann und ich eine Zyklusüberschreitung bekomme?


Bevor ich meinen Code Ändere und in ein laufendes System eingreife würde ich gern eure Meinung wissen.


PS: zum schreiben einer CSV Datei habe ich einen FB geschrieben, welcher folgender maßen arbeitet
1. überprüfe ob Datei vorhanden ist (3 Zyklen)
2. öffne Datei (2 Zyklen)
3. wandle Messwerte um (1 Zyklus)
4. schreibe Messwerte (3 Zyklen)
5 schließe Datei (2 Zyklen)

ggf. kann dies auch etwas länger werden, wenn die Datennänge größer wird (aktuell 30Messwerte pro eintrag)
 
Du kannst ruhig 30 Instanzen Deines FBs gleichzeitig aufrufen. Der Dateizugriff an sich belastet den SPS-Zyklus nicht, sondern wird asynchron dazu über ADS abgewickelt. Der ADS-Server wird die Zugriffsanforderungen natürlich auch sequentiell bearbeiten, aber er muss dabei nicht mehr auf den SPS-Zyklustakt warten und wird - so hoffe ich - die Wartezeiten bis zur Beendigung eines ADS-Kommandos nutzen, um schon das/die nächste(n) zu starten. Wie schnell das Ganze tatsächlich wird, wirst Du nur durch Ausprobieren feststellen können.
 
Wielang ist den der Testzyklus? Möglicherweise kannst Du das ganze in Arrays halten und die Filezugriffe danach machen. Das Array kann ja per NOVRAM ausfallsicher gepuffert werden.

Alternativ pufferst Du die Schreibzugriffe im NOVRAM bis zu einer bestimmten Größe und schreibst dann in einem Rutsch. 1 Byte auf Flash schreiben dauert in der Regel genauso lange wie ein (Hardware)Block, wegen des vorausgehenden Löschens. Mal ganz von der Lebensdauer des Flashmediums ab...

Ich setze jetzt rotzfrech voraus, das Dein CP die NOVRAM-Option hat.
 
Zurück
Oben