# Device über Modbus TCP auslesen



## S_Liner (2 Dezember 2020)

Hallo zusammen, ich habe eine CPU1211C DC/DC/DC (6ES7 211-1AE40-0XB0 - V4.4) und möchte mit der unsere Sentron Pacs 3200 & 4200 auslesen. 

Ich habe mir mal dieses Beispielprojekt von Siemens mal runtergeladen, aber ich verstehe nur Bahnhof. 

Datenkommunikation zwischen S7-1200 und SENTRON PAC3200 über MODBUS TCP (Set 22) - ID: 40614428 - Industry Support Siemens

Die Sentrons sind alle miteinander vernetzt, nun möchte ich das meine CPU mir die Energiestände täglich einholt. Kann mir jemand helfen beim Auslesen der Werte aus den Sentrons? 

Ich nutze TIA V16.

Beste Grüße


----------



## DeltaMikeAir (2 Dezember 2020)

> Die Sentrons sind alle miteinander vernetzt, nun möchte ich das meine  CPU mir die Energiestände täglich einholt. Kann mir jemand helfen beim  Auslesen der Werte aus den Sentrons?


Woran hapert es denn genau?
Hast du dir das TIA Beispiel-Projekt mal runtergeladen und angeschaut?


----------



## S_Liner (2 Dezember 2020)

Ja genau, ich habe es runtergeladen und die Hardware auf meine CPU geändert. Dann habe ich das in meine CPU geladen. 

Aber die ganze Beschriftung und sonstiges verstehe ich überhaupt nicht. 

Trage ich nirgends die IP's von den Teilnehmern ein? Wo sind meine Werte falls sie gelesen werden? Ich komme damit überhaupt nicht klar..


----------



## escride1 (2 Dezember 2020)

Hi,

sei nachsichtig - ich hab mir des Beispiel nicht angeschaut weil ich es extra laden und hochrüsten müsste, schreib des grad aus dem Kopf .

Im Prinzip arbeitet Siemens immer mit dem MB_Client-Baustein.

Dort ist der Parameter Connect, daran kommt eine Variablenstruktur mit dem Datentyp TCON_IP_V4.
Darin enthalten sind sämtliche Kommunikationseinstellungen, die Werte werden alle in die Startwerte eingetragen vor dem ersten Laden, dann verschwinden die auch nimmer.

Unter anderem die Hardwareadresse Deiner CPU "Local PN Schnittstelle" z.B. mit 64, sollte HW* heissen
Dann Connection_ID - Diese darf Systemweit nur einmal belegt sein oder aber nur einmal kommunizieren falls man sie nicht verteilen will. Die 0 macht oft Probleme, also z.B. 16#00AA reintippen.
Conn_Established - TRUE wenn Deine Steuerung die Verbindung aufbauen soll (soll sie!, das TRUE durchgehend aktiv lassen, also in den Startwert und danach nimmer antasten)
Dann der Typ der Verbindung mit TCP, UDP, UDP(TCP), wobei ich TCP eintrage, also 11. Im Startwert müsste dann 16#0B stehen.
Du findest dort auch die Adressdaten im IP_V4-Format. Darin stehen als HEX-Code die IPs in den Startwerten. Hab ich immer mit dem Windows-Rechner umgewandelt von 192 nach 16#CB oder so.
Darunter kommt Remote Port - wenn nix geändert wurde steht dort 502
Dann Local Port - der steht dann in der Regel auf 0

Dann sobald der MB_Client im Projekt ist verlangt er unter anderem Mode etc.
Mode: 103
LEN=101 - Anzahl zu lesender Einträge
MB_DATA_PTR = Der Lesebereich. Mach einfach ein mal ein UDT und zieh dort 101 Reihen rein, alle mit Datentyp real. Dann diesen UDT in einem DB angeben und hiermit verlinken. Hier stehen später die Werte alle drin.
Da war nun noch eine Variable die zu vergeben ist mit dem Beginn des Lesebereichs. Das sollte auf 1 stehen glaub ich, evtl. 0. Unsicher, zu probieren.

Was wäre noch...die Error, Disconnect, Status etc. verschalten.
Da hab ich bei mir immer 
REQ=NOT MB_CLIENT_ERROR AND Comm_Enable AND NOT MB_CLIENT_BUSY
DISCONNECT=MB_CLIENT_ERROR OR MB_CLIENT_DONE OR NOT Comm_Enable

