Hauptmenü

DLOG_STORE_FILE_CSV

Begonnen von gravieren, 24. November 2011, 20:30:12

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

karst

Dass loggen der Daten lauft ja mittlerweile.
Nächste Schritt soll dass übertragen zu einem Server sein.

Dass loggen wird gemacht auf ein Eaton (Micro Innovation) XVS-460-15MPI, ein sogenanntes HMI-PLC.
CodeSys 2.3.9.35 mit "oscat_basic_333.lib" und "codesys_network_130.lib".
Auch den Demo "DLOG_FILE_CSV_FTP_DEMO" kommt mit ERROR_T = 2 und ERROR_C = FF 00 00 00

Irgendwie vermute Ich dass SYSLIBSOCKETS_OPTION ein bestimmte Wert haben soll.
Welche?
Ist dass irgendwo dokumentiert?

peewit

je nach plattform kann es sein das du SYSLIBSOCKETS_OPTION anpassen musst
es kann auch sein das es nicht funktioniert !

Zusatzinformation für Codesys
Mit der globale Variable SYSLIBSOCKETS_OPTION kann mit dem Wert 1 auf
einen Kompatibilitätsmodus umgeschaltet werden. Dadurch wird beim
Verbindungsaufbau intern die Funktion SYSSOCKSELECT verwendet. Dies
ist z.B. bei die Runtime „CoDeSys SP PLCWinNT V2.x“ notwendig bzw. bei
allen ähnlichen Systemen.

diese option findest du unter globale variablen
dort ist aber auch eine textbeschreibung mit bei

   (* Configuration for SysLibSocket.lib                   *)
    (* Bit 0 = 1 -> PLCWinNT                                *)
    (* Bit 1 = 1 -> PLC WAGO 750-841                        *)
    (* Bit 2 = 1 -> PLC WAGO 750-881                        *)
   SYSLIBSOCKETS_OPTION : BYTE := BYTE#2#0000_0000;
   (* ---------------------------------------------------- *)

da probierst du einfach alle möglichkeiten

es ist aber durchaus möglich das es ein ganz anderes logisches problem gibt

das prinzipielle funktioneren von ethernet kommunikation über die oscat lib solltest du vorab mal direkt mit irgendwelchen einfachen kommunikation testen  z.b. modbus tcp client etc....

deine fehlermeldung besagt das die verbindung für den ftp steuerkanal nicht aufgebaut werden konnte
bei ftp kann man ja auch einen aktiv oder passiv mode nutzen weil es mitunter durch firewall antivirus blockiert werden kann.

karst

Gut, mittlerweile kann Ich ein kleine Datei Senden mit den Einstellung SYSLIBSOCKETS_OPTION := BYTE#2@0000_0001;
Dass heißt das wahrscheinlich fast alle Moeller / MicroInnovation / Eaton targets mit diese Einstellung die Netlib von Oscat nutzen können.

Aber, wie gesagt, kleine Dateien kann Ich über FTP senden. Große Dateien aber nicht   ???

Eine Fehler habe Ich gefunden im IP_CONTROL.
IF S_BUF.SIZE > 0 THEN
   IF c_ready AND c_enable THEN
      IF NOT s_active AND IP_C.MAILBOX[2] = 0 THEN
         (* Gesamtanzahl an Bytes limitieren und uebergeben *)
         s_total := LIMIT(0,UINT_TO_INT(S_BUF.SIZE),r_max_size);

Dass muss wahrscheinlich s_max_size sein.
Wenn Ich das anpasse werden von größere Dateien nur die erste 4 KB gesendet. In FTP_CLIENT werden die Schritten 200 und 210 verschiedenen mahlen wiederholt. Doch vermute Ich dass da etwas Falsch geht mit das anordnen der Dateistückchen. Ein bisschen Hilfe könnte Ich hier sicher nutzen.
Anbei mein Programm und ein Beispiel von ein Datei die Ich gerne über FTP senden möchte.


[gelöscht durch Administrator]

peewit

das was du entdeckt hast ist sicherlich ein schönheitsfehler den wir ausbessern werden

jedoch werden im ip_control beide variablen immer mit ansich konstanten werten beschrieben
und beide variablen haben gleichen inhalt das sende und empfangspuffer gleich gross sind.
die groesse von r_buf.buffer und s_buf.buffer wird von einer globalen compilervoreinstellung bestimmt
und ändert sich zur laufzeit natürlich nicht.

VAR_GLOBAL CONSTANT
   NETWORK_BUFFER_LONG_SIZE : UINT := 4095;
   NETWORK_BUFFER_SHORT_SIZE : UINT := 1407;

TYPE
   NW_BUF_LONG  : ARRAY[0..NETWORK_BUFFER_LONG_SIZE] OF BYTE;
END_TYPE

TYPE NETWORK_BUFFER :
STRUCT
   SIZE : UINT;
   BUFFER : NW_BUF_LONG;
END_STRUCT
END_TYPE
----------------

