Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 18

Thema: Libnodave Java HILFE

  1. #1
    Registriert seit
    14.06.2013
    Beiträge
    0
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich hab mich jetzt ein wenig mit Libnodave, Socket Kommunikation und ISOoverTCP beschäftigt. Ich soll für meine Bachelorarbeit eine Smartphone-App schreiben, die nach Einscannen eines Barcodes ein bestimmtes Bit setzt. Klappt nach einigen Anleitungen und Umprogrammieren auch sehr gut. Jedoch verstehe ich absolut nicht was im Einzelnen passiert Ich bin auch nicht sooo bewandert in Kommunikation etc. würde aber gerne grob wissen was in den Methoden so passiert. Ich habe mir mal die Mühe gemacht und Kommentare am Anfang jeder Methode gesetzt, um zu dokumentieren wann welche Methode aufgerufen wird: Anhang 21266

    Mich interessiert eigentlich nur was während …newTCPConnection();,
    Code:
    07-19 15:07:15.304: I/System.out(13703): S7Connection.S7Connection()
    07-19 15:07:15.304: I/System.out(13703): S7Connection.Semaphore.Semaphore()
    07-19 15:07:15.304: I/System.out(13703): ===== created this.value = value
    07-19 15:07:15.304: I/System.out(13703): TCPConnection.TCPConnection()
    07-19 15:07:15.304: I/System.out(13703): ===== created new TCPConnection()
    …connectPLC();,
    Code:
    07-19 15:07:15.304: I/System.out(13703): TCPConnection.connectPLC()
    07-19 15:07:15.304: I/System.out(13703): TCPConnection.sendISOPacket()
    07-19 15:07:15.304: I/System.out(13703): PLCinterface.write()
    07-19 15:07:15.304: I/System.out(13703): TCPConnection.readISOPacket()
    07-19 15:07:15.304: I/System.out(13703): PLCinterface.read()
    07-19 15:07:15.334: I/System.out(13703): PLCinterface.read()
    07-19 15:07:15.334: I/System.out(13703): S7Connection.negPDUlengthRequest()
    07-19 15:07:15.334: I/System.out(13703): PDU.PDU()
    07-19 15:07:15.334: I/System.out(13703): PDU.initHeader()
    07-19 15:07:15.334: I/System.out(13703): PDU.addParam()
    07-19 15:07:15.334: I/System.out(13703): Nodave.setUSBEWord()
    07-19 15:07:15.334: I/System.out(13703): TCPConnection.exchange()
    07-19 15:07:15.334: I/System.out(13703): TCPConnection.sendISOPacket()
    07-19 15:07:15.334: I/System.out(13703): PLCinterface.write()
    07-19 15:07:15.334: I/System.out(13703): TCPConnection.readISOPacket()
    07-19 15:07:15.334: I/System.out(13703): PLCinterface.read()
    07-19 15:07:15.354: I/System.out(13703): PLCinterface.read()
    07-19 15:07:15.354: I/System.out(13703): PDU.PDU()
    07-19 15:07:15.354: I/System.out(13703): PDU.setupReceivedPDU()
    07-19 15:07:15.354: I/System.out(13703): Nodave.USBEWord()
    07-19 15:07:15.354: I/System.out(13703): Nodave.USBEWord()
    07-19 15:07:15.354: I/System.out(13703): Nodave.USBEWord()
    07-19 15:07:15.354: I/System.out(13703): Nodave.USBEWord()
    07-19 15:07:15.354: I/System.out(13703): ===== done connectPLC()
    ...readByte();,
    Code:
    07-19 15:07:15.354: I/System.out(13703): S7Connection.readBytes()
    07-19 15:07:15.354: I/System.out(13703): S7Connection.Semaphore.enter()
    07-19 15:07:15.354: I/System.out(13703): PDU.PDU()
    07-19 15:07:15.354: I/System.out(13703): PDU.initReadRequest()
    07-19 15:07:15.354: I/System.out(13703): PDU.initHeader()
    07-19 15:07:15.354: I/System.out(13703): PDU.addParam()
    07-19 15:07:15.354: I/System.out(13703): Nodave.setUSBEWord()
    07-19 15:07:15.354: I/System.out(13703): PDU.addVarToReadRequest()
    07-19 15:07:15.354: I/System.out(13703): Nodave.setUSBEWord()
    07-19 15:07:15.354: I/System.out(13703): Nodave.setUSBEWord()
    07-19 15:07:15.354: I/System.out(13703): Nodave.USBELong()
    07-19 15:07:15.354: I/System.out(13703): Nodave USByte() started
    07-19 15:07:15.354: I/System.out(13703): Nodave.setUSBEWord()
    07-19 15:07:15.354: I/System.out(13703): TCPConnection.exchange()
    07-19 15:07:15.354: I/System.out(13703): TCPConnection.sendISOPacket()
    07-19 15:07:15.354: I/System.out(13703): PLCinterface.write()
    07-19 15:07:15.354: I/System.out(13703): TCPConnection.readISOPacket()
    07-19 15:07:15.354: I/System.out(13703): PLCinterface.read()
    07-19 15:07:15.404: I/System.out(13703): PLCinterface.read()
    07-19 15:07:15.414: I/System.out(13703): PDU.PDU()
    07-19 15:07:15.414: I/System.out(13703): PDU.setupReceivedPDU()
    07-19 15:07:15.414: I/System.out(13703): Nodave.USBEWord()
    07-19 15:07:15.414: I/System.out(13703): Nodave.USBEWord()
    07-19 15:07:15.414: I/System.out(13703): Nodave.USBEWord()
    07-19 15:07:15.414: I/System.out(13703): PDU.testReadResult()
    07-19 15:07:15.414: I/System.out(13703): PDU testResultData() started
    07-19 15:07:15.414: I/System.out(13703): Nodave.USBEWord()
    07-19 15:07:15.414: I/System.out(13703): ===== read Byte
    …getByte();
    Code:
    07-19 15:07:15.414: I/System.out(13703): S7Connection.getByte()
    07-19 15:07:15.414: I/System.out(13703): Nodave.SByte()
    07-19 15:07:15.414: I/System.out(13703): Nodave.bswap_8()
    und ...writeByte(); genau passiert!
    Code:
    07-19 15:07:15.414: I/System.out(13703): S7Connection.writeBytes()
    07-19 15:07:15.414: I/System.out(13703): S7Connection.Semaphore.enter()
    07-19 15:07:15.414: I/System.out(13703): PDU.PDU()
    07-19 15:07:15.414: I/System.out(13703): PDU.prepareWriteRequest()
    07-19 15:07:15.414: I/System.out(13703): PDU.initHeader()
    07-19 15:07:15.414: I/System.out(13703): PDU.addParam()
    07-19 15:07:15.414: I/System.out(13703): Nodave.setUSBEWord()
    07-19 15:07:15.414: I/System.out(13703): PDU.addVarToWriteRequest()
    07-19 15:07:15.414: I/System.out(13703): Nodave.setUSBEWord()
    07-19 15:07:15.414: I/System.out(13703): PDU.addData(void)
    07-19 15:07:15.414: I/System.out(13703): Nodave.setUSBEWord()
    07-19 15:07:15.414: I/System.out(13703): PDU.addValue()
    07-19 15:07:15.414: I/System.out(13703): Nodave.setUSBEWord()
    07-19 15:07:15.414: I/System.out(13703): PDU.addData(void)
    07-19 15:07:15.414: I/System.out(13703): Nodave.setUSBEWord()
    07-19 15:07:15.414: I/System.out(13703): TCPConnection.exchange()
    07-19 15:07:15.414: I/System.out(13703): TCPConnection.sendISOPacket()
    07-19 15:07:15.414: I/System.out(13703): PLCinterface.write()
    07-19 15:07:15.414: I/System.out(13703): TCPConnection.readISOPacket()
    07-19 15:07:15.414: I/System.out(13703): PLCinterface.read()
    07-19 15:07:15.434: I/System.out(13703): PLCinterface.read()
    07-19 15:07:15.434: I/System.out(13703): PDU.PDU()
    07-19 15:07:15.434: I/System.out(13703): PDU.setupReceivedPDU()
    07-19 15:07:15.434: I/System.out(13703): Nodave.USBEWord()
    07-19 15:07:15.434: I/System.out(13703): Nodave.USBEWord()
    07-19 15:07:15.434: I/System.out(13703): Nodave.USBEWord()
    07-19 15:07:15.434: I/System.out(13703): ===== wrote Byte
    Mir haben die docs zu Libnodave leider nicht geholfen :/
    Es muss ja auch nicht einer zu Allen antworten. Vielleicht weiß der Eine oder Andere was und es findet sich was zusammen. Wie gesagt brauche es auch schnell, weil ich gerne in der BA grob erläutern würde was die Methoden für Aufgaben haben.
    Zitieren Zitieren Libnodave Java HILFE  

  2. #2
    Bastueh89 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    14.06.2013
    Beiträge
    0
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    kann denn wirklich keiner wenigstens ein bisschen was erklären?

  3. #3
    Bastueh89 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    14.06.2013
    Beiträge
    0
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    warum werden 2 PDUs während der readBytes() oder writeBytes() erstellt und was haben die für Aufgaben?

  4. #4
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Zitat Zitat von Bastueh89 Beitrag anzeigen
    warum werden 2 PDUs während der readBytes() oder writeBytes() erstellt und was haben die für Aufgaben?
    Eine für das Paket, das an die SPS gesendet wird(Anforderung, request), die andere für das Paket, das die SPS zurücksendet (Antwort, response).
    N.b.:
    PDU steht für Protocol Data Unit
    Das PDU-Objekt enthält NICHT die Daten, sondern dient zum VERWALTEN derselben. Die Daten befinden sich in byte[]-Arrays und im zugehörigen PDU-Objekt steht, wo die S7-Daten, der Header, die Parameter und die Nutzdaten anfangen und wie lang sie jeweils sind.

  5. #5
    Bastueh89 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    14.06.2013
    Beiträge
    0
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    ok vielen dank, ich hatte mir schon so etwas in der Art gedacht, wusste aber nicht 100pro, ob es stimmt weil irgendwie bei der Herstellung der Verbindung die Methode negPDUlengthRequest() aufgerufen wird und diese ebenfalls eine PDU anlegt. Aber hier wird nur der Header der PDU angelegt oder? Kann jemand erklären, was es hier mit dem Header der PDU auf sich hat? Komme nie so richtig mit dem Begriff "header" klar. Im Header stehen doch nur Informationen über Sender und Empfänger oder?

    PS: was macht addParam() genau?

    andere Frage: was verriegelt der Semaphor in Libnodave genau? grob: dass nicht mehrere Prozesse auf die Verbindung zugreifen können?

  6. #6
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Zitat Zitat von Bastueh89 Beitrag anzeigen
    ok vielen dank, ich hatte mir schon so etwas in der Art gedacht, wusste aber nicht 100pro, ob es stimmt weil irgendwie bei der Herstellung der Verbindung die Methode negPDUlengthRequest() aufgerufen wird und diese ebenfalls eine PDU anlegt. Aber hier wird nur der Header der PDU angelegt oder?
    Müsste ich nachsehen...
    Kann jemand erklären, was es hier mit dem Header der PDU auf sich hat? Komme nie so richtig mit dem Begriff "header" klar. Im Header stehen doch nur Informationen über Sender und Empfänger oder?
    Wir sprechen hier über S7-Kommunikation. Da beginnt das Paket mit einem Header. Das ist nicht der TCP- und nicht der ISO-Header. Im S7-Header stehen gar keine Informationen über Sender und Empfänger.
    Im S7-Header steht ein PDU-Typ (1,2,3 oder 7), eine optionale Nummer, die Länge der Parameter, die Länge der Daten und bei Typ 2 und 3 ein Fehlercode.
    PS: was macht addParam() genau?
    Es fügt Parameter zu einem Datenpaket hinzu und trägt deren Länge in das PDU-Objekt ein.
    andere Frage: was verriegelt der Semaphor in Libnodave genau? grob: dass nicht mehrere Prozesse auf die Verbindung zugreifen können?
    Libnodave geht davon aus, daß nicht mehrere Anfragen gleichzeitig laufen. Mit anderen Worten es verläßt sich darauf, daß die nächste Antwort von der SPS zu der letzten Anfrage gehört.

  7. #7
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Zu den anderen Fragen aus der privaten Nachricht. Ich antworte lieber hier, dann können es alle lesen:
    Bei einer S7- Verbindung über ISO over TCP spielen drei Protokolle eine Rolle: TCP/IP stellt eine Verbindung her, auf der ein Strom von Daten transportiert wird.
    Als Nutzlast befördert TCP/IP dann Datenpakete nach ISO 8073. Wie diese Pakete über den TCP-Strom geschafft werden, beschreibt RFC1006.
    ISO over TCP befördert dann wiederum Datenpakete der S7-Kommunikation. Die ist Siemens-eigen und es gibt es von Siemens keine Informationen darüber.

  8. #8
    Bastueh89 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    14.06.2013
    Beiträge
    0
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ok danke das hilft mir weiter.

    Nächste Frage...

    welche Daten bzw. Informationen enthalten die ISO-Pakete? Beim Aufbau einer Verbindung werden in meiner TCPConnection-Klasse mehrmals ISO-Pakete gesendet, gelesen und in der PLCinterface-Klasse dazu write() und read()-Methoden aufgerufen ?! Ich verstehe die Zusammenhänge nicht:

    Ausschnitt aus ...connectPLC...

    Code:
    ...
    07-19 15:07:15.304: I/System.out(13703): TCPConnection.sendISOPacket()
    07-19 15:07:15.304: I/System.out(13703): PLCinterface.write()
    07-19 15:07:15.304: I/System.out(13703): TCPConnection.readISOPacket()
    07-19 15:07:15.304: I/System.out(13703): PLCinterface.read()
    07-19 15:07:15.334: I/System.out(13703): PLCinterface.read()
    ...

  9. #9
    Bastueh89 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    14.06.2013
    Beiträge
    0
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von Zottel Beitrag anzeigen
    Zu den anderen Fragen aus der privaten Nachricht. Ich antworte lieber hier, dann können es alle lesen:
    Bei einer S7- Verbindung über ISO over TCP spielen drei Protokolle eine Rolle: TCP/IP stellt eine Verbindung her, auf der ein Strom von Daten transportiert wird.
    Als Nutzlast befördert TCP/IP dann Datenpakete nach ISO 8073. Wie diese Pakete über den TCP-Strom geschafft werden, beschreibt RFC1006.
    ISO over TCP befördert dann wiederum Datenpakete der S7-Kommunikation. Die ist Siemens-eigen und es gibt es von Siemens keine Informationen darüber.
    Also liege ich schon richtig, dass das Ganze über TCP/IP per Stream-Sockets geschieht ja? laut wikipedia müssen doch aber immer 2 Sockets erstellt werden oder? Halt einen für den Client und einen für den Server. Liege ich überhaupt richtig in der Annahme, dass die S7 als Server selbst den einen anderen Socket verwaltet ? Und wird nun der Dienst Fetch/Write angewendet (weil mein Programm funktioniert und ich musste keine bausteine in S7 integrieren http://support.automation.siemens.co...ard&viewreg=WW) oder lieg ich völlig falsch da es wirklich Siemens-eigen ist, gibt es DARÜBER keine wirklichen Informationen und ich beschreibe es einfach genau so!?


    mal ganz kurz!!!:

    ISOonTCP = ISOoverTCP ? Oder ist das was völlig unterschiedliches?

  10. #10
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Bastueh89 Beitrag anzeigen
    Also liege ich schon richtig, dass das Ganze über TCP/IP per Stream-Sockets geschieht ja?
    Im Fall von ISO over TCP, ja. S7-Kommunikation kann aber auch über serielle Schnittstellen, Profibus u.a. transportiert werden.
    laut wikipedia müssen doch aber immer 2 Sockets erstellt werden oder? Halt einen für den Client und einen für den Server.
    Ja
    Liege ich überhaupt richtig in der Annahme, dass die S7 als Server selbst den einen anderen Socket verwaltet ?
    Ja
    Und wird nun der Dienst Fetch/Write angewendet
    Nein. Fetch/Write gehörte zur S5, aber diverse S7-CPs können es auch. ISO over TCP kann als Nutzdaten nicht nur Fetch/Write sondern halt auch S7-Kommunikation transportieren.
    (weil mein Programm funktioniert und ich musste keine bausteine in S7 integrieren
    Muß du ja auch nicht, wenn du mit dem PG Variablen beobachtest. Da läuft ist auch S7-Kommunikation.

    Klick mal mal unter obigem Link auf:
    Welche Eigenschaften, Vorteile und Besonderheiten bietet das S7-Protokoll?
    Und dann der Dienst PUT/GET, das ist was Libnodave macht.
    oder lieg ich völlig falsch da es wirklich Siemens-eigen ist, gibt es DARÜBER keine wirklichen Informationen...
    Wenn ich's dir doch sage...
    und ich beschreibe es einfach genau so!?
    Das mußt du wissen oder frag deinen Prof.

    mal ganz kurz!!!:

    ISOonTCP = ISOoverTCP ? Oder ist das was völlig unterschiedliches?
    Nee. Ist schon dasselbe gemeint.

Ähnliche Themen

  1. libnodave Java Performance
    Von asalmut im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 04.10.2015, 20:36
  2. libnodave java
    Von bresner1 im Forum Hochsprachen - OPC
    Antworten: 1
    Letzter Beitrag: 16.03.2015, 12:37
  3. Libnodave für Java
    Von Reto im Forum Hochsprachen - OPC
    Antworten: 0
    Letzter Beitrag: 17.01.2011, 13:11
  4. libnodave java
    Von Reto im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 28.02.2007, 23:55
  5. Libnodave für Java
    Von sha im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 19.04.2006, 12:40

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •