# Datenbausteine einer S7 mit Java unter Eclipse auslesen



## Chris1981 (30 Oktober 2008)

Hallo,

Im Rahmen meiner Diplomarbeit soll ich eine allgemeine Prüfvorschrift in Java unter Eclipse einlesen, die Daten verarbeiten und in einen entsprechenden DB der SPS schreiben. Habe hier im Forum schon viel über die Möglichkeiten gelesen, einen DB aus der SPS zu lesen oder zu verändern, aber noch nicht wirklich wie man das mit Java macht. Hatte da an einen OPC Server gedacht, wobei hier im Forum auch viel über Libnodave geschrieben steht. Meine Kenntnisse in SPS sind sehr bescheiden und daher wende ich mich mal an euch und hoffe ihr könnt mir weiterhelfen.
Als Hardware benutze ich eine Siemens CPU 315 2DP und in meinem Notebook habe ich einen CP5512 um mich mit der CPU zu verbinden.
Nach langem suchen habe ich einen OPC-Client für Java gefunden (jeasyopc-2.3.2). Jedoch weiss ich nicht wie ich in meinem SPS Projekt einen OPC Server anbinden soll und wie ich diesen konfiguriere.
An Software habe ich auf meinem Notebook:
Simatic Manager V5.4 + SP3 + HF1
WinCC flexible Standard und Runtime

Bin für jede Hilfe dankbar und hoffe ihr könnt mir weiterhelfen.

Chris


----------



## Thomas Rudin (7 Februar 2011)

Hallo

Trotz der Tatsache, dass dieser Thread alt ist: Der Vollständigkeit halber...

Diskussion im Forum (Tester für Java S7-Verbinder):
http://www.sps-forum.de/showthread.php?t=40108

Link zum S7-Verbinder (Beta-Stadium) http://sourceforge.net/projects/autocc/files/


----------



## Sven Rothenpieler (7 Februar 2011)

Alternativ auch ACCON-AGLink...

->Demoversion<-


----------



## student86 (6 September 2012)

*Hallo*

Guten tag,
ich arbeite auch gerada an einem Projekt indem ich von java(eclipse) meinen Datenbaustein der S7 auslesen muss.

was ist aus dem Projekt geworden ? wenn ich s7connector-src-1.1.jar öffne passiert bei mir gar nix.

gibt es mitlerweile vllt andere Lösungen ? 

Mit freundlichen Grüßen


----------



## Indi.An-er (7 September 2012)

Hallo,
PLCCom S7 Java tut genau das gewünschte. 
Für nicht kommerzielle Nutzung kostenlos, ansonsten gibt es auch eine 30-tage Demo mit Besispielprogrammen und ausführlicher Doku.
Gruß
J.Vermehren


----------



## student86 (11 September 2012)

*@ Indi.An-er*

danke für den Tip,
ich habe mir die 30 Tage testversion heruntergeladen und das Beispielprogramm stellt auch eine Verbindung her.

Allerding kann ich in meinem fall nich mit der Oberfläche arbeiten was warscheinlich auch nich so gedacht ist. Welche Befehle muss ich denn hinzufügen damit ich Beispielweise gezielt M3.1 auslesen kann ? in der Doku steht was von getByte() aber das erzeugt bei mir fehler.
Sollte alles gut Klappen könnt ich mir eine kostenpflichtige Version vostellen  , bzw gibt es sonst unterschiede zwischen der kostenpfichtigen und 30 tage trail version ?


----------



## norustnotrust (11 September 2012)

Spricht eigentlich etwas gegen ISO-ON-TCP? Klar, in der SPS ist ein bißchen was zu machen aer ich denke mir fast es müßte von JAVA aus ohne OPC einfacher sein oder?


----------



## Indi.An-er (11 September 2012)

Hallo student86,
aus dem beiliegenden Beispielprogramm kannst Du Dir die benötigten Befehle raus kopieren.
Um einen Merker abzufragen, musst Du dem ReadRequest die Region "eRegion.Flags_Markers" übergeben, der DB ist dann egal, am besten 0.

Den Beispielcode zum Lesen findest Du auch in der Online-Doku hier

So sollte es nachfolgend bei Dir funktionieren um M3.1 auszulesen...


