Verbindung zu S7 CPU 314 CP343-1 Lean

ditj_vitja

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

Ich habe die im Titelbeschriebene S7 vor mir stehen und habe diese mit aktiven Verbindungsaufbau laufen.
Auf der Weboberfläche unter dem Punkt "projektierte Verbindungen" sehe ich auch, dass die SPS eine Verbindung aufbaut und auf einen Connect eine Partner IP-Adresse wartet.
Diese Verbindung des Partners möchte ich gerne mit einem JAVAtool von meinem PC aus realisieren.

Wenn ich jetzt in JAVA mit
skt
= new Socket("192.168.10.105", 2000); mich versuche zu der SPS zu connecten, um ihr dann Telegramme zu schicken, bekomm ich Exceptions weil sich das Tool nicht connecten kann. Auch im Windows cmd mit: telnet 192.168.10.105 2000 bekomme ich keine Verbindung zum Server...
Wenn ich die S7Beans von Java verwende, bekomme ich diese Fehelrmeldungen:

[00:00:03:047] Fehler: [S7DeviceSys[192.168.10.105:2000][R=0,S=0]] doOnS7Connection: itSDBSysCall throws exception:​
java.io.IOException: Keine oder fehlerhafte Antwort empfangen (S7NetAddress[host=192.168.10.105:2000,rack=0,slot=0])
[00:00:03:063] Fehler: [S7DeviceSys[192.168.10.105:2000][R=0,S=0]]
doOnS7Exception: Exception: java.io.IOException: Keine oder fehlerhafte Antwort empfangen (S7NetAddress[host=192.168.10.105:2000,rack=0,slot=0])
[00:00:03:063] Fehler: [S7DeviceSys[192.168.10.105:2000][R=0,S=0]]
doOnS7Exception: domainNameCall throws domain exception: java.io.IOException: Keine oder fehlerhafte Antwort empfangen (S7NetAddress[host=192.168.10.105:2000,rack=0,slot=0]) from: S7NetAddress[host=192.168.10.105:2000,rack=0,slot=0]
[00:00:04:063] Fehler: [S7DeviceSys[192.168.10.105:2000][R=0,S=0]]
doOnS7Exception: Exception: java.io.IOException: Keine oder fehlerhafte Antwort empfangen (S7NetAddress[host=192.168.10.105:2000,rack=0,slot=0])
[00:00:04:063] Fehler: [S7DeviceSys[192.168.10.105:2000][R=0,S=0]]
doOnS7Exception: domainNameCall throws domain exception: java.io.IOException: Keine oder fehlerhafte Antwort empfangen (S7NetAddress[host=192.168.10.105:2000,rack=0,slot=0]) from: S7NetAddress[host=192.168.10.105:2000,rack=0,slot=0]
[00:00:04:078] Fehler: [CPRightsTable] propertyChange: Fire CPRightsTableError: domainDataException

[00:00:04:078] Fehler: [S7CP(1)[192.168.10.105:2000]] propertyChange: Table of user rights not available!!!
[00:00:04:078] Fehler: [S7Device(1)[192.168.10.105:2000][R=0,S=2]] propertyChange: Table of user rights not available!!!​


Ich bekomm das beim besten Willen nicht hin mich zu der projektierten TCP-Verbindung zu connecten.. und hoffe nun auf Hilfe..

Danke schonmal für die Hilfe...
 
Also ich weiss nicht, ob jedem klar ist was ich eigentlich will oder nicht?

Im Grunde möchte ich einfach nur über TCP mit JAVA Telegramme an meine SPS schicken. Je nach Telegramm soll die SPS mit bestimmten Aktionen (Ausgänge ein oder aus) darauf reagieren UND nach Fertigstellung der Aktion soll ein (Quitier-)Telegramm wieder zurück an das Javaprogramm geschickt werden.
Sooo :) das ist eigentlich das was ich vorhabe mit meiner S7CPU, meiner S7CP und meinem PC zu machen.

Kennt jemand irgendeinen Weg diese Problemstellung zu lösen?
Ich bin echt für jede Hilfe dankbar!


Gruß
Viktor
 
Hi,

