# SAPI-S7 mit Java



## Spackotus (6 Februar 2012)

Im Ramen einer Projektarbeit müssen eine variable Anzahl von SPS-Steuerungen mit HW-Konfigurationen und DB's bzw. FB's geladen werden, da es in diesem Fall zu aufwändig wäre alles von Hand zu machen.
Java ist in diesem (speziellen) Fall eine Vorschrift...

Nun, um das Rad nicht neu erfinden zu müssen, müsste ich wissen, ob jemand von Fällen weis, wo SAPI-S7 mit Java angesteuert wurde... Google bringt mich nicht weiter...
Vor allem interessiert mich, ob man einfach die API in Java einbinden und verwenden kann...

Gruss
Spackotus


----------



## Rainer Hönle (6 Februar 2012)

Meines Wissens nach bietet SAPI-S7 keine Funktionen für das Lesen von Bausteinen aus dem Projekt und Schreiben der Bausteine in die SPS. 
Alternativ kann Buddy von mhj oder unser ACCON-S7-Backup diese Aufgabe übernehmen. Die Steuerung kann dann bei uns entweder über Kommandozeilenparameter oder Befehlsdatei erfolgen.


----------



## Spackotus (7 Februar 2012)

Die Bausteine stehen hier bereits zur Verfügung... Sie müssen geschrieben und (wie ich gerade bemerke) auch gelesen werden. Aber wenn das nicht die SAPI-S7 ist, über welche Schnittstelle greift dann SIMATIC Step7 dann auf die SPS zu?
Es wurde hier bereits schon mal gelöst einfach in Visual-Basic, deshalb gehe ich davon aus, dass es eine DLL ist, welche man einbinden muss...


----------



## Rainer Hönle (7 Februar 2012)

Bausteine lesen und schreiben kann z.B. libnodave. Allerdings können diese dann nur in einem eigenen Format gespeichert werden und nicht in einem S7-Projekt. Auch können mit dieser Bibliothek keine Bausteine aus einem S7-Projekt gelesen werden. Siemens greift über eine eigene Schnittstelle auf die S7 zu.


----------



## Jochen Kühner (7 Februar 2012)