```
//Connecting Device 
private TCP_ISO_Device Device = new TCP_ISO_Device("192.168.100.200", 0, 2, ePLCType.S7_300_400_compatibel); 
private void btnConnectActionPerformed(java.awt.event.ActionEvent evt) {      authentication.Serial(txtSerial.getText()); 
     authentication.User(txtUser.getText()); 
     Device.setPLCType(ePLCType.valueOf(cmbPLCType.getSelectedItem().toString()));
      Device.setIPAdress(txtIP.getText());
      Device.setRack(0);
      Device.setSlot(2);
      Device.setConnecttimeout(1000);
      Device.setReadtimeout(2000);
      ConnectResult res = Device.Connect();
      if (!res.HasConnected()) {  
        JOptionPane.showMessageDialog(null, res.Message(), "", JOptionPane.OK_CANCEL_OPTION); 
     } 
  }


 // read on PLC
 private void btnreadWordActionPerformed(java.awt.event.ActionEvent evt) { 
     ReadRequest[] oRequest = new ReadRequest[1]; 
     oRequest[0] = new ReadRequest(); 
     oRequest[0].setRegion(eRegion.Flags_Markers); 
     oRequest[0].setDB(0); 
     oRequest[0].setStartByte(3); 
     oRequest[0].setLen(1); 
     ReadResult[] res = Device.read(oRequest); 
     JOptionPane.showMessageDialog(null, res[0].Message()),"" JOptionPane.INFORMATION_MESSAGE);

           if (res[0].HasWorked() & res[0].DataAvailable()) {
          while (res[0].DataAvailable()) {
               txtResult.setText(txtResult.getText() + String.valueOf(res[0].get_WORD()) + System.getProperty("line.separator"));
           JOptionPane.showMessageDialog(null,String.valueOf(res[0].get_Byte(),"", JOptionPane.INFORMATION_MESSAGE);
          }
      }
      if (res[0].HasWorked() == true) {
          JOptionPane.showMessageDialog(null, "read successful", "", JOptionPane.INFORMATION_MESSAGE); 
     } else { 
         JOptionPane.showMessageDialog(null, "read unsuccessful", "", JOptionPane.ERROR_MESSAGE); 
     } 
   } 

// Disconnect Device 
private void btnDisConnectActionPerformed(java.awt.event.ActionEvent evt) { 
     Device.DisConnect(); 
   }
```



Zwischen der freien und der kostenpflichtigen Version gibt es keine technischen Unterschiede.
Die freie Version kann nur nicht kommerziell eingesetzt werden.

Die PLCCom-Library arbeitet mittels des ISn_TCP- Protokolles ohne OPC-Komponenten. Besondere Anpassungen im SPS-Programm sind hierzu nicht notwendig.

Ich hoffe Deine Fragen beantwortet zu haben.

Gruß
Jörg Vermehren


----------



## norustnotrust (11 September 2012)

Sag ich ja


----------



## Burkhard (16 Januar 2019)

*Wo kann man denn die kostenlose Indianer Bibliothek bestellen?*



Indi.An-er schrieb:


> 1. Zwischen der freien und der kostenpflichtigen Version gibt es keine technischen Unterschiede.
> 
> 2. Die freie Version kann nur nicht kommerziell eingesetzt werden.
> 
> ...



Wo kann man denn die kostenlose Indianderbibliothek bestellen bzw. absaugen?

Das wäre schon wichtig, dass diese Bibliothek für die nichtkommerzielle Nutzung kostenlos bleibt, alles andere wäre ja auch ungerecht!


----------



## Indi.Systems (16 Januar 2019)

Hallo Burkhard,
leider haben wir die Verteilung der kostenlosen Version der Indianderbibliothek  schon vor Jahren eingestellt. 

Der Grund dafür war der vielfach unerlaubte gewerbliche Einsatz der leider immer weiter Überhand nahm. Wir standen damals sehr schnell vor der Wahl uns eine große Rechtsabteilung zuzulegen oder uns einfach damit abzufinden. Aus diesem Grunde haben wir irgendwann resigniert und auf die kostenlose Version schweren Herzens verzichtet. 

Wir geben aber weiterhin eine kostenlose Lizenz heraus, wenn sie an eine wohltätige Einrichtung oder eine Bildungseinrichtung geht.

Gruß Jörg


----------



## funkey (16 Januar 2019)

Moka7 als Java-Portierung von Snap7 sollte tadellos funktionieren.
http://snap7.sourceforge.net/


----------

