LibNoDave: daveListBlocksOfType Error

mark_us

Level-1
Beiträge
8
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo LibNoDave-User,

die Funktion daveListBlocksOfType von LibNoDave läuft bei mir problemlos mit einer 315er SPS,
auch bei einer 400er geht es prima, solange nicht mehr als 113 Bausteines eines Typs vorliegen.
Ist das aber der Fall muss die Lib ein 2. Paket von der SPS anfordern, dabei kommt bei der 400er CPU
allerdings immer ein Fehler zurück.
Ein bisschen nachforschen brachte das Problem zum Vorschein, die SPS vergibt bei ListBlocks-Anfragen eine
Sequenz-Nummer (bei den 300er scheint das immer die 1 zu sein, was in der Lib auch fest hinterlegt ist).
Wenn die Lib diese Nummer in das Paket für die 2. Anfrage übernimmt klappt es auch bei der 400er wieder.
Das Ganze ist nur eine kleine Änderung im Code der Funktion, bevor "daveBuildAndSendPDU" in Zeile 1102
aufgerufen wird muss dann eben noch eine Zuweisung mit rein:

pam[7]=p2.param[7];

ListBlocks.png

mark_us
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Update:
Zu dem oben beschriebenen Verhalten bei mehr als 113 Bausteinen eines Typs gibt es noch einen Sonderfall der bisher in LibNoDave und auch
in der DotNetSiemensPLCToolBoxLibrary nicht mit abgefangen wird.
Das Problem tritt nur auf wenn die Anzahl der Bausteine eines Typs durch 113 teilbar ist.
Die SPS sendet dann im letzten Paket mit Baustein-Nummern das Falg für weitere Pakete.
Code:
while (p2.param[9]!=0)
Im nächsten Paket kommt dann (bei p2.param[9]==0) aber als Return-Wert hexD20E, was in LibNoDave zu einem Fehler führt.
Sollte aber wohl eher bedeuten dass jetzt keine Daten mehr kommen.
 
Also habe das mit der von mir modifizierten Version von LibNoDave getestet welche in meinem GitHub Projekt enthalten ist!

Da geht mit einer 315-2-PN/DP das abrufen der Liste mit 112/113 und 114 DBs ohne Probleme!
 
Hallo Jochen,

ich hab das beschriebene Verhalten an einer 416-3DP gehabt und konnte es jetzt auch an einer 414-3PN/DP nochmal nachstellen.
Hab es jetzt aber auch gleich noch an einer 315-2DP mit NetlinkPro versucht. Da tritt es nicht auf.
Die Anzahl der je Paket von der SPS zurückgegebenen Baustein-Nummern ist bei meiner 315er 51, bei der 400er waren es immer 113.
Die 315 sagt aber im letzten Paket durch p2.param[9]==0 dass jetzt Schluss ist, die 400er macht das anders.
Da kommt noch das beschriebene Paket ohne weitere Daten nach.

mark_us
 
Kannst du mir die dll auch mit .Net4 erstellen?
Ich bin zur Zeit noch mit VS2010 am arbeiten, da schein es Probleme mit der dll in Version 4.5 zu geben.
Ich kann das Projekt nicht übersetzen.
 
Hab deine neue dll jetzt mit der alten Version der Toolbox und auch mit den C#-Adapter von libnodave getestet.
Jetzt kommt die richtige Anzahl an Bausteinen zurück.
 
Zurück
Oben