Libnodave S5

Praseodym

Level-1
Beiträge
21
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin moin, hat einer schon mal mit Libnodave un dem NodaveComponent unter Delphi daten aus einer S5 ausgelesen ?

bräuchte da mal vielleicht nen kleines beispiel wie ich z.b. nur nen bit auslese... irgenwie funzt das bei mir net, unter s7 wie gesagt kein problem, aber mit as511 protokoll tu ich mich wie gesagt mit der componente noch schwer...


praseodym

edit:
bekomme übrigens den fehlercode -21
 
Zuletzt bearbeitet:
Möglichwerweise geht das nicht, weil libnodave bei AS511 die Daten (fehlerhafterweise) nicht in den vom Anwenderprogramm übergebenen Puffer kopiert. Es wurde die Tage schon mal gefragt, und ich habe einen Vorschlag gemacht, wie man sich da helfen kann.
Nutz mal die Suchfunktion.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Praseodym

Ja das geht, mit einem kleinen Workaround, den Zottel hier

http://www.sps-forum.de/showthread.php?t=12187

erwähnt hatte.

Code:
if not (DaveInterface.Remote[SPS].Protocol = daveProtoAS511) then
        begin
          DaveInterface.Remote[SPS].LastError:=daveReadBytes(DaveInterface.Remote[SPS].DaveConn, AreaCode(DaveInterface.Remote[SPS].Area),
                                               DBNr, Index, Leng, Pointer(Integer(Buffer) + Index));
        end
        else
        begin
          DaveInterface.Remote[SPS].LastError:=daveReadBytes(DaveInterface.Remote[SPS].DaveConn, AreaCode(DaveInterface.Remote[SPS].Area),
                                               DBNr, Index, Leng, nil);
          CopyMemory(Pointer(Integer(Buffer) + Index), DaveInterface.Remote[SPS].DaveConn.resultPointer, Leng);
        end;
Du machst Alles so, wie bei Zugriff über MPI, mußt aber dann mit CopyMemory die Daten umkopieren, sonst hast du sie nicht in deinem Array.
 
Zurück
Oben