ich bin zwar kein Java-Spezi:rolleyes: aber ich weiß das die Lean-CP in ihrer Funktionalität etwas eingeschränkt ist.
Deshalb setzt man häufig auch die Advanced-CP ein.

Haste mal die beiden CP's verglichen was die so können?

Gruß
Move
 
Japp die Advanced kann schon mehr ist schon richtig...
Aber die Lean:

S7 CP für Industrial Ethernet TCP/IP mit SEND-RECEIVE- und FETCH-WRITE-Schnittstelle, PROFINET IO-Device, lange Daten, UDP, TCP, S7-Kommunikation (Server), Routing, BG-Tausch ohne PG, 2-Port Switch, 10/100 Mbit, Initialisierung über LAN, IP-Multicast, DHCP, IP-Konfiguration über DHCP/FB, SNMP, NTP, Web-Diagnose, Firmware V2.0

Das rotmarkierte sagt mir doch eigentlich, dass ich über tcp mit ihr kommunizieren kann..

Ich habe jetzt was neues gefunden von libnodave 0.1(java)
http://sourceforge.net/projects/lib...e-java.0.1/libnodave-java-0.1.tar.gz/download

SOOO wenn ich da die Testklasse testISO_TCP mal losstarte bekomm ich auch nur merkürdigen Kram, den ich überhaupt nicht nachvollziehen kann...Ich befürchte, es liegt einfach an meinen mangelnden SPS Kentnissen, denn ich weiss echt nicht wirklich wie ich die CPU zu programmieren hab..
Hätte jemand vielleicht ein BSP. das ich einszueins verwenden kann um zb. einen string von der sps an das oben erwähnte libnodave java zu schicken? ich steh hier echt aufm Schlauch und hoffe auf ganz ganz viel Hilfe.. :)

Gruß
Viktor
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was für eine Verbindung hast du in deiner SPS denn angelegt?
Eine TCP-Verbindung zu einem unspezifierten Partner, dann IP und Port angegeben?

Wenn du dort "aktiven Verbindungsaufbau" auswählst, versucht sich die SPS mit der entsprechenden Gegenstelle zu verbinden. Du bräuchtest dann einen TCP-Server und keinen Client. In dieser Betriebsart baut die SPS aber nur eine Verbindung auf. Der Datenaustausch muss mit den AG_SEND/AG_RECV Bausteinen in der SPS ausprogrammiert werden.

Die anderen Betriebsarten (Fetch/Write) sind nur im passiven Modus möglich (solltest du eigentlich beim Anlegen der Verbindung in Netpro gesehen haben).

Das Fetch/Write Protokoll ist dir bekannt? Dokumentation gibt es dazu von Siemens.
 
Ich habe eine unspezifizierte tcpverbindung gemacht genau. Und mit aktiven Verbindungsaufbau genau. Aktiver Verbindungsaufbau heisst also, dass die SPS der Client ist und wenn ich den HAcken nicht reinmache, dann ist passiver Verbindungsaufbau, also SPS Server? Hab ich richtig verstanden, ja?

Ich habe bei der Verbindung Partner IP und Port angegeben, wenn ich jetzt mit den Informationen einen Server starte sollte sich die SPS dann automatisch auf meinen Server verbinden? oder müssen erstnoch irgendwelche Bausteine angestoßen werden?

hast du evtl nen Link für mich für die Fetch/Write Protokolle?
Ich habe in NetPro nur eine SIMATIC 300 Station eingerichtet mit dem CPU und dem CP und natürlich den Ein - und Ausgängen. Eine weitere Station habe ich da nicht mehr eingefügt, ist das denn auch richtig?
Ein PG/PC muss ich da nicht mehr reinmachen, oder?


Hast mir schon weitergeholfen denke ich :)
Danke
 
Ich habe eine unspezifizierte tcpverbindung gemacht genau. Und mit aktiven Verbindungsaufbau genau. Aktiver Verbindungsaufbau heisst also, dass die SPS der Client ist und wenn ich den HAcken nicht reinmache, dann ist passiver Verbindungsaufbau, also SPS Server? Hab ich richtig verstanden, ja?
Also "nicht aktiv" sollte doch passiv sein.

