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

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

Thema: LibNodave Write Request von mehrern Var.

  1. #1
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.745
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Bin gerade dabei in meinen Wrapper das schreiben von mehren Variablen zu implementieren. Was muss Ich den an Overhead pro Variable die auf die CPU geschrieben wird rechnen? Auch 4 Byte wie beim Read Request, plus die Daten, oder ist das anderst?
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    Zitieren Zitieren LibNodave Write Request von mehrern Var.  

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

    Standard

    Zitat Zitat von Jochen Kühner Beitrag anzeigen
    ...Auch 4 Byte wie beim Read Request, plus die Daten, oder ist das anderst?
    Ich weiß es nicht auswendig, aber wenn du
    davePrepareWriteRequest, daveAddVarToWriteRequest, daveExecWriteRequest ausführen läßt, dabei die Anzahl der Variablen änderst
    und dir die Requests per debug-Ausgabe anzeigen läßt, kannst du es leicht herausfinden.

  3. #3
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.745
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Zitat Zitat von Zottel Beitrag anzeigen
    Ich weiß es nicht auswendig, aber wenn du
    davePrepareWriteRequest, daveAddVarToWriteRequest, daveExecWriteRequest ausführen läßt, dabei die Anzahl der Variablen änderst
    und dir die Requests per debug-Ausgabe anzeigen läßt, kannst du es leicht herausfinden.
    Jo hab jetzt auch schon im Quellcode geschaut, aber dachte jemand weiss es so... Sind auf jeden fall auch 12 Byte für die Variable, aber da ist noch so ein Header... Ich muss mal analysieren...
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  4. #4
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Zitat Zitat von Jochen Kühner Beitrag anzeigen
    Jo hab jetzt auch schon im Quellcode geschaut, aber dachte jemand weiss es so... Sind auf jeden fall auch 12 Byte für die Variable, aber da ist noch so ein Header... Ich muss mal analysieren...
    12 Byte Parameterteil für die Adressangabe pro Datenbereich.
    Bei einem "Write"-Befehl kommen dann nochmal 4 Byte Header für den Datenteil pro Datenbereich hinzu.

    Beim "Read"-Befehl fehlt der Datenteil beim Request, in der Antwort eines "Read" sind dann die gleichen 4 Byte Header pro Datenteil wie bei einem "Write" vorhanden.

  5. #5
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.745
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Zitat Zitat von Thomas_v2.1 Beitrag anzeigen
    12 Byte Parameterteil für die Adressangabe pro Datenbereich.
    Bei einem "Write"-Befehl kommen dann nochmal 4 Byte Header für den Datenteil pro Datenbereich hinzu.

    Beim "Read"-Befehl fehlt der Datenteil beim Request, in der Antwort eines "Read" sind dann die gleichen 4 Byte Header pro Datenteil wie bei einem "Write" vorhanden.
    Für was braucht man den die 4 Bytes pro Datenbereich???
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  6. #6
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Zitat Zitat von Jochen Kühner Beitrag anzeigen
    Für was braucht man den die 4 Bytes pro Datenbereich???
    1. Byte: Rückgabewert, eigentlich nur bei Read relevant. Ist der angefragte Datenbereich nicht verfügbar wird hier ein Wert <>0 zurückgegeben
    2. Byte: Transport-Größe der Längenangabe (z.B. Bit, Byte, Word, etc.)
    3./4. Byte: Anzahl der folgenden Daten (je nach Angabe in Byte 2)

  7. #7
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.745
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Zitat Zitat von Thomas_v2.1 Beitrag anzeigen
    1. Byte: Rückgabewert, eigentlich nur bei Read relevant. Ist der angefragte Datenbereich nicht verfügbar wird hier ein Wert <>0 zurückgegeben
    2. Byte: Transport-Größe der Längenangabe (z.B. Bit, Byte, Word, etc.)
    3./4. Byte: Anzahl der folgenden Daten (je nach Angabe in Byte 2)
    Ja aber das steht doch auch schon in den 12 Header Bytes...
    oder:

    Code:
    0x12, 0x0a, 0x10,
    		0x02,		/* unit (for count?, for consistency?) byte */
    		0,0,		/* length in bytes */
    		0,0,		/* DB number */
    		0,		/* area code */
    		0,0,0		/* start address in bits */
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  8. #8
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Zitat Zitat von Jochen Kühner Beitrag anzeigen
    Ja aber das steht doch auch schon in den 12 Header Bytes...
    Ich hab mir das Protokoll ja auch nicht ausgedacht

    Aber diese 4 Byte Itemdaten-Header sind genauso auch in anderen Anfragen/Antworten wie zyklische Lesedienste, SZL etc. vorhanden.
    So kann man eine Auswertefunktion für den Datenteil auch für verschiedene Telegramme nutzen, auch wenn es bei manchen zu Redundanzen führt.

  9. #9
    Registriert seit
    26.03.2010
    Beiträge
    94
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo zusammen,

    wie vermutlich von einigen bereits bemerkt bin ich noch libnodave Einsteiger und momentan hauptsächlich Anwender der Bibliothek und beginne erst langsam Stück für Stück hinter die Kulissen zu spickeln.

    Der ReadRequest von multiblen Variablen ist bei der von meiner verwendeten Test SPS S7 317 2DP/PN mit max 19Variablen begrenzt. Beim schreiben von multiblen Variablen via "dc.execWriteRequest(multiwritePDU01, rs)" musste ich heute feststellen, dass hier bereits bei 12 Variablen Schluss ist. Dies mag vermutlich darin begründet sein, dass der Poll mehr Informationen beinhaltet und deswegen nicht so viele Variablen aufgenommen werden können.
    Testweise schreibe ich nun, da ich eine schnelle Lösung (programmiertechisch) brauchte, die Daten mit einzelnen Kommandos via
    dc.writeBytes(nArea, nDBnr, nByteAdr, nDataLength, Buffer)
    in die SPS, jedoch ist dies performance mässig gesehen nicht die optimalste Lösung, vor allem nicht wenn man um die 20 nicht zusammenhängende Variablen zyklisch (mehrfach pro Sekunde) in die SPS schreiben möchte.
    Aus diesem Grund möchte ich die Variablen auf zwei multible WriteRequests aufteilen. Ziel ist es jedoch hierfür KEINE zweite Verbindung (PDU) zur SPS aufzubauen, sondern nur eine PDU zu verwenden.
    Gibt es hier dann eine Möglichkeit, dass die Funktion multiwritePDU01.addVarToWriteRequest(nArea, nDBnr, nByteAdr, nDataLength, Buffer) nicht bei jedem Schreibauftrag x mal aufgerufen werden muss, sondern die Variablen inklusive dem zu jeweils zu schreibenen Wert in eine Struktur geschrieben wird, und dann diese Struktur dem WriteRequest zugewiesen wird? Wie müsste dies dann aussehen?

    Danke bereits im voraus.

    Gruss,

    bool

  10. #10
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.745
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von bool Beitrag anzeigen
    Hallo zusammen,

    wie vermutlich von einigen bereits bemerkt bin ich noch libnodave Einsteiger und momentan hauptsächlich Anwender der Bibliothek und beginne erst langsam Stück für Stück hinter die Kulissen zu spickeln.

    Der ReadRequest von multiblen Variablen ist bei der von meiner verwendeten Test SPS S7 317 2DP/PN mit max 19Variablen begrenzt. Beim schreiben von multiblen Variablen via "dc.execWriteRequest(multiwritePDU01, rs)" musste ich heute feststellen, dass hier bereits bei 12 Variablen Schluss ist. Dies mag vermutlich darin begründet sein, dass der Poll mehr Informationen beinhaltet und deswegen nicht so viele Variablen aufgenommen werden können.
    Testweise schreibe ich nun, da ich eine schnelle Lösung (programmiertechisch) brauchte, die Daten mit einzelnen Kommandos via
    dc.writeBytes(nArea, nDBnr, nByteAdr, nDataLength, Buffer)
    in die SPS, jedoch ist dies performance mässig gesehen nicht die optimalste Lösung, vor allem nicht wenn man um die 20 nicht zusammenhängende Variablen zyklisch (mehrfach pro Sekunde) in die SPS schreiben möchte.
    Aus diesem Grund möchte ich die Variablen auf zwei multible WriteRequests aufteilen. Ziel ist es jedoch hierfür KEINE zweite Verbindung (PDU) zur SPS aufzubauen, sondern nur eine PDU zu verwenden.
    Gibt es hier dann eine Möglichkeit, dass die Funktion multiwritePDU01.addVarToWriteRequest(nArea, nDBnr, nByteAdr, nDataLength, Buffer) nicht bei jedem Schreibauftrag x mal aufgerufen werden muss, sondern die Variablen inklusive dem zu jeweils zu schreibenen Wert in eine Struktur geschrieben wird, und dann diese Struktur dem WriteRequest zugewiesen wird? Wie müsste dies dann aussehen?

    Danke bereits im voraus.

    Gruss,

    bool
    Ab wievielen Variablen Schluss ist hängt einfach auch mit der länge der Var. zusammen welche geschrieben werden. Und wenn du in meine connection lib schaust, dort benutze Ich das addvartoread request. Du kannst die Connection Lib auch in einem VB Programm verwenden!
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 14.10.2011, 21:39
  2. (Libnodave) Read Request Frage an die Experten
    Von ronnie.b im Forum Hochsprachen - OPC
    Antworten: 8
    Letzter Beitrag: 28.07.2011, 08:11
  3. Libnodave & SPS Write Protection
    Von hik im Forum Hochsprachen - OPC
    Antworten: 1
    Letzter Beitrag: 07.03.2011, 15:41
  4. Allegemeine Fragen zum Arbteiten mit mehrern Tasks
    Von illi im Forum Programmierstrategien
    Antworten: 1
    Letzter Beitrag: 14.07.2010, 11:25
  5. LibNodave 64bit write error on Linux
    Von 3electrons im Forum Hochsprachen - OPC
    Antworten: 3
    Letzter Beitrag: 23.04.2010, 19:42

Lesezeichen

Berechtigungen

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