Vai al contenuto

Informazioni su warning del compilatore

Home Forum Informazioni ambiente di sviluppo LogicLab Informazioni su warning del compilatore

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

    Vorrei capire alcune cose sui messaggi di warning emessi dal compilatore. Nello specifico trovo i seguenti messaggi:

    UI/SYNOPTICTEST(2$F:14) – warning G0015: POW => Estensione accumulatore
    UI/SYNOPTICTEST(2$F:14) – warning G0059: POW => Estensione del tipo dell’operando

    E’ generato da rete in FBD dove una costante (valere: 2) viene elevata alla X (variabile USINT che può assumere valori da zero a 12), l’uscita del blocco POW entra in un “TO_WORD” che poi entra in blocco “WordToByte”.

    Mi piacerebbe adottare un costrutto che non generasse il warning ma non ho le idee molto chiare.

    #46698
    Sergio Bertana
    Amministratore del forum

    La funzione POW opera su variabili REAL, quindi se tu passi alla funzioni variabili o valori diversi da REAL il compilatore ti genera le warning riportate.

    Ti faccio un esempio in ST Result:=POW(2, 3); genera le warning perchè i valori 2 e 3 sono considerati interi. Se invece scrivi Result:=POW(2.0, 3.0); le warning spariscono (Naturalmente Result deve essere di tipo REAL).

    In pratica quando scrivi una costante in una variabile di tipo REAL devi sempre mettere il decimale (2.0). Nel tuo caso poi che copi una variabile intera di tipo USINT in una variabile REAL devi mettere l’operatore TO_REAL.

    Result:=POW(2.0, TO_REAL(Exponent));

    La stessa cosa se vuoi trasferire il risultato di POW in una variabile intera di tipo UINT devi scrivere

    Result:=TO_UINT(POW(TO_REAL(Base), TO_REAL(Exponent)));

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