Im Prinzip sollte das dann so laufen und in dem DB mit dem UDT sollten die Werte gefüllt werden. Natürlich ohne Sinn erstmal.
Aber im Handbuch stehen die Offsets 1,3,5,7,9,.. in 2er-Schritten. In exakt der gleichen Reihenfolge stehen die im UDT. Eventuell noch ein paar real zu word umlegen und das sollte so klappen.

In diesem Beispiel wird im Akkord die Verbindung aufgebaut, gelesen, abgebaut. Der Comm_Enable müsste von Dir dann immer True werden zum lesen und rückgesetzt durch MB_CLIENT_DONE. Dann wird die Leitung nicht so ausgelastet.

Falls des nicht geht kann ich Dir morgen ein 16er-Projekt von mir zusammenschustern, ist vllt. anschaulicher.



Falls Du aber konkrete Fragen zu Deinem Programm hast - kennst des ja - zeig uns was


----------



## S_Liner (3 Dezember 2020)

Hallo, sorry für die späte Antwort, aber ich hatte auf Arbeit keine Zeit zu testen. Und erstmal einen riesen Dank für den ausführlichen Beitrag. Aufgrund des Zeitmangels auf Arbeit, habe ich es nun zu hause probiert.



> Im Prinzip arbeitet Siemens immer mit dem MB_Client-Baustein.
> 
> Dort ist der Parameter Connect, daran kommt eine Variablenstruktur mit dem Datentyp TCON_IP_V4.
> Darin enthalten sind sämtliche Kommunikationseinstellungen, die Werte werden alle in die Startwerte eingetragen vor dem ersten Laden, dann verschwinden die auch nimmer.
> ...


Also das habe ich verstanden

Bei mir sieht das jetzt so aus:




Ist das soweit erstmal richtig? Mit "MB_DATA_ADDR" weiß ich jetzt nicht was damit gemeint ist. 


Und woher weiß ich jetzt welches Sentron Pac ausgelesen wird? Ich musste ja nur die IP von meiner CPU angeben. In meinem Fall:

IP: 10.81.73.100
Sub: 255.255.255.0
Gateway: 10.81.73.1

In diesem Netzwerk sind nur Sentron Pacs. Wie ist das jetzt wenn ich alle lesen möchte? muss ich dann für jedes Sentron ein neues Netzwerk schreiben? 


Beste Grüße


----------



## escride1 (3 Dezember 2020)

S_Liner schrieb:


> Hallo, sorry für die späte Antwort, aber ich hatte auf Arbeit keine Zeit zu testen. Und erstmal einen riesen Dank für den ausführlichen Beitrag. Aufgrund des Zeitmangels auf Arbeit, habe ich es nun zu hause probiert.
> 
> 
> Also das habe ich verstanden
> ...


Den REQ verschalte gleichzeitig noch mit BUSY. Wenn er Busy ist und nochmals aufgerufen wird dann kommt der Fehler Zwischenaufruf.

MB_DATA_ADDR ist der Bereich bei dem auf dem fernen Gerät begonnen werden soll auszulesen. In diesem Fall also sollte es 1 sein.


> Und woher weiß ich jetzt welches Sentron Pac ausgelesen wird? Ich musste ja nur die IP von meiner CPU angeben. In meinem Fall:
> 
> IP: 10.81.73.100
> Sub: 255.255.255.0
> Gateway: 10.81.73.1


im "MB_Config".IP_Config steht die Adresse(IP) des Gerätes das Du erreichen willst. Subnetz und Gateway werden hier ignoriert, sollte also direkt erreichbar sein.
Falls es zwingend über anderem Sub bzw. IP-Bereich arbeiten muss dann müsste etwas anders konfiguriert werden, das habe ich aber nicht im Kopf ob und wie es geht, ich arbeite immer im gleichen Netz. Ich gehe gerade davon aus das CPU und PAC im gleichen Netz sind?!


> In diesem Netzwerk sind nur Sentron Pacs. Wie ist das jetzt wenn ich alle lesen möchte? muss ich dann für jedes Sentron ein neues Netzwerk schreiben?
> 
> 
> Beste Grüße


