Statusabfrage eines Verstärker mithilfe von FbTcpClient möglich? (e!COCKPIT)

Lex

Level-1
Beiträge
115
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo alle zusammen,

ich bin gerade dabei eine Statusabfragen für meinen Verstärker mithilfe meiner PFC200 (750-8204) und e!COCKPIT (v1.3) zu programmieren. Das heißt, wie ist der momentane Zustand des Verstärkers:

· ist er gerade eingeschaltet oder ausgeschaltet
· wie hoch ist die momentan Lautstärke
· usw….

Geschehen tut dies über ein http-Befehl den man an den Verstärker sendet.
Ich habe es schon soweit hinbekommen, dass ich mit anderen http-Befehle die Lauterstärke erhöhe etc. Realisieren tue ich dies durch den Baustein FbHTTP_Get. Nun möchte ich aber jedoch den Status abfragen. Dies ist ein Befehl der wiederrum eine Rückmeldung liefert.

Der http-Befehl lautet wie folgt:

http://192.178.2.12/goform/formMainZone_MainZoneXmlStatusLite.xml

Die als Beispiel genannte IP-Adresse ist der anzusteuernde Verstärker.
Gibt man nun diesen http-Befehl in den Browser ein kommt eine Rückmeldung die in Bild „Browserausgabe“ zu sehen ist.

Nach einer lange suche bin ich auf folgenden Beitrag gestoßen der eventuell mein Vorhaben umsetzen könnte.

Forumslink:
FBTcpClient empangene Daten verarbeiten
Der im Forumsbeitrag angesprochene „FbTcpClient“ Baustein habe ich wie folgt (siehe Bild „Online“ und „Offline“) programmiert.

Offline:
Offline.jpg

Online:
Online.jpg

Nur bekomme ich leider keine Rückmeldung von diesem. Der Buffer wird nicht gefüllt, wenn ein TRUE Signal auf xTxTrigger ankommt. Der Ausgang "xError" schaltet daraufhin auf TRUE.
Im Bild „Browserausgabe“ sieht man den Rückgabewert den ich auswerten möchte, wenn der http-Befehl im Browser eingegeben wird.

Browserausgabe:
Browserausgabe.jpg

Somit komme ich zu meiner Frage an euch, was ist falsch Programmiert/deklariert? Die interne Hilfe hat mir hier leider nicht weitergeholfen und hoffe auf eure Hilfe.
Des Weiteren stellt sich mir dir Frage, wie wird der gefüllte "Buffer of Byte" anschließend ausgelesen? Wie würde eine Umsetzung mit der Programmiersprache CFC aussehen, damit ich z.B. weis ob der Verstärker gerade an oder aus ist?
 
Zuletzt bearbeitet:
Hallo Lex,

in deinem Fall solltest du den Status des Verstärkers mit dem fbHTTP_Get Baustein auslesen können. Die Antwort des Verstärkers wird dann durch den Baustein in den Receive-Buffer geschrieben. Diesen Buffer kannst du dann parsen. Da dein Verstärker scheinbar im XML-Format antwortet, kannst du beim Durchlaufen des Buffers die enthaltenen Tags zur Hilfe nehmen. Ich empfehle dir das ganze in ST zu implementieren. CFC könnte hier schnell unübersichtlich werden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank schon einmal für die Antwort!

Also habe das ganze so realisiert:

Statusbafrage (Online).jpg

Der Buffer wird bis zum Byte [280] gefüllt. Da der Datentyp BYTE ist, befinden sich nun pro Byte eine Zahl darin.
Jedoch weiß ich jetzt nicht wie ich die einzelnen Bytes parsen soll? Hinzu kommt noch, dass ich auch nicht weis, was welche Zahl bedeutet?

Wie wird das umgesetzt, damit ich quasi das habe, was ich im Browser mit Buchstaben und Zahlen sehe?
Es tut mir leid für die Fragen, hoffe dennoch auf eine Antwort.



Gruß Lex
 
Hallo Lex,

um zu erfahren wie die Zahlen kodiert sind, solltest du dir eine ASCII-Tabelle zur Hilfe nehmen. Dort wirst du die Zuordnung von Dezimalzahlen/Hexadezimalzahlen zu den einzelnen Zeichen finden.

Bezüglich des Parsens empfehle ich dir den WAGO Anwendungshinweis A303000. Diesen kannst du ganz einfach über die Suche auf unserer Webseite finden. Für dich wird hier das Kapitel "Example_01: Read HTML or XML file" mit dem entsprechenden CoDeSys Beispiel interessant sein. Schau dir hier insbesondere Zustand 20 der State-Machine an.
 
Zurück
Oben