S7-1500 und libnodave oder AGLink?

LowLevelMahn

Level-1
Beiträge
766
Reaktionspunkte
90
Zuviel Werbung?
-> Hier kostenlos registrieren
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?
 
Zuletzt bearbeitet:
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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
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...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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!
 
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.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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:
Code:
 [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);
 
Zuletzt bearbeitet:
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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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!
 
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

Kannst du von einem solchen Lesevorgang mal eine Wiresharkaufzeichnung posten?
 
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:
Code:
 [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);

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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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 20206

Ü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


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...
 
@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 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.
 
Zurück
Oben