# S7-1500 und libnodave oder AGLink?



## LowLevelMahn (22 Dezember 2012)

Hat einer von den 1500er Beta-Tester schon mal probiert ob libnodave oder AGLink irgendwie mit der Neuen kommunizieren können - oder wurde das Protokoll schon wieder verändert?


----------



## SiemensUser (15 März 2013)

Hi,
ich hab's mal probiert. Mit LibNoDave (Testlibrary) kann ich zwar eine Verbindung zur 1500er aufbauen, aber wenn ich z.B. einen Merker lesen will, erscheint die Meldung "Error: context is not supported. Step7 says:Function not implemented or error in telgram."
Scheinbar habe die noch nicht alles in Ihrer Firmware implementiert. 

Gibt es noch einen anderen Weg, Merker aus der S7-1500 zu lesen?

Gruß
Gerd


----------



## Zottel (15 März 2013)

Ich kenne das TIA-Portal noch nicht, aber so wie ich den Diskussionen hier entnahm, wird in der Regel nur noch symbolisch adressiert.
Fragen: 
1) existieren Merker überhaupt noch?
2) existieren sie in einem vorher festgelegten Umfang (wie S7-300/400), oder werden sie erst angelegt, wenn Programm oder Compiler welche benutzen? (DBs der 300/400 müssen ja auch erst irgendwie angelegt werden)
3) kann man absolute Adressen vergeben?
4) gibt es (optional?) eine Liste der Variablen und zugeordneter Adressen (wie MAP-File eines Compilers/Linkers)?

Wenn 1 nein, kann man keine Merker lesen. Versucht es doch mal mit Eingängen.
Sonst versucht es mal mit absoluten Adressen.
Immer hilfreich wäre auch die Ausgabe von testXXX mit der Option -d


----------



## Jochen Kühner (15 März 2013)

So wie Thomas_V2.1 hier beschriben hat : #65 werden die Merker wohl Symbolisch angesprochen. Ob diese auch noch absolut gehen? Kein Plan. Ich hab in meine ToolBox mal support eingebaut, damit dieser CRC Code ermittelt wird, dafür braucht man aber eine TIA installation (obs mit V12 geht, noch nicht probiert) und man muss ein paar zeilen code auskomentieren (da damit TIA DLLs genutzt werden) 

DBs kannst du ja aber wenn es absolut adressierte sind, so auslesen wie früher...


----------



## Zottel (16 März 2013)

Jochen Kühner schrieb:


> DBs kannst du ja aber wenn es absolut adressierte sind, so auslesen wie früher...


Das heißt, dass man in´m SPS-Programm einen absolut adressierten Schnittstellen-DB anlegen kann, den eine Libnodave oder AG-Link-Anwendung wie bisher lesen und schreiben kann?


----------



## Jochen Kühner (16 März 2013)

Zottel schrieb:


> Das heißt, dass man in´m SPS-Programm einen absolut adressierten Schnittstellen-DB anlegen kann, den eine Libnodave oder AG-Link-Anwendung wie bisher lesen und schreiben kann?



Bei der 1200er wars so, und so sollts auch bei der 1500er sein!
Wenn wir demnächst unsre 1500er im Gschäft bekommen, werd ich auf jeden Fall mal probieren auch support für die neue Varaiblenaddressierung einzubauen....

Was mich aber Stören würde, wäre, wenn Merker wirklich nur noch Symbolisch gehn, dann kannn man da das lesen nicht mehr optimieren!


----------



## Lars Weiß (16 März 2013)

Ich frage mich was aus z.B. OPC-Servern werden sollwenn große Datenmengen aus DBs gelesen werden müssen. Vielleicht gibts ja die Möglichkeit einen DB komplett auszulesen.


----------



## Jochen Kühner (16 März 2013)

Lars Weiß schrieb:


> Ich frage mich was aus z.B. OPC-Servern werden sollwenn große Datenmengen aus DBs gelesen werden müssen. Vielleicht gibts ja die Möglichkeit einen DB komplett auszulesen.



Bei alten absolut adressierten db's gehts ja noch. Und andere kannst du im OPC ja im Moment sowieso nicht nutzen!


----------



## Jochen Kühner (17 März 2013)

Lesen von S7 1200/1500...

