PDA

View Full Version : Per ADS einen Nicht-ADS-fähigen Server ansprechen!



Superfly
05.05.2008, 09:13
Hallo! Ich bin neu hier und habe erst vor kurzem angefangen mit Beckhoff zu programmieren! Nun gleich mein erstes Problem! :confused:

Kann ich über das ADS-Protokoll einen normalen TCP-Server ansprechen und mit diesem kommunizieren? Oder ist hier eine spezielle Bibliothek erforderlich?

MFG Superfly!

drfunfrock
05.05.2008, 09:17
Erläutere doch bitte einmal genauer, was du willst. Einen Server über ADS ansprechen, heisst, dass dieser das ADS-Protokoll bedient und das bieten nur Beckhoff-SPSen.

Superfly
05.05.2008, 09:25
Es ist eine CX9000 von Beckhoff die als Client einen TCP-Server ansprechen soll. Der TCP-Server kann kein ADS. Nun wollte ich wissen ob man über ADS eine einfache TCP-Verbindung aufbauen kann?

drfunfrock
05.05.2008, 10:00
Es gibt von Beckhoff ein Packet für Twincat mit dem du TCP/IP-Verbindungen aufbauen kannst. Ist aber nicht einfach. Was soll dann dein Server machen?

Zottel
05.05.2008, 11:01
Es ist eine CX9000 von Beckhoff die als Client einen TCP-Server ansprechen soll. Der TCP-Server kann kein ADS. Nun wollte ich wissen ob man über ADS eine einfache TCP-Verbindung aufbauen kann?
Wenn der Server über ADS kommunizieren soll, müßtest du eine Anwendung installieren, die ADS versteht.
Für Windows hat Beckhof eine Bibliothek, die man in eigene Anwendungen integrieren und so ADS nutzen kann.
Falls du nicht Windows willst, könnte ich dir C-Quellcode zukommen lassen, der einen Teil des ADS-Protokolls implementiert. Er beruht auf der Spezifikation der Datenstrukturen und Telegramme von Beckhoff.

Superfly
05.05.2008, 11:45
Was soll dann dein Server machen?
Der Server ist aus einem Monitoringsystem implementiert. Hier kann man dieses System über TPC und den Befehlsketten die Werte konfigurieren! Dieses Bauteil ist nicht reprogrammierbar.
Also möchte ich auch die Befehle so senden wie sie vorhanden sind und das über TCP!


... eine Anwendung installieren,... ist hier also nicht möglich!


...Für Windows hat Beckhof eine Bibliothek, die man in eigene Anwendungen integrieren und so ADS nutzen kann... funktioniert das auch ander herum?


....könnte ich dir C-Quellcode zukommen lassen, der einen Teil des ADS-Protokolls implementiert... möchte ich mir gerne ansehen!

drfunfrock
05.05.2008, 12:24
Also erstmal macht TCP auf deinem Server gar nichts, denn du benötigst ein Protokoll das auf TCP aufbaut, wie z.B. ADS. Wenn ich es richtig verstanden haben, hast du ein Monitorsystem, dass Werte darstellt? Wenn dieses kein ADS kann, wie wäre es dann mit einer OPC-Anbindung?

Aber besser: Was macht der Server genau?

Grundsätzlich gibt es eine TCP-Bibliothek für Twincat, die du auf der CX installieren kannst. Du wärst dann allerdings genötigt, dass Protokoll des Servers (das ist nicht TCP) nachzuprogrammieren.

Zudem: Ich habe den Eindruck, du verwechselst Server und Client. Eigentlich ist der Server die SPS, also deine CX und der PC holt sich die Daten. Dann bräuchtest du entweder ADS oder einen OPC-Server.

Superfly
05.05.2008, 13:06
Also erstmal macht TCP auf deinem Server gar nichts, denn du benötigst ein Protokoll das auf TCP aufbaut, wie z.B. ADS. Wenn ich es richtig verstanden haben, hast du ein Monitorsystem, dass Werte darstellt? Wenn dieses kein ADS kann, wie wäre es dann mit einer OPC-Anbindung?

Aber besser: Was macht der Server genau?

Grundsätzlich gibt es eine TCP-Bibliothek für Twincat, die du auf der CX installieren kannst. Du wärst dann allerdings genötigt, dass Protokoll des Servers (das ist nicht TCP) nachzuprogrammieren.

Zudem: Ich habe den Eindruck, du verwechselst Server und Client. Eigentlich ist der Server die SPS, also deine CX und der PC holt sich die Daten. Dann bräuchtest du entweder ADS oder einen OPC-Server.

Also laut Herstellerangaben von dem Monitoringsystem sollte die Komponente als Server fungieren und die SPS, die Befehle sendet, den Client. In der Beschreibung des Systems wird ja von der TCP-Configuration gesprochen. Hier heißt es:"The SL P2000E shall be configured as server!"

