# Libnodave <--> S7-1200



## tobl2002 (20 Oktober 2009)

Hallo.

nachdem ich mit einer S7-300 mit Libnodave sehr zufrieden. Jetzt mal was neues:

Hat einer schon mal einer mit Libnodave und einer S7-1200 rumprobiert? Gibt es irgendwelche Probleme dabei?

Gruß
Tobl


----------



## steyen (23 Oktober 2009)

Hallo zusammen, diese Frage wollte ich ebenfalls stellen und schliesse mich deswegen gleich mal an.

Die Frage ist, ob das in der S7-1200 schon integrierte ISOoverTCP verwendet werden kann, denn seither musste man ja auf externe Module zurückgreifen um diesen Standard zu verwenden und die S7-1200 hat es jetzt schon on Board. Muss man den Port weiterhin auf 102 belassen oder wie üblich bei TCP verbindungen über Port 2000 gehen.

Vielen dank schon mal für alle Hilfe

Gruß Steffen


----------



## tobl2002 (23 Oktober 2009)

Wir haben uns bei dem aktuellen Projekt auf Grund von Zeitmangel für eine S7-200 entschieden. 

Eine S7-1200 habe wir aber bestellt, und ich werde das in den nächsten Wochen mal ausprobieren, und meine Erfahrungen berichten.


----------



## steyen (23 Oktober 2009)

Dem kann ich nur beipflichten, habe aber schon eine im Hause, warte aber noch darauf, das diese angeschlossen wird.


----------



## marcengbarth (25 Oktober 2009)

Scheint wohl was geändert worden zu sein:

http://sourceforge.net/projects/libnodave/forums/forum/205656/topic/3367905?message=7564735


----------



## steyen (27 Oktober 2009)

Da dies unser erstes Projekt mit der Library LibNoDave ist, kann ich nicht viel Feedback geben, was die besagten Änderungen angeht. Aber wir haben nach einigen Versuchen und anfangsschwierigkeiten doch eine Gute Kommunikation mit der S7/1200 herstellen können und auch erfolgreich in vordefinierte Datenbausteine schreiben bzw. lesen können.
In/Out Bereiche haben wir noch nicht getestet, da das Produkt bis zur Messe nächste Woche fertig sein muss haben wir uns lediglich bisher auf 2 Byte lesend und 2 Byte schreibend geeinigt.
Die Verbindung erfolgt über den in der Steuerung schon implementierten IsoOverTcp statt und wird über den Port 102 (vorbelegt) angesteuert.

Gruß Steffen


----------



## marcengbarth (27 Oktober 2009)

Klingt interessant, ich hab zwar eine 1200er hier liegen, hab aber LibNoDave noch nicht damit getestet.


----------



## tobl2002 (29 Oktober 2009)

Hallo steyen.

Welche einstellungen hast du für Rack und Slot? ich habe es bereits mit verschiedenen einstellungen ausprobiert, aber bekomme immer die meldung das die CPU nicht vorhanden ist, auch wenn ich die per Ping ansprechen kann. beim Step7 Basic sieht es so aus als wenn der slot 1 sein müsste. 

Gruß
Tobl


----------



## marcengbarth (30 Oktober 2009)

Hallo,

also mit Rack 0 und Slot 1 bekomme ich schon mal eine Verbindung zur 1200er. Die Cycletime pendelt zwischen 0 und 31ms. 
Allerdings bekomme ich keine Daten gelesen. Ein GetDBSize(1) (DB1 existiert auch) liefert leider 0 zurück. 
Die MaxPDUData wird mit 216 Byte angezeigt.

Jemand eine Idee?

@steyen: Wie bekommt ihr denn Daten aus bzw. in einen DB?


----------



## steyen (30 Oktober 2009)

