Home › Forum › Programmazione IEC 61131 (LogicLab) › Utilizzo moduli di libreria in programmazione ST
- Questo topic ha 2 risposte, 2 partecipanti ed è stato aggiornato l'ultima volta 11 anni, 5 mesi fa da Sergio Bertana.
-
AutorePost
-
Novembre 12, 2012 alle 2:07 pm #35294GiovanniPartecipante
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.
Novembre 13, 2012 alle 2:53 pm #37472Sergio BertanaAmministratore del forumLa 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 *)Novembre 13, 2012 alle 3:17 pm #37473Sergio BertanaAmministratore del forumAggiungo 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 *) -
AutorePost
- Devi essere connesso per rispondere a questo topic.