-Menü

Beiträge anzeigen

Dieser Abschnitt erlaubt es Ihnen, alle Beiträge anzusehen, die von diesem Mitglied geschrieben wurden. Beachten Sie, dass Sie nur Beiträge sehen können, die in Teilen des Forums geschrieben wurden, auf die Sie aktuell Zugriff haben.

Beiträge anzeigen-Menü

Beiträge - RalfWein

#1
Hallo Peewit,

hier hatte jemand das gleiche Problem, und es auch so gelöst:
http://www.sps-forum.de/archive/index.php/t-75951.html (letzter Post)

Ein Beispiel ist ja schon im ersten Post drin. Die beiden anderen habe ich auch so aufgelöst.

Das Problem tritt wohl auch nur bei den PFC200-Controllern auf. Das Projekt lief vorher auf einer 842 und auf einer 880 ohne diesen Compiler-Fehler.
Jetzt, nachdem ich den CONCAT rausgelöst habe, lädt es auf allen Controller.

Ralf
#2
Hallo Peewit,

Welche Funktionen in der network.lib betroffen sind hatte ich im ersten Posting geschrieben. Es geht bei allen diesen Fehlern um eine in CONCAT eigebettet C-Funktionsrückgabe. Auch geschrieben, dass ich akut drei von diesen benötige. Umgeschrieben habe ich die Funktionen wie in #1 beschrieben. Die Zweifel an der angepassten Stringlänge habe ich auf deinen Hinweis hin testweise so gelöst, dass ich temporär Variablen mit 250 Zeichen angelegt habe. Das dann ausführlich getestet ... Ergebnis: kompiliert fehlerfrei und funktioniert.

Gruss
Ralf
#3
Hallo Peewit,

Hat funktioniert. Danke für den Hinweis

Macht es nicht Sinn die anderen Funktionen, die das gleiche Problem haben, in der nächsten Version auch umzustellen. Soviel mehr an Laufzeit kann das doch nicht kosten.
Habe gerade auf die CoDeSys-Version 49 upgedated. Nach der Installation erscheint als erstes der Hinweis auf dieses Problem (concat und C-Funktionen). Es wird also bleiben.

Gruss
Ralf
#4
Hallo an alle!

Nachdem OSCAT-Biliotheken schon mehrfach erfolgreich eingesetzt habe, und sehr viel Lesen und Lernen in diesem Forum, habe ich ein Problem, dass sich selbst nicht lösen kann:

FW 750-8204 ist (08), CoDeSys von WAGO, Stand 2.3.9.47, codesys_network_135.lib, Probiert mit und ohne 'LREAL als REAL übersetzen'

In der network.lib kommt es in den Funktionen
BASE64_DECODE_STR
BASE64_ENCODE_STR
DNS_DYN
GET_WAN_IP
IP2GEO
MD5_CRAM_AUTH
SYS_LOG
IN_INPUT_MENU_POPUP
WORLD_WEATHER
beim Kompilieren jeweils zum Fehler 3150: Parameter 2 der Funktion 'CONCAT'. Das Ergebnis einer IEC-Funktion kann nicht als STRING-Parameter einer C-Funktion übergeben werden.

Aus Beiträgen im SPS-Forum habe ich herausgelesen, am Besten wartet man nicht auf Reparatur, sondern schreibt die betreffenden Funktionen selbst um.

3 von diesen 9 Funktionen benötige ich zwingend (BASE64_DECODE_STR, BASE64_ENCODE_STR und MD5_CRAM_AUTH). Die nichtbenötigten habe ich ausgeschlossen, dann kompiliert es fehlerfrei.
Nun habe ich die jeweils hinter dem 2. Parameter von CONCAT liegende Funktion herausgezogen und vorab in einen temporären String schreiben lassen. Mein Problem ist: wie gross muss die temporäre Stringvariable angelegt sein damit CONCAT keinen Müll zusammenbaut?

Beispiel, mit BASE64_DECODE_STRING (bereits umgeformt):      
STR3 := BUFFER_TO_STRING(PT:=ADR(buf2), SIZE:=SIZEOF(buf2), START:=0, STOP:=size2 - 1);
STR2 := CONCAT(STR2,STR3);
D.h. Wie gross muss STR3 sein?

Für eure Hilfe wäre ich dankbar.

Gruss Ralf