LibNoDave Problem mit ReadSZL

GvOdin

Level-1
Beiträge
32
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Morgen

Ich will aus VB.net mit Hilfe der LibNoDave Lib. die SZL einer S7-300 Station auslesen (mit CP 343-1). Die Verbindung zur SPS steht und funzt auch richtig. Wenn das Programm nun an die stelle res = dc.readSZL(25, 1...19, buf) kommt bekomme ich die Fehlermeldung das der Stapel nicht aufgelöst werden kann, weil nicht genug Werte der Funktion übergeben wurden. Ich kann ja aber nicht mehr eingeben :(.
Hier im Forum habe ich gelesen das der Funktion readSZL 5 Werte übergeben werden müssen, warum kann ich nur 3 (Frage z6um Verständnis: sind es eigentlich 4, da der Pointer für die Verbindung mit dc. übergeben wird?) im VB.net übergeben?

Hoffntlich kann mir jemand helfen bitte, bitte. Und danke im Voraus.
 
Hier im Forum habe ich gelesen das der Funktion readSZL 5 Werte übergeben werden müssen, warum kann ich nur 3 (Frage z6um Verständnis: sind es eigentlich 4, da der Pointer für die Verbindung mit dc. übergeben wird?) im VB.net übergeben?
Ich hab gerade nachgeschaut, in der libnodave.net.cs ist bis Version 0.8.2 in der Methode readSZL noch ein Fehler, den Zottel mittlerweile behoben hat. Die neue Version ist aber noch nicht released, darum ersetze den Code einfach mal mit diesem:
Code:
[DllImport("libnodave.dll"/*, PreserveSig=false */ )]
protected static extern int daveReadSZL(IntPtr dc,int id,int index,byte[] ddd, int len);
public int readSZL(int id,int index,byte[] ddd, int len) {
    return daveReadSZL(pointer,id,index, ddd, len);
}

Gruß Axel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hmm alles klar das habe ich mir schon fast gedacht. Aber nun ist der Faktor menschliche Unwissenheit noch da :ROFLMAO: (meinerseits versteht sich). Es ist nämlich so das ich erst seit ungefähr 4Wochen vb programmiere und vorher nur ein paar, mehr schlechte als rechte, C-Kenntnisse besaß/besitze. Aber nun zu meinen Fragen.
Wie verhällt sich das mit der DLL den cs-File und vb.net?
Muss ich die cs-Datei in mein Projekt mit einbinden oder an eine spezielle Stelle kopieren :confused:?

Vielen lieben Dank für die Hilfe
 
Wie verhällt sich das mit der DLL den cs-File und vb.net?
Muss ich die cs-Datei in mein Projekt mit einbinden oder an eine spezielle Stelle kopieren :confused:?
Ich hab's zwar noch nicht ausprobiert, aber durch Ausführen der MSNet.bat wird wohl die libnodave.net.dll aus der libnodave.net.cs erstellt. Die dll bindest Du dann ganz normal in dein vb.net-Projekt ein, so wie Du es mit der alten dll auch gemacht hast.


Gruß Axel
 
wenn ich die bat ausführe bekomme ich folgende Ausgabe und nix passiert weil er ja nix findet. Siehe Bild in der Anlage.
 

Anhänge

  • Unbenannt.JPG
    Unbenannt.JPG
    62 KB · Aufrufe: 47
Zuviel Werbung?
-> Hier kostenlos registrieren
Das sieht mir so aus, als wenn csc.exe (der C#-Compiler) nicht zu finden ist. Du mußt entweder den Pfad mit set path=<Pfad zum Compiler in deiner Installation> anpassen oder in der Batch-Datei ergänzen.
 
Serce ich noch ma

Das mit dem auslesen der SZL haut jetzt ja hin wie lese ich aber die Nutzdaten. Damit meine ich die Datensätze, die bestehen ja nur aus Bytes also aus ner Hexzahl. Als was kann ich diese Zahlen intepretieren? Als ASCII-Zeichen oder ist das von SIEMENS intern codiert?
 
Die Bedeutung der Bytes der Einträge der SZL ist zum Teil in den Handbüchern von Siemens erklärt, zum Teil auch nicht. Die SPS liefert keine Texte. Diese bringt z.B. bei der Baugruppendiagnose Step7 mit, wodurch der Text dann auch gleich in der bei Step7 gewählten Sprache ausgegeben wird.
 
Zurück
Oben