OSCAT Forum

network.lib => BECKHOFF => Thema gestartet von: j_poool am 19. Januar 2013, 11:46:09

Titel: Smtp_client Fehler
Beitrag von: j_poool am 19. Januar 2013, 11:46:09
Hallo!  :D
Habe Probleme beim versenden von Email mittels Smtp_client Baustein.
Alle erforderlichen Bibliotheken sind vorhanden, SMTP Server ist auf CPU installiert.

Danke für den Support


[gelöscht durch Administrator]
Titel: Re: Smtp_client Fehler
Beitrag von: peewit am 19. Januar 2013, 13:47:02
hallo

Siehe SMTP-Client Dokumentation !!

ERROR_T = 5
ERROR_C = 124518930

ERROR_C musst du als HEX Zahl betrachten

ERROR_C = 0x076C_0212
das ergibt
Ablauf-Schrittnummer 0x076C = 1900
Response-Code 0x0212 = 530

530 = SMTP authentication is required


kurz gesagt der SMTP Baustein kann keine Login verfahren anwenden , die auch von hotmail akzeptiert werden
ich vermute das hotmail ausschliesslich mit SSL übertragung nutzbar ist, und das unterstützt der baustein nicht

das einfachste ist wenn du dir für deine sps einen kostenlosen emailaccount bei gmx.de holst, und diesen account beim smtp-client nutzt, du kannst dir ja trotzdem die email dann auf deine hotmail adresse senden
du verwendest nur einen anderen absende account !!
 
Titel: Re: Smtp_client Fehler
Beitrag von: j_poool am 21. Januar 2013, 20:10:13
Hallo Peewit!
Danke für deine schnelle Antwort.
....nur stehe ich schon beim nächstes Fehler....(Anhang)

Vielen Dank fur dein Support.

[gelöscht durch Administrator]
Titel: Re: Smtp_client Fehler
Beitrag von: peewit am 24. Januar 2013, 16:59:48
hallo

error_t = 2                    -> Störung: SMTP Steuerkanal
error_c = 0xff00_0000  -> Connect fehler - Baustein kann keine tcp verbindung zum angegebenen Teilnehmer aufbauen

warum:
mehr kann ich auch nicht sagen, da ja alles anderen daten bei dir nicht sichtbar sind.


ich empfehle dir das demo in der network bibliothek auszuprobieren !

bibliothek als projekt öffnen
und dann im ordner "demo" -> programm "smtp_client_demo" benutzten


Titel: Re: Smtp_client Fehler
Beitrag von: j_poool am 25. Januar 2013, 14:11:41
Ok, vielen Dank. Ich werde nochmals ein paar Versuche durchführen

Danke  :)
Titel: Re: Smtp_client Fehler
Beitrag von: rrbd am 29. Januar 2013, 13:11:15
Hm, ich komme gerade mit demselben Problem nicht weiter, ich hoffe, Ihr seid einverstanden, dass ich mich trotz anderer SPS und Programmierumgebung mal einklinke.

Ich habe in einem ansonsten funktionierenden Textprogrämmchen SMTP_CLIENT eingebaut, um einen kurzen Betreff und Body an meine normale E-Mail-Adresse auf dem PC zu schicken.

Wenn ich über Debug-Umgebung manuell ACTIVATE auf 1 setze geht der Baustein für TIMEOUT (60s) auf BUSY, anschließend sehe ich 2 Störmeldungen, bekomme aber keine mail.

