Datenbausteine einer S7 mit Java unter Eclipse auslesen

Chris1981

Level-1
Beiträge
1
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
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
 
Hallo,
PLCCom S7 Java tut genau das gewünschte. :p
Für nicht kommerzielle Nutzung kostenlos, ansonsten gibt es auch eine 30-tage Demo mit Besispielprogrammen und ausführlicher Doku.
Gruß
J.Vermehren
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@ 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 ?
 
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?
 
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...

Code:
 //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 ISo_On_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
 
Zuletzt bearbeitet:
Wo kann man denn die kostenlose Indianer Bibliothek bestellen?

1. Zwischen der freien und der kostenpflichtigen Version gibt es keine technischen Unterschiede.

2. Die freie Version kann nur nicht kommerziell eingesetzt werden.

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

Gruß
Jörg Vermehren

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!
 
Hallo Burkhard,
leider haben wir die Verteilung der kostenlosen Version der Indianderbibliothek :p 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
 
Zurück
Oben