DotNetSiemensPLCToolBoxLibrary (LibNoDave) Zugriff auf Dual-Port RAM / FB15

Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hab dann die SZL0,0 der NC ausgelesen. NC sendet zwar Daten, jedoch kann LibNoDave mit diesen noch nichts anfangen.
Interpretieren musst du die SZL-Datensätze selber, viele davon sind in dem Dokument für die Siemens Standardfunktionen auch beschrieben.
In Wireshark habe ich nicht alle, aber vor allem die interessanten (zumindest für mich) SZL-Datensätze dekodiert. Laut Aufzeichnung hat die NC u.a. auch was unter SZL-ID 0x0131 anzubieten, du kannst ja mal direkt mit ID=0x0131 Index=1 eine Anfrage starten und gucken was kommt, dieser Datensatz wird auch in Wireshark dekodiert.
 
Interpretieren musst du die SZL-Datensätze selber, viele davon sind in dem Dokument für die Siemens Standardfunktionen auch beschrieben.
Das es die SZL selber interpretieren muss ist mir klar, jedoch bringt LibNoDave "-129" als result und der Buffer ist leer.

Laut Aufzeichnung hat die NC u.a. auch was unter SZL-ID 0x0131 anzubieten, du kannst ja mal direkt mit ID=0x0131 Index=1 eine Anfrage starten und gucken was kommt, dieser Datensatz wird auch in Wireshark dekodiert.
Auf diese ID kommt "Return code: Object does not exist (0x0a)"

Für ID 0x0111 Index 0x0001 bekomme ich eine Antwort die von WireShark dekodiert wird. LibNoDave bring jedoch wieder ret = -129

Code:
daveReadSZL(dc:005CDBC0, ID:273, index:1, buffer:01B308B8)adding user data header.
dCount: 0
dCount: 4
PDU header: 
                            0:0x32,0x07,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x08,
plen: 8 dlen: 8
Parameter: 
                            0:0x00,0x01,0x12,0x04,0x11,0x44,0x01,0x00,
Data     : 
                            0:0xFF,0x09,0x00,0x04,0x01,0x11,0x00,0x01,
_daveExchange PDU number: 65536
PI_DienstNC enter _daveExchangeTCP
send packet: : 
                            0:0x03,0x00,0x00,0x21,0x02,0xF0,0x80,0x32,0x07,0x00,0x00,0x00,0x00,0x00,0x08,0x00,
                            10:0x08,0x00,0x01,0x12,0x04,0x11,0x44,0x01,0x00,0xFF,0x09,0x00,0x04,0x01,0x11,0x00,
                            20:0x01,
readISOpacket: 69 bytes read, 69 needed
readISOpacket: packet: 
                            0:0x03,0x00,0x00,0x45,0x02,0xF0,0x80,0x32,0x07,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,
                            10:0x28,0x00,0x01,0x12,0x08,0x12,0x84,0x01,0xB6,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,
                            20:0x24,0x01,0x11,0x00,0x01,0x00,0x1C,0x00,0x01,0x00,0x00,0x36,0x46,0x43,0x35,0x33,
                            30:0x37,0x33,0x2D,0x30,0x41,0x41,0x33,0x30,0x2D,0x30,0x41,0x42,0x30,0x00,0x00,0x58,
                            40:0xCF,0x00,0x07,0x11,0x01,
PI_DienstNC _daveExchangeTCP res from read 69
result of exchange: 0
*** res of _daveExchange(): 0
PDU header: 
                            0:0x32,0x07,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x28,
plen: 12 dlen: 40
Parameter: 
                            0:0x00,0x01,0x12,0x08,0x12,0x84,0x01,0xB6,0x00,0x00,0x00,0x00,
Data     : 
                            0:0xFF,0x00,0x00,0x24,0x01,0x11,0x00,0x01,0x00,0x1C,0x00,0x01,0x00,0x00,0x36,0x46,
                            10:0x43,0x35,0x33,0x37,0x33,0x2D,0x30,0x41,0x41,0x33,0x30,0x2D,0x30,0x41,0x42,0x30,
                            20:0x00,0x00,0x58,0xCF,0x00,0x07,0x11,0x01,
PDU header: 
                            0:0x32,0x07,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x28,
plen: 12 dlen: 40
Parameter: 
                            0:0x00,0x01,0x12,0x08,0x12,0x84,0x01,0xB6,0x00,0x00,0x00,0x00,
Data     : 
                            0:0xFF,0x00,0x00,0x24,0x01,0x11,0x00,0x01,0x00,0x1C,0x00,0x01,0x00,0x00,0x36,0x46,
                            10:0x43,0x35,0x33,0x37,0x33,0x2D,0x30,0x41,0x41,0x33,0x30,0x2D,0x30,0x41,0x42,0x30,
                            20:0x00,0x00,0x58,0xCF,0x00,0x07,0x11,0x01,
