Fehler mit ASCIIBYTE_TO_STRING?

toninlg
2007-06-04
2007-06-11
  • toninlg - 2007-06-04

    Hallo,

    Ich habe ein Problem mit ASCIIBYTE_TO_STRING. Ich habe den folgenden Fehler :

    "Zugang auf einer verbotenen Adresse! Der Automat wird angehalten."

    (Wago 750-841)

    PROGRAM PLC_PRG
    VAR
       Test:STRING(1);
    END_VAR
    Test:=ASCIIBYTE_TO_STRING(255);
    

    Wenn ich nur ASCIIBYTE_TO_STRING(255) ohne Stellung benutze, habe ich keinen Fehler.

    Können Sie mir helfen?

    Danke.

     
  • J Schohaus - 2007-06-04

    Hallo

    Ich kenne deine Funktion nicht ( aus welcher lib? )

    Um ein Zeichen von Wert in Byte in String zu wandel würde ich die Funktion aus der Oscat.Lib verwenden (CHR).

    "www.oscat.de"

    mfG Jochen Schohaus

     
  • toninlg - 2007-06-04

    ASCIIBYTE_TO_STRING kommt aus der Lib standard.lib (Wago/Libraries/32_Bit). Was ist die Lib Oscat? Ist diese Lib für ein spezifische Ziel?

     
  • Erik Böhm - 2007-06-04

    Mahlzeit

    Mal angenommen, du willst folgenden String erzeugen '255', wie passt der dann in deinen Test: String(1) rein, der nur 1 zeichen aufnehemen kann ?

    Gruss Erik

     
  • Erik Böhm - 2007-06-04

    Noch was vergessen.

    Die korrekte Definition für Test wäre mindestens String(4), wegen der Terminierenden NULL nach dem eigentlichen Inhalt des Strings.

     
  • toninlg - 2007-06-04
    FUNCTION ASCIIBYTE_TO_STRING : STRING(1)
    VAR_INPUT
       byt: BYTE;
    END_VAR
    

    byt ist ein ASCII code und ich möchte dieser in String wandeln.

    Wenn ich den folgenden code schreibe, funktioniert das auch nicht.

    PROGRAM PLC_PRG
    VAR
       Test:STRING(255);
       b:BYTE:=9;
    END_VAR
    Test:=ASCIIBYTE_TO_STRING(b); 
    
     
  • J Schohaus - 2007-06-04

    Hallo

    zur Aufklärung Oscat.lib ist eine freierhältiche Lib. die nach Open Source

    erstellt wurde.

    Findest Du unter w www.oscat.de w

    In der Lib. sind sehr viele nützliche Funktionen.

    Wenn ich dich richtig verstanden habe möchtest du ein Zeichen als String mit dem ensprechenden ASCII wert haben.

    z.B. CHR(13) für ENTER was $R entspricht.

     
  • toninlg - 2007-06-04

    Ja, das ist richtig.

    Ich verstehe nicht warum ASCIIBYTE_TO_STRING funktioniert nicht.

    Ich habe etwas andere benutzt.

    Kann ich die oscat.lib mit Wago benutzen?

     
  • J Schohaus - 2007-06-04

    Oscat.Lib benutzt standart Befehle.

    Deshalb gehe ich davon aus das die Lib. auf Waag funktioniert.

    Einfach testen.

    mfG Jochen

     
  • Erik Böhm - 2007-06-04

    Hallo

    Das hab ich wohl falsch verstanden. In diesem fall ist STRING(1) natürlich korrekt. Die Funktion gibt ja auch nichts anderes zurück.

    Die Funktion setzt intern einen Pointer auf die Adresse des umzuwandelnden Bytes und dereferenziert diesen auf einen STRING(1).

    Ganz einfach...

     
  • toninlg - 2007-06-04

    Ich habe die Lösung gefunden. Ich probierte meinen Code mit Simulation aktiv. Wenn Codesys nicht in Simulation ist, ASCIIBYTE_TO_STRING funktioniert.

     
  • gravieren - 2007-06-04

    Hi

    Du kannst dir alledem die OSCAT-Lib anschauen.

    Vorteil: Offener ST-Code.

     
  • J Schohaus - 2007-06-05

    Hallo zusammen

    Laut Hilfe kann auch bei der Dekaration ein Hex Wert mit $ angegeben werden.

    z.B. für das Zeichen CHR(255)

    kann bei der Deklaration folgendermaßen angegeben werden

    MeinString : STRING[1] := '$FF' ; ( FF in HEX = 255 )

     

    Related

    Talk.ru: 1

  • toninlg - 2007-06-11

    Danke für die Antworten. Ich werde die Oscat-Lib später prüfen, weil ich zu etwas andere arbeiten muss.

     

Log in to post a comment.