Status der CPU mit Libnodave auslesen.

toki

Level-1
Beiträge
6
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
ich probiere den Excel Beispiel mit Libnodave aus und möchte später das Modul für die Visualisierung unter VB6 einsetzen. Alle Makros außer ( readDiagnostic ) funktionieren einwandfrei. Ich benötige diese Funktion, da ich später den Zustand der CPU abfragen möchte. Bei ausführen der Makro bekomme ich die Fehlermeldung " Laufzeitfehler 49 Falsche DLL-Anrufkonvention " und die Bearbeitung bleibt in der Zeile
"res2 = daveReadSZL (dc, ID, 0 , buffer (0))" stehen. Auch mit anderen ID’s aus Siemens Handbuch funktionier das Makro nicht.
Meine Hardware.
Siemens FeldPG mit WinXP
Verbindung mit AG über CP5611 (MPI)
S7-313C und S7-316-2DP
Libnodave 0.8.2


Wäre nett wenn einer einen Tipp hat, danke im voraus.
mfg

 
toki schrieb:
und die Bearbeitung bleibt in der Zeile
"res2 = daveReadSZL (dc, ID, 0 , buffer (0))" stehen.
Die Funktion daveReadSZL hat (seit Version 0.8.2) einen 5. Parameter "buflen" vom Typ int, mit dem die Größe des Buffers übergeben werden muß. Damit werden Zugriffsverletzungen verhindert, wenn der reservierte Speicher für die komplette SZL zu klein ist.


Gruß Axel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Besten Dank,
dass hat mir weitergeholfen. Das Makro funktioniert.:)
Ich habe noch eine Frage, muss "buffer" und "buflen" gleich sein und wie groß darf der Wert maximal sein? Ich habe Wert 0 eingegeben und kann ohne Probleme verschiene Zustände und CPU –Informationen abfragen.

Gruß Denis.
 
toki schrieb:
Ich habe noch eine Frage, muss "buffer" und "buflen" gleich sein und wie groß darf der Wert maximal sein?
"buffer" ist der Pufferspeicher, in dem die angeforderte SZL abgelegt werden soll, "buflen" gibt die Größe dieses Puffers in Bytes an, die beiden stehen also in direktem Zusammenhang. Der Hintergrund dafür ist, das nicht für jede SZL ein Index verfügbar ist, mit dem nur der Header mit den Größenangaben zurückgeliefert wird. Wenn das aber vorher nicht abgefragt werden kann, ist es nicht möglich die Puffergröße passend zu dimensionieren. Ist die SZL dann größer als der reservierte Puffer, so wird durch den Parameter "buflen" ein Kopieren von Daten über den Puffer hinaus verhindert. Die Größe ist meines Wissens nicht limitiert, wenn man mal von den Grenzen seitens Speicher und Datentyp (int) absieht.


Gruß Axel
 
Ist aber SPS-seitig limitiert. Ich glaube die maximale Größe liegt hier bei ca. 64 kB. Dies erhält man z.B., wenn man die Anzahl der Diagnosepuffereinträge auf 3200 setzt (soweit ich weiß das Maximum für große SPSen). Etwas größeres ist mir nicht bekannt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
ich probiere den Excel Beispiel mit Libnodave aus und möchte später das Modul für die Visualisierung unter VB6 einsetzen. Alle Makros außer ( readDiagnostic ) funktionieren einwandfrei. Ich benötige diese Funktion, da ich später den Zustand der CPU abfragen möchte. Bei ausführen der Makro bekomme ich die Fehlermeldung " Laufzeitfehler 49 Falsche DLL-Anrufkonvention " und die Bearbeitung bleibt in der Zeile
"res2 = daveReadSZL (dc, ID, 0 , buffer (0))" stehen. Auch mit anderen ID’s aus Siemens Handbuch funktionier das Makro nicht.
Meine Hardware.
Siemens FeldPG mit WinXP
Verbindung mit AG über CP5611 (MPI)
S7-313C und S7-316-2DP
Libnodave 0.8.2


Wäre nett wenn einer einen Tipp hat, danke im voraus.
mfg


Sorry das Ich so einen alten Thread hervorkrame, aber hier ist die Rede von IDs in dem Siemens Handbuch! In welchem Siemens Handbuch finde Ich diese IDs??
 
Zurück
Oben