Ich habe bei der Verbindung Partner IP und Port angegeben, wenn ich jetzt mit den Informationen einen Server starte sollte sich die SPS dann automatisch auf meinen Server verbinden? oder müssen erstnoch irgendwelche Bausteine angestoßen werden?
Wie geschrieben, wenn du "aktiver Verbindungsaufbau" anhakst, benutzt du die Send/Receive Schnittstelle. Dann baut die SPS bzw. der CP nur die TCP Verbindung auf, für den Datenaustausch ist das SPS-Programm zuständig.

hast du evtl nen Link für mich für die Fetch/Write Protokolle?
Auf die schnelle ist das Protokoll z.B. in dem dort verlinkten PDF beschrieben:

http://support.automation.siemens.com/CH/view/de/23592043

Und du solltest dir mal bei Siemens die PDF zu industriellen Kommunikation ansehen. Da sind alle Varianten der Kommunikation erläutert, mit Vor- und Nachteilen.

Ich habe in NetPro nur eine SIMATIC 300 Station eingerichtet mit dem CPU und dem CP und natürlich den Ein - und Ausgängen. Eine weitere Station habe ich da nicht mehr eingefügt, ist das denn auch richtig?
Ein PG/PC muss ich da nicht mehr reinmachen, oder?
Du musst kein PG anlegen, du kannst auch über eine unspezifizierte Verbindung gehen. Dann musst du die IP-Adresse und Port des Partners angeben.
Du kannst aber auch eine "Andere Station" einfügen und dieser die IP-Adresse deines PCs geben, und die Verbindung zu dieser Station anlegen. Ist für die Funktion unerheblich, nur für Dokumentationszwecke finde ich das schöner wenn man im Netpro gleich alle Teilnehmer sehen kann.

Du solltest dir vielleicht mal prinzipiell überlegen, in welcher Weise du mit der SPS kommunizieren willst. Du hast oben zumindest alle Varianten durch, da wären:
1.) nackte TCP-Verbindung
2.) Fetch/Write
3.) S7-Kommunikation (libnodave)

Entscheide dich erstmal für eine der drei Varianten.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Geil Danke!!! Ich habe jetzt eine Verbindung zur projektierten TCP-Verbindung herstellen können.

Ich habe nun eine passivie Verbindung gemacht und dennoch Betriebsart Send/Receive ausgewählt, weil es ja auch zur Verfügung steht.
Muss ich nun dennoch die FETCH/WRITE benutzen?
 
Ich habe mir nun mal ein Beispiel rausgesucht aus einem Java_Applet.
Das letzte BSP ganz unten ist es und ich habe auch alles in Simatic so eingestellt, jedoch scheint es so auszusehen, als ob die SPS mir keine Daten schicken würde.. :(
Die PDF hab ich angehangen es handelt sich um das letzte Beispile mit dem OB35.

Vielleicht seht ihr was, was ich nciht sehe... :/


Danke vielmals!!
 

Anhänge

  • Applets__Java.pdf
    718,2 KB · Aufrufe: 34
Was hast du denn mit diesen Java Beans vor? :confused:
Das ist doch eine ganz andere Baustelle. Dazu braucht a) keine Verbindung projektiert zu werden, und b) funktionieren die Imho auch nur in mit einem IT-CP.

Ich schreibs nochmal: Mach dir erstmal Gedanken was du vorhast! Oder willst du nur alle Varianten durchprobieren?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Thomas,

Ich versuche wie ein Verrückter einen Datenstring von der SPS über TCP auf meinen Rechner zu bekommen und das versuche ich eben auf allen mir einfallenden Wegen..

Mein jetziger Stand ist der, dass ich den AG_SEND der SPS aufrufen kann und erfolgreich einen String an mein Javatool schicken kann.
Ich lese den Inputstream mit der Klasse Scanner ein und das Problem hier ist, wenn ich debuge auf das Objekt der KLasse Scanner, dann sehe ich den String im HeapCharBuffer(buf) mehrfach drin.
Kann diesen aber nicht erreichen und nicht auslesen..
Also im Grunde sehe ich zwar, dass ich einen String bekomme von der SPS, kann aber nicht drauf zugreifen..
 
Zurück
Oben