Mit BX9000 E-Mails verschicken

matze007

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo

hat von euch schon jemand mit dem BX9000 den E-Mail versand hinbekommen?
Bekomm immer den Fehler (0x8003) Connection fault.

Benutze den FB_SMTP der zwar normal für die Zielplattform BC9xxx ist aber sollte laut Beckhoff trotzdem gehen.
Den SMTP-Server hab auch schon überprüft der geht ohne authentifizierung.

Weiß jetzt nimmer weiter.
Vielleicht kann mir ja jemand weiterhelfen.

Gruß Matze
 
Hi, ist zwar ne bissel späte Antwort, aber hier meine Erfahrungen.

Code:
PROGRAM MAIN
VAR
    smtp        : FB_Smtp;
    bSend        : BOOL;
    sMsg        : STRING(80);
END_VAR

VAR_INPUT
    bStart        : BOOL;
    sSmtpServer    : STRING(15);
    sFrom        : STRING;
    sTo                 : STRING;
    sCc                 : STRING;
    sBcc        : STRING;
    sSubject        : STRING;
    pMail        : DWORD;
    tTimeOut        : TIME;
END_VAR
VAR_OUTPUT
    bBusy        : BOOL;
    bError        : BOOL;
    iErrorID        : STRING;
END_VAR
und unten ...
Code:
smtp (
sSmtpServer:= 'xxx.xxx.xxx.xxx',   <-IP hab ich
sFrom:= 'bla@blablubb.de',         <-kann auch Name sein
sTo:= 'blablubb@bla.de',
sSubject:='Email-Betreff',
pMail:=ADR(sMsg),
bStart:= bSend,
tTimeout:= t#60s);
Wie bekommts du den Fehlercode? Habe keine Ahnung wie ich die "iErrorID"
auslesen kann.
Ein weiteres Problem:
Wenn das Netzkabel ab ist und man es eine Minute später oder so reinsteckt, dann versucht er nicht weiter, die Mail zu versenden. Er probiert es also nur kurz nachdem "bStart" gesetzt wird.

Achja, ich nutze BC9000.

Gruß Mathias
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie bekommts du den Fehlercode? Habe keine Ahnung wie ich die "iErrorID"
auslesen kann.
Ein weiteres Problem:
Wenn das Netzkabel ab ist und man es eine Minute später oder so reinsteckt, dann versucht er nicht weiter, die Mail zu versenden.

Den iErrorID bekommst du normalerweise wie folgt:
Code:
smtp.iErrorID

Er probiert es also nur kurz nachdem "bStart" gesetzt wird.

Er probiert es eine Minute lang. Hast du ja als Timeout eingestellt!

Wenn das Netzkabel ab ist und man es eine Minute später oder so reinsteckt, dann versucht er nicht weiter, die Mail zu versenden.

Wird das fehlende Netzwerkkabel über einen Fehler signalisiert? Dann könntest du die Mail erneut senden, sobald dieser Fehler auftritt.
 
Wenn ich den Fehler mit per Mail schicken lassen will, siehts das ja so aus:
Code:
sMsg:= smtp.iErrorId;
da kommt aber immer der Fehler: Kann "WORD" nicht in "STRING(80)" konvertieren.
Aber ich glaube da gab es eine word_to_string Funktion.

Das mit dem Abziehen soll ein SMTP-Server Ausfall simulieren, d.h. er soll, sobald dieser wieder erreichbar is, die Mail nachträglich verschicken. Sprich das ganze müsste mit ner Schleife gemacht werden, also das er ständig nachschaut, ob der Server wieder da ist.

Mathias
 
Zuviel Werbung?
-> Hier kostenlos registrieren
da kommt aber immer der Fehler: Kann "WORD" nicht in "STRING(80)" konvertieren.
Aber ich glaube da gab es eine word_to_string Funktion.

Richtig. WORD_TO_STRING wirkt Wunder:
Code:
sMsg := WORD_TO_STRING(smtp.iErrorID)

Das mit dem Abziehen soll ein SMTP-Server Ausfall simulieren, d.h. er soll, sobald dieser wieder erreichbar is, die Mail nachträglich verschicken. Sprich das ganze müsste mit ner Schleife gemacht werden, also das er ständig nachschaut, ob der Server wieder da ist.

Genau. Würde die Mail speichern und zyklisch nachschauen, ob der SMTP-Server wieder erreichbar ist. Dann kannst du sie noch einmal senden.
 
Wird das fehlende Netzwerkkabel über einen Fehler signalisiert? Dann könntest du die Mail erneut senden, sobald dieser Fehler auftritt.

Die Ausgangsvariable smtp.iErrorID wird auf "16#8003" bzw. "0x00001F43 The file replication service cannot be stopped. FRS_ERR_STOPPING_SERVICE" gesetzt. Doch wenn dieser Fehler eintritt, kann man gar nichts mehr senden. Man kann den Fehler meiner Meinung nach nicht zurücksetzen, weil es ja eine Ausgangvariable des FB_Smtp ist.

Letzendlich habe ich festgestellt, das das Gerät nach ziemlich genau 40 Sekunden die fehlende Verbindung erkennt und diesen Fehlercode setzt, d.h. wenn man vorher das Netzwerkkabel wieder reinsteckt kommt die Mail an. Wenn mal es später wieder reinsteckt, (was wohl eher Realität ist, da kein Mailserver so schnell wieder hochkommt) dann passiert rein gar nichts mehr. Es kommt nix mehr an :sm23:

Gruß Mathias
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Letzendlich habe ich festgestellt, das das Gerät nach ziemlich genau 40 Sekunden die fehlende Verbindung erkennt und diesen Fehlercode setzt, d.h. wenn man vorher das Netzwerkkabel wieder reinsteckt kommt die Mail an. Wenn mal es später wieder reinsteckt, (was wohl eher Realität ist, da kein Mailserver so schnell wieder hochkommt) dann passiert rein gar nichts mehr. Es kommt nix mehr an :sm23:

Gruß Mathias

Verstehe ich das richtig, dass du danach (nachdem das Kanel wieder drin ist) auch keine neue Mail mehr senden kannst?
 
Na jedenfalls kommt nichts mehr an. Ich denke das liegt an dem gesetzten "Fehler-Merker". Habe bereits mit Reset- und Reboot-Funktionen rumprobiert, um die SPS zurückzusetzen. Bis dato hatte ich noch keinen Erfolg.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn ich innerhalb der 40 Sekunden wieder einstecke, die Mail versendet wird und alles gut zu sein scheint, dann kommt in der 40. Sekunde trotzdem noch der Fehler.
Die Ausgangsvariable smtp.iErrorID wird auf "16#8003" bzw. "0x00001F43 The file replication service cannot be stopped. FRS_ERR_STOPPING_SERVICE" gesetzt.
 
Zuletzt bearbeitet:
Der Fehler 8003h ist auch in Ordnung. Dieser zeigt, dass ein Verbindungsfehler aufgetreten ist. Siehe auch im Anhang.

Mal eine andere Idee: Was passiert wenn du dein Timeout erhöhst (auf z.B. t#5m)? Wird dann trotzdem nach 40 sek. eine fehlende Verbindung angemeckert?
 

Anhänge

  • iErrorId.jpg
    iErrorId.jpg
    47,7 KB · Aufrufe: 4
Zuletzt bearbeitet:
Ja leider. Der Fehler tritt unabhängig von dem Timeout auf. Wenn ich meinen PC direkt an die SPS anschließe, was dem Fehlen des Mail-Servers gleichkommt, kann ich ja eingeloggt bleiben un zusehen was passiert. So habe ich ja auch das mit den 40 Sekunden herausbekommen.
Im Manual des FB_Smtp steht zwar folgendes, aber leider klappt es nicht.
Code:
[B]tTimeout:[/B] Maximale Zeit, die bei der Ausführung des Befehls nicht  überschritten werden darf.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Sieht so aus, als wird zuerst die Verbindung überprüft. Wenn diese nicht besteht, gibt er den Fehler aus und die Abarbeitung scheint beendet zu sein. :confused:

Eine Lösung deines Problems fällt mir sonst auch nicht ein. Doofes Teil! :rolleyes:
 
Hast du deine Mail an den Support allgemein oder an eine bestimmte Person geschickt? Habe schon schlechte Erfahrungen mit Mails an den allgemeinen Support gemacht. Da fühlte sich irgendwie niemand damit angesprochen.
 
Uff! Habe gefragt an wen ich da schreiben soll. Er hat gesagt "einfach an den Support". Hatte auch Gedanken, das sich da keiner angesprochen fühlt.:sm8:
Auch besonders weil der Mailtext nicht gerade kurz ist.
 
Zurück
Oben