Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched. Close

TO_STRING Länge der String Variable

Anonymous
2016-01-29
2016-02-02
  • Anonymous - 2016-01-29

    Originally created by: mg

    So ganz klar ist uns das Problem noch nicht, darum frag ich hier mal nach:

    Ich habe eine Zahl. Nun übertrage ich die Zahl in einen STRING mit der Typwandlung INT_TO_STRING
    Das funktioniert auf normalen STRING Variablen ohne Probleme.

    ABER wenn ich das nun DIREKT auf eine Pointeradresse lege, passiert folgendes:
    Es wird ein 80 byte langer String auf den Pointer geschrieben. Der schreibt mir natürlich über das Ende raus und nach mehreren Tagen/Wochen hängt sich die CPU mit einem undefinerten Fehler auf. (zumindest scheint das der Fehler zu sein.)

    So nun meine Frage: Wie behandelt Codesys dieses Problem korrekt:

    Beispiel: PT_Zeile^:=DINT_TO_STRING(ABS(Value_V));
    <nachtrag> die PT_Zeile ist folgendermaßen definiert: PT_Zeile: POINTER TO STRING(nnn);
    <nachtrag> dh. das Problem tritt erst auf wenn PT_Zeile LÄNGER als "nnn" wird (ist aber bei 80 Zeichen nicht ganz unwahrascheinlich)
    <nachtrag> In der Folgezeile wird der Pointer dann mit PT_Zeile:=PT_Zeile+LEN(DINT_TO_STRING(ABS(Value_V))) verschoben.
    <nachtrag> Und wenn's beim Beschreiben PT_Zeile^ zu lang geworden wäre, bleibt der Controller stehen.</nachtrag></nachtrag></nachtrag></nachtrag>

    Ich habe diese Art von Befehl schon 1000 fach (ohne Übertreibung) verwendet und noch nie Probleme bekommen...
    ... und nun schätzen wir, daß unser Problem von dem oben beschriebenen Effekt herrührt.

    Ich schreibe hier absichtlich KEIN Zielsystem hin. Mich würde interessieren was Codesys dazu sagt.

    Danke Mg

     
  • Anonymous - 2016-02-02

    Originally created by: mg

    H A L L O ... I S T W E R D A

    Bitte um Anwort. Das Thema ist DRINGEND und der Fehler ist MASSIV.
    Inzwischen sind wir draufgekommen daß der Fehler nur auf dem WAGO IPC auftritt.
    (Wago 750-880 ist Ok und Bachmann 207 ist Ok, weitere haben wir noch nicht getestet)
    Trotzdem würde mich hier interessieren, wie diese Problematik im Codesys generell behandelt wird.

    Mg

     

Log in to post a comment.