Ich hab auch schon die TCP/IP Server.lib von Beckhoff besorgt! Nun möchte ich eine ganz normale TCP-Verbindung von Beckhoff und SL herstellen, da ja das MessageFormat keine Rolle spielen dürfte! Mit dem Browser des PC´s kann ich auf den Server des Sl zugreifen! Hier steht z.B. unter Produkt "Xport Device Server" und es können IP adress und Ports eingestellt werden.
Aber wieso kann ich die Verbindung nicht herstellen? In der Ausgabe des Bausteins steht nur eSOCKET_SUSPENDED!
Im Anhang hab ich mal den Screenshot des Webmanagers!

drfunfrock
05.05.2008, 13:46
Du hast einen Webserver eingebaut. Das Monitorprogramm selbst, sollte der Client sein, der dann über den Webserver die Daten ausgibt. Gibt doch einmal ein paar mehr Infos zum "Monitorprogramm"

Superfly
05.05.2008, 13:59
Das monitoringsystem(Druckmessung) ist eine Harwarekomponente mit integrieren WEBserver! An diesen soll man per TCP z.B. einen Befehl senden der so aussehen soll:"{ID1; & Command; Para1=3, Para2="ABC",Para[n]=4.5; CS=20,}"

Darauf sollte von dem Monitoringsystem die Antwort "{ID1; ~ Command; Para1=3, Para2="ABC",Para[n]=4.5; CS=20,}" kommen.

Das stellt das Format der Nachrichten dar! D
Die Generierung der Nachricht ist nicht das Problem, sondern der Verbindungsaufbau! Denn bekomm ich nicht hin! Den meines Wissen muss man bei TCP eine Verbindung aufbauen um dann anschließend daten austauschen zu können? Diese Vebindung bekomm ich nicht hin!

drfunfrock
05.05.2008, 14:36
Das erklärt vieles. Du sendest per TCP/IP einen String und bekommst etwas zurück. Du solltest einmal die Geschichte mit dem TCPIP Builder ausprobieren:

http://www.drk.com.ar/builder.php

Danach: Im Prinzip musst du den Client aus dem Beispiel von Beckhoff so umbauen, dass er mit deinem Gerät funktioniert.

Superfly
05.05.2008, 15:08
Danke für den Hinweis nun weiß ich zumindest das die Programmierung in TC stimmt! Denn nun kann ich mit dem PC als Server kommunizieren! Nur der SL Kit will noch nicht!

Zottel
05.05.2008, 15:41
Danke für den Hinweis nun weiß ich zumindest das die Programmierung in TC stimmt! Denn nun kann ich mit dem PC als Server kommunizieren! Nur der SL Kit will noch nicht!
Nimm doch einen PC als Client. Dazu rufst du das programm telnet.exe von der Kommandozeile auf. So kannst du eine andere andere portnummer als den telnet-Standard von 23 angeben. Die Portnummer vom SL-Kit mußt du sowieso wissen:
>telnet <IP-Adresse> <Portnummer>
In telnet kannst du nun den String eingeben und die Antwort sehen.
Wenn telnet sich aber erst gar nicht mit dem SL-Kit verbindet, ist auf der Serverseite etwas im Argen.

drfunfrock
05.05.2008, 15:54
Na ja, der TCPIP Builder ist ja eigentlich so etwas wie ein Telnet-Client und hat den Vorteil, dass er einfach flexibler ist.

Superfly
06.05.2008, 12:12
Vielen Dank für die Unterstützung! :D

Nach dem die TCP Verbindung funktionierte und der SL KIT nicht antwortete hab ich die Kommunikation mit der Originalsoftware getestet. Aber auch hier funzt die Verbindung nicht! :confused:

Nun haben wir einen neuen Kit getest und siehe da die Kommunikation funzt auch mit der SPS einwandfrei. Müssen den anderen Kit woll reklamieren!

Nochmal Danke für die Hilfe!!*vde*

cybertracepda
11.05.2008, 09:17
Hallo !

Also wenn dein Programm der Server ist, so muß die CPUxxx (Client) über TCP die Verbindung aufbauen.
Du musst auf jeden Fall den TCPIP-Server für XP oder CE (je nach Betriebssystem,. das am CX läuft) am CX installieren und dann in der SPS Code schreiben, der die Verbindung aufbaut.
Die ist relativ einfach, es gibt von Beckhoff im Infosystem ein Beispiel oder auch ich habe Code, der allerdings auf die Kommunikation mit einen Matarialflussrechner für Regalfahrzeuge zugeschnitten ist.
Das System ist aber ähnlich,zuerst Verbindungsaufbau mit dem Server, dann ein Frage und Antwortspiel.
Die ADS kannst du nur als Verbindung zwischen zwei oder mehreren CPU's oder als Kommunikation mit einem Hochspachenprogramm z.B Delphi (hab ich gemacht) verwenden..
mfg
Cybertracepda

Superfly
14.05.2008, 16:10
Nun funzt zwar die Verbindung, jedoch muss ich immer zweimal den Sende-Baustein aktivieren um eine Antwort einlesen zu können!

Gibt es dafür einen bestimmten Grund oder kann man dies irgendwie vermeiden:confused:

Gruß Superfly!