CODESYS - das IEC 61131-3 Programmiersystem

Willkommen im offiziellen CODESYS - Forum von 3S-Smart Software Solutions | A member of the CODESYS Group
Deutsche Version English version russian version 
Aktuelle Zeit: Mi Okt 23, 2019 12:15 am

Alle Zeiten sind UTC




Ein neues Thema erstellen  Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Mi Apr 24, 2013 3:43 pm 
Offline

Registriert: Do Jan 12, 2006 12:43 pm
Beiträge: 19
Wohnort: Velbert, NRW
Hallo zusammen...

Ich scheitere gerade am Auslesen einer txt-Datei mit einem WAGO 750-841 (auch auf 880 anwendbar - SD-Karte).

Folgendes Szenario: Mir gefällt die Alarmverwaltung der CoDeSys in Verbindung mit dem WAGO I/O-System nicht!
Ergo bin ich gerade dabei, selber ein entsprechendes Alarmhandling zu schreiben, allerdings nur sinnvoll bei Verwendung des 880 mit SD-Karte, da ich Alarmmeldungen in eine txt-Datei schreibe und wieder auslese.

Das ganz hat den Sinn, dass die Alarmmeldungen in der Tabelle stehen bleiben und nicht wie über die Alarmkonfiguration wieder verschwinden. Außer es gibt dafür natürlich schon eine sinnvolle Lösung?! Ich hab es bisher nicht hinbekommen, vor allem wenn ein Alarm mehrmals nacheinander eintrifft... - Lasse mich hier liebend gerne eines besseren belehren! :wink:

Zum eigentlichen Problem:
Ich schreibe beim Auftreten eines Fehler eine Struktur mittels "SysFileOpen, SysFileWrite und SysFileClose" in eine Text-Datei, die ich auf dem Controller ablege (750-841). Die Struktur sieht folgendermaßen aus:

Code:
TYPE typAlarme;
STRUCT
     Zustand          : STRING(80);
     Zeit                : STRING(80);
     Meldung         : STRING(80);
END_STRUCT
ENT_TYPE


Beim Auftreten des Zustands schreibe ich ein KOMMT in die Struktur, inklusive Zeitstempel und Meldungstext, beim Reset der Störung ein GEHT, inklusive Zeitstempel und Meldungstext. Das Schreiben erfolgt im Modus 'a', sodass die aktuellste Meldung in der txt-Datei angehangen wird.
Das klappt auch soweit, zumindest sieht die Datei sehr gut aus, wenn ich sie mir per FTP anschaue.

Nun mein Problem: Beim Auslesen der txt-Datei via SysFileRead (SysFileOpen, SysFileRead, SysFileClose) erhalte ich aber immer nur den ersten Eintrag der Textdatei?!
Was ich gerne hätte: Die letzten 64 oder 128 Einträge der txt-Datei!

Ich habe es so versucht:

Code:
READ_Buffer : ARRAY [0..63] OF typAlarme; 


, um mir die 64 Einträge aus der txt-Datei zu speichern und anzeigen zu lassen, nur leider bleibt das Array komplett leer.
Wenn ich den READ_Buffer als einfache Struktur-Variable typAlarme deklariere erhalte ich nur den ersten Eintrag der txt-Datei?!

Mit SysGetPos und SysSetPos habe ich es auch schon versucht, allerdings ohne Erfolg?!

Weiß jemand Rat???

Das wäre echt super...

_________________
Oo° mfg Patrick °oO


Nach oben
   
BeitragVerfasst: Do Apr 25, 2013 5:53 am 
Offline

Registriert: Do Jan 12, 2006 12:43 pm
Beiträge: 19
Wohnort: Velbert, NRW
Hi!

Also das Auslesen habe ich nun doch hinbekommen, indem ich zunächst die Dateigröße mit SysFileGetSize prüfe und beim auslesen eben alle Daten auslese. Somit füllt sich auch mein Array mit allen Werten aus der txt-Datei.

Allerdings frage ich mich jetzt, ob es auch möglich ist, die txt-Datei rückwärts einzulesen? Hat den Hintergrund, dass die neuesten Meldungen ja immer unten angehangen werden. Wenn die Dateigröße jetzt aber meine Array-größe überschreitet, dann wird nur bis zu einer bestimmten Position gelesen und der Rest einfach abgeschnitten! Also habe ich nicht immer die aktuellste Meldung in meinem READ-Array?! :?

_________________
Oo° mfg Patrick °oO


Nach oben
   
BeitragVerfasst: Do Apr 25, 2013 10:58 am 
Offline

Registriert: Do Jan 12, 2006 12:43 pm
Beiträge: 19
Wohnort: Velbert, NRW
Der nächste Schritt ist auch getan :D

Ich lese jetzt einfach immer nur die letzten Einträge, indem ich die Position in der Datei angebe, von wo an gelesen werden soll!
Dann zeige ich mit einem Pointer auf das Lesebuffer und fülle das Anzeige-Array einfach rückwärts auf.
Alles super... Hat mich jetzt allerdings auch etwas nerven gekostet.

Trotzdem danke fürs lesen :wink:

_________________
Oo° mfg Patrick °oO


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.
Sie dürfen keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Limited
Deutsche Übersetzung durch phpBB.de