Vai al contenuto

Utilizzo variabili globali in una function

Home Forum Informazioni ambiente di sviluppo LogicLab Utilizzo variabili globali in una function

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

    In LogicLab 2.8.0.7 ho creato una variabile globale di questo tipo:

    IOVar UINT %MX100.100 senza attributi

    Se utilizzata nel programma principale, non genera nessun errore, mentre se utilizzata in una Function, genera il seguente errore:

    Error A4097: IOVar => Object not found

    Dove sbaglio ?
    Come si fà ad utilizzare una variabile globale in più funzioni ?

    #36505
    Sergio Bertana
    Amministratore del forum

    Le Function nello standard IEC61131 a differenza delle Function Block non possono operare su variabili globali. Tutti i valori devono essere passati per variabili ed è previsto un solo valore di ritorno. Ecco un esempio di funzione che effettua la somma tra due valori e ritorna il risultato.

    FUNCTION FctAdd: UINT

    VAR_INPUT
        FirstAddend: UINT;  { DE:”First addend” }
        SecondAddend: UINT;  { DE:”Second addend” }
     END_VAR

    { CODE:ST }
    FctAdd:=FirstAddend+SecondAddend;

    END_FUNCTION

    Ecco il codice che utilizza la funzione:

    IOVar:=FctAdd(100, 200);

    Nella variabile IOVar sarà trasferito il valore 300.

    #36506
    Sergio Bertana
    Amministratore del forum

    Le Function a differenza delle Function Block non vengono istanziate, pertanto non hanno memoria propria, quindi tutte le variabili definite all’interno delle funzioni sono transitorie, cioè valgono solo per il tempo di esecuzione della funzione.

    Quindi le variabili interne alle funzioni devono essere valorizzate prima di essere utilizzate, ed ad ogni esecuzione della funzione il loro valore è “0”.

    Allego un esempio di programma LogicLab in linguaggio ST per il download.

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