Vai al contenuto

Errore A4153 in compilazione programma

Home Forum Programmazione IEC 61131 (LogicLab) Errore A4153 in compilazione programma

Stai visualizzando 2 post - dal 1 a 2 (di 2 totali)
  • Autore
    Post
  • #74164
    Anonimo
    Inattivo

    Stò compilando un programma LogicLab è mi compare questo errore:

    error A4153 32-bit variables must be aligned to a 32-bit boundary

    Non capisco a cosa sia dovuto, ecco la definizione delle variabili (Screenshot).

     

    #74167
    Sergio Bertana
    Amministratore del forum

    L’errore indica che una variabile a 32 bit è stata allocata in memoria ad un indirizzo non allineato a 32 bit.

    Ricordo che nei sistemi con architettura ARM le variabili a 16 bit vanno allocate ad indirizzi divisibili per 2, e le variabili a 32 bit vanno allocate ad indirizzi divisibili per 4. Nelle variabili automatiche ci pensa il linker ad allocare correttamente le variabili, ma nelle variabili allocate nella DB100 l’allocazione deve essere curata dal programmatore.

    Se guardi la tabella di allocazione variabili trovi alcuni errori:

        Abil_Antigelo         AT %MX100.2151 : REAL; (* [42051] valore manuale temperatura antigelo *)
        Val_Bruciatore_C1     AT %MR100.2152 : REAL; (* [41076] valore percentuale funzionamento bruciatore *)
        Val_man_temp_mandata  AT %MR100.2166 : REAL; (* [41083) valore manuale temp mandata *)
        Val_man_temp_antigelo AT %MR100.2170 : REAL; (* [41085) valore manuale temp antigelo *)

    La variabile Abil_Antigelo è di tipo REAL quindi và dichiarata %MR100.xxxx e l’indirizzo 2151 non è divisibile per 4. Inoltre essendo di tipo REAL occupa 4 bytes quindi và a sovrapporsi alla variabile Val_Bruciatore_C1. Anche l’indirizzo Modbus [42051]  dichiarato come descrizione è errato ricordo che và utilizzato l’indirizzo di allocazione diviso per 2 a cui và sommato 40000.

    Le variabili Val_man_temp_mandata e Val_man_temp_antigelo non sono allocate ad indirizzi divisibili per 4.

     

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