TIA Auslesen der IP-Adresse einer über DNS aufgebauten Verbindung

tomkai

Member
Beiträge
6
Punkte Reaktionen
1
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo zusammen,
ich habe aktuell gerade ein Projekt laufen, in dem ich mich mit mehreren CPU´s über deren Hostname verbinde. Die Verbindung wird über eine OUC (TCP mit SDT TCON_QDN) hergestellt. Das funktioniert soweit bereits tadellos. Jetzt brauche ich jedoch zu der CPU noch eine ISO-ON-TCP-Verbindung, welche jedoch nur über die IP-Adresse des Partners aufgebaut werden kann. Kann man die IP-Adresse der zuvor über QDN aufgebauten Verbindung ev. auslesen (DNS-Client der PLC)?
Der TDIAG liefert hier leider keine Info.
Hat das hier zufällig jemand bereits gemacht oder eine Info, ob dies überhaupt möglich ist?

Vielen Dank im Vorhinein für eure Inputs!

BG Tomkai
 

maxder2te

Well-known member
Beiträge
740
Punkte Reaktionen
220
Meiner Erfahrung nach geht das gar nicht.
Das gleiche Problem hast du beispielsweise, wenn du eine TCP-Verbindung passiv aufbaust - du hast aktuell aus dem Anwenderprogramm heraus keinerlei Möglichkeit, die IP-Adresse der Gegenstelle herauszfinden.

Aus meiner Sicht gibt es drei Lösungsansätze:

1. DNS-Abfrage selbst implementieren.
D.h. DNS-Anfrage per UDP an den DNS Server schicken. Auf die Schnelle habe ich keine fertige Implementierung für S7 gefunden, und auch der Aufbau der DNS-Abfragen war auf die Schnelle nicht herauszufinden. Ein Beispiel gäbe es mit der Oscat Network Library, da existieren Implementierungen des Bausteins DNS_CLIENT für Beckhoff und für CoDeSys - die sollten sich auf S7 portieren lassen.
Das Ganze hat den Nachteil, dass du die IP-Adresse(n) des/der DNS-Server im Anwenderprogramm kennen musst, und diese folglich aus der Hardware-Konfiguration auslesen musst oder schlimmstenfalls doppelte Datenhaltung hast. Zudem musst du die Mechanismen für zweiten, dritten, vierten DNS-Server selber bauen - nicht schön.

2. SNMP-Anfrage per DNS absetzen und die IP-Adresse aus dem Zielgerät auslesen
Sofern an deiner Gegenstelle oder am Kommunikationsweg SNMP nicht gesperrt ist, solltest du darüber die IP-Adresse auslesen können. Bausteine für SNMP aus S7-1500 heraus gibts.

3. Die Iso-On-TCP-Verbindung selbst per TCP-Verbindung nachbauen
D.h. du baust eine nackte TCP-Verbindung auf und baust das Iso-on-TCP-Protokoll für deinen Anwendungsfall nach.

lg
 
Oben