Esempio: Primi passi
Prodotto: CODESYS Application Composer
Questo esempio mostra come iniziare a creare e utilizzare i moduli per CODESYS Application Composer A questo scopo, creerai una stanza con luci e interruttori.
Descrizione
Nell'esempio, viene implementato un breve scenario di automazione degli edifici: dotare una stanza di luci e relativi interruttori. Gli interruttori possono essere utilizzati anche come dimmer. Pertanto, le luci dovrebbero supportare diversi livelli di luminosità.
Lavori preparatori
Crea un nuovo CODESYS progetto dal Progetto standard con Application Composer modello. Seleziona
AC_ModuleBase
come la biblioteca.Il modulo di livello superiore
Room
Aggiungi una nuova dichiarazione di modulo al pool POU del progetto. Assegna il nome
Room
alla dichiarazione del modulo e al blocco funzione associato. Il blocco funzione deve anche estendere ilAC.Module
blocco funzione che è definito nelAC_ModuleBase
biblioteca. LaAC.Module
Il blocco funzione fornisce già numerosi metodi e proprietà che non devono essere sovrascritti.La dichiarazione inizia con la parola chiave
MODULE
seguito dal nome del modulo e dalla parola chiave aggiuntivaIMPLEMENTED_BY
, nonché dal blocco funzionale che implementa il modulo. Nello specifico, questo blocco funzionale è ilRoom
blocco funzione appena creato. Nella maggior parte dei casi, ilMetaData
la sezione è ora dichiarata.Per informazioni dettagliate su tutti i parametri e le sezioni, vedere: Editor di moduli.
Poiché il
Room
il modulo è il modulo di primo livello nel nostro esempio, lo dichiariToplevel
sezione successiva. In questa sezione, si definisce un nome per l'elenco delle variabili globali che contiene il nome dell'istanza del blocco funzione di primo livello dopo la generazione. Successivamente, è ancora necessario definire almeno un altro task nella sezioneToplevel
sezione. Questo compito èStandard_Task
in questo esempio. È definito come unMEDIUM
compito e contiene ilCREATE_IF_MISSING
EUPDATE_IOS
bandiere.Tutte le icone e le stringhe utilizzate come segnaposto per le descrizioni e le icone (
Desc
,Icon_16
, EIcon_32
parametri) devono essere referenziati negli elenchi di testo e nei pool di immagini. Per questo motivo, si crea un elenco di testo corrispondente.TL
e un pool di immaginiIP
nel pool POU che contiene le icone e i testi a cui si fa riferimento.Sottomodulo:
Switch
Creare una dichiarazione di modulo e un blocco funzione corrispondente denominato
Switch
Questo modulo non è un modulo di primo livello e quindi non richiede unToplevel
sezione. Come tutti i blocchi funzionali che rappresentano moduli, ilSwitch
il blocco funzione deve anche estendersiAC.modules
. Inoltre,Switch
implementa ilISwitch
interfaccia che devi anche creare. A sua volta, ilISwitch
l'interfaccia si estendeAC.IModule
ma non aggiunge nuovi metodi o proprietà.Inoltre, l'interruttore richiede un segnale di ingresso per riconoscere quando viene premuto. Si dichiara questo segnale nel
IO
sezione, utilizzando ilxIn
variabile di input delSwitch
blocco funzione. Inoltre, è necessario un tempo di riferimento per distinguere le due funzioni dell'interruttore: premere l'interruttore per la durata del tempotTimer
Avvia la funzione dimmer: una pressione più breve accende o spegne solo la luce. È possibile definire la variabile di input.tTimer
come parametro del modulo (Parameters
sezione). In questo modo, sarà possibile impostare facilmente l'ora in un secondo momento quando si utilizzano i moduli.Definisci le variabili
xIn
EtTimer
come input delSwitch
blocco funzione, in cui si imposta un valore iniziale di 500 ms per iltTimer
parametro.Per visualizzare le descrizioni è inoltre necessario ampliare l'elenco di testo e il pool di immagini.
Sottomodulo:
SwitchSimple
Il secondo modulo switch che crei è un semplice switch con solo due stati: acceso e spento. Per farlo, devi creare una dichiarazione di modulo e un blocco funzione che differiscono dall'interruttore esistente solo per i seguenti punti: il parametro e il
tTimer
le variabili non sono obbligatorie. Inoltre, non è necessario implementareISwitch
MaISwitchSimple
, che si estende ancheAC.IModule
.Sottomodulo:
Light
Come prima per gli interruttori, anche per la luce è necessario creare una dichiarazione di modulo
Light
con ilLight
blocco funzione eILight
interfaccia.Per inserire il
Light
modulo sotto una stanza, è necessario aggiungere ilSlots
sezione alLight
dichiarazione del modulo. In questa sezione, si dichiara una sottosezioneSlot_Multi
, che tu chiamiLights
e che può contenere i moduli di tipoILight
Il numero di luci che devono o possono essere aggiunte a una stanza è specificato daCardinality
Definisci anche le variabiliVariable
EVar_Count
e collegarli alla dichiarazione del modulopLights(POINTER TO ILight)
EuiNumberOfLights (UINT)
. Ciò garantisce che solo i moduli i cui blocchi funzionali implementano l'ILight
l'interfaccia può essere aggiunta aLights
fessura.Con il
Light
modulo, si definisce anche uno slot in cui è possibile inserire un interruttore. Pertanto, è necessario aggiungere unSwitch
fessura per ilLight
dichiarazione del modulo. Parametri aggiuntivi delLight
il modulo è la velocità del dimmerrSpeed
e la massima luminositàuiMaxValue
Infine, è necessario definire un output che rappresenti la luminosità della luce. È necessario aggiungere tutti i parametri, gli slot e gli output, nonché le variabili per l'Light
blocco funzionale.Sottomodulo:
LightSimple
L'ultimo modulo che crei è una luce semplificata che funziona con un semplice interruttore. Per farlo, hai bisogno di una dichiarazione di modulo e di un
LightSimple
blocco funzionale che estendeAC.Module
e implementa l'esistenteILight
interfaccia. Le differenze rispetto all'Light
modulo sono i seguenti: l'output dovrebbe essere di tipoBOOL
e hanno il nomexSwitchedOn
Inoltre, ilrSpeed
il parametro non è obbligatorio.Implementazione
Per l'implementazione della funzione per la
Switch
modulo, utilizzare ilCallPrioMediumStart
metodo daAC.Module
e sovrascriverlo con la propria implementazione. Questa funzione è selezionata perchéRoom
il modulo di primo livello dichiara unMEDIUM
compito. Ciò significa che ilCallPrioMediumStart
metodo delSwitch
Il blocco funzione viene chiamato automaticamente a ogni ciclo dell'attività. Tuttavia, la caratteristica principale dell'interruttore è la distinzione tra accensione/spegnimento e dimmerazione. Dopo aver premuto l'interruttore, un timer si avvia con un tempo preimpostabile con i parametri utente. Allo scadere del timer e con l'interruttore ancora premuto, viene applicata la funzione dimmer, rappresentata dalla variabilexPushLong
La variabilexPush
è TRUE quando l'interruttore viene premuto solo per un breve periodo. Per entrambe le variabilixPushLong
ExPush
, le proprietà vengono aggiunte in entrambi iSwitch
blocco funzione e l'interfaccia in modo che possano essere utilizzati dal blocco funzione luce padre.Anche il
Light
il blocco funzione sovrascrive ilCallPrioMediumStart
Metodo. A seconda del valore delle rispettive variabili di input, la luce viene attenuata o semplicemente accesa/spenta. Per il dimmer, il valore della velocità del parametro dichiaratorSpeed
viene utilizzato. Una volta raggiunto il valore massimo o minimo di dimmerazione, la dimmerazione si interrompe. Se la luce è dimmerata e si preme l'interruttore, la luce si accende.Potete vedere una possibile implementazione nel progetto di esempio.
Ingegneria
Si crea l'albero dei moduli in Moduli vista. Per fare ciò, aggiungi prima il
Room
modulo di primo livello nell'albero dei moduli dopo che i moduli sono stati importati. NelLights
slot, aggiungine unoLight
e unoLightSimple
A ciascuno di questi, assegnare unSwitch
o unSwitchSimple
. Quindi è possibile impostare i parametri e gli I/O delle istanze del modulo. A scopo di test, è consigliabile collegare gli input e gli output alle variabili in un elenco di variabili globali.Infine, utilizzare il Compositore → Creare Comando per creare il progetto. Dopo averlo scaricato su un dispositivo, puoi testare l'esempio come preferisci. Puoi anche variare la disposizione della stanza senza dover modificare il codice o i moduli. Puoi anche modificare i valori dei parametri di istanza del modulo e verificarne gli effetti. I valori dei parametri possono essere modificati sia offline che online.
Requisiti di sistema e restrizioni
Sistema di programmazione | CODESYS Development System (versione 3.5.17.0 o superiore) |
Sistema di esecuzione | CODESYS Control Win (versione 3.5.17.0) |
Componenti aggiuntivi | CODESYS Application Composer |
Avviso
SCARICAMENTO Progetti