Abfragen eines Zählers mit AGLink (S7 224)

A

Anonymous

Guest
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe gestern begonnen mit dem AGLink die Anbindung meiner S7 224 an Excel zu testen.
Es Funktioniert auch alles wunderbar. Nur mit dem Abfragen von Zählern da hapert es noch ein wenig.
Ich habe es mit folgendem probiert:

Code:
RetVal = AGLReadCounterWords(DevNr, PLCNr, Start, ValNum, Buff, boWait)

„DevNr“, „PLCNr“,“ boWait“ sind definitiv richtig da ich diese Werte auch bei anderen Abfragen benutze.

Als „Start“ habe ich 11 genommen weil ich Z11 in dem AG abfragen will.

Als „ValNum“ habe ich 1 genommen weil ich nur Z11 in dem AG abfragen will.

„Buff“ ist als Integer definiert.

Und das Problem ist, dass „Buff“ immer den Wert 0 hat.
Auch wenn ich mit anderen Einstellungen für „Start“ und „ValNum“ teste.

Für eine Antwort wäre ich sehr dankbar.

Mit freundlichen Grüßen, Marc-Oliver
 
Hallo Marc-Oliver,

ich kenne "AGLink" zwar nicht, dafür kenne ich mich mit 'Prodave' von Siemens ganz gut aus.
Die Funktion 'AGLReadCounterWords" gleicht der Prodave-Funktion 'z_field_read' sehr stark.
Mir scheinen die Parameter, die du der Funktion übergibst, richtig zu sein.
Ich will dir aber trotzdem mal zwei Sachen aufzählen die du prüfen solltest.

1. Welchen Wert hast du in 'RetVal' stehen?
Wenn deine Funktion nach dem gleichen Prinzip wie Prodave arbeitet, müsstest du
in der Variabeln 'RetVal' einen Wert finden, der einen Fehler-Code der Funktion zurückgibt.
Wenn 'RetVal = 0' wurde die Funktion Fehlerfrei ausgeführt und der gelesene Zählerwert (Z11)
steht in der Variabeln 'Buff' zur weiteren Verarbeitung bereit.
Falls 'RetVal <> 0' ist, musst du mal in der AGLink-Fehlerliste nachsehen welcher Fehler vorliegt.

2. Kann es sein dass du die Variable 'Buff' als Array deklariert hast? (Dim Buff(0 To XX) As Integer)
Falls es ein Array sein sollte, musst du im Aufruf der Funktion 'Buff(0)' eintragen.
Dadruch wird der gelesene Zählerwert in die erste Variabele namens 'Buff' geschrieben.

Das sind die Punkte die mir so auf Anhieb einfallen.
Ach ja, bevor ich es vergesse.....
Hast du den aktuellen Zählerwert mal mit MicroWin ausgelesen? Ist der Wert <> 0?

Viel Erfolg
Guido
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Guido,

das hört sich alles ganz so an als würden AGLink und Prodave nach dem gleichen Prinzip arbeiten. AGLink ist von der Firma DELTALOGIC und kann unter www.deltalogic.de als Demo herunter geladen werden.

Das habe ich getan und etwas mit der Anbindung zu meiner S7 224 herumexperimentiert.

Nun zu Deinen Vermutungen:

1. Die Variable „RetVal“ tut genau das was Du denkst und liefert mir den Wert 0 zurück. Die Funktion läuft also.

2. Und die Variable „Buff“ soll in diesem Fall als Integer definiert sein. Sagt das Handbuch zu dem AGLink!

Ich vermute das der Fehler eher in den Variablen „Start“ und „ValNum“ zu suchen ist.
Ich finde ihn aber nicht!

Mit freundlichen Grüßen, Marc-Oliver
 
Hallo Marc-Oliver,

Du schreibst dass du mit der 'DEMO' Version von AGLink arbeitest....
Hmm.....bei Prodave von SIEMENS gibt es auch eine 'Mini'-Version.
In dieser Version sind unter anderem die Funktionen zum
Lesen & Schreiben der Zähler gesperrt!
Mir scheint jetzt dass dies eventuell auch auf deine AGLink-Demo zutrifft.
Prüfe doch mal welchen Funktions-Umfang du mit der Demo-Version hast.

Gruss
Guido
 
Hallo!

Nein das ist es glücklicherweise nicht. Die Demo-Version ist nur dadurch beschränkt, dass sich im bestimmten Abständen eine Meldung auf den Monitor schaltet und auf die Demo hinweist.

Marc-Oliver
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Habe AGLink nicht zur Hand, aber zwei wage Vermutungen:
1. Haben die 2xx überhaupt Zähler nach Art der 3xx/4xx?
Probier´s mal mit nem Timer. Es ist in jedem Fall interessant, ob das geht.
2. Aus meiner Kenntnis der internen S7-Kommunikation: Da pro Timer/Counter 2 Byte zurückgeliefert werden, müssen sie(die Autoren von AGLink) den Parameter ValNum etwas anders als bei Abfragen von Bytes behandeln. Probier mal, ValNum=2 zu setzen. Sicherheitshalber setze die Größe deines Arrays auf mindestens 4.
3. Probier mal, was passiert wenn du in Buff vor dem Aufruf der Lesefunktion irgenwelche Werte hineinschreibst: Stehen die nachher noch drin-> Lesefunktion trägt nichts ein. Oder steht dann 0 drin->Lesefunktion trägt was ein. Und vieviele 0en bei welchem ValNum?
 
Viele Wege führen nach Rom :)

Hallo,

1. mit einem Timer geht alles!
2. bei ValNum=2 habe ich als Rückgabe auch eine 0
3. wenn ich in Buff vor der Abfrage eine 1 schreibe habe ich nach der Abfrage eine 0. => Die Funktion läuft.

Ich habe das Problem jetzt so gelöst, dass ich den Zählerwert in ein MB schreibe und diesen Wert dann auslese.

Besten Dank für die Bemühungen! Wenn ich die Richtige Antwort auf meine Frage finde werde ich sie hier natürlich kundtun.
Oder vielleicht findet sich hier ja noch jemand der sich mit dem AGLink auskennt :)

Mit freundlichen Grüßen, Marc-Oliver
 
Natürlich findet sich hier jemand, der sich mit AGLink auskennt ;)

Sie dürfen uns bei solchen Problemen gerne auch telefonisch unter 07171-916-112 oder per Email an support@deltalogic.de kontaktieren.

Im Anhang finden Sie ein Beispiel in Excel, welches mit unserer S7-200 CPU224 problemlos funktioniert.

Die Demoversion von ACCON-AGLink, welche zum Download auf unserem Server bereit steht, ist in der Funktion nicht eingeschränkt. Es wird in regelmässigen Abständen der Hinweis auf die Demoversion angezeigt und nach einiger Zeit (ca. 15 Minuten) stellt die DLL die Kommunikation ein. Nach einem Neustart der DLL geht das dann von Vorne los.

Viele Grüße
Bernhard Götz
 
Zuletzt bearbeitet:
Zurück
Oben