Ja, Du musst für jeden PAC ein solches Netzwerk erstellen mit jeweils einer eigenen Instanz des MB_Client und anderen Daten am MB_DATA_PTR sowie CONNECT, DONE, BUSY, ERROR.
Dabei muss beachtet werden das jede CPU nur max. X Verbindungen gleichzeitig aufbauen kann.
Daher habe ich bei mir für solche Anwendungen den MB_Cleint in einen FB gezogen und darin enthalten wird der MB_Client über ein Array adressiert. Hier wird dann allerdings jedes Mal die Verbindung aufgebaut und abgebaut.
Weitergeschaltet im Index des Array wird wenn der vorherige MB_Client-Aufruf DONE und NO ERROR anzeigt in 2 Schritten: 1-Disconnect, 2-Index erhöhen.
Gleichzeitig nutze ich den Index auch um die Connection_ID durchzuschalten, denn eine ID die mal hängt kann somit nicht alle anderen Geräte behindern und gleichzeitig ist hierdurch immer exakt nachvollziehbar welches Gerät Probleme machte.
Das würde ich aber erst angehen wenn der erste läuft .


----------



## S_Liner (3 Dezember 2020)

Hallo,



> Den REQ verschalte gleichzeitig noch mit BUSY. Wenn er Busy ist und nochmals aufgerufen wird dann kommt der Fehler Zwischenaufruf.


Alles klar, macht Sinn. 



> im "MB_Config".IP_Config steht die Adresse(IP) des Gerätes das Du erreichen willst.


Ok dann habe ich das falsch verstanden, dachte ich muss da die Adressen der CPU einstellen



> Subnetz und Gateway werden hier ignoriert, sollte also direkt erreichbar sein.
> Falls es zwingend über anderem Sub bzw. IP-Bereich arbeiten muss dann müsste etwas anders konfiguriert werden, das habe ich aber nicht im Kopf ob und wie es geht, ich arbeite immer im gleichen Netz. Ich gehe gerade davon aus das CPU und PAC im gleichen Netz sind?!


Das werde ich testen, kann die Sentrons auch nochmal beliebig umstellen. Im Grunde sind Sie aber in unserem Firmennetzwerk und somit auch im Netzwerk der CPU. Die Adressen wurden damals von unsere IT vorgegeben. 



> Ja, Du musst für jeden PAC ein solches Netzwerk erstellen mit jeweils einer eigenen Instanz des MB_Client und anderen Daten am MB_DATA_PTR sowie CONNECT, DONE, BUSY, ERROR.
> Dabei muss beachtet werden das jede CPU nur max. X Verbindungen gleichzeitig aufbauen kann.


Ok, das übt ja dann auch noch ein wenig  



> Dabei muss beachtet werden das jede CPU nur max. X Verbindungen gleichzeitig aufbauen kann.


Also mir würde es auch reichen, wenn die CPU einmal täglich den Verbrauchswert ausliest. 
Dann brauche ich doch nur eine weitere Bedingung an den REQ anlegen oder? Reicht dafür ein Impuls? Oder brauche ich an REQ ein dauersignal was durch "Done" oder "Error" unterbrochen wird?




> Daher habe ich bei mir für solche Anwendungen den MB_Cleint in einen FB gezogen und darin enthalten wird der MB_Client über ein Array adressiert. Hier wird dann allerdings jedes Mal die Verbindung aufgebaut und abgebaut.
> Weitergeschaltet im Index des Array wird wenn der vorherige MB_Client-Aufruf DONE und NO ERROR anzeigt in 2 Schritten: 1-Disconnect, 2-Index erhöhen.
> Gleichzeitig nutze ich den Index auch um die Connection_ID durchzuschalten, denn eine ID die mal hängt kann somit nicht alle anderen Geräte behindern und gleichzeitig ist hierdurch immer exakt nachvollziehbar welches Gerät Probleme machte.
> Das würde ich aber erst angehen wenn der erste läuft :grin:.


 
Ja darauf komme ich zurück wenn ich das Erste zum laufen bekommen habe.. :=)


Vielen Dank nochmal, Gruß


----------



## S_Liner (4 Dezember 2020)

So ich habe da jetzt mal getestet. Leider funktioniert das bei mir nicht. Auch nicht wenn ich ein Sentron direkt mit der SPS verbinde. 

Die Sentrons sind eigentlich von jedem Zugang unserer Firma mit Power Config zu erreichen. Ich muss bei den PC's die IP auch nicht statisch machen und an die IP's der Sentrons anpassen. Physikalisch sind die dann doch eigentlich alle in einem Netz. 










Sieht jemand ob ich in der Konfiguration einen Fehler habe?

Gruß


----------



