PRODAVE 6.0 - Problem beim Lesen von Bausteinheader

Tanzbär

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

ich möchte gerne eine Trace-Funktion erstellen.
Dazu möchte ich auf bestimmte S7-DB´s von extern zugreifen/lesen ohne Änderungen im Programm oder HW-Konfig durchzuführen.

Bei den Tests mit Prodave 6.0 und VB bin ich auf folgende Probleme gestoßen:

  • Mit der Funktion bst_read_ex6 soll bei DB´s nur der Header ausgelesen werden. Leider meldet bei größeren DB´s (ab 20000 Bytes) die Funktion "Ergebnispuffer zu klein" :confused: Der Header sind aber nur 160 Bytes und die OUT-Variable "pDatLen" zeigt auch 0 an?
  • Wie berechnet sich die "Bausteinlänge (gesamt)"? Auch wenn diesen erhalten Wert mit den Längen im Eigenschaftsfeld vergleich kommt man zu keiner Übereinstimmung. Ich benötige die Datenlänge.
  • Stimmt der Aufbau von Date_and_Time tm im Beispiel-Projekt?
Hatt jemand eine Idee oder andere Lösungsmöglichkeiten.

Vielen Dank schon mal vorab.
 
Wenn nur auf die Daten zugegriffen werden soll, dann ist libnodave oder AGlink mit Sicherheit eine Alternative. Dort kann auch die Länge des DBs festgestellt werden umd nur auf vorhandene Daten zuzugreifen. Welche weiteren Infos werden aus den Header benötigt?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

mit ComDrvS7 könnten Sie die Länge der DBs direkt über einen Funktionsaufruf ermitteln und die entsprechenden Daten in den DBs lesen oder beschreiben.

Des Weiteren wäre es möglich einen gesamten DB zu lesen und als WLD-Datei auf dem PC zu speichern. Diese Datei kann dann z.B. mit einer Programmiersoftware (Simatic-Manager, WinSPS-S7, ..) gelesen und bearbeitet werden.
Ebenso ist das Schreiben eines DBs aus einer WLD-Datei heraus in die CPU möglich.

Weitere Infos und eine Demo mit vollem Funktionsumfang finden Sie unter
www.mhj-software.de

Gruss
T.Weiss
 
Danke fuer die Antworten,

ich werde mal libnodave oder ComDrvS7 austesten.
Der Kunde hat aber Prodave erworben und moechte, dass diese auch verwendet wird. :rolleyes:
Das Handbuch gibt leider nicht viel her. Es werden leider nur die IN/OUT's beschrieben. Der Support hat sich leider auch noch nicht gemeldet.

Wo kann ich noch weiter genauer Angaben zur den Funktionen bekommen?
Im Beispiel-Programm VB ist z.B. der Datentyp tm deklariert worden. Wo finde ich dazu eine Beschreibung.

Gruss
Andreas
 
Hallo Tanzbär Andreas,

versuch mal einfach den Puffer so groß wie möglich zu machen.
Auch wenn die Funktion nur die 160 Bytes Headerdaten braucht,
und im Endeffekt auch nicht mehr übertragen werden, so halte ich es
für durchaus möglich, dass die verwendete Bilbliothek erstmal prüft,
ob der komplette DB im Puffer Platz hätte...

Das nur mal so ins Blaue, aus Programmier-Erfahrungen raus.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Puffer vergrößern

Die Vergrößerung des Puffers habe ich auch bereits ausprobiert.
Die maximale Größe eines DB kann 64K betragen, die interne Puffergröße von VB kann ebenfalls 64K.
Bisher kein Problem, aber beim ausführen des Programms kommt die Fehlermeldung Deklarationsfehler Pufferüberlauf.
Nach meiner Deutung stellt VB für alle Deklarationen im Projekt nur 64K zur Verfügung stellt.
Also komme ich auch hier nicht weiter.

Falls ich hier falsch liege bin ich über jede Antwort/Tipp dankbar, denn meine VB-Kenntnisse sind nur sehr dürftig.

Vielen lieben Dank.
 
Stell mal die Codesequenz ein. VB6 hat definitiv kein 64K-Limit bzw. Problem. Geht es hier eigentlich um VB oder VB.net?
 
Zurück
Oben