Hallo Marcengbarth,
also bei uns war das ganz einfach, ich habe die vorkonfigurierten Beispiele (c++) verwendet.
1. Socket öffnen
m_fds.rfd=openSocket(m_iPort, m_csHost);
m_fds.wfd=m_fds.rfd;
2. danach ein neues Interface erstellen mit Protokoll ISOoverTCP muss auf der Steuerung auch eingestellt werden.
m_Interface =daveNewInterface(m_fds,"IF1",0, daveProtoISOTCP, daveSpeed187k);
3. jetzt die Timeouts setzen
daveSetTimeout(m_Interface,3000000);
4. Die Connection erstellen
m_Connection =daveNewConnection(m_Interface,2,1,0); // insert your rack and slot here
5. Verbinden
iResult = daveConnectPLC(m_Connection);
6. wenn iResult 0 ist is alles ok dann ein byte lesen ab position iByte aus DB m_iDatenbaustein
iResult = daveReadBytes(m_Connection,daveDB,m_iDatenbaustein,iByte,1,NULL);
if (0 == iResult)
{ 
iRetVal = daveGetU8(m_Connection);
} 
7. alle anderen Funktionen wie float und doppelwort sind dann genauso zu handeln.
Gruß Steffen

Nachtrag:
ganz wichtig beim lesen aus einem Datenbaustein ist die Einstellung daveDB.


----------



## marcengbarth (30 Oktober 2009)

steyen schrieb:


> 2. danach ein neues Interface erstellen mit Protokoll ISOoverTCP muss auf der Steuerung auch eingestellt werden.



Wo wird auf der Steuerung ISOoverTCP eingestellt?

Was mich ja wundert, dass eine Verbindung aufgebaut wurde, ich allerdings keine Daten lesen kann.


----------



## steyen (30 Oktober 2009)

Ok, erwischt, ich bin C++ Programmierer, d.h. Steuerungsseite hab ich nicht wirklich so viel Ahnung, aber ich glaube mein Kollege, der leider schon zu Feierabend ist, (der hats gut...) hat das in den TSEND / TRECV Baustein eingestellt, in dem er die Verbindung angegeben hat wohin die daten gehen.

Verbindung aufbauen kann man so oder so, nur eben wenn man beim Interface ISOTCP verwendet, sollte die Steuerung auch den standard verwenden, sonst wird mist gesendet bzw. empfangen.

Gruß Steffen

NACHTRAG:

Mein Kollege hat es bestätigt, das er die Einstellung in den Kommunikationsbausteinen T_SEND und T_RECV vorgenommen hat.


----------



## christophersn (27 September 2010)

welche Einstellungen sind TCON_PARAM Baustein für 
rem_tsap_id (Steckplatz und Baugruppenträger vom Zielrechner?) erforderlich?
Stimmen die Einstellungen unter local_tsap_id[2] = B#16#02?
Wie sehen die Parameter für TSEND_C, TRCV_C und TCON aus?
Danke!​


----------



## christophersn (28 September 2010)

und brauche ich den Baustein TCON_Param überhaupt. Finde kaum Infos was die Einstellungen der SPS für die Kommunikation via Libnodave betrifft. Kollegen von mir meinten, es muss nichts auf der SPS eingestellt werden, oben ließt man aber wieder von den T_SEND und T_RECV Bausteinen.
Falls Einstellungen erforderlich, welche Bausteine, welche Konfiguration etc. ist überhaupt notwendig?
danke!


----------



## guido-b (30 November 2012)

Hallo,
ich möchte das Thema mal wieder aus der Versenkung holen weil ich seit einigen Tagen an dem gleichen Problem hänge und nicht mehr weiter komme. Meine Libnodave Applikation kann sich ohne Probleme mit einer S7-1200 verbinden und findet auch die adressierten Bausteine. Wenn ich das Netzwerkkabel abziehe bekomme ich auch eine Fehlermeldung, dass die Verbindung unterbrochen ist. Wenn ich Rack oder Slot Nummern verändere gibt's ebenfalls Fehlermeldungen. Von daher bin ich der Meinung, alles richtig konfiguriert zu haben. Dummerweise kann ich aber weder DBs lesen noch beschreiben. Die DBs sind als S7-300/400 Kompatibel angelegt worden (nicht nachträglich geändert). Somit habe ich bereits alle Tipps hier aus dem Forum umgesetzt. Was mache ich falsch ? Die gleiche Applikation kann ohne Probleme mit einer S7-300 kommunizieren. Könnte mal jemand detailliert beschreiben wie das bei einer S7-1200 funktioniert bzw. wo genau die Unterschiede zur 300er sind ? Braucht man die T_CON_Param, T_RECV und T_SEND Bausteine ? Bei der 300er geht's ja auch ohne...


----------

