Skip to main content

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à.

  1. Lavori preparatori

    Crea un nuovo CODESYS progetto dal Progetto standard con Application Composer modello. Seleziona AC_ModuleBase come la biblioteca.

    _ex_ac_img_first_steps1.png
  2. 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 il AC.Module blocco funzione che è definito nel AC_ModuleBase biblioteca. La AC.Module Il blocco funzione fornisce già numerosi metodi e proprietà che non devono essere sovrascritti.

    _ex_ac_img_first_steps2.png

    La dichiarazione inizia con la parola chiave MODULE seguito dal nome del modulo e dalla parola chiave aggiuntiva IMPLEMENTED_BY, nonché dal blocco funzionale che implementa il modulo. Nello specifico, questo blocco funzionale è il Room blocco funzione appena creato. Nella maggior parte dei casi, il MetaData 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 dichiari Toplevel 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 sezione Toplevel sezione. Questo compito è Standard_Task in questo esempio. È definito come un MEDIUM compito e contiene il CREATE_IF_MISSING E UPDATE_IOS bandiere.

    _ex_ac_img_first_steps3.png

    Tutte le icone e le stringhe utilizzate come segnaposto per le descrizioni e le icone (Desc, Icon_16, E Icon_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 immagini IP nel pool POU che contiene le icone e i testi a cui si fa riferimento.

  3. 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 un Toplevel sezione. Come tutti i blocchi funzionali che rappresentano moduli, il Switch il blocco funzione deve anche estendersi AC.modules. Inoltre, Switch implementa il ISwitch interfaccia che devi anche creare. A sua volta, il ISwitch l'interfaccia si estende AC.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 il xIn variabile di input del Switch blocco funzione. Inoltre, è necessario un tempo di riferimento per distinguere le due funzioni dell'interruttore: premere l'interruttore per la durata del tempo tTimer 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 E tTimer come input del Switch blocco funzione, in cui si imposta un valore iniziale di 500 ms per il tTimer parametro.

    _ex_ac_img_first_steps4.png

    Per visualizzare le descrizioni è inoltre necessario ampliare l'elenco di testo e il pool di immagini.

  4. 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 implementare ISwitch Ma ISwitchSimple, che si estende anche AC.IModule.

    _ex_ac_img_first_steps5.png
  5. Sottomodulo: Light

    Come prima per gli interruttori, anche per la luce è necessario creare una dichiarazione di modulo Light con il Light blocco funzione e ILight interfaccia.

    Per inserire il Light modulo sotto una stanza, è necessario aggiungere il Slots sezione al Light dichiarazione del modulo. In questa sezione, si dichiara una sottosezione Slot_Multi, che tu chiami Lights e che può contenere i moduli di tipo ILight Il numero di luci che devono o possono essere aggiunte a una stanza è specificato da Cardinality Definisci anche le variabili Variable E Var_Count e collegarli alla dichiarazione del modulo pLights(POINTER TO ILight) E uiNumberOfLights (UINT). Ciò garantisce che solo i moduli i cui blocchi funzionali implementano l' ILight l'interfaccia può essere aggiunta a Lights fessura.

    _ex_ac_img_first_steps6.png

    Con il Light modulo, si definisce anche uno slot in cui è possibile inserire un interruttore. Pertanto, è necessario aggiungere un Switch fessura per il Light dichiarazione del modulo. Parametri aggiuntivi del Light il modulo è la velocità del dimmer rSpeed 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.

    _ex_ac_img_first_steps7.png
  6. 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 estende AC.Module e implementa l'esistente ILight interfaccia. Le differenze rispetto all' Light modulo sono i seguenti: l'output dovrebbe essere di tipo BOOL e hanno il nome xSwitchedOn Inoltre, il rSpeed il parametro non è obbligatorio.

    _ex_ac_img_first_steps8.png
  7. Implementazione

    Per l'implementazione della funzione per la Switch modulo, utilizzare il CallPrioMediumStart metodo da AC.Module e sovrascriverlo con la propria implementazione. Questa funzione è selezionata perché Room il modulo di primo livello dichiara un MEDIUM compito. Ciò significa che il CallPrioMediumStart metodo del Switch 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 variabile xPushLong La variabile xPush è TRUE quando l'interruttore viene premuto solo per un breve periodo. Per entrambe le variabili xPushLong E xPush, le proprietà vengono aggiunte in entrambi i Switch blocco funzione e l'interfaccia in modo che possano essere utilizzati dal blocco funzione luce padre.

    Anche il Light il blocco funzione sovrascrive il CallPrioMediumStart 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 dichiarato rSpeed 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.

  8. 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. Nel Lights slot, aggiungine uno Light e uno LightSimple A ciascuno di questi, assegnare un Switch o un SwitchSimple. 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 CompositoreCreare 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.

    _ex_ac_img_first_steps9.png

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

_example_icon.png SCARICAMENTO Progetti