Vai al contenuto

Comparazione con carattere ascii

Home Forum Programmazione IEC 61131 (LogicLab) Comparazione con carattere ascii

Stai visualizzando 2 post - dal 1 a 2 (di 2 totali)
  • Autore
    Post
  • #35983
    Marco
    Partecipante

    Buongiorno volevo segnalare un piccola incongruenza nel compilatore, questo codicefunziona perfettamente:

      IF Buf[BufPtr+1]=16#30 THEN
        Buf[BufPtr]:=’4′;

    ma se scrivo:

      IF Buf[BufPtr+1]=’0′ THEN
        Buf[BufPtr]:=’4′;

    stranamente da errore di compilazione. Ma se elimino il controllo IF ed il compilatore non da errore, esempio:

      Buf[BufPtr]:=’4′

    Il puffer indicato invece di assumere il valore ‘4’=16#34 assume un valore sballato.

    #39491
    Sergio Bertana
    Amministratore del forum

    Tu sei evidentemente un programmatore che arriva dal linguaggio “C”, e quindi dovresti inviare una lamentela all’ente IEC che ha normalizzato il linguaggio. Siccome il programmatore di PLC secondo la loro visione non è molto esperto hanno cercato il più possibile di evitare le confusioni.

    Quindi a differenza del “C” dove  esiste una differenziazione tra carattere racchiuso tra singoli apici ‘a’ e stringa racchiusa tra doppi apici “Stringa” nella IEC-61131 esistono solo le stringhe che sono indicate racchiuse tra singoli apici ‘Stringa’.

    Quindi non puoi comparare una locazione di memoria con una stringa, ecco il perchè dell’errore sullo statement IF:

    error G0043: EQ => CODE GENERATOR INTERNAL ERROR

    La stessa cosa dicasi nella assegnazione del valore, il compilatore non dà errore ma segnala l’anomalia con una warning:

    warning G1799: buff[1] => Converting a string into a number

Stai visualizzando 2 post - dal 1 a 2 (di 2 totali)
  • Devi essere connesso per rispondere a questo topic.