Funktionstyp wird in FUP nicht unterstützt, in CFC aber schon

elpedro

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

ich habe hier leider ein Problem bei dem ich nicht so recht weiterkomme und hoffe Ihr könnt mir mir da weiterhelfen bzw. einen Denkanstoß geben.

Kurz zum Programm: Per Fb_SNMPManager_GET wird eine bestimmte OID an einem definierten Host abgefragt. Als Antwort erhält man ein ARRAY OF BYTE welches dann über die Funktion SNMP_TLV_TO_STRING in einen lesbaren String konvertiert werden soll. Als Bibliothek kommt die WagoAppSNMP zum Einsatz.

Nun zum Problem:

Wenn ich das Programm in FUP aufbaue bekomme ich beim Compilieren die unterschiedlichsten Fehler. Problem macht da konkret die Funktion SNMP_TLV_TO_STRING die wohl vom Typ her laut Codesys nicht unterstützt wird. (Fehler: Der Typ: 'WAGOAPPSNMP.SNMP_TLV_TO_STRING' wird nicht unterstüzt).
Wenn ich nun aber das Programm in CFC erstelle, dann ist alles in Ordnung und es funktioniert wie erwartet.

Wo könnte eurer Meinung nach im FUP das Problem sein?

Anbei noch ein paar Bilder die das Problem verdeutlichen sollen.


SNMP_FU.JPG

SNMP_CFC.JPG

1000 Dank schonmal für's Zeit nehmen!
 
Wie hast du denn den FB und den FC in ein Netzwerk bekommen?
Wenn ich beide Bausteine auf 2 Netzwerke verteile ist alles i.o.
 
Ich habe mir gerade mal die Fehlermeldungen angesehen, da liegt glaube ich noch etwas anders im Argen. Es wird ja auch ein interner Fehler gemeldet.
Ich arbeite mit TwinCAT 3 und weiß nicht, ob es das bei WAGO auch gibt. Falls es etwas vergleichbares gibt, versuch mal alles zu bereinigen und neu zu übersetzen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie hast du denn den FB und den FC in ein Netzwerk bekommen?
Das frage ich mich auch gerade, ich bekomme es nicht hin.

Bei FUP gibt es andere Regeln zum Verschalten der Eingänge als bei CFC. Die Bausteine haben einen Haupteingang und -ausgang mit denen man weiterverschalten kann. Bei Siemens ist es genau so.

Wenn man hier die beiden Bausteine in ein Netzwerk packen will muß man mit EN/ENO arbeiten und die dann darüber verbinden. Dann muß man aber auch mit Zwischenmerker arbeiten, da sich keine zusätzlichen Ein-/Ausgänge wie bei CFC in FUP verbinden lassen.

Gruß
 
Danke erstmal für euer Feedback!

Ich habe mir gerade mal die Fehlermeldungen angesehen, da liegt glaube ich noch etwas anders im Argen. Es wird ja auch ein interner Fehler gemeldet.
Ich arbeite mit TwinCAT 3 und weiß nicht, ob es das bei WAGO auch gibt. Falls es etwas vergleichbares gibt, versuch mal alles zu bereinigen und neu zu übersetzen.
Ja das geht in Codesys, aber weder das Bereinigen noch ein frisches Projekt hilft da weiter.

Das frage ich mich auch gerade, ich bekomme es nicht hin.

Bei FUP gibt es andere Regeln zum Verschalten der Eingänge als bei CFC. Die Bausteine haben einen Haupteingang und -ausgang mit denen man weiterverschalten kann. Bei Siemens ist es genau so.

Wenn man hier die beiden Bausteine in ein Netzwerk packen will muß man mit EN/ENO arbeiten und die dann darüber verbinden. Dann muß man aber auch mit Zwischenmerker arbeiten, da sich keine zusätzlichen Ein-/Ausgänge wie bei CFC in FUP verbinden lassen.