## escride1 (4 Dezember 2020)

Am Status sehe ich 8188 als Fehler?
Das müsste der falsche Mode sein der bemängelt wird.
Ich hatte Dir 103 genannt, der sollte funktionieren.
Alternativ könntest Du den Mode auf 0 und MB_DATA_ADDR auf 40.001 stellen, dann die CPU aber neu starten damit die VErbindung sicher gekappt ist.

Du nutzt PowerConfig? Hast Du was anderes eingestellt am PAC ausser die IP?
Welches PAC genau hast Du?


----------



## escride1 (4 Dezember 2020)

Das Programm aus der letzten Anlage, jedoch eine 1500er, wobei das keinen Unterschied macht da ich den gleichen Baustein und Aufbau auch in den aktuellen 1200ern einsetze.
An den PAC stelle ich lediglich die IP sowie Umsetzung ein sowie das Passwort.
3200 oder 4200 kann ich beides gleichermaßen mit diesem Baustein erschlagen, in dieser Anlage ist ein 3200 eingebaut worden.

Warum ich bei ConnectionType auf 17 bin weiß ich gerade nicht, da 17 eigentlich nicht zulässig sein sollte. In einem anderen Proekt ist noch die 11 eingetragen.


----------



## S_Liner (4 Dezember 2020)

> Am Status sehe ich 8188 als Fehler?


Ich hatte einen Fehler bei der Parametrierung an "MB_DATA_PTR" gemacht. 
Jetzt ist der Ausgang "ERROR" nicht mehr dauerhaft "true", sonder er verbindet sich, dann "True" und Status zeigt "16#80A3". Dann geht der Fehler wieder "false" und der Status zeigt 7000..



> Du nutzt PowerConfig? Hast Du was anderes eingestellt am PAC ausser die IP?


Na am Pac ist die IP: 10.81.73.XX, Sub: 255.255.255.0 & Gateway: 10.81.73.1 eingestellt. Ich nutze die 3200'er und 4200'er...

Ich habe die Komplette Liste der Verfügbaren Liste in den DB als Struct eingetragen. die geht ja bis zum Offset 837. Komme ich da mit der Datenlänge 101 hin? Eigentlich würde mir auch nur der Wert (Offset 801 Wirkarbeit Bezug Tarif 1) reichen.

Gruß


----------



## escride1 (4 Dezember 2020)

Ok, 7000 heisst nix anderes als das nix aktiv ist.
80a3 müsste ein TCON-Fehler sein der bedeutet das die Verbindungs-ID bereits genutzt wird.

Am Status sieht man NUR dann den Status des MB_Client wenn die Verbindung aktiv ist bzw. durchlaufen ist. Ansonsten treten dort auch Status vom TCON, TDISCON, TSEND, TRCV, T_DIAG, TRESET auf, da diese vom MB_Client genutzt werden. 

In diesem Fall aber 80A3 vom TCON.
Stell die Connection ID auf was anderes als 1. Geh einfach hoch oder schau nach welche IDs frei sind. Hatte ja geschrieben ich hab da ne hohe Nummer dran stehen.


----------



## escride1 (4 Dezember 2020)

S_Liner schrieb:


> Ich habe die Komplette Liste der Verfügbaren Liste in den DB als Struct eingetragen. die geht ja bis zum Offset 837. Komme ich da mit der Datenlänge 101 hin? Eigentlich würde mir auch nur der Wert (Offset 801 Wirkarbeit Bezug Tarif 1) reichen.
> 
> Gruß



Nein.
Die UDT muss exakt gleich lang sein, sonst kommt ein anderer Fehler, hat aber mit 80a3 nix zu tun.

Wenn Du nur einen einzigen Wert brauchst hätte auch eine LEN von 1 und nur eine Real-Variable gereicht ^^.
Dann wäre 
Mode=103
Data_Addr=801
Data_Len=1
einzutragen.

edit:
Ach ja - wichtig ist das die Verbindung sauber getrennt ist bevor erneut geladen wird mit Änderungen am Mode etc. Sonst hängt sich die Verbindung evtl. auf was am einfachsten mit einem Neustart der CPU zu lösen ist.


----------



## S_Liner (4 Dezember 2020)

So also ich habe die ID geändert. Nun ist der Status dauerhaft bei 7002.


----------



## escride1 (4 Dezember 2020)

Ja, der Zwischenaufruf. Die CPU hast Du gestoppt und neu anlaufen lassen? Das behebt fast immer dieses Problem.