*** res of _daveSetupReceivedPDU(): 0000
fixme: what to do with data type 0?
*** res of _daveTestPGReadResult(): FFFFFF7F
result of daveReadSZL(1): -129
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Das es die SZL selber interpretieren muss ist mir klar, jedoch bringt LibNoDave "-129" als result und der Buffer ist leer.
Das liegt an der TransportSize=0 mit der die NC antwortet. Man kennt ja die Spezifikation für das Protokoll nicht, alle anderen S7-Gerätschaften geben aber 0 nur aus wenn die Datenlänge auch 0 ist, zumindest in allen Aufzeichnungen die ich bisher so gesehen habe. Bei der NC steht 0 aber wohl auch für Transportgröße Byte. Aufgrund der Tatsache, dass da auch andere Teile nicht ganz sauber in der NC umgesetzt wurden, würde ich das mal als Fehler oder im Siemens-Sprech "Systemunschärfe" ansehen.

Schade, dass die SZL ID 0x131/1 nicht funktioniert. So auf Anhieb habe ich auch keine Idee woran du diesen Unterschied sonst noch festmachen könntest.
 
Guten Morgen und ein frohes neues Jahr!

Gibt es ein offizielles Release von Libnodave mit dem Up/Download von NC-Dateien, das ich in eigenen C++ Code einbetten / linken darf?

Vielen Dank!
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich weiß nicht wie viele von den Funktionen Jochen Kühner in seine Bibliothek eingebaut hat, ein paar sind aber vorhanden:

https://github.com/dotnetprojects/DotNetSiemensPLCToolBoxLibrary

Gut, dann könnte ich ja seine fertige DLL nehmen und in mein Programm linken- und es dann ebenfalls unter die GNU stellen.
Ich möchte ein Kommandozeilentool zum Transfer von Programmen erstellen. Das geht zwar auch mit PSCP, allerdings "verschluckt" sich dann manchmal das Zeilenende und fehlt einfach. Derzeit übertrage ich einfach so lange, bis es passt- aber das ist ja hochgradig semiprofessionell und keine saubere Lösung.
Und an einer virtuellen NC geht es natürlich auch nicht, da die kein Filesystem auf der Karte hat.
Es wäre nur ein kleiner Schritt zum Debugger für Zyklen, wenn man so was wie GUD's lesen kann... Was sehr angenehm wäre.
Werde die nächsten Wochen und Monate mal ein bisschen experimentieren, vielleicht kommt ja was bei rum.

Vielen Dank!
 
ich habe gerade keine VNCK zur Hand , denke aber das die Funktionen nicht im NCK liegen sondern eher in BS der NCU und das fehlt bei dir ja.
deswegen würde ich mal tippen keine Möglichkeiten.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hmm... Ein HMI kommt von außen drauf, also über den CAP-Server müsste man prinzipiell drauf kommen- dächte ich so in meinem nicht mehr ganz jugendlichen Leichtsinn.
Daher wäre meine Hoffnung ja, dass Libnodave hier den gleichen Weg wie CAP (bzw. HMI) nimmt und somit das interne Filesystem über den gleichen Weg erreicht wie das HMI.

Probieren geht über studieren... Mal schauen was ich so hinkriege.
 
Der HMI geht über den CAP , die SSH /FTP ist ja nur dazu gedacht um von außen auf die NCU zukommen.
Ich habe mir den Weg den Libnodave nimmt nicht angeschaut aber ich denke die Verbindung läuft über den Port 102.
Hatte ja schon mal meine Bedenken geäußert das dieser zugriff auf das NCK Filesystem nicht gewollt ist und gegeben falls nicht mehr geht bei neueren NC Versionen.
hast du die HMI OA Software ? wenn ja könntest de dir ja da die CAP zugriffe auf das Filesystem anschauen.
 
Ich hab mir mal die Kommunikation der Step7 Variablentabelle angesehen. So wie es aussieht wird für das PEW3000 ein Event angemeldet. Antwort kommt dann als Push-Undef -> VarTab.
Die Normale VarTab Funktion meldet "Object does not exist".

VAT_PEW3000.png

PEW3000.jpg


Anhang anzeigen PEW3000.rar
 
Funktioniert das Lesen mit Libnodave denn nicht mit einer entsprechenden Bereichsangabe wie daveP bzw. 0x80?

Das mit "Push-Undef" habe ich in der letzten Wireshark Version behoben, dort wird dann "Push-Res" für Response angezeigt. Die Variablentabellenfunktionen habe aber ich nicht bis ins letzte Detail ausgearbeitet, wenn ich mich recht erinnere war das relativ verwoben und je nach CPU auch noch unterschiedlich umgesetzt. Die Triggerbedingungen wie Zyklusbeginn, Zyklusende usw. stecken da auch noch mit drin.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hab mir gestern mal die Lib genau angesehen und bin auf die 0x80 (Periphery) gestoßen. Diese wurde beim Interpretieren der PLC Adresse (DotNetSiemensPLCToolBoxLibrary) nicht betrachtet.
Durch die Änderung kann ich nun PEx lesen.
Weißt du wie ich PAx lesen kann?
 
Zurück
Oben