Ich kann dir auch noch meine Bibliothek (http://siemensplctoolboxlib.codeplex.com/) vorschlagen. Damit kannst du auch Bausteine aus der SPS lesen und schreiben (nutzt dazu libnodave), und auch auf S7 Projekte zugreifen (nur lesend). Ist aber .NET und nicht Java!


----------



## Spackotus (7 Februar 2012)

Welche Schnittstelle benutzt du? Oder hast du sie selber Programmiert?

Zugriff auf S7 Projekte wird nicht benötigt, ist alles schon gegeben.


----------



## Rainer Hönle (7 Februar 2012)

Spackotus schrieb:


> Welche Schnittstelle benutzt du? Oder hast du sie selber Programmiert?
> 
> Zugriff auf S7 Projekte wird nicht benötigt, ist alles schon gegeben.


Jochen setzt auf libnodave auf. Was ist bei den S7-Projekten schon gegeben? Jochen kann keinen Baustein aus der S7 auslesen und in einem S7-Projekt speichern. Wo sollen denn die gelesenen Bausteine gespeichert werden? Und wie sollen sie wieder in die SPS gescjrieben werden?


----------



## Jochen Kühner (7 Februar 2012)

Rainer Hönle schrieb:


> und in einem S7-Projekt speichern.



Das kann Ich leider noch nicht.... Bisher nur lese Support...


----------



## Rainer Hönle (7 Februar 2012)

Jochen Kühner schrieb:


> Das kann Ich leider noch nicht.... Bisher nur lese Support...


Mir ist das klar, aber ich habe immer noch nicht ganz verstanden, was die genaue Aufgabe ist. Wo kommen die Bausteine her und wo sollen sie hin und was "ist gegeben."


----------



## Spackotus (7 Februar 2012)

die Bausteine sind sozusagen bereits aus den Projekten extrahiert (als AWL quellen und übersetzt (ist nicht meine arbeit))
die gelesenen Bausteine soll man einfach nur vergleichen können (auf gleichheit bzw ungleichheit)...
und die "aktuellen" Bausteine sollen je nach dem geschrieben werden oder eben nicht...

edit1:
ENDLICH ich hab das gefunden, was ich solange gesucht habe... xD PRODAVE die Original Siemens Bibliothek ^^

edit2:
ICH DANKE EUCH BEIDEN!!! Ohne euch wär ich noch wochenlang am suchen!!! =D

edit3:
doch nicht... trotzdem danke bisher


----------



## Rainer Hönle (7 Februar 2012)

Meines Wissens nach kann auch prodave keine kompletten Bausteine lesen und schreiben. Zitat aus der prodave-Doku: "Die Funktion bst_read_ex6 liest Bausteine in einen Puffer ein. Code-Bausteine werden komplett eingelesen (Header und Daten); bei OBs und DBs wird nur der Header gelesen." Außerdem gibt es unter prodave keine Funktionen für den Zugriff auf das S7-Projekt.
Wenn AWL-Quellen übersetzt werden, dann sind diese ja wieder in einem Projekt enthalten. Warum dann der Umweg über AWL-Quelle und dann übersetzen? 
Wie soll erkannt werden, welcher Baustein der aktuelle ist? Wie soll verglichen werden?


----------



## Spackotus (9 Februar 2012)

sorry, dass ich solang gebraucht habe...

nunja, schon der zeitstempel sollte ausreichen, um rauszufinden, ob der baustein aktuell ist oder nicht... (wenn nicht: ersetzen)

aber wie man dann die bausteine effektiv in die sps laden kann muss ich noch rausfinden.

zusätzlich muss ich sagen, dass ich mich jetzt nu mit sps'n befasse und warum überhaupt übersetzte bausteine zur verfügung stehen ist mir ehrlichgesagt auch schleierhaft. das einzige war dann das tool können muss, ist dann die bausteine nehmen und in die sps laden bzw runterladen...


----------



## Rainer Hönle (9 Februar 2012)

Spackotus schrieb:


> das einzige war dann das tool können muss, ist dann die bausteine nehmen und in die sps laden bzw runterladen...


Möglichkeiten dazu habe im in Post #2 erwähnt. Meines Wissens nach gibt es keine Bibliothek, die diese Aufgabe (direkt mit S7-Projekt) erledigt. mhj bietet zwar in seiner Bibliothek die Bausteine aus und in eine WLD-Datei zu schreiben, aber nicht in das Originalprojekt.


----------



## Spackotus (9 Februar 2012)

Ich habe hier noch was von der Kommando-Schnittstelle gelesen... hab auch nachgeforscht und KEINE ordentliche doku gefunden, bzw. ich weiss nicht ob es mit der gehen würde...


----------



## Eleu (11 Februar 2012)

Hi,

kenn mich mit Java nicht aus, aber wenn ich Du wäre, würde ich mir die
Nutzung der XML-DA Schnittstelle des SIMATIC NET OPC Servers mit Visual Basic .NET
durchlesen.

http://support.automation.siemens.com/WW/view/de/21402169

Zumindest die Installation des Servers.
Damit hättest Du schon mal eine Schnittstelle zur S7-SPS

Des weiteren gibt bei Siemens ein Java Beispielprogramm für den Zugriff auf den OPC  XML DA Server
der in der RT einer Simotion integriert ist:

http://support.automation.siemens.com/WW/view/de/27097938

Wobei ich jetzt mal sagen würde, dass es dem Client egal sein müsste, ob nun eine Simotion oder eine S7-SPS am Server hängt.
Wenn, dann muss nur der Aufruf der passenden OPC DLL im Client angepasst werden.
Wie gesagt, bin kein Java Programmierer, aber vielleicht hilft Dir das ja weiter.

Viel Glück.

Gruß
Eleu


----------



## Rainer Hönle (12 Februar 2012)

DA steht für Data Access, und damit können keine Bausteine in die SPS geschrieben oder aus ihr gelesen werden.


----------



## Spackotus (13 Februar 2012)

@ Eleu 
beide links gehen bei mir nicht...

@ Reiner Hönle
heisst das, dass der OPC server keine option ist, oder gibt es da noch mehr möglichkeiten?


----------



## Rainer Hönle (13 Februar 2012)

Mit dem OPC-Server kann die Aufgabe nicht gelöst werden.


----------



## Eleu (13 Februar 2012)

Spackotus schrieb:


> @ Eleu
> beide links gehen bei mir nicht...



Funktionieren bei mir auch nicht.

Aber falls es dich doch noch interessieren sollte, musst Du in der Adresszeile vom Browser nach dem Anklicken,
die Adresse einkürzen, so dass es mit www.support.autom... anfängt.


Gruß

Eleu


----------



## Spackotus (13 Februar 2012)

hmmm... die kommandoschnittstelle kommt aber in frage oder nicht?


----------



## Rainer Hönle (13 Februar 2012)

Einfach mal hier im Forum nach Kommandoschnittstelle suchen und lesen


----------



## Spackotus (13 Februar 2012)

also ist es möglich... thx!


----------



## Rainer Hönle (13 Februar 2012)

Ich weiß nicht, ob das möglich ist, aber wenn es in der Kommandoschnittstellendoku so steht, dann wird es wohl gehen.


----------



## flotti (13 Februar 2012)

es gibt auch nen guten libnodave-wrapper für java mit dem man zumidest db's lesen und schreiben kann: http://sourceforge.net/projects/autocc/files/


----------