----------



## S_Liner (4 Dezember 2020)

Ja habe ich, ändert nichts..


----------



## escride1 (4 Dezember 2020)

Schau mal genau auf den Status - nicht das der switcht, das könnte auch vorkommen. Z.B. das er die Datenlängen anprangert und sich verschluckt oder hast des schon angepasst? Sonst stoss REQ doch mal nur per Flanke an, dann führt er es auch aus, sollte den Status dann aber nicht so schnell aktualisieren und somit leichter einsehbar zu sein.


----------



## S_Liner (4 Dezember 2020)

> Sonst stoss REQ doch mal nur per Flanke an, dann führt er es auch aus, sollte den Status dann aber nicht so schnell aktualisieren und somit leichter einsehbar zu sein.



Ja jetzt switcht er zwischen 7000 und 16#80A3 hin und her. Die ID habe ich jetzt mehrmals geändert, aber das Resultat bleibt das Gleiche..


----------



## escride1 (4 Dezember 2020)

Hattest Du die Datenlängen angepasst? Also len=101 und udt=101 einträge?
Sonst schieb len auf 1 und stell einfach nur ein word oder real dran damit das erstmal nicht stört, brauchst ja später eh nur.

Manchmal hat der Baustein seltsame Verhaltensweisen die sich nicht so ganz erschliessen lassen und meggert was anderes an, überschreibt seinen eigenen Status etc.


----------



## S_Liner (4 Dezember 2020)

> Hattest Du die Datenlängen angepasst? Also len=101 und udt=101 einträge?


Also ich habe 132 Einträge im UDT und nun auch 132 an LEN geschrieben. 



> Sonst schieb len auf 1 und stell einfach nur ein word oder real dran damit das erstmal nicht stört, brauchst ja später eh nur.


Auch das ändert nichts

Ich habe jetzt ein Sentron direkt mit der CPU verbunden. REQ schiebe ich nur über einen Impuls an. Nach dem CPU- Start Ist der Status 7000 --> 7001 --> 7002 und da bleibt er dann.

Das Sentron hat jetzt die IP 10.81.73.11 Sub: 255.255.255.0 und kein Gateway. 
Die CPU hat 10.81.73.100 Sub: 255.255.255.0 kein Gateway

Gruß


----------



## S_Liner (4 Dezember 2020)

> Ich habe jetzt ein Sentron direkt mit der CPU verbunden. REQ schiebe ich nur über einen Impuls an. Nach dem CPU- Start Ist der Status 7000 --> 7001 --> 7002 und da bleibt er dann.


Nein, das war quatsch.. Das Sentron was ich direkt verbunden habe läuft jetzt.


Es muss am Gateway liegen.. Wenn ich das einstelle funktioniert es nicht. 

Aber ich bekomme nicht alle Werte.. Denn bei einer LEN von über 102 bekomme ich wieder Fehlermeldungen am Status.


----------



## escride1 (4 Dezember 2020)

S_Liner schrieb:


> Nein, das war quatsch.. Das Sentron was ich direkt verbunden habe läuft jetzt.
> 
> 
> Es muss am Gateway liegen.. Wenn ich das einstelle funktioniert es nicht.
> ...



Seltsam mit dem Gateway, wir nutzen dies nie weil wir unsere Maschinen immer in einem NW-Segment haben und daher kein Gateway brauchen. Alles darüber hinaus läuft über Koppler etc.


Du müsstest bis max. 125 Register eintragen können, das ist Maximum pro Durchgang.
Wenn Du dahinter etwas lesen willst dann musst Du 2 Aufrufe einbauen.
Start bei 1, Länge 125
Start bei 126, Länge 125
...

Nur darauf achten das immer nur ein Aufruf aktiv ist.


----------



## S_Liner (4 Dezember 2020)

> Start bei 1, Länge 125


Also ich bekomme die Werte bis zu meinem 61 Eintrag im UDT. 



> Start bei 126, Länge 125


Wenn ich das so mache und "LEN" beispielsweise 10, 5, oder 25 angebe, dann sieht das im Status erstmal alles gut aus. Aber die Werte im DB sind alle 0.0... Bei LEN"125" ist der Bereich glaube ich zu groß, daher habe ich mit einem kleineren Wert probiert.



Ich kriege nochmal die Kriese hier.. :sb7:


----------



## Thomas_v2.1 (4 Dezember 2020)

