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

Seite 32 von 33 ErsteErste ... 2230313233 LetzteLetzte
Ergebnis 311 bis 320 von 328

Thema: DotNetSiemensPLCToolBoxLibrary (LibNoDave) Zugriff auf Dual-Port RAM / FB15

  1. #311
    Hans54216 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    06.04.2013
    Beiträge
    217
    Danke
    10
    Erhielt 5 Danke für 5 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Die Methode "_daveDumpPDU" scheint es ja richtig zu machen.

    Code:
    PDU header: 
                                0:0x32,0x03,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x0E,0x00,0x00,
    plen: 2 dlen: 14
    Parameter: 
                                0:0x04,0x02,
    Data     : 
                                0:0xFF,0x05,0x00,0x02,0x00,0xF4,0xFF,0x07,0x00,0x04,0x41,0x9B,0x33,0x30,
    Data hdr : 
                                0:0xFF,0x05,0x00,0x02,
    Data     : 
                                0:0x00,0xF4,
    Data hdr : 
                                0:0xFF,0x07,0x00,0x04,
    Data     : 
                                0:0x41,0x9B,0x33,0x30,
    error: ok
    Code:
    /*
    Hex dump PDU:
    */
    void DECL2 _daveDumpPDU(PDU * p) {
        int i,dl;
        uc * pd;
        _daveDump("PDU header", p->header, p->hlen);
        LOG3("plen: %d dlen: %d\n",p->plen, p->dlen);
        if(p->plen>0) _daveDump("Parameter",p->param,p->plen);
        if(p->dlen>0) _daveDump("Data     ",p->data,p->dlen);
        if ((p->plen==2)&&(p->param[0]==daveFuncRead)) {
            pd=p->data;
            for (i=0;i<p->param[1];i++) {
                _daveDump("Data hdr ",pd,4);
    
    
                dl=0x100*pd[2]+pd[3];
                if (pd[1]==4) dl/=8;
                pd+=4;        
                _daveDump("Data     ",pd,dl);
                if(i<p->param[1]-1) dl=dl+(dl%2);      // the PLC places extra bytes at the end of all 
                // but last result, if length is not a multiple 
                // of 2
                pd+=dl;
            }
        } else if ((p->header[1]==1)&&/*(p->plen==2)&&*/(p->param[0]==daveFuncWrite)) {
            pd=p->data;
            for (i=0;i<p->param[1];i++) {
                _daveDump("Write Data hdr ",pd,4);
    
    
                dl=0x100*pd[2]+pd[3];
                if (pd[1]==4) dl/=8;
                pd+=4;        
                _daveDump("Data     ",pd,dl);
                if(i<p->param[1]-1) dl=dl+(dl%2);      // the PLC places extra bytes at the end of all 
                // but last result, if length is not a multiple 
                // of 2
                pd+=dl;
            }
        } else {    
            /*    
            if(p->dlen>0) {
            if(p->udlen==0)
            _daveDump("Data     ",p->data,p->dlen);
            else
            _daveDump("Data hdr ",p->data,4);
            }    
            if(p->udlen>0) _daveDump("result Data ",p->udata,p->udlen);
            */    
        }
        if ((p->header[1]==2)||(p->header[1]==3)) {
            LOG2("error: %s\n",daveStrerror(daveGetPDUerror(p)));
        }    
    }

  2. #312
    Registriert seit
    29.03.2004
    Beiträge
    6.172
    Danke
    151
    Erhielt 1.823 Danke für 1.316 Beiträge

    Standard

    libnodave kannte die anderen Transportgrößen 5 und 7 überhaupt nicht, vermutlich haben wir das irgendwann mal ergänzt aber nicht bei der dump-Funktion?
    Bei einer S7 SPS braucht libnodave diese auch nicht zu kennen, weil wenn du bei der Anfrage angibst du möchtest 2 Bytes lesen, dann kommt auch niemals die Transportgröße 5 oder 7 zurück, sondern die SPS schickt dir auch Transportgröße Byte (dann ist die Anzahl in Bits). Frag mich nicht warum Siemens das überhaupt so vorgesehen hat.

    Festzustellen ist, dass wenn du einen NC Bereich anfragst, die Transportgröße 5 anders zu interpretieren ist als bei einer S7-SPS. Bei Siemens muss man einiges einfach so hinnehmen wie es ist.
    Die Genialität einer Konstruktion liegt in ihrer Einfachheit – Kompliziert bauen kann jeder.

    (Sergei Pawlowitsch Koroljow, sowjetischer Konstrukteur von Raketen und Weltraumpionier)

  3. #313
    Hans54216 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    06.04.2013
    Beiträge
    217
    Danke
    10
    Erhielt 5 Danke für 5 Beiträge

    Standard

    Hab mal alle bekannten Datentypen des Antriebs ausgelesen.

    Code:
    V1_M_p04001_INT                              Error (3): this result contains no data
                                                                           AnzVar 1; akVar 0
                                                                           readsizes 2
                                                                           usedShortRequest False
    V1_M_r0035_REAL                              19,8
    V1_M_p00051_WORD                        2
    V1_M_p0015_DWORD                       0
    V1_M_p0161_CHAR                            0
    V1_M_p9802_DINT                             Error (3): this result contains no data
                                                                           AnzVar 1; akVar 0
                                                                           readsizes 4
                                                                           usedShortRequest False
    Drive-Int_Real_Word_DWord_Char-DInt.rar

    Code:
    PDU header: 
                                0:0x32,0x01,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,
    plen: 12 dlen: 0
    Parameter: 
                                0:0x04,0x01,0x12,0x08,0x82,0xA1,0x01,0x90,0x00,0x01,0x1A,0x01,
    PDU header: 
                                0:0x32,0x01,0x00,0x00,0x00,0x00,0x00,0x16,0x00,0x00,
    plen: 22 dlen: 0
    Parameter: 
                                0:0x04,0x02,0x12,0x08,0x82,0xA1,0x01,0x90,0x00,0x01,0x1A,0x01,0x12,0x08,0x82,0xA1,
                                10:0x00,0x23,0x00,0x01,0x1A,0x01,
    PDU header: 
                                0:0x32,0x01,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,
    plen: 32 dlen: 0
    Parameter: 
                                0:0x04,0x03,0x12,0x08,0x82,0xA1,0x01,0x90,0x00,0x01,0x1A,0x01,0x12,0x08,0x82,0xA1,
                                10:0x00,0x23,0x00,0x01,0x1A,0x01,0x12,0x08,0x82,0xA1,0x00,0x05,0x00,0x01,0x1A,0x01,
    PDU header: 
                                0:0x32,0x01,0x00,0x00,0x00,0x00,0x00,0x2A,0x00,0x00,
    plen: 42 dlen: 0
    Parameter: 
                                0:0x04,0x04,0x12,0x08,0x82,0xA1,0x01,0x90,0x00,0x01,0x1A,0x01,0x12,0x08,0x82,0xA1,
                                10:0x00,0x23,0x00,0x01,0x1A,0x01,0x12,0x08,0x82,0xA1,0x00,0x05,0x00,0x01,0x1A,0x01,
                                20:0x12,0x08,0x82,0xA1,0x00,0x0F,0x00,0x01,0x1A,0x01,
    PDU header: 
                                0:0x32,0x01,0x00,0x00,0x00,0x00,0x00,0x34,0x00,0x00,
    plen: 52 dlen: 0
    Parameter: 
                                0:0x04,0x05,0x12,0x08,0x82,0xA1,0x01,0x90,0x00,0x01,0x1A,0x01,0x12,0x08,0x82,0xA1,
                                10:0x00,0x23,0x00,0x01,0x1A,0x01,0x12,0x08,0x82,0xA1,0x00,0x05,0x00,0x01,0x1A,0x01,
                                20:0x12,0x08,0x82,0xA1,0x00,0x0F,0x00,0x01,0x1A,0x01,0x12,0x08,0x82,0xA1,0x00,0xA1,
                                30:0x00,0x01,0x1A,0x01,
    PDU header: 
                                0:0x32,0x01,0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x00,
    plen: 62 dlen: 0
    Parameter: 
                                0:0x04,0x06,0x12,0x08,0x82,0xA1,0x01,0x90,0x00,0x01,0x1A,0x01,0x12,0x08,0x82,0xA1,
                                10:0x00,0x23,0x00,0x01,0x1A,0x01,0x12,0x08,0x82,0xA1,0x00,0x05,0x00,0x01,0x1A,0x01,
                                20:0x12,0x08,0x82,0xA1,0x00,0x0F,0x00,0x01,0x1A,0x01,0x12,0x08,0x82,0xA1,0x00,0xA1,
                                30:0x00,0x01,0x1A,0x01,0x12,0x08,0x82,0xA1,0x26,0x4A,0x00,0x01,0x1A,0x01,
    daveExecReadRequest(dc:000000001A84DB10, PDU:000000001A8302B0, rl:000000001A83A250
    _daveExchange PDU number: 65536
    ReadFromNck enter _daveExchangeTCP
    send packet: : 
                                0:0x03,0x00,0x00,0x4F,0x02,0xF0,0x80,0x32,0x01,0x00,0x00,0x00,0x00,0x00,0x3E,0x00,
                                10:0x00,0x04,0x06,0x12,0x08,0x82,0xA1,0x01,0x90,0x00,0x01,0x1A,0x01,0x12,0x08,0x82,
                                20:0xA1,0x00,0x23,0x00,0x01,0x1A,0x01,0x12,0x08,0x82,0xA1,0x00,0x05,0x00,0x01,0x1A,
                                30:0x01,0x12,0x08,0x82,0xA1,0x00,0x0F,0x00,0x01,0x1A,0x01,0x12,0x08,0x82,0xA1,0x00,
                                40:0xA1,0x00,0x01,0x1A,0x01,0x12,0x08,0x82,0xA1,0x26,0x4A,0x00,0x01,0x1A,0x01,
    readISOpacket: 63 bytes read, 63 needed
    readISOpacket: packet: 
                                0:0x03,0x00,0x00,0x3F,0x02,0xF0,0x80,0x32,0x03,0x00,0x00,0x00,0x00,0x00,0x02,0x00,
                                10:0x2A,0x00,0x00,0x04,0x06,0xFF,0x05,0x00,0x02,0x00,0xF4,0xFF,0x07,0x00,0x04,0x41,
                                20:0x9E,0x66,0x64,0xFF,0x06,0x00,0x02,0x00,0x02,0xFF,0x06,0x00,0x04,0x00,0x00,0x00,
                                30:0x00,0xFF,0x06,0x00,0x01,0x00,0x00,0xFF,0x05,0x00,0x04,0x00,0x00,0x00,0x00,
    ReadFromNck _daveExchangeTCP res from read 63
    result of exchange: 0
    PDU header: 
                                0:0x32,0x03,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x2A,0x00,0x00,
    plen: 2 dlen: 42
    Parameter: 
                                0:0x04,0x06,
    Data     : 
                                0:0xFF,0x05,0x00,0x02,0x00,0xF4,0xFF,0x07,0x00,0x04,0x41,0x9E,0x66,0x64,0xFF,0x06,
                                10:0x00,0x02,0x00,0x02,0xFF,0x06,0x00,0x04,0x00,0x00,0x00,0x00,0xFF,0x06,0x00,0x01,
                                20:0x00,0x00,0xFF,0x05,0x00,0x04,0x00,0x00,0x00,0x00,
    Data hdr : 
                                0:0xFF,0x05,0x00,0x02,
    Data     : 
                                0:0x00,0xF4,
    Data hdr : 
                                0:0xFF,0x07,0x00,0x04,
    Data     : 
                                0:0x41,0x9E,0x66,0x64,
    Data hdr : 
                                0:0xFF,0x06,0x00,0x02,
    Data     : 
                                0:0x00,0x02,
    Data hdr : 
                                0:0xFF,0x06,0x00,0x04,
    Data     : 
                                0:0x00,0x00,0x00,0x00,
    Data hdr : 
                                0:0xFF,0x06,0x00,0x01,
    Data     : 
                                0:0x00,
    Data hdr : 
                                0:0xFF,0x05,0x00,0x04,
    Data     : 
                                0:0x00,0x00,0x00,0x00,
    error: ok
    dave test result: p-param[0]: 4
    daveExecReadRequest result 0: 0  444834384 65537 5197216
    Store result 0 length:-202130528
    daveExecReadRequest result 1: -202130528  444834384 65537 0
    Store result 1 length:-202130528
    daveExecReadRequest result 2: -202130528  444834384 65537 0
    Store result 2 length:-202130528
    daveExecReadRequest result 3: -202130528  444834384 65537 0
    Store result 3 length:-202130528
    daveExecReadRequest result 4: -202130528  444834384 65537 0
    Store result 4 length:-202130528
    daveExecReadRequest result 5: -202130528  444834384 65537 0
    Store result 5 length:-202130528
    daveUseResult(dc:000000001A84DB10, result set:000000001A83A250, number:0)
    result set has 6 results
    result error: 0
    result length: 0

  4. #314
    Registriert seit
    29.03.2004
    Beiträge
    6.172
    Danke
    151
    Erhielt 1.823 Danke für 1.316 Beiträge

    Standard

    Der Unterschied ist nur bei Transportgröße 5, bei allen anderen passt es ja.

    Wie gesagt habe ich Logfiles von verschiedenen S7-Steuerungen wo die Größe hier anders interpretiert werden muss, und so ist es z.Zt. auch in Wireshark gemacht.
    Die Genialität einer Konstruktion liegt in ihrer Einfachheit – Kompliziert bauen kann jeder.

    (Sergei Pawlowitsch Koroljow, sowjetischer Konstrukteur von Raketen und Weltraumpionier)

  5. #315
    Hans54216 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    06.04.2013
    Beiträge
    217
    Danke
    10
    Erhielt 5 Danke für 5 Beiträge

    Standard

    Zitat Zitat von Thomas_v2.1 Beitrag anzeigen
    libnodave kannte die anderen Transportgrößen 5 und 7 überhaupt nicht, vermutlich haben wir das irgendwann mal ergänzt aber nicht bei der dump-Funktion?
    Bei einer S7 SPS braucht libnodave diese auch nicht zu kennen, weil wenn du bei der Anfrage angibst du möchtest 2 Bytes lesen, dann kommt auch niemals die Transportgröße 5 oder 7 zurück, sondern die SPS schickt dir auch Transportgröße Byte (dann ist die Anzahl in Bits). Frag mich nicht warum Siemens das überhaupt so vorgesehen hat.

    Festzustellen ist, dass wenn du einen NC Bereich anfragst, die Transportgröße 5 anders zu interpretieren ist als bei einer S7-SPS. Bei Siemens muss man einiges einfach so hinnehmen wie es ist.
    Nochmal zur Klarstellung:
    Es wird zwar die Methode "ReadFromNck" verwendet, jedoch werden Drive Daten vom Sinamics Antrieb gelesen.
    Auf Nck Daten (NC, Kanal, Achse,...) antwortet die NC immer als "Octet String".

    2018-04-07 12_57_02-Nc Integer Parameter.png
    Nc Integer Parameter.rar

  6. #316
    Hans54216 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    06.04.2013
    Beiträge
    217
    Danke
    10
    Erhielt 5 Danke für 5 Beiträge

    Standard

    Zitat Zitat von Thomas_v2.1 Beitrag anzeigen
    libnodave kannte die anderen Transportgrößen 5 und 7 überhaupt nicht, vermutlich haben wir das irgendwann mal ergänzt aber nicht bei der dump-Funktion?
    Bei einer S7 SPS braucht libnodave diese auch nicht zu kennen, weil wenn du bei der Anfrage angibst du möchtest 2 Bytes lesen, dann kommt auch niemals die Transportgröße 5 oder 7 zurück, sondern die SPS schickt dir auch Transportgröße Byte (dann ist die Anzahl in Bits). Frag mich nicht warum Siemens das überhaupt so vorgesehen hat.

    Festzustellen ist, dass wenn du einen NC Bereich anfragst, die Transportgröße 5 anders zu interpretieren ist als bei einer S7-SPS. Bei Siemens muss man einiges einfach so hinnehmen wie es ist.
    Brauch ich das jetzt für die SPS oder nicht?
    Wenn ich es Auskommentiere funktioniert es zumindest für den Antrieb und für die Nck sowieso.

    Code:
    if ((*q==255)&&(rlen>4)) {
    				len=q[2]*0x100+q[3];
    				if (q[1]==4) {
    					len>>=3;	/* len is in bits, adjust */
    				} else if (q[1]==5) {			/* Fehlenden Size-Type INTEGER ergänzt */
    		    		//len>>=3;	/* len is in bits, adjust */

  7. #317
    Registriert seit
    29.03.2004
    Beiträge
    6.172
    Danke
    151
    Erhielt 1.823 Danke für 1.316 Beiträge

    Standard

    Ich glaube den Wert hatte ich mal ergänzt, falls optional symbolisch auf die 1200er zuzugreifen. Bei den aktuellen 1200ern funktioniert das aber eh wieder völlig anders.
    Meiner Meinung nach kannst du es für deine Zwecke entfernen, dann sollte dein NC Zugriff funktionieren und auch der SPS Variablenzugriff, weil libnodave dort immer in Byte-Größen anfragt.

    Ich weiß nur noch nicht was ich bei Wireshark mache, ich denke mal wenn dann wird man dort eher SPS Datenverkehr zu Gesicht bekommen. Ansonsten müsste ich schon zur Antwort die Anfrage heraussuchen, und wenn dort ein NCK Bereich angefragt wurde, dann die 5 anders interpretieren. Aber das ist nicht mal grad eben.
    Die Genialität einer Konstruktion liegt in ihrer Einfachheit – Kompliziert bauen kann jeder.

    (Sergei Pawlowitsch Koroljow, sowjetischer Konstrukteur von Raketen und Weltraumpionier)

  8. #318
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.824
    Danke
    209
    Erhielt 430 Danke für 342 Beiträge

    Standard

    Ich hatte in meinem libnodave fork ja den Symbolischen 1200er Zugriff eingebaut. Antwortet die SPS denn darauf immer mit 5? Oder ist das nur bei Integer Variablen so? (Teilt die SPS so die größe mit?)

    Geht es denn überhaupt wenn du libnodave änderst und mit "5" anträgst?
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  9. #319
    Hans54216 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    06.04.2013
    Beiträge
    217
    Danke
    10
    Erhielt 5 Danke für 5 Beiträge

    Standard

    Ich bin auf ein neues Problem gestoßen.

    Wenn ich von der NC viele Variablen lese, werden diese automatisch in mehrere PDUs aufgeteilt.
    Im konkreten Fall werden 300 LReal von der NC gelesen und die PDUs werden jeweils bei 77 gesplittet.

    Wenn ich an die NC einen Lesebefehl für Drive-Daten schicke bekomme ich bei mehr als 19 Variablen diese Fehlermeldung:
    [Error code: This service is not implemented on the module or a frame error was reported (0x8104)]

    2018-05-18 15_07_50-Drive PDU Error.png


    Wo erfolgt das aufteilen auf mehrere PDUs?

    LibNoDave oder DotNetSiemensPlcToolBox

  10. #320
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.292
    Danke
    651
    Erhielt 963 Danke für 777 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Stell doch einmal das komplette wireshark-Log ein
    Rainer Hönle
    DELTA LOGIC GmbH

    Man sollte nicht jedem Zitat im Internet glauben schenken (Leonardo da Vinci)

Ähnliche Themen

  1. Zugriff auf WinAC RTX mit LibnoDave
    Von rm2001 im Forum Hochsprachen - OPC
    Antworten: 2
    Letzter Beitrag: 27.04.2012, 20:31
  2. Libnodave & VB.NET Zugriff auf geschützte Speicherbereiche
    Von KJ1234 im Forum Hochsprachen - OPC
    Antworten: 1
    Letzter Beitrag: 10.11.2007, 16:02
  3. Zugriff mit libnodave (unter Delphi) auf S7-CP443-1
    Von Frank im Forum Hochsprachen - OPC
    Antworten: 19
    Letzter Beitrag: 29.04.2007, 13:59
  4. Zugriff auf Siemens S7 per libnodave (MPI)
    Von Anonymous im Forum Hochsprachen - OPC
    Antworten: 15
    Letzter Beitrag: 02.11.2005, 17:09
  5. Fehler bei Zugriff auf COM- Port
    Von h_matthias im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 08.03.2004, 22:14

Stichworte

Lesezeichen

Berechtigungen

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