ERROR_T: 5
In der mir vorliegenden Beschreibung am Baustein nicht erklärt, Tabelle fehlt offensichtlich (lerrer weißer Bereich). Ob ich die Beschreibung von DLOG_FILE_TO_FTP? Übernehmen dar? Dann wäre es "Störung: ABLAUF – TIMEOUT" (so sthet's auch im Handbuch Netlib131)
ERROR_C: 655360 (Dezimalanzeige)
Das sagt mir leider nichts

Habe ich mal eine DNS_IP angegeben, wobei mich das DW verwunderte, ein DW ist ja doch sehr anders als eine IP Adresse. Wie mag der Baustein das auseinanderpulen? Ist so eine Angabe 81142439  auch ohne Punkte dazwischen eindeutig? Keine Ahnung! Verhalten ändert sich nun, ERROR_T: 0, ERROR_C: 65280 gleich von Anfang an.

Also lieber wieder weg damit.

Liegt's an einem falschen DTI? Ich habe keine mir Verständliche Angabe zum geforderten Format gefunden

sWhatFiles ist einfach leer.

SPS: Phoenix ILC 130 ETH 2.0.5.9062  Firmware V3.70.04 09/30/10 HW 01
Programmiersoftware: PC WORX EXPRESS
OSCAD: NetLib121 (und andere mehr, da funktioniert alles).
Netzwerk: SPS Teil meines Home-Hetzwerks (Via Netgear Router) mit fester IP,
Bausteinbeschaltung: Siehe Anlage

Das Demo hätte ich mir gern angesehen, verstehe aber nicht recht, wie ich den Inhalt des Ordners einbinden kann.

Wer kann mir helfen?

[gelöscht durch Administrator]
Titel: Re: Smtp_client Fehler
Beitrag von: peewit am 29. Januar 2013, 18:13:31
dns_ip sieht normalerweise etwa so aus 192.168.0.10
das sind 4 x werte zwischen 0 und 255 , also 4 x 1 Byte
und 4 byte ergeben auch ein dword
somit kann man eine ip-adresse auch als dword angeben, bzw. so wird das intern auch verarbeitet !

-------------------------------------------
du hast keine dns_ip4 adresse vorgegeben !

wenn du als mail-server adresse keine ip-adresse sondern einen dns-namen angibt , dann ist auch eine dns-abfrage notwendig
damit das funktioniert, musst du bei dns-ip4 eine ip-adresse eines dns-servers angeben, ansonsten kann der name nicht aufgelöst werden
weiters musst du beim email-server die adresse der email-server angeben, und nicht eine emailadresse obwohl das zum teil richtiges enthält.

z.b. wenn  die email adresse folgende ist "peewit@gmx.net"
ist die richtige mailserver adresse "mail.gmx.net"

die daten musst du dir von deinen provider besorgen
--------------------------------------------------------------------
du musst auch bei deiner sps in den network-setting eine gateway-adresse vorgaben, ansonsten wird auch nichts funktionieren
--------------------------------------------------------------------
demo-programm in der network.lib

du öffnest du network bibliothek als projekt und exportierst aus dem ordner "demo" das programm "smtp-client-demo"
und importierst es in dein eigenes projekt, dort kannst du es dann auch beliebig anpassen

vorher solltest du es aber so belassen und mal ausprobieren, denn es sollte ansich so auch schon funktionieren (mit dem vorgegebenen test-account)

wenn du dann nicht geht, kannst du mir wieder den fehler-code mitteilen, und dann schauen wir weiter .....

Titel: Re: Smtp_client Fehler
Beitrag von: rrbd am 29. Januar 2013, 20:08:18
Hallo peewit,
danke für die Rückmeldung!
dns_ip4: als Doppelwort mit hex-Gruppen bin ich nicht drauf gekommen, habe ich eingetragen. Das Ergebnis sollte 81.14.243.9 darstellen, das habe ich der Routerkonfiguration meines Netzwerks entnommen. Mein Eintrag ist zumindest gültig, ich hatte mich vorher vertippt und hatte dann eine Dauerfehlermeldung vor dem ersten Versand.
Mailserver: Vermutlich war das Bild wegen der unkenntlich gemachten Authentifizierung schwer zu deuten: Der mailserver ist "mail.bielefeldundbuss.de", die Variable enthält username:password@mail.bielefeldundbuss.de:110 (den Port hatte ich heute Vormittag noch nicht mit drin).  Die Daten sind erprobt, ich habe den Mailaccount auch auf meinem PC eingerichtet, das funktioniert.
Standard-Gateway: ist in der SPS hinterlegt

Weitere Variableninhalte:
DTI = 25. September 2008 um 10:01:00 per FSTRING_TO_DT mit #D. #N #Y #h:#m:#s = 48DAD4BC
sWhatFiles leer

Zwischenstand: Nun habe ich nach dem Ablauf von Busy Error_T=1 und ERROR_C=0000FF00. Wenn ich das richtig sehe also eine DNS-Client-Meldung. Wenn da nur 00 relevant wäre würde das ja "erfolgreich" heißen, aber ich habe keine Mail  an die angegebene postmaster-Adresse bekommen.
Beim nächsten Versuch im laufenden Betrieb (diesmal an info@bielfeldundbuss.de) verschwanden die Errormeldungen mit dem Busy=1, kamen aber nach Timeout zurück und ebenfalls ohne dass ich eine Mail bekommen hätte. Irgendetwas scheine ich also noch falsch zu machen, gibt Dir der nächste Screenshot Aufschluss?

Ich schaue mir zunächst mal das Beispiel gemäß deiner Anleitung an.

[gelöscht durch Administrator]
Titel: Re: Smtp_client Fehler
Beitrag von: peewit am 29. Januar 2013, 22:05:19
dns_ip4 = 81.14.243.9 das ergibt als dword    51 / 0e / f3 / 09    also 0x510ef309
und nicht das was du am baustein angegeben hast



die fehlermeldung besagt auch , das ein udp-telegramm an die angegebene adresse versendet wurde und keine antwort
erhalten wurde, wobei die anscheiend falsche adresse der grund sein könnte

benutze doch einfach den dns-server von google mit der ip-adresse 8.8.8.8
da kannst du dir sicher sein, das dieser auch immer erreichbar ist !

damit du deinen problemen mit der codierung von ip-adresse aus dem weg gehen kannst, benutzt die einfach eine der beiden
bausteine DWORD_OF_BYTE oder IP4_DECODE, so wie ich das bei allen demo programmen gemacht habe.

Titel: Re: Smtp_client Fehler
Beitrag von: rrbd am 30. Januar 2013, 15:48:22
Hallo,
LÄUFT!

Zumindest für einen Umsteiger aus einer ganz anderen SPS-Welt wären folgende Dokumentationsergänzungen sehr hilfreich:

Vielen Dank für Deine Hilfe und Geduld!
Titel: Re: Smtp_client Fehler
Beitrag von: peewit am 30. Januar 2013, 17:48:44
zeitzone

dti ist deine aktuelle systemzeit
dti_offset ist die zeitdifferenz deiner dti-zeit zur weltzeit (utc) und wird in minuten angegeben

wenn also dti deine aktuelle lokale zeit ist, dann muss nun weil keine sommerzeit ist ein dti_offset = 60 vorgegeben werden
dass bedeutet das die übergegebene zeit dti um + 60 minuten gegenüber der weltzeit abweicht.

ich habe den baustein gerade nochmals auf basis codesys getestet, und habe beim email empfang die korrekte zeit angezeigt bekommen.

du solltest bei dir nochmals alles überprüfen, sollte es trotzdem nicht klappen, so werde ich mir es wohl auf einer phoenix sps ansehen müssen.

Titel: Re: Smtp_client Fehler DTI_OFFSET
Beitrag von: rrbd am 02. Februar 2013, 19:35:57
Hallo,
ich habe noch mal alles überprüft und kann bezüglich der Zeitkorrektur DTI_OFFSET finden. Ich habe mein Testprogramm etwas erweitert, so dass mir die aktuelle Zeitkorrektur in Minuten sowie die Systemzeit in den Mailbody geschrieben werden. Dann habe ich ein paar mal ACTIVATE per Hand gesetzt und dann die Mailbodies und die Angegebene Zeit im empfangenen Mailheader in eine Tabelle eingetragen. Das Ergebnis:

Systemzeit                                    Mail-Zeit          Differenz
-------------------------------------------------------------------------
02.02.2013 17:20:08          Korrektur   0   02.02.13 18:20   00:59:52
02.02.2013 17:27:03      Korrektur   0   02.02.13 18:27   00:59:57
02.02.2013 17:27:36      Korrektur   -1   02.02.13 18:28   01:00:24
02.02.2013 17:30:19      Korrektur   -2   02.02.13 18:32   01:01:41
02.02.2013 18:11:08      Korrektur   0   02.02.13 19:11   00:59:52
02.02.2013 18:11:47          Korrektur   -60   02.02.13 20:11   01:59:13
02.02.2013 18:12:29          Korrektur   -120   02.02.13 21:12   02:59:31
02.02.2013 17:21:40          Korrektur   60   03.02.13 11:33   18:11:20
02.02.2013 17:22:04      Korrektur   30   03.02.13 12:04   18:41:56
02.02.2013 17:24:24          Korrektur   5   03.02.13 12:31   19:06:36
02.02.2013 17:25:27          Korrektur   2   03.02.13 12:35   19:09:33
02.02.2013 17:25:56          Korrektur   1   03.02.13 12:37   19:11:04

Oder anders: Für negative DTI_OFFSET ist die Korrektur wie zu erwarten,für Positive passiert irgend etwas merkwürdiges.

Wenn du's nicht mit einem eigenen Programm reproduzieren kannst schicke ich Dir gern mein Programm. Ich habe die Tabelle noch mal als .csv (ISO 8859-1, Semikolon) beigepackt

Bei meinen Tests fiel mir ein anderes Problem auf, das ich zunächst noch selbst etwas weiter untersuchen will (ohne dass ich mir viel davon verspreche): Der E-Mail-Versand arbeitet sehr unzuverlässig, vorgestern gelegentlich, heute mit geändertem Programm) meistens wird keine Mail verschickt, der Versuch endet mit
Error_T=1 und ERROR_C=FD000000
oder
Error_T=2 und ERROR_C=FD000000