Die Beschränkung auf max. 125 Holding Register liegt im Modbus-Protokoll begründet, da dort eine PDU max. 253 Bytes groß sein darf.


----------



## S_Liner (4 Dezember 2020)

So also es ist jetzt so, dass wenn ich ein Sentron direkt mit der CPU verbinde und das Gateway deaktiviere, alles wunderbar funktioniert. Die restlichen kleinen Schwierigkeiten habe ich auch beheben können. 

Nun muss ich nur mal sehen, ob ich eine Lösung finde wie ich die anderen Sentrons auslesen kann. Denn bei denen ist das Gateway aktiv und der Status bleibt 7002 stehen.


Und escride1, nochmal vielen vielen Dank für deine Ausdauer und Geduld bei der Hilfestellung.

Gruß


----------



## escride1 (4 Dezember 2020)

S_Liner schrieb:


> So also es ist jetzt so, dass wenn ich ein Sentron direkt mit der CPU verbinde und das Gateway deaktiviere, alles wunderbar funktioniert. Die restlichen kleinen Schwierigkeiten habe ich auch beheben können.
> 
> Nun muss ich nur mal sehen, ob ich eine Lösung finde wie ich die anderen Sentrons auslesen kann. Denn bei denen ist das Gateway aktiv und der Status bleibt 7002 stehen.
> 
> ...



Ist doch schön wenn das erste läuft. Dann hast Du die Basis für alle anderen.

Das mit dem Gateway kann ich leider nicht sagen wie weshalb. Wie geschrieben, nutze ich nicht, bisher .

Viel Erfolg und schicken Nikolaus


----------



## S_Liner (4 Dezember 2020)

Sollte ich dazu eine Lösung finden, kann ich Sie ja hier einstellen..


Beste Grüße


----------



## Wincctia (5 Dezember 2020)

Hallo Liner, 

kann es sein das im Gateway eine Firewall integriert ist und diese den Port Blokiert? 

Gruß Tia


----------



## S_Liner (5 Dezember 2020)

Mmh, dass kann ich so gar nicht beantworten.. 
Ich kenne mich mit sowas.nicht so gut aus...Aber wenn das so wäre, könnte ich die daten doch gar nicht auslesen oder?  Ich kann ja einfach die IP in meinen browser eingeben, oder mit der software PowerConfig die daten auslesen.. dazu muss ich nicht im.selben netzwerk sein.. 

Oder ist das wieder was anderes dann?


----------



## Wincctia (5 Dezember 2020)

Hallo Linear, 

so pauschal kann man das nicht sagen. 
Grundsätzlich gibt es verschiedene Art und Weisen wie eine Firewall Arbeit meist Portbasierend.
Grundsätzlich wäre es aber möglich das dein PG ^höher berechtigt ist^ damit du vernünftig arbeiten kannst. Wenn du aber vom Pg auf das Sentron kannst ist das schon super aus meiner Sicht. 
Ohne deinen Netzaufbau genau zu kennen leider etwas schwierig zu sagen. 


Andere Frage würdest du uns die Ip Konfiguration von deinem Pg der S7 Cpu und den Sentron mal Posten also IP Subnetz und Router Adresse die eingestellt ist. Evtl könntest du bitte Kurtz beschreiben wie dein Netzwerk aufgebaut ist soweit du das weißt. 

Gruß Tia


----------



## S_Liner (6 Dezember 2020)

Hallo Wincctia,



> Andere Frage würdest du uns die Ip Konfiguration von deinem Pg der S7 Cpu und den Sentron mal Posten also IP Subnetz und Router Adresse die eingestellt ist.



Die Sentrons haben folgende Einstellung:

*Sentrons:*
IP: 10.81.73.XX (10-40)
Sub: 255.255.255.0
Gateway: 10.81.73.1 

*CPU:*


IP: 10.81.73.100
Sub: 255.255.255.0
Router: 10.81.73.1

*PG:*
Also ich habe nicht nur ein PG, jeder Rechner in unserer Firma kann die Sentrons erreichen ohne eine statische IP einzustellen. 




> Evtl könntest du bitte Kurtz beschreiben wie dein Netzwerk aufgebaut ist soweit du das weißt.


Also da kann ich nicht viel zu sagen. Ich habe letztens ein paar neue mit unserem Netzwerk verbunden. Die waren dann nicht einfach so zu erreichen.. Unsere IT musste da erst was einstellen. 

