Vai al contenuto

Utilizzo moduli di libreria in programmazione ST

Home Forum Programmazione IEC 61131 (LogicLab) Utilizzo moduli di libreria in programmazione ST

Stai visualizzando 3 post - dal 1 a 3 (di 3 totali)
  • Autore
    Post
  • #35294
    Giovanni
    Partecipante

    Visto che programmo praticamente esclusivamente con il linguaggio letterale strutturato (ST), vorrei sapere come utlizzare i moduli di libreria (es PWM, PID ecc) in questo modo di programmare. Sul manuale di riferimento esistono solo esempi in ladder…

    Magari mi potrebbe descrivere un “modo” di lettura in modo che possa facilmente convertire da esempi ladder ad esempi in letterale strutturato.

    #37472
    Sergio Bertana
    Amministratore del forum

    La programmazione in structured text (ST) è molto simile alla tecnica di programmazione utilizzata nei linguaggio C, il linguaggio prevede le condizioni (IF) (CASE) i cicli (FOR) (WHILE) e tutte le operazioni matematiche. Quasi tutti i moduli di libreria sono realizzati in ST, per dare una idea immediata del loro uso sul manuale viene solitamente riportato un esempio in ladder (LD).

    L’utilizzo di una funzione o blocco funzione nel linguaggio ST è molto semplice, prendiamo ad esempio il blocco funzione SysGetAnInp, come si vede dall’estratto del manuale, esendo un blocco funzione và istanziato nel programma (Và cioè dichiarata una variabile con un proprio nome di tipo SysGetAnInp). Nell’esempio la variabile ha nome FBData. Per quanto riguarda le funzioni a differenza delle FB non vanno istanziate, quindi si utilizzano nel programma con il loro nome di libreria.

    Ora nel programma possiamo indirizzare tutte le variabili in ingresso/uscita della FB definendone il nome seguito dal punto e poi dal nome della variabile:

    FBData.Address:=0; (* Indirizzo modulo *)
    FBData.Channel:=0; (* Indirizzo canale *)
    FBData.Mode:=AD_VOLT_0_10_COMMON; (* Modo di acquisizione *)

    FBData(); (* Eseguo acquisizione analogica *)

    IsDone:=FBData.Done; (* Flag di conversione Ok *)
    IsFault:=FBData.Fault; (* Flag di conversione Ok *)
    Value:=FBData.Value; (* Valore acquisito *)

    #37473
    Sergio Bertana
    Amministratore del forum

    Aggiungo al post precedente che le variabili in ingresso alle funzioni e/o blocchi funzione possono anche esere dichiarate contestualmente alla esecuzione, quindi posso anche dichiarare:

    FBData(Address:=0, Channel:=0, Mode:=AD_VOLT_0_10_COMMON); (* Eseguo acquisizione analogica *)

    E’ anche possibile dichiarare le variabili in modo misto:

    FBData.Address:=0; (* Indirizzo modulo *)
    FBData(Channel:=0, Mode:=AD_VOLT_0_10_COMMON); (* Eseguo acquisizione analogica *)

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