Ich nutze eine Wago 750-841 und möchte gerne Messdaten auf eine externe Festplatte kopieren.
Dazu gibt es die Bibliothek SysLibFile.
Jetzt habe ich eine kleine Frage zum Verständnis.
Meine einzelnen Messdaten fasse ich in einem Array zusammen.
Würde ich jetzt das Array in einer Datei speichern und an die Festplatte senden, schreibt dann die Wago bei jedem neuen Array (neuer Messzeitpunkt) immer eine neue Datei auf die Festplatte? Oder gibt es eine Möglichkeit die neuen Messdaten an die vorhandene Datei hinzu zufügen, sodass nur pro Tag immer eine neue Datei erstellt wird, welche 24 Messzeitpunkte aufweist?
Danke für eure Hilfe
Gruß
Ronny
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Wenn du auf der Festplatte xampp installierst kannst du das ganze auch mit PHP / MySql lösen. Ist für den Anfänger schwerer, aber die grafische Auswertung ist leichter, ich habe es auf diese Art umgesetzt.
MfG
Marcel
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
habe einige Threads gefunden zu CSV. Es wurden die Daten auf ein Medium, PC gespeichert, welches/r direkt an der Wago angeschlossen war. Geht dies eigentl. auch wenn sich z.B. mehrer PC im Netzwerk befinden? Man müsste doch dann nur die IP des jeweiligen Rechners vor den Dateipfad schreiben, oder?
Gruß
Ronny
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
ich möchte gerne auf eine externe Festplatte speichern. In anderen Threads wurde der Pfad C:... ebenfalls verwendet. Ist es nun möglich auf ein Externes Medium zu speichern ohne die SysLibFtp nutzen zu müssen?
Zu dem Array.
Ich stelle mir ein zweidimensionales array so vor:
Text11 Text12 Text13
Text21 Text22 Text32
Wie müsste dann das Array lauten Array [1..2, 1..3] oder [1..3, 1..2]
Wie Sieht das Array [1..3] aus -> Text1 Text2 Text3 ?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Mit der CSV hast du noch nicht ganz verstanden. Du musst sie erst lokal auf der SPS speichern, und dann mit dem FTP Baustein versenden. Woher soll denn die SPS wissen welcher PC gemeint ist wenn du C:/... angibst... wenn z.B. 20 im Netzwerk sind.
danke für die Erklärung mit dem Array, ich glaube das habe ich jetzt verstanden.
Meine Wago speichert auch eine Datei ab. Bei der ersten erzeugten Datei wurde das Array ordentlich hintereinander geschreiben. Beim zweiten Versuch habe ich die "Trenner" Befehlszeile mit in den Programmablauf genommen und es kam sowas bei raus
Das mit der NewLine und statt 'w' 'a' eingesetzt funktioniert ebenfalls, sodass die Wago die neuen Arrays anhängt an die Datei. Nur das mit dem Trenner funktioniert nicht.
Habt ihr vielleicht einen Tipp wo mein Fehler liegt?
Gruß
Ronny
(PS: Das mit dem FTP-Versand muss ich später probieren erstmal muss das schreiben der Dateien ordentlich funktionieren.)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
das Ändern von Sizeof auf LEN hat keine Änderung gebracht. Es sind immer noch die Zeichen vorhanden.
Wo könnte der Fehler noch liegen.
Gruß
Ronny
Edit: Setzte ich für Trenner nicht das ";" sondern eine 100 so wird diese 100 nicht zwischen die Messwerte gesetzt sondern nur einmal an das Ende des Arrays, also der Messwerte.
Edit2: Das mit dem FTP senden funktioniert. Ich habe aber noch eine Frage. z.Z. ist mein Rechner der FTP-Server und mit der Wago über Crossover verbunden. Wenn jetzt der FTP Server irgenwo im Internet sich befindet und man über einen Router oder GPRS-Modem ins Internet geht, müsste man im Web-based Management der Wago unter TCP/IP die Gatewayadresse angeben richtig?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
der Port im Webmanagement ist für die FTP-Server den dir die SPS stellt, denn über FTP://IPDERSPS kommst du auf einen kleinen FTP-Server, der die Daten auf deiner SPS beherbergt.
Du musst das Gateway nur in deinem Programm angeben... entweder durch nen extra eingang an baustein oder bei der ip anhängen, etwa so:
IP:GATEWAY
MfG
Marcel
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
hatte ich gemacht, aber es wurde keine Datei versendet. Habe den Fehler gefunden.
Beim Senden war ich mit Filezilla mit dem selben Benutzerdaten für den FTP, welche auch in der Wago stehen mit dem FTP-Server verbunden. Somit konnte die Wago gar nicht auf den FTP zugreifen.
Gruß
Ronny
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
irgendwie wird an das Array immer noch irgendwelcher mist angehangen.
Die ersten beiden Index Array[0] und [1] sind fehlerfrei ab ab dem [2] wird mit dem Datum und Uhrzeit (Array[1]) aufgefüllt. Kann mir bitte mal einer Erklären warum? Ich kann doch nicht alles mit Leerzeichen auffüllen?
Ich speichere pro Tag eine Datei in der PLC. Besteht die Möglichkeit die Dateinamen, welche sich auf der PLC befindet, auszulesen und die Daternamen einer String-Variablen zuzuweisen, welche die Quelldatei für das Versenden angibt? Also irgenwie zu schauen was für Dateien auf der PLC sind.
ich hab mal ein bisschen experimentiert mit der SysLibDir.
verzeichnis: STRING;
ergebnis: DWORD;
result: BOOL;
Dir_Handle : DWORD;
eintraege : ARRAY [1..5] OF STRING;
i: INT;
strTemp: STRING;
Code:
(Datei Schreiben)
verzeichnis:='\plc\daten';
(Unterverzeichnis \daten erstellen falls nicht vorhanden)
ergebnis:=SysDirOpen(verzeichnis);
IF ergebnis=0 THEN
result := SysDirCreate(verzeichnis);
END_IF;
(Verzeichnis auslesen)
Dir_Handle := SysDirOpen('\plc\daten');
i := 0;
WHILE SysDirRead(Dir_Handle,strTemp,0) <> 0 DO
i := i+1;
eintraege[i]:= strTemp;
END_WHILE;
Ich habe eine Datei in dem Verzeichnis gespeichert. Für i wird 3 angezeigt und bei Dir_Handle werden Zahlen aufwärts gezählt. (vermute mal Speicherplatz) Nach ein paar Sekunden hängt sich die Wago aber auf (alle LED's an der Wago blinken grün rot). Ich vermute mal die Steuerung läuft sich in der while-Schleife tot. Für das Array "eintraege" wird auch nichts angezeigt.
Hat jemand eine Idee wo der Fehler liegt?
Im Voraus schonmal vielen Dank für eure Hilfe.
Gruß
Ronny
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo,
Ich nutze eine Wago 750-841 und möchte gerne Messdaten auf eine externe Festplatte kopieren.
Dazu gibt es die Bibliothek SysLibFile.
Jetzt habe ich eine kleine Frage zum Verständnis.
Meine einzelnen Messdaten fasse ich in einem Array zusammen.
Würde ich jetzt das Array in einer Datei speichern und an die Festplatte senden, schreibt dann die Wago bei jedem neuen Array (neuer Messzeitpunkt) immer eine neue Datei auf die Festplatte? Oder gibt es eine Möglichkeit die neuen Messdaten an die vorhandene Datei hinzu zufügen, sodass nur pro Tag immer eine neue Datei erstellt wird, welche 24 Messzeitpunkte aufweist?
Danke für eure Hilfe
Gruß
Ronny
Hallo,
such mal nach dem Begriff CSV.
Wenn du auf der Festplatte xampp installierst kannst du das ganze auch mit PHP / MySql lösen. Ist für den Anfänger schwerer, aber die grafische Auswertung ist leichter, ich habe es auf diese Art umgesetzt.
MfG
Marcel
Hallo,
habe einige Threads gefunden zu CSV. Es wurden die Daten auf ein Medium, PC gespeichert, welches/r direkt an der Wago angeschlossen war. Geht dies eigentl. auch wenn sich z.B. mehrer PC im Netzwerk befinden? Man müsste doch dann nur die IP des jeweiligen Rechners vor den Dateipfad schreiben, oder?
Gruß
Ronny
Du erstellst die CSV Datei lokal auf dem Speicher der SPS, und versendest diese dann via FTP. Das ist auch beschrieben in einem der Beiträge
z.B. hier
l viewtopic.php?t=108&highlight=ftp l
MfG
Marcel
Hallo,
ich habe jetzt ein bisschen rumexperimentiert.
Hier mal mein Code:
IF PT100_8=300 THEN
Messdaten[0]:=Zeitstempel; Messdaten[1]:=PT100_1String;
Messdaten[2]:=PT100_2String; Messdaten[3]:=PT100_3String;
Messdaten[4]:=PT100_4String; Messdaten[5]:=PT100_5String;
Messdaten[6]:=PT100_6String; Messdaten[7]:=PT100_7String;
Messdaten[8]:=PT100_8String;
END_IF;
Trenner:=',';
IF PT100_1>=300 THEN
hFile:= SysFileOpen('test.csv', 'w');
dwWritten:=SysFileWrite(hfile, ADR(Messdaten),SIZEOF(Messdaten));
(SysFileWrite(hfile, ADR(Trenner),SIZEOF(Trenner));)
SysFileClose(hFile);
END_IF;
Die If-Bwedingungen wurden eingefügt, um über die Temp_sensoren das Dateispeichern zu steuern.
Für hFile wird mir nach dem schreiben der Wert 1 geliefert und dwWritten liefert 891. Was haben diese Werte eigentlich zu bedeuten.
Gebe ich als Pfad C:\test.csv an, um auf meine PC-Festplatte zu speichern, so liefert hFile=0 und dwWritten=0. -> Fehler
Eine Datei auf C: wird auch nicht erzeugt. Wie müsste so ein Pfad aussehen.
Und noch eine Frage zum Array. Ist das unten angegebene jetzt ein Array mit einer Zeile und 11 Spalten oder mit 11 Zeilen und einer Spalte?
Messdaten:ARRAY [0..10] OF STRING;
Wie müsste ein Array definiert werden mit X-Spalten und Y-Zeilen?
Array [x0..x10, y0..y10] oder Array [y0..y10, x0..x10]
Gruß
Ronny
Related
Talk.ru: 1
Talk.ru: 2
Talk.ru: 3
Talk.ru: 5
Talk.ru: 7
Talk.ru: 8
Hallo,
du speicherst zunächst auf der SPS... also z.B. \PLC\Messwerte...
das hat nix mit deinem PC zu tun.
X und Y gibts auch nicht beim array, sondern nur index...
array[index1][index2][index3] ...
MfG
Marcel
Hallo,
ich möchte gerne auf eine externe Festplatte speichern. In anderen Threads wurde der Pfad C:... ebenfalls verwendet. Ist es nun möglich auf ein Externes Medium zu speichern ohne die SysLibFtp nutzen zu müssen?
Zu dem Array.
Ich stelle mir ein zweidimensionales array so vor:
Text11 Text12 Text13
Text21 Text22 Text32
Wie müsste dann das Array lauten Array [1..2, 1..3] oder [1..3, 1..2]
Wie Sieht das Array [1..3] aus -> Text1 Text2 Text3 ?
Hallo,
erstmal zum Array...
Das Array müsste lauten: Array [1..2, 1..3].
ein Array[index] sieht so aus:
Array {
Eintrag 1
Eintrag 2
Eintrag 3
...
}
ein array[index1][index2]
sieht so aus:
array {
Index 1 {
Eintrag 1.1
Eintrag 1.2
Eintrag 1.3
}
index 2 {
Eintrag 2.1
Eintrag 2.2
Eintrag 2.3
}
}
Mit der CSV hast du noch nicht ganz verstanden. Du musst sie erst lokal auf der SPS speichern, und dann mit dem FTP Baustein versenden. Woher soll denn die SPS wissen welcher PC gemeint ist wenn du C:/... angibst... wenn z.B. 20 im Netzwerk sind.
Also:
CSV Datei erzeugen und lokal speichern
CSV Datei mit einem FTP-Baustein an den PC senden
MfG
Marcel
P.S: halt dich einfach dran:
http://www.wago.com/wagoweb/documentati ... 100d_f.htm m
Hallo,
danke für die Erklärung mit dem Array, ich glaube das habe ich jetzt verstanden.
Meine Wago speichert auch eine Datei ab. Bei der ersten erzeugten Datei wurde das Array ordentlich hintereinander geschreiben. Beim zweiten Versuch habe ich die "Trenner" Befehlszeile mit in den Programmablauf genommen und es kam sowas bei raus
2009-08-14-15:13:3328.5º'X'26.4''28.7''28.8èи27.2ˆpX28.9èи30.5ˆpX30.0(#'(#
Nachdem ich die Trenner Zeile wieder raus genommen hatte, blieben trotzdem die Zeichen.
Code:
Trenner:=';';
IF PT100_1>=300 THEN
hFile:= SysFileOpen('mess1.csv', 'w');
dwWritten:=SysFileWrite(hfile, ADR(Messdaten),SIZEOF(Messdaten));
dwWritten:=SysFileWrite(hfile, ADR(Trenner),SIZEOF(Trenner));
(dwWritten:= SysFileWrite(hFile, ADR(wNewLine), SIZEOF(wNewLine));)
SysFileClose(hFile);
END_IF;
Das mit der NewLine und statt 'w' 'a' eingesetzt funktioniert ebenfalls, sodass die Wago die neuen Arrays anhängt an die Datei. Nur das mit dem Trenner funktioniert nicht.
Habt ihr vielleicht einen Tipp wo mein Fehler liegt?
Gruß
Ronny
(PS: Das mit dem FTP-Versand muss ich später probieren erstmal muss das schreiben der Dateien ordentlich funktionieren.)
Hi
Es fehlen Codezeilen.
Probiere doch mal:
Das hier -->
dwWritten:=SysFileWrite(hfile, ADR(Trenner),SIZEOF(Trenner));
auf -->
dwWritten:=SysFileWrite(hfile, ADR(Trenner),LEN(Trenner));
Also LEN anstelle von SIZEOF
ABER nur dort, wo es SINNVOLL ist.
(Wie in der o.g. Zeile)
Gruß Karl
Hallo,
das Ändern von Sizeof auf LEN hat keine Änderung gebracht. Es sind immer noch die Zeichen vorhanden.
Wo könnte der Fehler noch liegen.
Gruß
Ronny
Edit: Setzte ich für Trenner nicht das ";" sondern eine 100 so wird diese 100 nicht zwischen die Messwerte gesetzt sondern nur einmal an das Ende des Arrays, also der Messwerte.
Edit2: Das mit dem FTP senden funktioniert. Ich habe aber noch eine Frage. z.Z. ist mein Rechner der FTP-Server und mit der Wago über Crossover verbunden. Wenn jetzt der FTP Server irgenwo im Internet sich befindet und man über einen Router oder GPRS-Modem ins Internet geht, müsste man im Web-based Management der Wago unter TCP/IP die Gatewayadresse angeben richtig?
nein,
der Port im Webmanagement ist für die FTP-Server den dir die SPS stellt, denn über FTP://IPDERSPS kommst du auf einen kleinen FTP-Server, der die Daten auf deiner SPS beherbergt.
Du musst das Gateway nur in deinem Programm angeben... entweder durch nen extra eingang an baustein oder bei der ip anhängen, etwa so:
IP:GATEWAY
MfG
Marcel
Hallo,
hat noch jemand eine Idee zwecks des Trennzeichens?
Gruß
Ronny
Hi Ronny,
dein Problem ist fogendes
du hast ein ARRAY[0..n] OF STRING deklariert.
Das kannst du dier vorstellen wie eine Tabelle mit n Zeilen.
In jeder Zeile ist Platz für 80 Zeichen reserviert
wenn du nun in deine erste Zeile (Messdaten[0]) etwas hineinschreibst,
dann bleiben dahinter noch unbenutzte Schreibstellen in denen noch irgendetwas steht,
klar dein Eintrag in die Zeile ist ja kürzer als die 80 reservierten Zeichen.
In der zweiten und den weiteren Zeilen passiert das Gleiche.
Das bedeutet du hast am Ende der Zeilen immer irgend einen Müll oder alte Zeichen.
Wenn du nun beim Schreiben die Adresse deines Arrays und die Größe (SIZEOF)
deines Arrays angibst, dann wird natürlich die komplette Tabelle inkl. der Müllzeichen
am Ende geschrieben, in einem Write-Auftrag.
Erst in deinem zweiten Auftrag am Ende wird EIN Trenner geschrieben.
Ich denke nicht das du das so wolltest.
Versuch mal folgenden Aufbau
Trenner := ','; ( Trennzeichen zwischen den Spalten )
SysFileWrite(hFile, ADR(Messdaten[0]), LEN(Messdaten[0]) ; ( nur den tatsächlichen Zeitstempel schreiben )
SysFileWrite(hFile, ADR(Trenner), LEN(Trenner) ; ( nun ein Trenner -> neue Spalte )
SysFileWrite(hFile, ADR(Messdaten[1]), LEN(Messdaten[1]) ; ( nur den tatsächlichen 1. PT_100 )
SysFileWrite(hFile, ADR(Trenner), LEN(Trenner) ; ( nun ein Trenner -> neue Spalte )
.
.
.
SysFileWrite(hFile, ADR(Messdaten[1]), LEN(Messdaten[8]) ; ( nur den tatsächlichen 8. PT_100 )
Trenner := '$R$N'; ( Zeilenumbruch)
SysFileWrite(hFile, ADR(Trenner), LEN(Trenner) ; ( nun noch eine Zeilenumbruch -> neue Zeile )
Uwe
Related
Talk.ru: 1
Talk.ru: 8
Hallo,
danke jetzt funktioniert es super.
Gruß
Ronny
Hallo,
ich habe noch ein Problem.
Ich möchte die Dateien über einen Router versenden. Wo muss ich die Gatewayadresse in dem Wago-Quellcode angeben.
Mit IP:Gateway wird mir eine Fehlermeldung ausgegeben.
Nutze diesen Softwarebaustein von Wago:
http://www.wago.com/wagoweb/documentati ... 100d_f.htm
Bei diesem Baustein kann man aber nur die IP angeben, hat jemand eine Ahnung wie man diesen Baustein umschreiben müsste?
Gruß
Ronny
Hallo Ronny,
nirgends, ...
das Gateway kannst du einfach im WBM einstellen
Benutzer : user
Passwort : user
Uwe[/quote]
Hallo,
hatte ich gemacht, aber es wurde keine Datei versendet. Habe den Fehler gefunden.
Beim Senden war ich mit Filezilla mit dem selben Benutzerdaten für den FTP, welche auch in der Wago stehen mit dem FTP-Server verbunden. Somit konnte die Wago gar nicht auf den FTP zugreifen.
Gruß
Ronny
Hallo nochmal,
irgendwie wird an das Array immer noch irgendwelcher mist angehangen.
Die ersten beiden Index Array[0] und [1] sind fehlerfrei ab ab dem [2] wird mit dem Datum und Uhrzeit (Array[1]) aufgefüllt. Kann mir bitte mal einer Erklären warum? Ich kann doch nicht alles mit Leerzeichen auffüllen?
Code:
IF Minute = 15 AND Sekunde = 00
OR Minute = 30 AND Sekunde = 00
OR Minute = 45 AND Sekunde = 00
OR Minute = 00 AND Sekunde = 00
THEN
Messdaten[0]:=WKA;
Messdaten[1]:=Zeitstempel;
Messdaten[2]:=PT100_1String;
Messdaten[3]:=PT100_2String;
Messdaten[4]:=PT100_3String;
Messdaten[5]:=PT100_4String;
Messdaten[6]:=PT100_5String;
Messdaten[7]:=PT100_6String;
Messdaten[8]:=PT100_7String;
Messdaten[9]:=PT100_8String;
END_IF;
Trenner:=',';
IF Minute = 00 AND Sekunde = 01
OR Minute = 30 AND Sekunde = 01
OR Minute = 45 AND Sekunde = 01
OR Minute = 00 AND Sekunde = 01
THEN file_write:=TRUE;
END_IF;
datei:= 'mess.csv';
(Datei Schreiben)
IF file_write = TRUE THEN
hFile:= SysFileOpen(datei, 'a');
dwWritten:=SysFileWrite(hfile, ADR(Messdaten[0]),SIZEOF(Messdaten[0]));
dwWritten:=SysFileWrite(hfile, ADR(Trenner),SIZEOF(Trenner));
dwWritten:=SysFileWrite(hfile,ADR(Messdaten[1]),SIZEOF(Messdaten[1]));
dwWritten:=SysFileWrite(hfile, ADR(Trenner),SIZEOF(Trenner));
dwWritten:=SysFileWrite(hfile,ADR(Messdaten[2]),SIZEOF(Messdaten[2]));
dwWritten:=SysFileWrite(hfile, ADR(Trenner),SIZEOF(Trenner));
dwWritten:=SysFileWrite(hfile,ADR(Messdaten[3]),SIZEOF(Messdaten[3]));
dwWritten:=SysFileWrite(hfile, ADR(Trenner),SIZEOF(Trenner));
dwWritten:=SysFileWrite(hfile,ADR(Messdaten[4]),SIZEOF(Messdaten[4]));
dwWritten:=SysFileWrite(hfile, ADR(Trenner),SIZEOF(Trenner));
dwWritten:=SysFileWrite(hfile,ADR(Messdaten[5]),SIZEOF(Messdaten[5]));
dwWritten:=SysFileWrite(hfile, ADR(Trenner),SIZEOF(Trenner));
dwWritten:=SysFileWrite(hfile,ADR(Messdaten[6]),SIZEOF(Messdaten[6]));
dwWritten:=SysFileWrite(hfile, ADR(Trenner),SIZEOF(Trenner));
dwWritten:=SysFileWrite(hfile,ADR(Messdaten[7]),SIZEOF(Messdaten[7]));
dwWritten:=SysFileWrite(hfile, ADR(Trenner),SIZEOF(Trenner));
dwWritten:=SysFileWrite(hfile,ADR(Messdaten[8]),SIZEOF(Messdaten[8]));
dwWritten:=SysFileWrite(hfile, ADR(Trenner),SIZEOF(Trenner));
dwWritten:=SysFileWrite(hfile,ADR(Messdaten[9]),SIZEOF(Messdaten[9]));
dwWritten:= SysFileWrite(hFile, ADR(wNewLine), SIZEOF(wNewLine));
SysFileClose(hFile);
file_write:=FALSE;
END_IF;
csv-Datei
V12345,2009-08-25-10:35:09,26.8.8-25-10:35:09..................................................,26.809-08-25-10:35:,28.808-25-10:35:09,29.109-08-25-10:35:,27.68-25-10:35:09,29.609-08-25-10:35:,27.408-25-10:35:09,30.009-08-25-10:35:
Gruß
Ronny
Related
Talk.ru: 1
Talk.ru: 2
Talk.ru: 3
Talk.ru: 5
Talk.ru: 7
Talk.ru: 8
Hi
Es wurde hier schon mehrfach gesagt:
Nimm den LEN().
Z.b.
dwWritten:=SysFileWrite(hfile,ADR(Messdaten[9]),SIZEOF(Messdaten[9]));
durch
dwWritten:=SysFileWrite(hfile,ADR(Messdaten[9]),LEN(Messdaten[9]));
Gruss Karl
Hallo,
es funktioniert.
Vor lauter rumexperimentiererei habe ich es gar nicht auf LEN geändert.
Danke nochmals.
Gruß
Ronny
Hallo,
noch eine Frage.
Ich speichere pro Tag eine Datei in der PLC. Besteht die Möglichkeit die Dateinamen, welche sich auf der PLC befindet, auszulesen und die Daternamen einer String-Variablen zuzuweisen, welche die Quelldatei für das Versenden angibt? Also irgenwie zu schauen was für Dateien auf der PLC sind.
Code als Beispiel:
IF datei_send = datei THEN
END_IF;
IF datei_send <> datei THEN
END_IF;
datei_send-> zu versendende Datei
datei-> aktuelle Tagesdatei
In dem Code wird immer die zuletzt aktuellste Datei versendet. Ist dies geschehen, springt das Prog. immer auf die aktuellste Datei.
Wenn jetzt der FTP-Server für 3 ausfällt, dann werden 2 Dateien nicht versendet.
Bessere wäre es auf die PLC zu schauen und die Dateien, welche vor der aktuellen Tagesdatei liegen, zu versenden.
Gruß
Ronny
PS: die Dateien sind im Dateinamen mit dem Datum versehen
Hi
Ja, es ist möglich, das Verzeichnis auszulesen.
Also alle Dateinamen zu finden.
Leider habe ich KEIN Example hierfür.
Ich hätte diese Funktion auch gene, leider fehlt mir momentan die Zeit.
Schau doch mal die "SysLibDir" an.
Bei Fragen hier im Forum.
Hallo,
ich hab mal ein bisschen experimentiert mit der SysLibDir.
verzeichnis: STRING;
ergebnis: DWORD;
result: BOOL;
Dir_Handle : DWORD;
eintraege : ARRAY [1..5] OF STRING;
i: INT;
strTemp: STRING;
Code:
(Datei Schreiben)
verzeichnis:='\plc\daten';
(Unterverzeichnis \daten erstellen falls nicht vorhanden)
ergebnis:=SysDirOpen(verzeichnis);
IF ergebnis=0 THEN
result := SysDirCreate(verzeichnis);
END_IF;
(Verzeichnis auslesen)
Dir_Handle := SysDirOpen('\plc\daten');
i := 0;
WHILE SysDirRead(Dir_Handle,strTemp,0) <> 0 DO
i := i+1;
eintraege[i]:= strTemp;
END_WHILE;
Ich habe eine Datei in dem Verzeichnis gespeichert. Für i wird 3 angezeigt und bei Dir_Handle werden Zahlen aufwärts gezählt. (vermute mal Speicherplatz) Nach ein paar Sekunden hängt sich die Wago aber auf (alle LED's an der Wago blinken grün rot). Ich vermute mal die Steuerung läuft sich in der while-Schleife tot. Für das Array "eintraege" wird auch nichts angezeigt.
Hat jemand eine Idee wo der Fehler liegt?
Im Voraus schonmal vielen Dank für eure Hilfe.
Gruß
Ronny
Hi
Nö, jedoch lass doch mal vorerst den "Schrott" mit der Verzeichnisabfrage ob vorhanden und erzeugen des Verzeichnisses raus.
Das können alles Fehlerquellen sein.
Frage doch mal den Inhalt z.b. des vorhandenen PLC-Verzeichnisses ab.