Gruß
Funktion und FB bekomme ich in ein Netzwerk, wenn ich am Output "typData" des FB eine Weiterverschaltung festlege. Funktioniert mit anderen Funktionen (z.B. SNMP_TLV_GET_TYPE) wunderbar und spart ne Variable.
Ich hab auch schon beides in getrennten Netzwerken gehabt, aber das Problem bleibt bestehen (siehe Anhang).

SNMP_FUP_2N.JPG

Ich könnt ja damit leben hier mal mit CFC zu arbeiten, aber woher weiß ich denn vorher, dass das in CFC geht und in FUP eben nicht. Ich kann ja nicht jedesmal die verschiedenen Darstellungsformen durchprobieren...
 
Und damit die Verwirrung noch Größer wird, in ST funktioniert es bei mir auch... :unsure:

Es muss also irgendwie mit meinem FUP zusammenhängen...kann man dazu irgendwo was einstellen?
 
Da es auch einen internen Fehler gibt würde ich mal versuchen den FUP-Teil zu löschen alles bereinigen und neu übersetzen und den FUP Teil neu erstellen.
Nope, bringt auch nix. Ich denke der interne Fehler kommt daher, dass der Typ der Funktion in FUP nicht unterstützt wird.

Ich hab mir jetzt erstmal mit nem Execute-Baustein beholfen in welchem ich die Funktion ausführe. Nicht gerade elegant, aber was solls...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ganz oben schreibst du, dass das Ding ein Array von Bytes liefert, hast aber eine Variable aData mit dem Datentyp typSNMP_TLV drauf geschaltet?

Bei den Fehlermeldungen fängt man üblicherweise von oben nach unten an abzuarbeiten weil die unteren Fehler eine Folge eines weiter oben bemängelten Fehlers sein können. Und ganz oben bei deinen Fehlern steht etwas von "lazy getypten Variable"?
 
Ganz oben schreibst du, dass das Ding ein Array von Bytes liefert, hast aber eine Variable aData mit dem Datentyp typSNMP_TLV drauf geschaltet?

Bei den Fehlermeldungen fängt man üblicherweise von oben nach unten an abzuarbeiten weil die unteren Fehler eine Folge eines weiter oben bemängelten Fehlers sein können. Und ganz oben bei deinen Fehlern steht etwas von "lazy getypten Variable"?
typSNMP_TLV ist ein Struct in dem ein Array of Byte steckt. Also liefert mir der FB streng genommen einen Array of Byte. Das passt schon.

Wenn du sagst man fängt üblicherweise bei der Fehleranalyse von oben nach unten an, dann fangen wir doch mal noch einen Schritt vorher an und zwar beim Platzieren im Netzwerk. Da erhalte ich nämlich (und zwar nur im FUP) bereits folgenden Fehler:

1698268722755.png

Die Fragezeichen sind in diesem Fall klar. Interessant sind aber die ersten beiden Fehlermeldungen, die ja auch später nach dem Kompilieren noch auftauchen. Beim allerersten fehlt mir jegliches Verständnis... 🤷‍♂️

Wenn ich jetzt mal aus Spaß kompiliere sieht das ganze so aus:

1698268964059.png

Jetzt kommt der Fehler mit der lazy getypten Variable.

Was ist denn eine lazy getypte Variable?
 
Also der Fehler mit den fehlenden Eingängen und mit dem verschwinden von Instanzen an einem FB kommt mir komisch bekannt vor.
Hab ich in einem meiner Projekte auch und zwar genau seit dem es das Update des Codesys LD/FBD von 4.2.0.0 auf 4.3.0.0 gab.

Du kannst versuchen dieses Package auf 4.2.0.0 zurückzusetzen und schauen ob es dann funktioniert. Oder (meine Lösung) zieh dir eine Execute-Box in dein Netzwerk und mach den Bausteinaufruf da drin.
 
Zurück
Oben