TIA TIA und WSTRING

Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

zugegebenermassen wenig Infos oben - aber man könnte es sehen was ich meine. writeerrors schreibt einen JSON-String variabler Länge. Verwendet man diesen direkt vom RET_VAL des FC stehen dort maximal 1022 Zeichen drin. Schreibt man den WSTRING erst auf eine Zwischenvariable, stehen dort alle Zeichen drin.

André
 
Der Fehler könnte ja auch in der Funktion liegen, oder der Parameter der dort übergeben wird ist auch relevant. Man könnte ja mal versuchen das mit einer unspezifischen Funktion nachzustellen. Welche TIA Version / Steuerung und Firmware verwendest du denn? Ist das in Plcsim auch vorhanden?
 
Das scheint kein Bug, sondern ein Feature zu sein:

Bei Bausteinen mit der Zugriffsart "optimiert" können Operanden vom Datentyp WSTRING bis

zur maximalen Länge als Parameter übergeben werden.

Bei Funktionsbausteinen (FB) mit der Zugriffsart "standard" können Operanden vom Datentyp

WSTRING in allen Abschnitten der Bausteinschnittstelle, außer im Abschnitt "InOut", als

Parameter deklariert werden. Bei einer Funktion (FC) mit der Zugriffsart "standard" können

nur Operanden vom Datentyp WSTRING als Parameter übergeben werden.

Eine weitere Ausnahme bilden der Funktionswert eines FCs im Abschnitt "Return" der

Bausteinschnittstelle und Ausdrücke in der Programmiersprache SCL. In diesen Fällen darf

die WSTRING-Variable nicht länger als 1022 Zeichen sein.
gefunden in "STEP_7_WinCC_V15_1_deDE_de-DE".pdf Seite 282. (Wo auch immer ich die mal her hatte 😁.
 
Wobei das schon sehr danach riecht, dass das nicht nur bei Wstring sondern auch bei anderen Rückgabewerten und Unterschied standard/optimiert zu Problemen führen könnte, wo Daten abgeschnitten werden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

alles optimierte Bausteine V16 Upd2. CPU 1515F V2.8.3 - testweise 2.9.4. und PLCSIM -> gleiches Verhalten. Komischerweise müsste wegen der 1022er Grenze aber beim Auslesen über Zwischenvariable auch 1022 Zeichen sein.

André
 
Hallo,

alles optimierte Bausteine V16 Upd2. CPU 1515F V2.8.3 - testweise 2.9.4. und PLCSIM -> gleiches Verhalten. Komischerweise müsste wegen der 1022er Grenze aber beim Auslesen über Zwischenvariable auch 1022 Zeichen sein.

André
Na ja, sie schreiben ja, der WString darf nicht länger als 1022 Zeichen sein. Bis dahin ist das Verhalten wahrscheinlich identisch, ab da passiert dann "irgendwas" u.U. unbestimmtes??? Was natürlich einem Buffer Overflow schon nahe kommt und vollkommen inakzeptabel in einer SPS wäre. Ich denke auch, eine Compilermeldung wäre das Mindeste gewesen, mit einer entsprechenden Warnung.
 
Zurück
Oben