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

Ergebnis 1 bis 6 von 6

Thema: libnodave readbyte > MAXPDU

  1. #1
    Registriert seit
    13.11.2006
    Beiträge
    12
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    kann mir jemand sagen, wie ich mit nodave.readbyte mehr als 200 Bytes einlesen kann. Ich muss einen größeren Block Realwerte einlesen und ab 200 Byte liest readbyte nur noch Mist.

    Danke
    jangbu
    Zitieren Zitieren libnodave readbyte > MAXPDU  

  2. #2
    Registriert seit
    27.11.2005
    Ort
    im Osten
    Beiträge
    1.183
    Danke
    141
    Erhielt 271 Danke für 248 Beiträge

    Standard

    Wenn du mit einer Anfrage mehr Daten aus der SPS holen willst, musst du ReadmanyBytes verwenden. Readmanybytes liest die daten dann mit mehreren Aufrufen(je nach max PDU-Größe) von der SPS.
    Es ist nicht schwierig, mit noch nicht erreichten Zielen zu Leben; schwierig ist, ohne Ziele zu Leben !
    (Günther Kraftschik)

  3. #3
    jangbu ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    13.11.2006
    Beiträge
    12
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke MW, aber ich arbeite mit Delphi und steht die Methode ReadManyByte nicht zur Verfügung!!

    jangbu
    Zitieren Zitieren re  

  4. #4
    Registriert seit
    27.11.2005
    Ort
    im Osten
    Beiträge
    1.183
    Danke
    141
    Erhielt 271 Danke für 248 Beiträge

    Standard

    Zitat Zitat von jangbu Beitrag anzeigen
    Danke MW, aber ich arbeite mit Delphi und steht die Methode ReadManyByte nicht zur Verfügung!!
    mist, mir kam der Ausdruck
    Zitat Zitat von jangbu Beitrag anzeigen
    nodave....
    schon irgendwie komisch vor, jetzt weis ich auch warum

    hier stehts ja auch, dass es die Funktion dort nicht gibt
    Es ist nicht schwierig, mit noch nicht erreichten Zielen zu Leben; schwierig ist, ohne Ziele zu Leben !
    (Günther Kraftschik)

  5. Folgender Benutzer sagt Danke zu MW für den nützlichen Beitrag:

    jangbu (14.02.2010)

  6. #5
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.255
    Danke
    537
    Erhielt 2.705 Danke für 1.954 Beiträge

    Standard

    Schau doch mal in die Komponente von Axel, die liegt ja offen bei. Der hat das in etwa so gelöst:

    [PHP]
    procedure DoReadBytes(Buffer: Pointer = Nil; SPS: Integer = 1; Size: Integer = 1024);
    procedure DoWriteBytes(Buffer: Pointer = Nil; SPS: Integer = 1);

    //Read the PLC-data into the buffer.
    //~param Area Requested PLC-area.
    //~param DB Number of requested datablock. Only used, if reading from Datablocks in the PLC.
    //~param Start Start-address of the requested data within the address-range of the PLC.
    //~param Size Length of the requested PLC-data in bytes.
    //~param Buffer Pointer to the buffer. The internal buffer of the instance is used, if Nil (default).
    procedure TNoDave.DoReadBytes(Area: TNoDaveArea; DB, Start, Size: Integer; Buffer: Pointer);
    var
    Index, Length, MaxLen: Integer;
    StartTime: Cardinal;
    begin
    Index:=0;
    StartTime:=GetTickCount;
    MaxLen:=MaxPDUData;
    While (Index < Size) and (MaxLen > 0) do
    begin
    Length:=(Size - Index);
    If Length > MaxLen then Length:=MaxLen;
    try
    LockNoDave.Enter;
    FLastError:=daveReadBytes(DaveConn, AreaCode(Area), DB, Index+Start, Size, Pointer(Integer(Buffer) + Index));
    except
    On E: Exception do DoOnError('Error in function TNoDave.DoReadBytes: ' + E.Message);
    end;
    LockNoDave.Leave;
    Inc(Index, Length);
    end;
    try
    FCycleTime:=GetTickCount - StartTime;
    except
    end;
    end;

    //Write the Buffer-data into the PLC.
    //~param Area Requested PLC-area.
    //~param DB Number of requested datablock. Only used, if reading from Datablocks in the PLC.
    //~param Start Start-address of the requested data within the address-range of the PLC.
    //~param Size Length of the requested PLC-data in bytes.
    //~param Buffer Pointer to the buffer. The internal buffer of the instance is used, if Nil (default).
    procedure TNoDave.DoWriteBytes(Area: TNoDaveArea; DB, Start, Size: Integer; Buffer: Pointer);
    var
    Index, Length, MaxLen: Integer;
    begin
    Index:=0;
    MaxLen:=MaxPDUData-4;
    While (Index < Size) and (MaxLen > 0) do
    begin
    Length:=(Size - Index);
    If Length > MaxLen then Length:=MaxLen;
    try
    LockNoDave.Enter;
    FLastError:=daveWriteBytes(DaveConn, AreaCode(Area), DB, Index+Start, Size, Pointer(Integer(Buffer) + Index));
    except
    On E: Exception do DoOnError('Error in function TNoDave.DoWriteBytes: ' + E.Message);
    end;
    LockNoDave.Leave;
    Inc(Index, Length);
    end;
    end;
    [/PHP]
    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

  7. Folgender Benutzer sagt Danke zu Ralle für den nützlichen Beitrag:

    jangbu (14.02.2010)

  8. #6
    jangbu ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    13.11.2006
    Beiträge
    12
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    sorry, hat etwas gedauert. Danke Ralle + MW, verwende jetzt mehrer ReadBytes.

    jangbu
    Zitieren Zitieren Maxpdu  

Ä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. libnodave MAXPDU
    Von jangbu im Forum Hochsprachen - OPC
    Antworten: 8
    Letzter Beitrag: 19.11.2006, 12:47

Lesezeichen

Berechtigungen

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