Gibt es was, was ich die IT fragen könnte und was uns weiter hilft?

Gruß


----------



## Wincctia (6 Dezember 2020)

Hallo Linear, 

ok Interessant grundsätzlich sind deine Sentrons alle im selben Subnet —> heist der Router/ Gateway wird für diese Funktion nicht benötigt. 
Ich hätte noch einen anderen Test für die wie weit sind die Cpu und die Sentrons von entfernt?  Wäre es evtl. möglich die Cpu und ein Sentron von Euren Netz zu trennen und Evtl mittels 0815 Switch zu verbinden? 
das wäre der einfachste Test um zu erkennen ob es an eurer It liegt oder nicht. 

was hier für eine Frage an eure It wäre ob sie Evtl Vlans Verwenden und ob deine Sentrons und die Cpu im selben Vlan sind. 2te frage wäre dann ob zwischen den Geräte eine Portblockade stattfindet. 


Gruß Tia


----------



## Thomas_v2.1 (6 Dezember 2020)

Das finde ich auch mehr als seltsam, dass es ohne Gateway funktioniert und mit nicht. Da die IP-Adressen im gleichen Subnetz sind, macht das netzwerktechnisch eigentlich keinen Unterschied. Die SPS stellt weil im gleichen Subnetz einen Arp-Request mit der IP-Adresse des Sentron ins Netzwerk, und dann muss das Sentron darauf mit seiner Mac-Adresse antworten. D.h. das Gateway kommt da überhaupt nicht ins Spiel.

Da muss auf jeden Fall im Netzwerk etwas sehr seltsam oder zumindest nicht ganz sauber konfiguriert sein. Oder Firmwarebug in den Sentrons.


----------



## S_Liner (6 Dezember 2020)

> ok Interessant grundsätzlich sind deine Sentrons alle im selben Subnet —> heist der Router/ Gateway wird für diese Funktion nicht benötigt.


Soll ich dann in der CPU- Konfiguration den Router deaktivieren?



> Ich hätte noch einen anderen Test für die wie weit sind die Cpu und die Sentrons von entfernt?


Also die Sentrons sind im ganzen Werk verteilt. Meine CPU liegt sozusagen erst einmal bei mir in der Werkstatt auf dem Schreibtisch und die Sentrons sind so ca. 200-300m entfernt..



> Wäre es evtl. möglich die Cpu und ein Sentron von Euren Netz zu trennen und Evtl mittels 0815 Switch zu verbinden?


Ja das hat funktioniert. Da hatte ich aber das Gateway im Sentron und den Router in der CPU deaktiviert.




> was hier für eine Frage an eure It wäre ob sie Evtl Vlans Verwenden und ob deine Sentrons und die Cpu im selben Vlan sind. 2te frage wäre dann ob zwischen den Geräte eine Portblockade stattfindet.


Der IT der das alles aufgebaut hat, ist heute nicht mehr im unternehmen und der jetzige weiß nicht was er da gemacht hat. Es war ein riesen Akt neue Sentrons mit einzupflegen. Am Ende hat er einfach die Konfiguration eines funktionierenden Ports genommen und alles auf den neu verwendeten übertragen. Nur damit wir vom gleichen sprechen, Wir haben überall so kleine Schränge wo Switches drin sind. An diesen Switches ist eine IP und mit Port meine ich dann den Port wo ich mein LAN- Kabel einstecke. Diese sind natürlich nummeriert. 



> Da muss auf jeden Fall im Netzwerk etwas sehr seltsam oder zumindest nicht ganz sauber konfiguriert sein. Oder Firmwarebug in den Sentrons.


Unser aktueller IT ist nicht in der Lage mir einen Port so zu konfigurieren, das ich ein Sentron mit den oben genannten Einstellungen im Netzwerk finde. Ich musste ihm dann sagen, im Switch XX am Port YY sind Sentrons dran, dann nimmt er die Konfiguration und kopiert sie zu dem Port, den ich benötige.. 


Also werde ich morgen mal den Router in der CPU- Konfiguration deaktivieren, falls das nicht geht, könnte ich ja in den Sentrons das Gateway deaktivieren und schauen ob es dann vielleicht geht,



Beste Grüße


----------



## Wincctia (6 Dezember 2020)

Hallo Linear, 

ok verstehe nicht einfach deine Situation. 