ip_control:
   r_max_size := SIZEOF(R_BUF.BUFFER);
   s_max_size := SIZEOF(S_BUF.BUFFER);

somit kann eigentlich deine änderung keine positive veränderung verursachen

überprüfe doch nochmals das ganze...
deine ergebnis kann ich nicht nachvollziehen...

da die bausteine prinzipiell auf den von mir getesteten plattformen laufen, ist es schwer
eine plattform zu testen die man nicht hat bzw. simulieren kann


lexy

#34
Hallo zusammen :)

Ich bin Neu hier im Forum und habe mich schon eingelesen und selbst viel probiert. Durch die Lösungsansätze konnte ich zumindest schon mal so alles gestalten, dass ich das Programm auf eine Wago 750-841 (FW11) übertragen konnte. Arbeiten tue ich mit CoDeSys V2.3

Aber nun zum Problem:

Ich mache zur Zeit mein Abschlussprojekt und habe die Aufgabe Messwerte aus einem Array in eine csv Datei zu schreiben und da mit hilfe von Excel auszuwerten.
Habe mich schon mit dem Demo Baustein des DLOG_STORE_FILE_CSV auseinandergesetzt und den so 1:1 übernommen. Aber leider erstellt er keine Dateien bzw. ich weiß noch nicht so recht wo er die Dateien erstellt. Ich habe folgendes bei Filename eingetragen: 'G:\testneu.csv' ...  Zur Zeit ist die SPS direkt mit meinem Rechner verbunden und ich habe gedacht, dass so die Datei auf meinem Laufwerk G abgespeichert wird, aber ist leider nicht der Fall. Ich hoffe, dass ich mit eurer Unterstützung das Problem lösen kann.

Viele Grüße

PS: Habe nochmal einen Screenshot vom programm beigefügt.

EDIT: Ok die Datenspeicherung im internen Speicher der Wago funktioniert! :) Jetzt möchte ich die Daten auf meinen PC übertragen. Habe dazu mit Hilfe der Software FilleZilla Server einen FTP Server aufgesetzt und möchte da meine Daten abspeichern. Ich sehe in der Software, dass die SPS zugreifen will, aber es irgendwie nicht schafft.. Passwort und Benutzername vom FTP sind richtig unter ftp_url eingetragen. Auch die Software Firewall habe ich ausgeschaltet, leider ohne Erfolg.

Fehlermeldugnen bekomme ich folgende:

error_c : 65280
error_t: 2

[gelöscht durch Administrator]

peewit

hi

das du von der sps aus direkt auf dein pc laufwerk g: schreiben kannst kann ich mir nicht wirklich vorstellen.
zumindest ist mir dieser kniff nicht bekannt das man ein pc laufwerk auf die sps mappen kann.

warum die ftp übertragen nicht klappt ist von hier aus nicht festzustellen

fehler 2 / 65280 bedeutet

Störung: FTP Steuerkanal
Die genaue Bedeutung von ERROR_C ist beim Baustein IP_CONTROL nachzulesen

es konnte keine tcp-verbindung zum ftp server ausgebaut werden.
das kann verschiedenste gründe haben....

lexy

Hallo,

mittlerweile läuft die Datenübertragung sehr gut. Mein Fehler war in dem Sinne, dass ich auf meinem PC einen FTP Server laufen gelassen habe und das hat der SPS wohl nicht so geschmeckt. Habe dann einen kostenlosen FTP Server im Netz eingerichtet und dann lief alles  prima :)

Womit ich zur Zeit noch kämpfe ist die eMail Übertragung. Ich habe auch schon das Demo Programm probiert und auch damit bekomme ich keine eMails verschickt. Meine 750-841 die ich hier stehen habe hat noch Firmware V11 drauf. Wie ich bereits gelesen habe, könnte es an der veralteten Firmware liegen, ansonsten kann ich es mir mittlerweile nicht mehr anders erklären.

Ein weiteres Problem ist die Sortierung der einzelnen Spalten. Ich habe gedacht, dass dies von der Beschriftung der Bausteine abhängig ist. Also z.B. x1 - Erste Spalte - Zeitstempel usw.
Das hat auch prima bis x6 funktioniert und dann ab x7 hat er den Wert vom Baustein aufeinmal wieder in die erste Spalte geschrieben. Habe dann den x7 Baustein umbenannt, aber leider blieb auch dies ohne Erfolg und die Reihenfolge hat sich dadurch gar nicht geändert. Jetzt ist meine Frage, wie ich die Spalten so sortieren kann wie ich es gerne hätte? :)

Viele Grüße

lexy

peewit


bei den email baustein musst da beachten dass inzwischen fast alle email provider nur mehr mit verschlüsselter kommunikation funktionieren, das ist auch bei dem network demo programm mit dem gmx konto der fall.
die ssl kommunikation kann man als sps baustein nicht nachbilden, das geht nur mit unterstützung durch das betriebsystem
das dauert noch bis alle sps hersteller hier ihrer systeme updaten....

datenlogger reihenfolge:

