Ich habe ein Problem mit dem Verschicken von E-Mails mittels der OSCAT Network Lib.
Hardware ist eine Wago 750-841.
Ich habe einige eigene Einstellungen/E-Mail Accounts getestet und dann auch direkt das Beispiel ausprobiert.
Leider erhalte ich immer die Fehlermeldungen Error_C = 1; Error_T = 4 am Baustein.
Als DNS4_IP habe ich die IP der Fritzbox und die in der Fritzbox angezeigten DNS Server (217.0.43.161 bzw. 217.0.43.177) getestet.
Alles mit dem gleichen “Erfolg”… ???
Also inzwischen habe ich gefunden woram es lag/liegt:
Im Step 310 wird im Baustein SMTP Client die Angabe des Anhangs eingelesen.
Der Step 400 soll bei nicht vorhandenem Anhang in den Step 800 weiterleiten.
Das tut der Baustein bei mir aber nicht!
Es geht im Step 400 - 410 - … weiter.
Da jedoch kein Anhang angegeben ist läuft das ins Leere.
Zwinge ich den Baustein den Anhang zu ignorieren (Sprung von 310 nach 800) funktioniert alles wie´s soll.
Ist das ein Bug oder funktioniert das nur auf meiner Steuerung nicht?
Error_C = 1; Error_T = 4 am Baustein heisst nichts anderes das die datei nicht geöffnet werden kann, was logisch ist, da eigentlich auch keine datei
angegeben wurde
der entscheidende punkt ist folgender block
310: IF snd_step = 0 THEN cnt1 := LIST_LEN(59, FILES) - 1; (* Anzahl der Dateien *)
step := 400;
END_IF;
wenn die FILES einen leerstring übergibst dann ergibt cnt1 = -1
wenn du >= 00 als ergebnis bekommst dann ergibt die auswertung das FILES nicht leer ist, und die enthaltenen zeichen eine dateiangabe darstellen sollen
genau das passiert bei dir, anscheind ist FILES nicht leer , ist das vielleicht ein leerzeichen enthalten ?
und wenn files nicht leer ist bzw eine nicht vorhandene datei angegeben ist , dann ist der schrittverlauf bzw die fehlermeldung völlig richtig und logisch
du musst bei schritt 310 mal anhalten und schauen was bei cnt1 als ergebnis kommt, bzw. was denn nun wirklich bei FILES übergeben wird.
Also bei einem Brake im State 310 (bei Setze Step = 400) habe ich als cnt1 = 0.
Und am Eingang “Files” des Bausteins habe ich definitiv nur ‘’ ohne Leerzeichen dazwischen.
ursache ist folgendes
die LIST_LEN liefert bei leeren String immer eine 1
in der doku steht das bei leeren String eine 0 geliefert wird
das ist definitiv falsch, darum wird das auch falsch im programm verarbeitet
als schnellen patch kann ich dir folgendes anbieten
SMTP_CLIENT:
310: IF snd_step = 0 THEN
cnt1 := LIST_LEN(59, FILES) - 1; (* Anzahl der Dateien *) IF FILES = ‘’ THEN cnt1 := -1; END_IF;
step := 400;
END_IF;
!! Der Fehler tritt nur auf wenn keine Dateien als Anhang versendet werden !!
!! Diese Änderung kann bei network.lib für codesys, beckhoff und pcworx genauso durchgeführt werden !!