ich würde allerdings als erstes mit meiner Cpu mal Vort anstecken gehen bevor ich an den Gateway Einstellungen zu drehen beginnen würde. 
denke nach deinem Test werden wir weiter kommen.

mfg Tia


----------



## PN/DP (6 Dezember 2020)

Kann es sein, daß mit "Gateway aktiviert" gar nicht das Gateway im IP-Netz gemeint ist, sondern ein Sentron-internes Gateway vom Ethernet zum RS485? Hat das Sentron eine RS485-Schnittstelle und kann es die Gateway-Funktion, ModbusTCP-Anfragen vom Ethernet zu RS485-Slaves durchzurouten? Wenn ja, dann kommt es auf die Device-ID in der Modbus-Anfrage an, ob mit der Anfrage das Master-Sentron oder ein RS485-Slave-Gerät gemeint ist.

Harald


----------



## S_Liner (7 Dezember 2020)

So ich habe jetzt mal etwas getestet. 

Also wenn ich ein Sentron direkt mit meiner CPU verbinde, dann funktioniert es tadellos. Daber ist auch egal ob ich die Adresse für das Gateway eingegeben habe oder nicht. Es muss also an unserem Netzwerk liegen. Oder?


----------



## S_Liner (7 Dezember 2020)

Jetzt habe ich die cpu mal mit dem selben swich wie die sentrons verbunden.. jetzt ist der status 7006 und bleibt da stehen.. 

Ich werde nochmal irre mit den dingern hier.. 🤮


----------



## Thomas_v2.1 (7 Dezember 2020)

Das scheint mir definitiv ein Problem im Netzwerk oder einer Switch-/Routerkonfiguration zu sein. Eigentlich kann das nur derjenige lösen der auch die Geräte konfigurieren kann. Du kannst ihm vielleicht ein paar Anhaltspunkte geben, evtl. mal mit einem Modbus-Programm auf dem PC testen wenn du dich damit an den Anschluss der CPU begibst. Das kann er dann auch mal selber testen. Aber eigentlich müsste man mit einem ping und/oder traceroute sehen können was da passiert.


----------



## S_Liner (8 Dezember 2020)

Es ist irgendwie schon komisch.. 

Habe jetzt versucht das Sentron zu pingen, kein Problem:



Aber die PLC erreiche ich nicht: 



Zum Abgleich noch die Konfiguration der PLC:



Unsere IT ist der Überzeugung das es ein Problem der PLC sein muss. Er kann Sie auch nicht erreichen. Es gibt auch nichts was ich da noch umstellen oder einstellen kann? 


Beste Grüße


----------



## Thomas_v2.1 (8 Dezember 2020)

Es ist dabei die Frage an welcher Stelle am Netzwerk, Switchport o.Ä. befindest du dich mit deinem PG?

Und ein ping ist der erste Test, der funktionieren kann aber nicht muss. Es gibt Administratoren die auch im LAN aus welchen Gründen auch immer ein ICMP blocken. Der zweite Test wäre ob du eine TCP Verbindung zum Gerät hinbekommst, im einfachsten Fall kann man dafür telnet auf der Eingabeaufforderung hernehmen, in dem du die Portnummer mit angibst. also z.B. "telnet 10.81.73.12 502" für den Modbus üblichen Port 502. Bei Erfolg wird das Fenster schwarz. Oder du nimmst ein Modbus-Master Testprogramm, das du am Besten vorher einmal direkt am Sentron testest damit du weißt wie und dass es grundsätzlich funktioniert. Wichtig ist beim letzten Test, dass du dabei den gleichen Port/Netzwerkanschluss wie die SPS verwendest, dann kannst du deiner IT definitiv sagen ob es an der SPS liegt, oder auch mit deinem PC nicht funktioniert weil u.U. ein Port blockiert wird.


----------



## S_Liner (9 Dezember 2020)

Ich habe jetzt den telnet- Befehl ausgeführt. Bei der IP 12 (ein Sentron Pac) wird der Bildschirm schwarz.
Bei der 112 (PLC) siehe Bild:



Wir haben ja mehrer Anlagen in unserem Netzwerk eingebunden. Ich finde jeden einzelnen Teilnehmer, ob per Ping oder im TIA unter "erreichbare Teilnehmer", nur diese ein SPS finde ich nicht. Das finde ich schon etwas komisch..

Hier noch die IP- Konfigurationen des PC's mit dem ich es versucht habe. 






Kann ich noch irgendwas an der SPS versuchen?

Gruß


----------

