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: Sa Sep 21, 2019 11:51 pm

Alle Zeiten sind UTC




Ein neues Thema erstellen  Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Di Mär 05, 2013 6:47 pm 
Offline

Registriert: Mo Okt 03, 2011 11:42 am
Beiträge: 3
Hallo liebe Forengemeinde,

Ich habe folgendes Problem mit einem Bytearray:

Ich lese alle 12h 2 Wasserzähler per MBUS aus. Klappt super und die Werte werden auch korrekt in der CSV Datei abgespeichert.
Damit ich mich nicht selbst um den Download der Daten aus der WAGO 750-881 selbst bemühen muss, möchte ich die Daten gern per Mail an meine Adresse senden.
Testmails senden klappt auch ohne Anhang super.
Jetzt kommt mein Problem, die gespeicherte Datei als Anhang zu versenden. Es wird "irgend etwas" angehangen, mit ein paar lustigen Sonderzeichen, aber nicht der eigentliche Inhalt wird versendet.

Hier mal ein Auszug vom Code:
Code:
   hFile:= SysFileOpen(szFilePath, 'a');
   dwWritten:= SysFileWrite(hFile, ADR(szText), LEN(szText));
   dwWritten:= SysFileWrite(hFile, ADR(wNewLine), SIZEOF(wNewLine)); (*bis hierhin ist alles OK  *)
maildata := maildata + (hfile, ADR(bytearray));   (* hier wird erwartet: ptAttachment : POINTER TO ARRAY[0..MAX_SEND_TCP_CLIENT] OF BYTE;  von der WagoLibMail*)
datasize := SIZEOF(maildata);  (* hier wird erwartet: diAttachmentLength   : DINT;  ebenfalls von der WAGO Lib
   SysFileClose(hFile);

die letzten beiden Zeilen hab ich quasi als Dateigrößenermittlung dazugefügt, um die Infos den beiden Eingängen Mail_ESMTP_Client zu übergeben.
gemeint ist also die WagoLibMail_02.lib Baustein Mail_ESMTP_Client


ich verstehe nicht ganz, wie ich anhand der Datei das Bytearray festlegen kann.
An der Dateigröße liegt es auch nicht, da ich den MAX_SEND_TCP_CLIENT in den glob. Variablen mit einem höheren Wert überschattet habe.
Die Dateigröße selbst beträgt ebenfalls nur max. 7-9kb. (Also auch noch im Standard-Modus vertretbar)

Wer kann mir hier weiter helfen?

vielen Dank
der Joko


Nach oben
   
BeitragVerfasst: Di Mär 05, 2013 10:14 pm 
Offline

Registriert: Di Aug 23, 2005 7:12 am
Beiträge: 15
Zitat:
An der Dateigröße liegt es auch nicht, da ich den MAX_SEND_TCP_CLIENT in den glob. Variablen mit einem höheren Wert überschattet habe.


das hilft nichts wenn der DSL-Router nicht mehr durchlässt.

vom Code bräuchte ich noch etwas mehr um Deine Gedanken verstehen zu können. Ich sehe keine Deklaration (z.B. was soll maildata sein?) noch verstehe ich was die CSV-Geschichte mit E-Mail zu tun hat. Ich verwene nicht den gleichen E-Mail client, aber so wie ich den Codeauszug verstehe wird ein Pointer auf die Daten im Ram erwartet, das hat mit der CSV erst mal gar nichts zu tun.
Im Zweifelsfall mal das ganze Projekt posten.


Nach oben
   
BeitragVerfasst: Mi Mär 06, 2013 6:35 pm 
Offline

Registriert: Mo Okt 03, 2011 11:42 am
Beiträge: 3
Hallo cheffe,

ok, hab mal das Projekt in den Anhang gepackt.
Das Projekt kann "etwas" wirr aussehen, da ich es nach und nach - wie man eben Zeit hat - aufgebaut habe.
Ebenfalls habe ich noch ein paar Modbus Tests durchgeführt. Daher sind auch ein paar nicht mehr genutze Variablen vorhanden, die später aber wieder ihren Dienst verrichten sollen.

EDIT:\\ Eines wollte ich noch angemerkt haben: Dies ist mein erstes WAGO Projekt und das eher im "privaten" Bereich, da ich so den Einstieg in und mit WAGO lernen wollte.
Mit simplen DI und DO wollte ich nicht anfangen, daher dachte ich mir, visualisierst du eben deine Bus-Zähler.

Also bitte seid nicht all zu hart, falls meine Programmstruktur für euch nicht als "Struktur" ersichtlich sein sollte. Es sind immer nur abends 1-2 Stunden zur Verfügung und das nach der Arbeit :mrgreen:


Dateianhänge:
wasser.pro [129.47 KiB]
72-mal heruntergeladen
Nach oben
   
BeitragVerfasst: Do Mär 07, 2013 8:45 pm 
Offline

Registriert: Di Aug 23, 2005 7:12 am
Beiträge: 15
also erst mal musst Du dafür sorgen dass Du die zu versendenden Daten wieder in einem Array landen. Entweder gleich parallel mit dem Schreiben ins Filesystem auch in ein Array packen, alternativ wieder aus dem Dateisystem lesen (was den Vorteil hat dass die Daten bei Stromausfall nicht weg sind).

Reihenfolge:
SysFileGetSize -> wir müssen wissen wieviel geladen werden soll
SysFileOpen
SysFileRead, bei Size die Rückmeldung vom SysFileGetSize angeben, bei Buffer reicht ADR(bytearray), das scheint ja sonst nirgendswo verwendet zu sein. Hier ein Auszug aus einer Schrittkette (mit Case Anweisung):

Code:

If Startbedingung Then
   Schritt:=1;
End_If

CASE Schritt OF

1:   ErgebnisVomSysFileGetSize:= SysFileGetSize(szFilePath);
      Schritt:=2;

2:    hFile:=SysfileOpen(szFilePath, 'r');
      Schritt:=3;

2:   BytesDone:=   SysFileRead(hFile, ADR(bytearray), ErgebnisVomSysFileGetSize);
         IF BytesDone = ErgebnisVomSysFileGetSize THEN
            Schritt:=3;
         END_IF
3: Hier den Code für Startbedingung E-Mail-Versand platzieren

 Schritt:=0;

END_CASE


maildata:= ADR(bytearray);
datasize:=ErgebnisVomSysFileGetSize;


dann sollte das funktionieren. Code natürlich jetzt nicht getestet, sollte aber ungefähr so funktionieren


Nach oben
   
BeitragVerfasst: Fr Mär 08, 2013 11:18 am 
Offline

Registriert: Mo Okt 03, 2011 11:42 am
Beiträge: 3
Hallo Cheffe,

besten Dank für die Info.

Ich glaube auch zu wissen, warum er nicht richtig gesendet hatte:

- ich habe lediglich die neu geschriebenen Werte als Dateigröße abgefragt.
Wie du beschrieben hast, muss ich aber die komplette Dateigröße ermitteln... :oops:

Ich denke mal, dies war der eigentliche Fehler.

Ich werd den Code mal testen, und melde mich, wenn ich Ergebnisse hab.

Vielen Dank nochmals...

mfg
Joko


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

Alle Zeiten sind UTC


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 8 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