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

Ergebnis 1 bis 10 von 10

Thema: C/C++ libnodave komplettes Programm aus S7 sichern/einspielen

  1. #1
    Registriert seit
    23.07.2003
    Beiträge
    209
    Danke
    22
    Erhielt 14 Danke für 12 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi ...

    hat jemand zufällig sowas schon mal gemacht ? (Das komplette Programm ausgelesen und als Binärdaten o.ae. gespeichert bzw. zurückgeladen)

    Theoretisch kann libnodave das, in C# hab ich da auch schon zumindest Bausteine gelesen, aber in Purem C/C++ (dort wo es laufen muss gibts kein DotNET)

    danke
    michael
    Zitieren Zitieren C/C++ libnodave komplettes Programm aus S7 sichern/einspielen  

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

    Standard

    In der von mir modifizierten Version von libnodave gibts dafür davePutProgramBlock und daveGetProgramBlock. Der Code dafür stammt größtenteils aus dem Beispielprogramm welches bei libnodave dabei ist! Ich wollte es nur als funktionen in der DLL.
    Die DLL gibts auf meiner Codplexseite, die kannst du natürlich auch in C/C++ verwenden (ohne C#)
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  3. #3
    nekron ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    23.07.2003
    Beiträge
    209
    Danke
    22
    Erhielt 14 Danke für 12 Beiträge

    Standard

    Hi Jochen,

    hast du dazu vielleicht irgendwo mal ein beispiel in C mit einem VS-Projekt gemacht ? Entweder bin ich zu blöd, aber mein letztes mal reines C war in VS5/6, ich bekomm da im Moment nur Fehler ;(

    Ich glaube es hat sich erledigt, ich bin auf dem besten Wege

    Danke
    michael
    Geändert von nekron (03.04.2013 um 18:24 Uhr)

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

    Standard

    Nochwas: beim zurückspielen von SDBs muss man anscheinend die Reihenfolge beachten! Jetzt frag mich aber nicht, wie die Reihenfolge aussieht!

  5. #5
    nekron ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    23.07.2003
    Beiträge
    209
    Danke
    22
    Erhielt 14 Danke für 12 Beiträge

    Standard

    Die SDBs interessieren mich zum Glück nicht die Bohne ...

    Die Original libnodave kann aber nur Bausteine lesen oder ?

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

    Standard

    jo soweit ich weis... das schreiben gibts da zwar auch, aber nicht in der lib sondern in einem extra programm!

    deweiteren hab ich in der doUpload funktion noch folgendes gefixt:

    *len+=netLen;

    wird zu

    *len=netLen;

    warum weiss ich nicht mehr, glaube aber das sonst große bausteine nicht funktioniert haben.
    Also mit meiner Modifizierten libnodave hab Ich auf jeden Fall down und upload an div SPSen getestet und es funzt!
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

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

    Standard

    Kannst dir auch hier mein Tool (Tools | JFK-Solutions) : Backup Restore Blocks ansehen, das nutzt die beiden Down und Upload funktionen.

    Ist halt in CSharp, aber damit kannst du halt vorher testen ob der Up/Download mit meiner DLL funzt, und falls bei dir was nicht funzt, weißt du ob der Fehler in deinem Code oder meiner DLL liegt!
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  8. #8
    nekron ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    23.07.2003
    Beiträge
    209
    Danke
    22
    Erhielt 14 Danke für 12 Beiträge

    Standard

    Das würde ich gerne nutzen bzw. ein bisserl Automatisieren, jedoch gibt es auf dem Zielsystem kein DotNET ...

    Das Lesen funktioniert soweit auch, jedoch beim Schreiben hakts ...

    Code:
    void saveBlocksOfType(daveConnection * dc, int blockType) {
        int j, i, len;
        HANDLE fd;
        unsigned long res;
        char blockName [20];
        uc blockBuffer[200000],*bb;
        daveBlockEntry dbe[1024];   
        j=daveListBlocksOfType(dc, blockType, dbe);
        if (j<0) {
     return;
        }
        for (i=0; i<j; i++) {
     printf("%s%d  %d %d",
         daveBlockName(blockType),
         dbe[i].number, dbe[i].type[0],dbe[i].type[1]); 
     bb=blockBuffer;
        sprintf(blockName,"%s%d.mc7",daveBlockName(blockType), dbe[i].number); 
        fd = CreateFile(blockName,
                GENERIC_READ, 
                FILE_SHARE_READ, 
                NULL, 
                OPEN_EXISTING,
          FILE_ATTRIBUTE_NORMAL, 
                NULL);
        if (ReadFile(fd, blockBuffer, sizeof(blockBuffer) - 1, &len, NULL))
        {
                printf(" ... File Size: %d\n",len);
                davePutProgramBlock(dc,blockType,dbe[i].number,&blockBuffer,&len);
        }
        CloseHandle(fd);
        }
    }
    Hast du vielleicht eine Idee warum das schief geht ?

    danke
    michael

  9. #9
    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 nekron Beitrag anzeigen
    Das würde ich gerne nutzen bzw. ein bisserl Automatisieren, jedoch gibt es auf dem Zielsystem kein DotNET ...
    Das hab Ich schon kappiert, mir gings drum, das du mit den gleichen Bausteinen welche du von deinem Zielsystem lesen bzw schreiben willst, den von deinem Entwicklungsrechner mit meiner Software machst, um zu schauen obs mit der Bibliothek überhaupt funktioniert! So kannst du einen fehler in meinem Code ausschließen!
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  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
    Müsstest du an ReadFile nicht auch die Adresse von blockBuffer übergeben ?? d.h. &blockBuffer

    Oder
    blockBuffer ist schon ein Pointer, weiß nicht mehr so genau wie das in C ist, dann müsste das & doch bei PutProgrammBlock weg...
    ---------------------------------------------
    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. Klöckner Möller PS3 - Programm sichern
    Von snert84 im Forum Sonstige Steuerungen
    Antworten: 5
    Letzter Beitrag: 24.02.2013, 20:48
  2. DB's in SQL DB sichern? Libnodave?
    Von H00K im Forum Hochsprachen - OPC
    Antworten: 4
    Letzter Beitrag: 21.12.2009, 11:54
  3. S5-Programm in Flashspeicher sichern
    Von coma2205 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 24.02.2009, 08:38
  4. Programm aus S5 sichern
    Von rainmen im Forum Simatic
    Antworten: 63
    Letzter Beitrag: 25.11.2008, 16:25
  5. S7-300 Programm sichern!
    Von stefand im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 04.01.2007, 13:09

Lesezeichen

Berechtigungen

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