Ich hab in meine Toolbox (http://siemensplctoolboxlib.codeplex.com) mal Lesesupport für die Symbolisch adressierten Variablen eingebaut. Kanns aber nicht testen, da Ich keine 1200er oder 1500er habe. Habs mit dem neusten s7comm Plugin für Wireshark geprüft, sah gut aus: http://www.sps-forum.de/showthread.php/28292-Wireshark-Plugin-für-S7-Protokoll/

Lesen geht dann so:

```
[COLOR=blue]var[/COLOR] tag = [COLOR=blue]new[/COLOR] [COLOR=#2b91af]PLCTag[/COLOR]();
 tag.TagDataType = [COLOR=#2b91af]TagDataType[/COLOR].Word;
 tag.SymbolicAccessKey = [COLOR=#a31515]"8a0e000124134d054000000a"[/COLOR];
 myConn.ReadValue(tag);
```


----------



## SiemensUser (18 März 2013)

also: 
Es gibt auch bei der 1500er noch "richtige" Merker. 
Ich kann nach wie vor in der Beobachtungstabelle den %MW100 lesen, obwohl dieses Wort gar nicht im Projekt (und in der Variablenliste) vorkommt.

Trotzdem erscheint beim Lesen mit LibNoDave der Fehler "Error: context is not supported. Step7 says:Function not implemented or error in telgram."
Diesen Fehler gibt es übrigens auch, wenn ich eine Adresse aus einem "richtigen" (nicht symbolischen) DB lese.
Es können also mit LibNoDave z.Zt. keine Daten aus der S7-1500 gelesen werden.

Inzwischen habe ich auch eine OPC-SW getestet, die mit AGLink Daten aus Siemens-Steuerungen ausliest. Auch hiermit geht's nicht. Mit der 1200er gibt es keine Probleme.

Gruß
Gerd


----------



## Mediator (18 März 2013)

Klingt als ob diese Funktion gesperrt ist. In den CPU - Eigenschaften / Schutz gibt es eine Checkbox zum Freigeben.


----------



## Jochen Kühner (19 März 2013)

Kann denn jemand mal das lesen von Symbolischen Varibalen über meine neue Funktion probieren? Ich hab im Moment noch keine 1500er (und auch keine 1200er) würd aber gern wissen obs funzt!


----------



## Jochen Kühner (19 März 2013)

SiemensUser schrieb:


> also:
> Es gibt auch bei der 1500er noch "richtige" Merker.
> Ich kann nach wie vor in der Beobachtungstabelle den %MW100 lesen, obwohl dieses Wort gar nicht im Projekt (und in der Variablenliste) vorkommt.
> 
> ...



Kannst du von einem solchen Lesevorgang mal eine Wiresharkaufzeichnung posten?


----------



## SiemensUser (19 März 2013)

Ich habe mit TestLibrary aus der DotNetSiemensPLCToolBoxLibrary eine Wireshark-Aufzeichnung gemacht:
1. Verbindung aufgebaut
2. MW3 gelesen (mit Fehler)
3. Verbindung abgebaut

Hier die WireShark-Datei: 
	

		
			
		

		
	

Anhang anzeigen S7-1500.zip


----------



## ronnie.b (19 März 2013)

Kannst du mal eine Wireshark-Aufzeichnung machen wenn du einen Merker mit TIA ließt?


----------



## SiemensUser (19 März 2013)

Ich habe mit dem TIA-Portal V12 
1. Verbindung aufgebaut
2. In einer Beobachtungstabelle MW3 gelesen (wird in jedem Zyklus inkrementiert)
3. Verbindung abgebaut

Hier die Wireshark-Datei von diesem Test:
	

		
			
		

		
	

Anhang anzeigen Wireshark S71500-TIA.zip


Gruß
Gerd


----------



## SiemensUser (19 März 2013)

Jochen Kühner schrieb:


> Lesen von S7 1200/1500...
> 
> Ich hab in meine Toolbox (http://siemensplctoolboxlib.codeplex.com) mal Lesesupport für die Symbolisch adressierten Variablen eingebaut. Kanns aber nicht testen, da Ich keine 1200er oder 1500er habe. Habs mit dem neusten s7comm Plugin für Wireshark geprüft, sah gut aus: http://www.sps-forum.de/showthread.php/28292-Wireshark-Plugin-für-S7-Protokoll/
> 
> ...



Ich habs mal mit den symbolischen adressierten Variablen versucht. Hier gibt's den gleichen Fehler, wie beim normalen Lesen.
Hier die entsprechende Wireshark-Datei:
	

		
			
		

		
	

Anhang anzeigen WireShark S71500 - SymbolRead.zip


Übrigens: In libnodave.net.cs hast Du in Zeile 1457 noch einen Fehler:
Statt             
[DllImport("libnodave_jfkmod.dll", EntryPoint = "daveAddVarToReadRequest")]
sollte hier sicher 
[DllImport("libnodave_jfkmod.dll", EntryPoint = "daveAddSymbolVarToReadRequest")]
stehen.

Gruß
Gerd


----------



## Jochen Kühner (19 März 2013)

SiemensUser schrieb:


> Ich habs mal mit den symbolischen adressierten Variablen versucht. Hier gibt's den gleichen Fehler, wie beim normalen Lesen.
> Hier die entsprechende Wireshark-Datei:
> 
> 
> ...




Oh danke, hab Ich gefixt.

So wie das ausschaut scheint die Kommunikation zur 1500er ja ganz anderst zu sein. Zumindest beginnen die Telegramme nach dem ISO Teil nicht mit 0x32 sondern 0x72, und 4 Bytes später kommt 0x32!

Mal schaun ob die daten nach 0x32 was mit den alten Telegrammen zu tun haben...


----------



## Mediator (19 März 2013)

@SiemensUser: hast du denn schon überprüft, ob diese Funktion in den CPU Eigenschaften/Schutz freigegeben ist? Wenn nicht, dann wird der Zugriff nicht funktionieren, andernfalls schon!


----------



## Thomas_v2.1 (19 März 2013)

SiemensUser schrieb:


> Ich habe mit TestLibrary aus der DotNetSiemensPLCToolBoxLibrary eine Wireshark-Aufzeichnung gemacht:
> 1. Verbindung aufgebaut
> 2. MW3 gelesen (mit Fehler)
> 3. Verbindung abgebaut



Hi,
kannst du mal eine kleine Visualisierung anlegen, und damit ein Merkerwort oder auch eine andere Variable aus der 1500 lesen?
Eine Variablentabelle nutzt auch schon bei der S7-300/400 die PG-Dienste und nicht die Variablendienste.


----------



## Jochen Kühner (19 März 2013)

Thomas_v2.1 schrieb:


> Hi,
> kannst du mal eine kleine Visualisierung anlegen, und damit ein Merkerwort oder auch eine andere Variable aus der 1500 lesen?
> Eine Variablentabelle nutzt auch schon bei der S7-300/400 die PG-Dienste und nicht die Variablendienste.



Am besten auch ein Merkerwort das nur in der Visu angelegt wird (falls das mit der 1500er überhaupt geht)


----------



## SiemensUser (20 März 2013)

Mediator schrieb:


> @SiemensUser: hast du denn schon überprüft, ob diese Funktion in den CPU Eigenschaften/Schutz freigegeben ist? Wenn nicht, dann wird der Zugriff nicht funktionieren, andernfalls schon!



Ich hab's geprüft. Steht auf "Vollzugriff"


----------



## SiemensUser (20 März 2013)

Ich habe mit einer kleine Visualisierung Merker gelesen.

Hier die Wiresharkdatei mit MW3 (inkrementierend und in Projekt vorhanden)
Anhang anzeigen S71500-Visu_MW3.zip


und hier die Datei mit MW67 (= 0, nicht im Projekt vorhanden)
Anhang anzeigen S71500-Visu_MW67.zip


Gruß
Gerd


----------



## Mediator (20 März 2013)

SiemensUser schrieb:


> Ich hab's geprüft. Steht auf "Vollzugriff"


 Sorry, ich meinte nicht die Zugriffsstufe (z.B. "Vollzugriff"), sondern die Option "Zugriff über PUT/GET-Kommunikation durch entfernten Partner (PLC, HMI, OPC, ...) erlauben".


----------



## SiemensUser (20 März 2013)

Mediator schrieb:


> Sorry, ich meinte nicht die Zugriffsstufe (z.B. "Vollzugriff"), sondern die Option "Zugriff über PUT/GET-Kommunikation durch entfernten Partner (PLC, HMI, OPC, ...) erlauben".



Oh, diese Option hatte ich gar nicht gesehen. Diese war nicht aktiviert. Nachdem ich sie aktiviert habe, kann ich aber trotzdem keinen Merker lesen. 
Mit TestLibrary erscheint die gleiche Fehlermeldung ("Error: context is not supported. Step7 says:Function not implemented or error in telgram.").


----------



## Thomas_v2.1 (20 März 2013)

SiemensUser schrieb:


> Ich habe mit einer kleine Visualisierung Merker gelesen.



Wie hast du die Variablen denn angelegt, symbolisch mit Verknüpfung zum SPS-Programm oder gibt es da eine Art Absolutadressierung?

Wenn das symbolisch ist, dann hat das zumindest mit der Zugriffsweise einer 1200 nichts mehr zu tun, und man hat sich für die 1500 etwas komplett neues überlegt.
Auf den ersten Blick scheint für das Lesen eines einzigen Merkerwortes einiges an Overhead im Protokoll vorhanden zu sein. Vielleicht relativiert sich das aber wenn mehrere dazukommen.


----------



## Mediator (20 März 2013)

SiemensUser schrieb:


> Oh, diese Option hatte ich gar nicht gesehen. Diese war nicht aktiviert. Nachdem ich sie aktiviert habe, kann ich aber trotzdem keinen Merker lesen.
> Mit TestLibrary erscheint die gleiche Fehlermeldung ("Error: context is not supported. Step7 says:Function not implemented or error in telgram.").


Also wenn du das aktiviert (und natürlich die Konfiguration geladen) hast, dann kann wer auch immer mit den S7 Variablendiensten auf Merker etc. (alles was Adressen hat) zugreifen, wie bei 300, 400 und 1200.


----------



## Jochen Kühner (20 März 2013)

Mediator schrieb:


> Also wenn du das aktiviert (und natürlich die Konfiguration geladen) hast, dann kann wer auch immer mit den S7 Variablendiensten auf Merker etc. (alles was Adressen hat) zugreifen, wie bei 300, 400 und 1200.



Und auch symbolisch wie bei der 1200er???


----------



## Mediator (20 März 2013)

Was du genau mit symbolisch meinst verstehe ich noch nicht. Ich dachte die ganze Zeit, dass wir über S7 Variablendienste sprechen, und die arbeiten mit Adressen, ob das Programm mit Symbolen arbeitet oder nicht.


----------



## Jochen Kühner (21 März 2013)

Mediator schrieb:


> Was du genau mit symbolisch meinst verstehe ich noch nicht. Ich dachte die ganze Zeit, dass wir über S7 Variablendienste sprechen, und die arbeiten mit Adressen, ob das Programm mit Symbolen arbeitet oder nicht.



Ja, aber bei der 1200er gibts da ne neue Funktion um z.B. Symbolische DBs zu lesen...  So wie hier: http://www.sps-forum.de/showthread.php/28292-Wireshark-Plugin-für-S7-Protokoll?p=423003#post423003


----------



## SiemensUser (21 März 2013)

Thomas_v2.1 schrieb:


> Wie hast du die Variablen denn angelegt, symbolisch mit Verknüpfung zum SPS-Programm oder gibt es da eine Art Absolutadressierung?



Die Adresse kann auch absolut eingegeben werden:



Gruß
Gerd


----------



## SiemensUser (21 März 2013)

Mediator schrieb:


> Also wenn du das aktiviert (und natürlich die Konfiguration geladen) hast, dann kann wer auch immer mit den S7 Variablendiensten auf Merker etc. (alles was Adressen hat) zugreifen, wie bei 300, 400 und 1200.



Ich habe die Konfiguration natürlich auch geladen, trotzdem kam die Fehlermeldung.
Nutzt LibNoDave denn überhaupt "S7 Variablendienste", die mit der Option "Zugriff über PUT/GET-Kommunikation durch entfernten Partner (PLC, HMI, OPC, ...) erlauben" freigeschaltet werden können?


----------



## Mediator (21 März 2013)

Jochen Kühner schrieb:


> Ja, aber bei der 1200er gibts da ne neue Funktion um z.B. Symbolische DBs zu lesen...  So wie hier: http://www.sps-forum.de/showthread.php/28292-Wireshark-Plugin-für-S7-Protokoll?p=423003#post423003


Weiß nicht, ob / wie symbolisch geht, aber absolut muss gehen, sonst ist was anderes faul. Z.B. eine 300 oder 400 kann so mit Put/Get auf eine 1500 zugreifen exakt wie auf eine andere 300 oder 400.
Geht denn der absolute Zugriff oder hast du nur symbolisch versucht?


----------



## SiemensUser (27 März 2013)

Jochen Kühner schrieb:


> So wie das ausschaut scheint die Kommunikation zur 1500er ja ganz anderst zu sein. Zumindest beginnen die Telegramme nach dem ISO Teil nicht mit 0x32 sondern 0x72, und 4 Bytes später kommt 0x32!
> 
> Mal schaun ob die daten nach 0x32 was mit den alten Telegrammen zu tun haben...



@Jochen Kühner
Hast Du schon mal geprüft, ob es Ähnlichkeiten mit dem alten Telegramm gibt?

Gruß
Gerd


----------



## Jochen Kühner (27 März 2013)

SiemensUser schrieb:


> @Jochen Kühner
> Hast Du schon mal geprüft, ob es Ähnlichkeiten mit dem alten Telegramm gibt?
> 
> Gruß
> Gerd



Ne hab im Moment keine Zeit zu. Da aber die alte Kommunikation auch geht wenn man es in den CPU Eigenschaften aktiviert, ist im Moment auch nicht so wichtig für mich!


----------



## SiemensUser (28 März 2013)

Jochen Kühner schrieb:


> Da aber die alte Kommunikation auch geht wenn man es in den CPU Eigenschaften aktiviert, ist im Moment auch nicht so wichtig für mich!



Welche CPU-Eigenschaft meinst Du genau? 
Ich kann mit LibNoDave keine Daten von der 1500 lesen, obwohl die Option "Zugriff über PUT/GET-Kommunikation durch entfernten Partner (PLC, HMI, OPC, ...) erlauben" aktiviert ist.


Gerd


----------



## Jochen Kühner (28 März 2013)

SiemensUser schrieb:


> Welche CPU-Eigenschaft meinst Du genau?
> Ich kann mit LibNoDave keine Daten von der 1500 lesen, obwohl die Option "Zugriff über PUT/GET-Kommunikation durch entfernten Partner (PLC, HMI, OPC, ...) erlauben" aktiviert ist.
> 
> Gerd



Ach so, Ich dachte es funzt... Hab im Moment keine 1500er das Ich in die Richtung was testen kann!


----------



## Thomas_v2.1 (28 März 2013)

Was sagt denn eigentlich die Baustein Onlinehilfe zu Put/Get in der S7-1500?
Im Kommunikationshandbuch steht nur: "Bei Verwendung der Anweisungen PUT/GET dürfen Sie nur Datenbausteine mit absoluter Adressierung einsetzen. Symbolische Adressierung von Datenbausteinen ist nicht möglich."
Auf welche Daten in der 1500 über Put/Get zugegriffen werden kann steht dort leider nicht.

Übrigens kann man bei der S7-1200 auch noch über Absolutadressierung auf den Merkerbereich zugreifen. Also dort funktioniert zumindest beides.


----------



## Mediator (28 März 2013)

Bei Zugriff über libnodave sind doch keine Anweisungen nötig, sondern nur die auch bei 300, 400 und 1200 unterstützten Variablendienste der CPU, die man in der 1500 allerdings zunächst freischalten muss!?
Diese Dienste arbeiten bei 1500 mit Absolutadressen, d.h. auf optimized DBs kann man so nicht zugreifen, aber sehr wohl auf Standart DBs und Merker.
Im Programm der CPU kann man ja trotzdem voll symbolisch arbeiten, und alle anderen DBs können trotzdem optimized sein.


----------



## Thomas_v2.1 (28 März 2013)

Mediator schrieb:


> Bei Zugriff über libnodave sind doch keine Anweisungen nötig, sondern nur die auch bei 300, 400 und 1200 unterstützten Variablendienste der CPU, die man in der 1500 allerdings zunächst freischalten muss!?
> Diese Dienste arbeiten bei 1500 mit Absolutadressen, d.h. auf optimized DBs kann man so nicht zugreifen, aber sehr wohl auf Standart DBs und Merker.



SiemensUser hat aber geschrieben dass der Zugriff auf Merker bei der 1500 nicht funktionierte, obwohl er das angeblich freigeschaltet hat.
Wenn ich eine 1500 zur Verfügung hätte, würde ich darum auch erstmal einen "nicht optimierten" DB anlegen, und versuchen daraus Daten zu lesen.


----------



## Mediator (28 März 2013)

Genau das wäre auch mein Vorschlag. Und zum Lesen könnte man ja auch evtl. auch mal einen anderen Client verwenden, z.B. Eine 300, 400 oder 1200 per Get, oder einen OPC - Server, ....
Nach den ganzen Diskussionen und Hinweisen auf Symbolik und magische Zahlen bin ich mir nicht sicher, ob wir überhaupt noch vom selben Protokoll gesprochen haben, und welches Protokoll jetzt nicht funktionieren soll.


----------



## Thomas_v2.1 (28 März 2013)

Ich hatte noch keine 1500 in den Händen.
Die 1200er hat zumindest zwei Varianten der Variablendienste. Der Zugriff über Absolutadressen, wobei der Zugriff auf Merker immer funktioniert und sonst nur auf als 300/400 kompatibel  angelegte Datenbausteine. Und der 'symbolische' Zugriff. Wobei es nicht wirklich symbolisch ist, sondern im TIA zu einem Symbol einer Nummernfolge und eine Prüfsumme generiert wird, und über diese Kombination auf Variablen in der Steuerung zugegriffen werden kann.

Die Bausteindienste und Variablentabelle laufen über eine neues Protokoll (72er).

Die Logfiles die SiemensUser hier angehängt hat sind auch dieses neue 72er Protokoll. Darum wäre es auch mal interessant zu sehen ob die 1500 einen wie bei der 1200 vorhandenen symbolischen Zugriff bietet, und ob das identisch aufgebaut ist.


----------



## Mediator (29 März 2013)

"Symbolisch" bringt den Vorteil, der auf der Folie unten fett markiert ist (kopiert aus PDF, das kürzlich hier zur Verfügung gestellt wurde).

Die Variante 'symbolische' Zugriff der Variablendienste wird aber bei 1500 nicht verwendet, jedenfalls nicht durch HMIs und nicht durch das TIA-Portal. Deshalb denke ich, dass diese Zugriffsart nicht funktioniert, sondern nur die Variante mit Absolutadressen.

STEP 7 Sprachinnovation 
Durchgängige symbolische Programmierung


 					 						[COLOR=rgb(100.000000%, 100.000000%, 100.000000%)]Konsistenter, typsicherer, schneller und flexibler Zugriff auf Daten[/COLOR]




 								[COLOR=rgb(58.000000%, 62.000000%, 66.700005%)]  [/COLOR]Das Programm oder *die Visualisierung verweist immer auf die richtige Variable, auch bei DB Änderungen* 

 								[COLOR=rgb(58.000000%, 62.000000%, 66.700005%)]  [/COLOR]Ermöglicht stets einen konsistenten Datenzugriff 

 								[COLOR=rgb(58.000000%, 62.000000%, 66.700005%)]  [/COLOR]Automatische Namensänderung im gesamten Projekt 

 								[COLOR=rgb(58.000000%, 62.000000%, 66.700005%)]  [/COLOR]Optimierte Bausteine um die beste Laufzeitperformance zu erreichen 

 								[COLOR=rgb(58.000000%, 62.000000%, 66.700005%)]  [/COLOR]Array-Zugriff mit Indexvariable in allen Programmiersprachen 

 								[COLOR=rgb(58.000000%, 62.000000%, 66.700005%)]  [/COLOR]Keine aufwändige Offsetberechnung mehr! 

 								[COLOR=rgb(58.000000%, 62.000000%, 66.700005%)]  [/COLOR]Intellisense für die schnellere Variablenfindung 

 

Seite 11 AS FA SB-PRM 2 Industry Sector 


S7-1500 


S7-1200 


 				 					 						[COLOR=rgb(100.000000%, 100.000000%, 100.000000%)]© Siemens AG 2013. Alle Rechte vorbehalten.[/COLOR]


----------



## Mediator (29 März 2013)

Die Kopie der Folie hat beim editieren noch viel besser ausgesehen, deshalb hier der Link (siehe Seite 11): http://www.sps-forum.de/attachments...-eindruecke-sw_simatic_step_7_v12_tech_de.pdf


----------



## SiemensUser (3 April 2013)

Hi,

ich habe noch einmal ein paar Wireshark-Mitschnitte gemacht. Hierbei wurde über die TIA-Beobachtungstabelle und über HMI auf eine absolute Datenbausteinvariable (DB10.DBW2) und auf eine symbolische Bausteinvariable (aus optimiertem DB10) gelesen:
Anhang anzeigen TIA_Wireshark_DB.zip

S7-1500-TIA_DB10_Sym: Zugriff über TIA-Beobachtungstabelle auf symbolische Datenbaustein-Variable (DB10.Variable)
S7-1500-TIA_DB10DBW2: Zugriff über TIA-Beobachtungstabelle auf (nicht symbolische) Datenbaustein-Variable (DB10.DBW2)
S7-1500-HMI_DB10_Sym: Zugriff über HMI auf symbolische Datenbaustein-Variable (DB10.Variable)
S7-1500-HMI_DB10DBW2: Zugriff über HMI auf (nicht symbolische) Datenbaustein-Variable (DB10.DBW2)

Ich hab's auch noch mal mit LibNoDave probiert. Aber hier gab es die bekannte Fehlermeldung. 
Hat einer von euch denn schon mal geschaut, ob evtl. das 32er Protokoll irgendwie in dem 72er Protokoll gekapselt ist?
Oder unterscheidet sich das Ganze grundlegend?

Gruß
Gerd


----------



## Mediator (3 April 2013)

Das in den Aufzeichnungen verwendete 72er Protokoll ist grundlegend anders. Aber das 32er Protokoll - Variablendienste mit Absolutadressen - wird ebenfalls unterstützt, sofern man es freigeschaltet hat. LibNoDave kann doch das 32er Protokoll mit Absolutadressen! Oder was hast du denn genau probiert?


----------



## SiemensUser (3 April 2013)

Mit LibNoDave kann ich keine Absolutadressen von einer 1500 lesen (Fehlermeldung: "Error: context is not supported. Step7 says:Function not implemented or error in telgram.")

Ich habe die Option "Zugriff über PUT/GET-Kommunikation durch entfernten Partner (PLC, HMI, OPC, ...) erlauben" ausgewählt (und übertragen).
Ich kann zwar eine Verbindung zur 1500er aufbauen, aber wenn ich z.B. MW3 oder DB10.DBW2 lese, erhalte ich die oben genannte Fehlermeldung.

Möglicherweise unterstützt die 1500er das 32er Protokoll nicht oder es muss in LibNoDave ein wenig angepasst werden.


----------



## Jochen Kühner (3 April 2013)

SiemensUser schrieb:


> Möglicherweise unterstützt die 1500er das 32er Protokoll nicht oder es muss in LibNoDave ein wenig angepasst werden.



Normalerweise sollte Sie! Da das gleiche Protokoll auch für PUT/GET Kommunikation von 300/400er CPUs verwendet wird! Sonst ist ja zu diesen auch keine Kommunikation mehr möglich (über Put/Get)


----------



## Jochen Kühner (3 April 2013)

Ich könnte mir höchstens noch vorstellen das die 1500er CPU auf den Verbindungstyp schaut, und der ist bei LibNoDave immer PG/PC! Vielleicht kannst du das mal noch mit meiner modifizierten Version probieren, da kann man nämlich den Verbindungstyp einstellen! (lieder ging das die ganze Zeit noch nicht von der Oberfläche).
Ich hab hier mal ne Version von meiner WPF VarTab anghängt, wo du auch den Verbindungstyp einstellen kannst, vielleicht läufts ja damit...


----------



## SiemensUser (3 April 2013)

Jochen Kühner schrieb:


> Ich könnte mir höchstens noch vorstellen das die 1500er CPU auf den Verbindungstyp schaut, und der ist bei LibNoDave immer PG/PC! Vielleicht kannst du das mal noch mit meiner modifizierten Version probieren, da kann man nämlich den Verbindungstyp einstellen! (lieder ging das die ganze Zeit noch nicht von der Oberfläche).
> Ich hab hier mal ne Version von meiner WPF VarTab anghängt, wo du auch den Verbindungstyp einstellen kannst, vielleicht läufts ja damit...



Hab's mal mit der 1500er probiert. 
Wenn ich unter "Config Connections" "OP" oder "PG/PC" wähle bekomme ich zwar eine Verbindung zustande, aber wenn ich die Lupe anklicke, wird mein MW3 nicht gelesen (obwohl vor Adresse und unter Connection ein grüner Punkt erscheint, die Werte für MW3 werden nicht aktualisiert). Eine Fehlermeldung gab es aber nicht. Allerdings wird die Oberfläche auch nicht mehr richtig aktualisiert. Sieht so aus, als ob es irgendwo hängt.
Wenn ich als Connection-Type "0-??" wähle, bekomme ich keine Verbindung zur Steuerung zustande.

Ein Gegentest mit meiner 300er funktionierte problemlos (sowohl PG/PC als auch OP)

Gruß
Gerd


----------



## Jochen Kühner (3 April 2013)

Also isses das wohl auch nicht! Kannst du denn von der 300er per Put/Get auf die 1500er Zugreifen?


----------



## SiemensUser (4 April 2013)

Ich habe noch nie mit GET Daten aus einer SPS ausgelesen. Wenn ich das richtig sehe, muss ich hierzu erst eine S7-Verbindung zwischen 300er und 1500er projektiert, oder?

Hier scheitert es aber schon, da meine 315-2 DP + CP343-1 TCP laut Step7 keine S7-Verbindung unterstützt.
Hat einer von euch evtl. eine Step-by-Step-Anleitung, wie ich vorgehen muss, um mit einer 315 + CP343-1 Daten aus der 1500er zu lesen?


----------



## Mediator (4 April 2013)

Habe damit zwar keine Erfahrung, aber vielleicht hilft das weiter: Siemens Industry Online Support - Automation Service, Automation Support, Simatic Service, Simatic Support, Technical Support, Technical Consulting .


----------



## Maddin* (31 Juli 2013)

Gibt es einen aktuellen Stand ob die Verbindung mit der 1500er geht? Bzw. ob es nach der Verbindung immer noch hängt?


----------



## Guenni-14 (28 Mai 2014)

Mit Hilfe einer S7-315-2 PN/DP können per Put/Get DB's aus der S7-1500 gelesen, als auch geschrieben werden. 
Die umgekehrte Richtung funktioniert ebenfalls. 
Da meine 315 schon recht alt ist, scheint doch noch ein grundsätzliches Problem in libnodave zu bestehen, was dazu führt, das die 1500'er beim Senden die Daten ablehnt.

Mit Snap7 funktioniert die Kommunikation zur 1500'er tadellos.


----------



## Thomas_v2.1 (28 Mai 2014)

Guenni-14 schrieb:


> Da meine 315 schon recht alt ist, scheint doch noch ein grundsätzliches Problem in libnodave zu bestehen, was dazu führt, das die 1500'er beim Senden die Daten ablehnt.


Hast du die Möglichkeit mit Wireshark ein Logfile der Kommunikation zu erstellen? Dann kann man prüfen woran es bei libnodave hakt. Am Besten ein Logfile mit libnodave wenn es nicht funktioniert, und dann mit Snap7 wenn es funktioniert.


----------



## Guenni-14 (29 Mai 2014)

Jo, kann ich Montag angehen.


----------



## Guenni-14 (3 Juni 2014)

Ich habe mir die Problematik von libnodave im Vergleich mit Snap7 und ComD.. nochmal genauer angeschaut.
Und es geht doch, zumindest bin ich nun in der Lage DBs (nicht optimierte natürlich) zu schreiben und auch zu lesen.

Wir lesen und schreiben recht große Datenbereiche aus der Steuerung und 
holen uns beim Start unserer Software die max. PDU Größe für jede Steuerung, um die Kommunikation zu optimieren.
Genau da geht's schief, denn libnodave liefert für die S7-1500 eine PDU Größe von 960 Bytes.

Begrenzt man nun die PDU Größe auf max. 480 Bytes läuft alles perfekt. 

Das Lesen und Schreiben von Ausgängen, Eingängen, ... geht leider nicht, aber dieses Problem hat auch Snap7 und das kommerzielle 
ComD..


----------



## Thomas_v2.1 (3 Juni 2014)

Guenni-14 schrieb:


> Wir lesen und schreiben recht große Datenbereiche aus der Steuerung und
> holen uns beim Start unserer Software die max. PDU Größe für jede Steuerung, um die Kommunikation zu optimieren.
> Genau da geht's schief, denn libnodave liefert für die S7-1500 eine PDU Größe von 960 Bytes.
> 
> Begrenzt man nun die PDU Größe auf max. 480 Bytes läuft alles perfekt.



Falls die 1500 mit einer PDU-Größe von 960 Bytes antwortet, sollte sie diese auch beherrschen. Womit lässt du dir die ausgehandelte Größe denn anzeigen? Hast du mal mit Wireshark geguckt welche Werte dort angezeigt werden?
Zur libnodave Version 0.8.5 gab es mal eine Änderung bei der Aushandlung der PDU Größe, da war aber eigentlich nur die Anzeige der ausgehandelten Größen falsch.


----------



## Guenni-14 (4 Juni 2014)

Die Funktion daveGetMaxPDULen hat bisher bei 300er, 400er und WinAC immer korrekte Werte geliefert.
Für eine CP1543-1 habe ich im Handbuch die PDU 480 gefunden. Für die hier vorhandene CPU 1513 ist mir noch nichts untergekommen.
Ich habe im Moment nicht die Zeit, mir die Werte aus dem Wireshark Mitschnitt raus zu fiddeln. Das Ding muss erstmal laufen.

Snap7 und auch das kommerzielle ComD.. arbeiten allerdings mit kleinen PDU Größen < 480.


----------



## DerSigi (4 Juni 2014)

Also lese mit libnodave problemlos einen Datenbaustein auf einer S7-1500 aus. Um das ans Laufen zu bringen gab es zwei Stolperfallen:

1. Der bereits erwähnte Haken in der Hardwarkonfiguration der CPU (Schutz - Zugriff über PUT/GET-Kommunikation erlauben)
2. libnodave mit 'Slot 0' (anstatt wie sonst bei der S7-300 üblich 'Slot 2') verbinden lassen (MPI=2, Rack=0, Slot=0)

LG
Sigi


----------



## Guenni-14 (5 Juni 2014)

Kommt halt drauf an, wie viele Datenworte du liest. Wenn du max. PDU Größe mit 960 nimmst, um die Kommunikation zu optimieren, kommst du zum Problem.


----------



## stevenv (5 März 2015)

Hallo,

hoffe die Frage passt hierher:

Verbindung zwischen  PC (Delphi, LibNoDave) und einer S7-1511-1PN klappt auf erste Versuche  bezogen (Byte lesen / schreiben) mit den "Spielregeln" die in den  vorherigen Beiträgen genannt wurden (Freigabe PUT/ GET-Kommunikation,  DBs nicht optimiert angelegt).

Ist es möglich / hat schon jemand  bei einer solchen CPU mit "daveGetBlockInfo" gearbeitet um die Länge  eines nicht optimierten DBs festzustellen, oder ist das mit einer  solchen CPU nicht mehr möglich?

Grüße
Stephan


----------



## Rainer Hönle (5 März 2015)

Diese Funktion wird meines Wissens nach seitens der CPU nicht unterstützt.


----------



## stevenv (5 März 2015)

ok, vielen Dank.

Passt dann leider zur Fehlermeldung (sinngemäß "nicht vorhanden").

Grüße
Stephan


----------