Wollen wir das hier im Beckhoff-Hilferuf weiter erörtern oder lieber an besserer stelle einen neuen Thread öffnen?


[gelöscht durch Administrator]
Titel: Re: Smtp_client Fehler
Beitrag von: peewit am 02. Februar 2013, 22:39:46
Hallo

Ich glaube ich muss das nochmals erklären

mit dem parameter DTI und DTI_Offset wird beim email eingetragen zu welcher Weltzeit die email versendet wurde.

normalerweise laufen die uhren auf der sps als lokalzeit (so wird es von den meisten gemacht, was aber eigentlich nicht optimal ist, aber das ist ein anderes thema)

beispiel:

Es ist nun 22:00:00 weltzeit und in Wien in lokaler Zeit gerechnet 23:00 weilo es hier ja eine Stunde Zeitoffet zur Weltzeit gibt.

wenn du nun 23:00 beim email versenden angibst und eine zeitkorrektur von 60 angibst, so verwendet der baustein dann intern
22:00:00 weil der die weltzeit beim versenden angeben muss. Ein Email Server agiert ja unabhängig vom Email-Client das heisst von irgendwo auf der Welt können die Email kommen, und somit interessiert den Emailserver nur die Weltzeit !
Wenn du aber eine falsche Zeit beim Absenden angibst so wird die vom emailserver demensprechend als Absendezeit gerechnet und als weltzeit interpretiert, und wenn du die dann die empfangene email ansiehst siehst die wieder eine lokale zeit

