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

Ergebnis 1 bis 9 von 9

Thema: LibNoDave

  1. #1
    Registriert seit
    08.05.2009
    Beiträge
    18
    Danke
    1
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich möchte mir mit der libnodave.dll ein Delphi Programm zum Auslesen einzelner SPS-Bausteine schreiben. Mit welcher Funktion ist das möglich,
    und wie wird der Aufruf am besten durchgeführt.


    Ich verwende eine S7-300 mit Ethernet CP und Delphi 7.


    Danke im Voraus
    Zitieren Zitieren LibNoDave  

  2. #2
    Registriert seit
    04.02.2007
    Beiträge
    2.544
    Danke
    167
    Erhielt 731 Danke für 528 Beiträge

    Standard

    Gibt doch ein Beispiel dafür, muss aber etwas angepasst werden.
    Mit Nodavedemo erst einmal die Verbindung testen.

    Mit welcher Funktion hängt davon ab was Du lesen willst.

  3. #3
    SPS_PC ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    08.05.2009
    Beiträge
    18
    Danke
    1
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Das Beispeil habe ich leider nicht gefunden.

    Die Verbindung funktioniert mit den Delphi-Demo.

    Ich möchte OB's, FC's und FB's auslesen.

  4. #4
    Registriert seit
    04.02.2007
    Beiträge
    2.544
    Danke
    167
    Erhielt 731 Danke für 528 Beiträge

    Standard

    Ich habe bisher nur daten damit gelesen, laut Beschreibung kann er aber auch Programmcode lesen und schreiben.

    Demo ist unter DelphiComponent/Demo/Delphi wenn du die Library geladen hast.

  5. #5
    SPS_PC ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    08.05.2009
    Beiträge
    18
    Danke
    1
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Danke das Beispiel hab ich jetzt gefunden.
    Das lesen von Daten funktionert.

    Ich habe mir mal die nodave.pas und die nodavecomponent.pas angeschaut.

    Habe dabei folgende Funktionen in der nodave.pas entdeckt
    initupload, doupload und endupload.
    Sind das die richtigen zum auslesen von OB's und FC's? Wenn ja wie werden sie eingesetzt?

    Gibt es auch solle Funktionen der in nodavecomponent.pas?
    Konnte darin keine vergleichbaren finden.

  6. #6
    SPS_PC ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    08.05.2009
    Beiträge
    18
    Danke
    1
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Ich denke die Funktionen sind richtig.

    Die dem Beispiel beiliegende Komponente habe ich um folgende Funktion erweitert

    Code:
    // Read PLC-Program-Block
    function  TNoDave.ReadPLCPrg(blockType:char; blockNr:longint):longint;
    var
      WasActive : Boolean;
      res       : longint;
      upID,
      len,
      more      :longint;
      sError    : string;
      Buf         : ppuc;
      Data        : string;
      i           : Integer;
    begin
      WasActive:=Active;
      Active:=True;
      // Transfer von SPS nach PC starten
      LockNoDave.Enter;
      res := initUpload(daveConn, blockType, blockNr, @upID);
      LockNoDave.Leave;
      // Transfer ausführen
      New(Buf);
      Buf^ := AllocMem(1024);
      more := 0;
      len  := 0;
      if res = daveResOK then
        begin
          // Blöcke lesen
          LockNoDave.Enter;
          repeat
            res := doUpload(daveConn, @more, @Buf, @len, upID);
            if res <> daveResOK then
              begin
                LockNoDave.Leave;
                Dispose(Buf);
                SError := daveStrerror(abs(res));
                result := res;
                exit;
              end;
          until more <= 0;
          LockNoDave.Leave;
          // Transfer beenden
          endUpload(DaveConn, upID);
        end;
      Data := '';
      for i := 0 to len - 1 do
        Data := Data + pUC(Integer(Pointer(Buf^)) + i)^;
      Dispose(Buf);
      result := res;
      Active:=WasActive;
    end;
    Funktionert leider nicht richtig. Ich vermutet das Problem liegt
    in der Übergabe des Parameters "Buf". Hat jedem Erfahrung mit
    der Parameterübergabe von Delphi an C-Routine mit dem Type
    "Zeiger auf Zeiger auf Char"?
    Geändert von SPS_PC (12.05.2009 um 17:36 Uhr)

  7. #7
    Registriert seit
    22.02.2007
    Ort
    Sponheim
    Beiträge
    190
    Danke
    3
    Erhielt 10 Danke für 9 Beiträge

    Standard

    Wie rufst du die Funktion denn auf?
    Wie kann es sein, dass am Ende des Geldes noch Monat übrig ist?
    Wenn das die Lösung ist, dann hätte ich gerne mein Problem zurück!
    engbarth.es

  8. #8
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.697 Danke für 1.949 Beiträge

    Standard

    Ich hab immer ein Array für Buf definiert. Dieses passe ich bei Bedarf dynamisch in der Länge an.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  9. #9
    SPS_PC ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    08.05.2009
    Beiträge
    18
    Danke
    1
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Danke für die Hilfe,

    ich habe jetzt auch einen Weg gefunden, die Funktionsparameter so zu
    übergeben das es funktioniert.

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 09.09.2010, 00:27
  2. ÄÖnderungen am libnodave.net.cs File von libnodave
    Von Jochen Kühner im Forum Hochsprachen - OPC
    Antworten: 5
    Letzter Beitrag: 12.05.2010, 16:56
  3. LibNoDave unter VB.Net ohne libnodave.net.dll
    Von Earny im Forum Hochsprachen - OPC
    Antworten: 2
    Letzter Beitrag: 09.03.2010, 18:57
  4. libnodave: Woher kommt die "libnodave.net.dll"?
    Von Thomas_v2.1 im Forum Hochsprachen - OPC
    Antworten: 2
    Letzter Beitrag: 10.11.2008, 12:07
  5. VB.Net und Libnodave
    Von oliverlorenz im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 07.05.2008, 10:54

Lesezeichen

Berechtigungen

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