Utilizzo variabili globali in una function

Attenzione !I messaggi sul forum potrebbero essere modificati dal nostro staff. La data e l'ora dei messaggi potrebbe non essere quella di invio ma quella di moderazione da parte dello staff. Grazie per l'attenzione.

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

Questo argomento contiene 2 risposte, ha 2 partecipanti, ed √® stato aggiornato da  Sergio Bertana 8 anni, 7 mesi fa.

Stai vedendo 3 articoli - dal 1 a 3 (di 3 totali)
  • Autore
    Articoli
  • #34886

    Adriano
    Partecipante

    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 vedendo 3 articoli - dal 1 a 3 (di 3 totali)

Devi essere loggato per rispondere a questa discussione.