die spalten werden genauso so in der reihenfolge angelegt so wie die bausteine auch durchlaufen werden
es kann sein das deine bausteine nicht die richtige reihenfolge aufweisen bzw. was bei codesys öfters der fall ist das du über das menü die funktion reihenfolge neu anordner ausführen musst.
ansonsten kann es sein das die bausteine zwar optisch in der richtigen reihenfolge sind jedoch für codesys nicht.

lexy

Der Hinweis auf die Reihenfolge war Goldwert :) Jetzt funktioniert soweit alles. Vielen Dank für die nette Unterstützung

Viele Grüße

lexy

karst

#39
Zitat von: peewit in 06. April 2014, 17:20:28
überprüfe doch nochmals das ganze...
deine ergebnis kann ich nicht nachvollziehen...

da die bausteine prinzipiell auf den von mir getesteten plattformen laufen, ist es schwer
eine plattform zu testen die man nicht hat bzw. simulieren kann

Überprufen, daß habe Ich gemacht ja letzten Zeit, viel Zeit! Es fehlt mich an detail Kenntnis von FTP-protocol um genau zu beurteilen was hier falst geht. Siehe Anhang Log_03. Nachricht auf Zeile 21 ist am Datakanal der FTP-Server gesendet und nicht am Steuerkanal wie im Log_01.
Log_03: Eaton XV4 Panel HMI/SPS mit FTP_CLIENT_DEMO und syslibsockets_option auf 16#01. Den Datei "TST 22 KB.CSV" wird sogar angelegd auf denn Oscat test Server, und hat 4096 Bytes.
Log_01: Wago 750-881 mit FTP_CLIENT_DEMO und syslibsockets_option auf 16#04. Den Datei "TST 22 KB.CSV" wird komplett gesendet.
Was muss Ich Ausprobieren / Testen um hier weiter zu kommen?

Für ein Platform zum testen bitte Kontakt über pm.

P.S. Habbe noch ein bischen aufs Forum rundgeschaut und Ich war nicht den Ersten mit diesem Problem: http://www.oscat.de/community/index.php/topic,1825.msg9681.html#msg9681


[gelöscht durch Administrator]

mfreye

Hallo zusammen.

Ich loge bei mir die Temp und die Feuchtigkeit der KWL mit. Das ganze läuft soweit auch gut.

Aber ;) Ich möchte gerne das die neuen Werte gleich in die Datei geschrieben werden und auch immer in die gleiche Datei.

Also alle X Minuten logen und gleich in die Datei schreiben (anhängen).

Geht das???

Ach und noch eine Frage, was muss ich ändern das die Daten (remanente variablen) auch nach einen Neustart der SPS gespeichert bleiben.
Gruß
Maik

Siehe auch Anhang

[gelöscht durch Administrator]

peewit

probiere mal diese version aus, hier wurde das verhalten mittels "auto_close" verbessert
damit man gezielt die daten öfters schreiben lässt bzw die datei auch wieder freigegeben wird.

http://www.oscat.de/community/index.php/topic,1872.msg9862.html#msg9862


den datenbuffer remanent setzten
1. eine normale sps hat viel zu wenig remanten speicher sodass es kaum sinn macht
2. damit das funktioniert müsste man einiges am baustein ändern, da ist es besser wenn du eine usv anhängst
    wenn es so wichtig ist, dann sollte man an sowas denken.

schreiben in immer die gleiche datei
hast du dir gedanken gemacht über die dateigroesse, denn irgendwann ist kein platz mehr am flash....

mukazz

Hallo liebe Oscat Gemeinde,

Ich arbeite mit einer Wago 750-881 und schreibe mit dem DLOG_STORE_FILE_CSV Baustein 7 REAL-Werte in eine CSV Datei.
Das funktioniert auch alles recht gut. Nur leider werden ich sage mal 3x am Tag 1 oder 2 Stellen in der CSV Datei nicht geschrieben.
Es fehlt immer ein "," was ich als Trennzeichen nutze.
Meine 7 REAL Werte beziehe ich von einer anderen Wago 750-881 Steuerung über Netzwerkvariablen.
Die Abarbeitung läuft in der Standardtask.

Bsp.
2018-10-30 01:00:00,35.13,28.32,29.20,25.35,100.00,57.14,28.00
2018-10-30 01:01:00,35.17,28.29,29.21,25.35,100.00,58.36,28.00
2018-10-30 01:02:00,35.21,28.25,29.21,25.36,100.00,59.44,28.00
2018-10-30 01:03:00,35.25,28.21,29.22,25.36,100.00,60.37,28.00
2018-10-30 01:04:00,35.3028.18,29.22,25.36,100.00,61.13,28.00
2018-10-30 01:05:00,35.31,28.18,29.22,25.36,100.00,61.83,28.00
2018-10-30 01:06:00,35.36,28.16,29.23,25.37,100.00,62.50,28.00
2018-10-30 01:07:00,35.36,28.14,29.23,25.37,100.00,63.09,28.00


Bitte kann mir einer helfen?   
Gruß mukazz