beim emailversand passiert folgendes:

1. dns namen wird beim dns-server angefragt und mit der ermittelten ip wird der email server kontaktiert
2. das verbinden zum emailserver und die kommunikation dauert dann unterschiedlich lange, und kann einige sekunden dauern
3. die zeit wird aber erst zu einem bestimmten zeitpunkt aktuell übernommen und dem emailserver übergeben, das kann einige
    sekunden dauern (du kannst mal probeweise eine fixe zeit vorgeben, dann wirst du sehen dass die sekunden exakt passen
    also die abweichungen im sekunden bereich ist ziemlich sicher logisch nachvollziehbar

ich habe nochmals tests gemacht auf basis codesys mit dem referenzcode und da ist alles nachvollziehbar und korrekt
also der baustein ist ansich korrekt programmiert,

aber die zeitdifferenzen auf der pcworx plattform könnten ein reales problem sein , das ich mir noch ansehen muss !!
 
1. welche pcworx version verwendest du
2. welche sps hast du , und welche firmware version hast du drauf
Titel: Re: Smtp_client Fehler
Beitrag von: rrbd am 02. Februar 2013, 23:14:10
Hallo,

> Ich glaube ich muss das nochmals erklären

nein das ist soweit schon klar, es geht hier auch nicht um ein paar Sekunden.

Wie du in der Tabelle siehst, liegt die Zeit im Mailheader für positive DTI_OFFSET um ca 19:12:00 minus  DTI_OFFSET gegenüber der korrekten Zeit in der Zukunft. Bei mir klingelt da (oder bei anders 1092 Minuten) nichts, naheliegend wäre ja irgendein-Zahlenformats-Umrechnungs-Wasweißich-Fehler.

Bei negativen DTI_OFFSET erscheint im Mail-Header eine korrekte Zeit.

Ist jetzt kein allzu großes Problem, ich kann ja einfach die Eingabe an DTI passend manipulieren, damit die Zeitangabe im Mailheader stimmt, aber schöner wäre natürlich eine korrekte Funktion bei Nutzung der vorgesehenen Korrekturfunktion.

Hier die Angaben:
PS: Phoenix ILC 130 ETH 2.0.5.9062  Firmware V3.70.04 09/30/10 HW 01
Programmiersoftware: PC WORX EXPRESS 6.20.331
OSCAD: NetLib121
Titel: Re: Smtp_client Fehler
Beitrag von: peewit am 02. Februar 2013, 23:24:43
Hallo

habe es auf einer ilc 150eth nachgestellt, und auch den fehler gefunden

aufgrund dessen das bei pcworx es keine komplette date/time unterstützung gibt, habe ich diesen part extra angepasst
und dabei gibt es noch andere sachen die hier nicht gleich funktionieren

nähmlich "INT_TO_UDINT"

bei codesys wird eine negative zahl so gewandelt das das highword mit FFFF gefüllt wird, und bei pcworx wird das mit 0000 gefüllt
da ich diesen unterschied ja eigentlich gut kenne habe ich in der oscat_basic schon eine kombatibilität-routine integriert
die heisst "_INT_TO_UDINT" und bringt die gleichen ergebnisse wie bei codesys
nur habe ich es wieder einmal übersehen, das ich die andere routine verwende
(bin halt auch nur eine mensch !)

fehlerbereinigung (betrifft nur die pcworx version der network library)

die oscat_network bibliothek als projekt öffnen und den baustein SMTP_CLIENT öffnen

dort gehst du auf zeile 185 und tauscht du nachfolgend angeführte zeile aus (es ist nur ein "_" hinzugekommen
dann funktionieren auch positive offset vorgaben


SMTP_CLIENT (Zeile 185)
DTI := DTI + _INT_TO_UDINT(- DTI_OFFSET * 60); (* Minuten-Offset auf Sekunden umrechnen und addieren *)

kleine änderung grosse wirkung

viel spass noch, und danke für deine konstruktive mitarbeit
Titel: Re: Smtp_client Fehler
Beitrag von: rrbd am 03. Februar 2013, 21:10:54
Hallo,
danke für die Forschung, die schnelle Abhilfe mit eigenhändiger Änderung bleibt mir leider verwehrt, mit dem zu PCWORX EXPRESS mitgelieferten Funktions-Beschränktem WORX darf ich anscheinend nur angucken, nicht anfassen ;-)
Titel: Re: Smtp_client Fehler
Beitrag von: peewit am 04. Februar 2013, 13:22:32
hallo

im anhang findest du die lib, wo ich dir schon die kleine korrektur gemacht habe



[gelöscht durch Administrator]