Programmare l'applicazione di controllo nel progetto
Dichiarare le variabili globali
Per prima cosa dichiarare le variabili che si desidera utilizzare nell'applicazione. Per fare questo, metti sotto Applicazione un elenco di variabili globali:
- Seleziona il - Applicationingresso e clic nel menu contestuale. Cambia il nome predefinito- GVLa- Glob_Vare fai clic Aggiungi per confermare.- Le   - Glob_Varl'oggetto viene visualizzato di seguito  - Application. L'editor GVL si apre a destra dell'albero dei dispositivi
- Quando si apre la vista testuale, contiene già le parole chiave - VAR_GLOBALe- END_VAR. Per il nostro esempio, fai clic su pulsante nella barra laterale destra dell'editor per attivare la visualizzazione tabulare. pulsante nella barra laterale destra dell'editor per attivare la visualizzazione tabulare.- Viene visualizzata una riga vuota. Il cursore si trova in Nome colonna. 
- Nel menu contestuale, fai clic su Inserisci. - Si apre un campo di immissione. Allo stesso tempo, Ambito - VAR_GLOBALe il Tipo di dati- BOOLvengono inseriti automaticamente nella riga.
- Specificare - rTempActualnel Nome campo.
- Fare doppio clic nel campo nella colonna tipo di dati. - Ora il campo può essere modificato e  viene visualizzato il pulsante. viene visualizzato il pulsante.
- Fai clic su  pulsante e quindi seleziona Input Assistant. pulsante e quindi seleziona Input Assistant.- Il dialogo aiuto di input si apre. 
- Scegli il tipo di dati - REALe fare clic sul pulsante ok.
- Inserire un valore numerico nel Inizializzazione colonna (esempio: - 8.0).
Dichiarare allo stesso modo le seguenti variabili:
| Cognome | Tipo di dati | Inizializzazione | Commento | 
|---|---|---|---|
| 
 | 
 | 
 | temperatura effettiva | 
| 
 | 
 | 
 | temperatura obiettivo | 
| 
 | 
 | 
 | porta di stato | 
| 
 | 
 | 
 | Tempo di funzionamento del compressore dopo il quale viene emesso un segnale | 
| 
 | 
 | 
 | Tempo dall'apertura della porta trascorso il quale viene emesso un segnale acustico | 
| 
 | 
 | 
 | segnale di controllo | 
| 
 | 
 | 
 | segnale di controllo | 
| 
 | 
 | 
 | messaggio di stato | 
Creare il programma principale per il controllo del raffreddamento nell'editor CFC
Ora descriverai la funzione principale del programma applicativo nel modo principale PLC_PRG POU, che viene creato di default. Il compressore si attiva e si raffredda quando la temperatura effettiva è superiore alla temperatura impostata più un'isteresi. Il compressore si spegne quando la temperatura effettiva è inferiore alla temperatura impostata meno l'isteresi
Per descrivere questa funzionalità nel linguaggio di implementazione CFC, attenersi alla seguente procedura:
- Doppio click - PLC_PRGnell'albero dei dispositivi.- L'editor CFC si apre nella - PLC_PRGscheda. L'editor delle dichiarazioni viene visualizzato sopra l'area dell'editor grafico in forma testuale o tabulare. Cassetta degli attrezzi la vista è sul lato destro.
- Nel Casella degli attrezzi visualizza, seleziona Ingresso elemento e trascinalo nell'editor CFC sotto - PLC_PRGscheda.- L'ingresso senza nome - ???è stato inserito.
- Nell'editor CFC, fai clic su - ???all'ingresso, quindi fai clic su per aprire l'Input Assistant. Variabili categoria, seleziona per aprire l'Input Assistant. Variabili categoria, seleziona- rTempActualvariabile qui sotto . Ecco come fare riferimento alla variabile globale- rTempActualqui.- Il nome di input è - Glob_Var.rTempActual.
- Come nel passaggio 3, crea un altro input con il nome della variabile globale - Glob_Var.rTempSet.
- Crea un altro input, fai clic sui tre punti interrogativi - ???e sostituirlo con il nome- rHysteresis.- Poiché questo non è il nome di una variabile già nota, viene visualizzata la finestra di dialogo dichiarare variabile. Il nome è già incluso nella finestra di dialogo. 
- Compila i campi nella finestra di dialogo dichiarare variabile con il tipo di dati - REALe il valore di inizializzazione- 1fuori. Fare clic sul pulsante ok.- La variabile - rHysteresisappare nell'editor delle dichiarazioni.
- Nel Casella degli attrezzi visualizza, seleziona Blocca elemento e trascinalo nell'editor CFC sotto PLC_PRG scheda. - Il blocco viene visualizzato nell'editor CFC. 
- Sostituire - ???Con- ADD.- Il blocco aggiunge tutti gli ingressi ad esso collegati. 
- Collega l'ingresso - Glob_Var.rTempSetcon l'elemento costitutivo- ADD. Per fare ciò, fare clic sul pin di output dell'input e trascinarlo sul pin di input superiore del blocco- ADD.
- Collegare l'ingresso allo stesso modo - rHysteresiscon l'ingresso inferiore del blocco- ADD.- I due ingressi - rHysteresise- Glob_Var.rTempSetsono ora da- ADDaggiunto.
- Se si desidera spostare un elemento nell'editor, fare clic su un punto libero nell'elemento o sulla cornice in modo che l'elemento sia selezionato (cornice rossa, ombreggiata in rosso). Tenere premuto il pulsante del mouse e trascinare l'elemento nella posizione desiderata. 
- Posiziona un altro blocco di costruzione a destra del blocco di costruzione - ADDin poi. Egli dovrebbe- Glob_Var.rTempActualcon la somma fuori- Glob_Var.rTempSet+- rHysteresisper confrontare. Assegna al blocco la funzione- GT(Più grande di).- il - GTblocco funziona come segue:- IF (oberer Eingang > unterer Eingang) THEN Ausgang := TRUE;
- Collega l'ingresso - Glob_Var.rTempActualcon l'ingresso superiore del blocco- GT.
- Collegare l'uscita del blocco - ADDcon l'ingresso inferiore del blocco- GT.
- Ora usa l'elemento block per creare un blocco funzione a destra del - GTPOU che avvia e arresta il compressore in base alle condizioni di ingresso (Set — Reset). Specificare il nome- SRnel- ???campo. Premere il tasto Invio per chiudere il campo di immissione aperto sopra il POU (- SR_0).- Il dialogo dichiarare variabile appare. 
- Dichiara la variabile con il nome - SR_0e il tipo di dati- SR. Fare clic sul pulsante ok.- L'elemento costitutivo - SRdalla biblioteca- Standardè istanziato.- SRserve a definire il- THENall'uscita del blocco GT. Gli ingressi- SET1e- RESETapparire.
- Collegare la connessione di uscita sul lato destro del blocco - GTcon l'ingresso- SET1del blocco edilizio- SR_0.- SRpuò essere una variabile booleana di- FALSEin poi- TRUEe rimetti a posto. Se la condizione all'ingresso- SET1è vero, la variabile booleana è attiva- TRUEimpostato. Soddisfa la condizione- RESETa , la variabile viene reimpostata. La variabile booleana (globale) è nel nostro esempio- Glob_Var.xCompressor.
- Inserisci un elemento Uscita e assegnargli la variabile globale - Glob_Var.xCompressora. Disegna una linea di collegamento tra- Glob_Var.xCompressore connessione di uscita- Q1a partire dal- SR.
Ora si specifica la condizione in cui il compressore deve spegnersi nuovamente, ovvero il RESETingresso del blocco SR TRUE-Segnale ricevuto. Per fare ciò, formula la condizione opposta come sopra. Usa gli elementi costitutivi per questo SUB (Sottrai) e LT (Meno di).
Infine, viene creato il seguente piano CFC:

Creazione di un blocco di programma per la gestione dei segnali nell'editor del diagramma ladder
A questo punto si implementa la gestione del segnale per la sirena d'allarme e per l'accensione e lo spegnimento della lampada in un ulteriore modulo di programma. Il linguaggio di implementazione Ladder Diagram (LAD) è adatto a questo.
Tratta i seguenti segnali, ciascuno nella propria rete:
- Quando il compressore funziona troppo a lungo perché la temperatura è troppo alta, viene emesso un segnale acustico continuo. 
- Se la porta è aperta troppo a lungo, un segnale temporizzato richiama l'attenzione su questo. 
- Finché la porta è aperta, la luce è accesa. 
- Nell'albero dei dispositivi, fate clic con il pulsante destro del mouse su - Applicationoggetto e aggiungere un oggetto POU di tipo Programma con il Scala (LD2) linguaggio di implementazione.- Assegna un nome al programma come - Signals.- Le - Signalsil programma è elencato nell'albero dei dispositivi accanto a- PLC_PRG. L'editor dei diagrammi a scala si apre in- Signalsscheda. L'editor delle dichiarazioni appare nella parte superiore, ToolBox vista a destra. Il diagramma a scala contiene una rete vuota
- Crea un programma nella rete in modo che venga emesso un segnale acustico quando il compressore funziona troppo a lungo senza raggiungere la temperatura specificata. Per fare ciò, inserisci un - TONtimer POU nei passaggi successivi. Commuta un segnale booleano- TRUEdopo un periodo di tempo specificato.
- Nel Casella degli attrezzi visualizza, trascina Blocca elemento e rilascialo nella rete vuota in una posizione di inserimento disponibile. - Il blocco viene visualizzato come un riquadro con ingressi e uscite. 
- Fate doppio clic sui tre punti interrogativi ( - ???) nel blocco e fai clic su simbolo nell'editor di riga. simbolo nell'editor di riga.- Le Assistente di input si apre una finestra di dialogo. 
- Nel Assistente di input finestra di dialogo, nella Blocchi funzionali standard categoria, nella Standard libreria, seleziona - TONTimer e fai clic OK.
- Ora nell'editor di riga del blocco, che mostra il nome del blocco funzionale - TON, premere il tasto Invio.- Le - TONIl POU viene visualizzato con i relativi ingressi e uscite.
- Per rimuovere il - ENingresso e il- ENOoutput, seleziona il blocco e clicca su IT/IT → IT nel menu contestuale.- Ora il blocco ha solo il - INE- PTinput e il- QE- ETuscite.
- Fai doppio clic sui tre punti interrogativi [???] direttamente sopra il blocco, inserisci - TON_0come nome dell'istanza e premete il tasto Invio.- Hai confermato il nome dell'istanza e la finestra di dialogo dichiarare variabile si apre. 
- Conferma il dialogo con ok. - Ora l'inserito - TONPOU viene istanziato con il nome- TON_0.
- Programma il blocco da attivare non appena il compressore inizia a funzionare. Per prima cosa trascina - Contactelemento scala del ToolBox vista davanti al- INingresso del blocco. Fate doppio clic sui tre punti interrogativi e fate clic sull'icona nell'editor di riga ). Nell'Input Assistant, ora seleziona la variabile globale già dichiarata Compressore e fai clic OK. ). Nell'Input Assistant, ora seleziona la variabile globale già dichiarata Compressore e fai clic OK.- Il nome della variabile - Glob_Var.xCompressorviene visualizzato sopra il contatto.- Suggerimento- Quando inizi a digitare un nome di variabile nella posizione di input, ottieni sempre automaticamente un elenco di tutte le variabili i cui nomi iniziano con i caratteri che hai digitato e che possono essere utilizzate a questo punto. Questo supporto è un'impostazione predefinita nel CODESYS-Opzioni di codifica intelligenti. 
- Inserire il segnale da attivare. Per fare ciò, trascina un Bobina dal ToolBox vista, scala categoria, alla - Quscita del- TONbloccare. Specificare il nome- Glob_Var.xSignalper la bobina.
- Definire il periodo di tempo dall'attivazione del POU - TON_0fino a quando il segnale non dovrebbe suonare. Questa definizione avviene tramite la variabile- Glob_Var.timAlarmThreshold, che inserite a tale scopo all'ingresso- PTdi- TON_0. Per fare ciò, sposta il puntatore del mouse all'estremità sinistra del pin di input- PT. Fate clic sulla casella dai bordi sottili che ora viene visualizzata a sinistra del pin di input e specificate il nome della variabile
- Premere il tasto Invio. - Le Dichiarazione automatica si apre una finestra di dialogo. 
- Fare clic OK per confermare la finestra di dialogo. - La nuova variabile dichiarata viene visualizzata nella parte relativa alla dichiarazione. 
- Fate clic con il pulsante destro - TONPOU e clicca Rimuovi i pin non utilizzati nel menu contestuale.- L'uscita inutilizzata - ETè rimosso.
- Nella seconda rete del KOP, si programma che il segnale suoni ciclicamente se la porta è aperta troppo a lungo. - Usa il mouse per trascinare un Rete elemento del ToolBox visualizza il punto di inserimento sotto la Rete 1. - Una rete vuota con numero 2 appare. 
- Come nella prima rete, implementa un - TONPOU per l'attivazione temporizzata del segnale. Questa volta viene attivato dalla variabile globale- Glob_Var.xDoorOpenall'ingresso- IN. All'ingresso- PT, aggiungi la variabile globale- Glob_Var.timDoorOpenThreshold.
- Dal - Utillibreria, aggiungi un- BLINKPOU in uscita- Qdel- TONPOU in questa rete e istanziatelo con il nome- Blink_0.
- Le - BLINK_0POU blocca l'inoltro del segnale- Qe quindi- Glob_Var.xSignal.- Innanzitutto, trascina due Contatti elementi del ToolBox vista su - OUTuscita del POU. Assegna la variabile- TON_1.Qal contatto direttamente dopo l'uscita- Qe la variabile globale- Glob_Var.xDoorOpenal secondo contatto.
- Aggiungi un elemento dopo i due contatti Lavandino della cucina e assegnargli la variabile globale - Glob_Var.xSignala.
- Dichiara la variabile locale - timSignalTime : TIME := T#1S;e aggiungi questa variabile agli input- TIMELOWe- TIMEHIGHuno; il tempo di ciclo è quindi 1 secondo per ciascuno- TRUEe 1 secondo per- FALSE.
- Fate clic con il pulsante destro - TONPOU e clicca Rimuovi i pin non utilizzati nel menu contestuale.- L'output non utilizzato - ETviene rimosso.
- Nella terza rete, programmare in modo che la lampada si accenda finché la porta è aperta. Aggiungi una rete aggiuntiva e un contatto. Assegna la variabile - GlobVar.xDoorOpenal contatto.
- Il contatto inserito porta direttamente a una bobina. Aggiungere una bobina a destra del contatto e assegnare la variabile globale - Glob_Var.xLampalla bobina.
- CODESYS elabora le reti di un LD una dopo l'altra. Ora installate un collegamento alla Rete 3 alla fine della Rete 1 per assicurarvi che venga eseguita solo la Rete 1 o solo la Rete 2: - When you hover the mouse pointer over the 3rd line in the top left-hand edge of the network, the information <insert jump here> is displayed. Double-click this position and enter DoorIsOpen: as the jump label in the line editor. - Seleziona la rete 1. ToolBox vista, Diagramma a scala categoria, trascina il Salta elemento nella posizione di inserimento contrassegnata da un triangolo davanti a - Glob_Var.xSignalbobina.- Viene visualizzato l'elemento di salto. L'obiettivo di salto è ancora incluso - ???specificato.
- Fai doppio clic sui tre punti interrogativi [???] e fate clic sull'icona nell'editor di riga  ). Assistente di input finestra di dialogo, seleziona ). Assistente di input finestra di dialogo, seleziona- DoorIsOpendai possibili identificatori delle etichette e clicca OK per confermare.- L'etichetta di salto alla rete 3 è implementata. 
Il programma LD ora si presenta così:

Chiamata del programma «Signals» nel programma principale
Nel nostro esempio di programma, il programma principale PLC_PRG il programma Signals richiesta di elaborazione del segnale.
- Fare doppio clic nella struttura dei dispositivi - PLC_PRG.- Il programma - PLC_PRGsi apre in Blocco note.
- Nel Cassetta degli attrezzi visualizza, trascina un Blocca elemento all'editor di - PLC_PRG.
- Fai doppio clic sui tre punti interrogativi [???] e fai clic su  simbolo nell'editor di linee. Assistente di input finestra di dialogo, nella POU/Chiamate di programmi e funzioni categoria, seleziona simbolo nell'editor di linee. Assistente di input finestra di dialogo, nella POU/Chiamate di programmi e funzioni categoria, seleziona- Signalsprogramma e clicca OK per confermare.
Creazione di un blocco di programma ST per una simulazione
Poiché l'applicazione in questo progetto di esempio non è collegata a sensori e attuatori fisici, è inoltre necessario scrivere un programma per la simulazione dell'aumento e della diminuzione della temperatura. Ciò consentirà di monitorare successivamente il funzionamento del controller del frigorifero in modalità online
Il programma di simulazione viene creato in Testo strutturato.
Il programma aumenta la temperatura fino al programma principale PLC_PRG determina che la temperatura impostata è stata superata. Quindi il programma attiva il compressore. Quindi il programma di simulazione riduce la temperatura fino a quando il programma principale non disattiva nuovamente
- Nell'albero dei dispositivi, fate clic con il pulsante destro del mouse su Applicazione oggetto e aggiungere un oggetto POU di tipo Programma con il Testo strutturato (ST) linguaggio di implementazione. Denominare il POU - Simulation.
- Implementare il seguente codice nell'editor ST: - Parte della dichiarazione: - PROGRAM Simulation VAR TON_1: TON; //The temperature is decreased on a time delay, when the comepressor has been activated P_Cooling: TIME:=T#500MS; xReduceTemp: BOOL; //Signal for dereasing the temperature TON_2: TON; //The temperature is increased on a time delay P_Environment: TIME:=T#2S; //Delay time when the door is closed P_EnvironmentDoorOpen: TIME:=T#1S; //Delay time when the door is open xRaiseTemp: BOOL; //Signal for increasing the temperature timTemp: TIME; //Delay time iCounter: INT; END_VAR- Parte di implementazione: - iCounter := iCounter + 1; // No function, just for demonstration purposes. // After the compressor has been activated due to TempActual being too high, the temperature decreases. // The temperature is decremented by 0.1°C per cycle after a delay of P_Cooling IF Glob_VAR.xCompressor THEN TON_1(IN:= Glob_Var.xCompressor, PT:= P_Cooling, Q=>xReduceTemp); IF xReduceTemp THEN Glob_Var.rTempActual := Glob_Var.rTempActual-0.1; TON_1(IN:=FALSE); END_IF END_IF //If the door is open, the warming occurs faster; SEL selects P_EnvironmentDoorOpen timTemp:=SEL(Glob_Var.xDoorOpen, P_Environment, P_EnvironmentDoorOpen); //If the compressor is not in operation, then the cooling chamber becomes warmer. //The temperature is incremented by 0.1°C per cycle after a delay of tTemp TON_2(IN:= TRUE, PT:= timTemp, Q=>xRaiseTemp); IF xRaiseTemp THEN Glob_Var.rTempActual := Glob_Var.rTempActual + 0.1; TON_2(IN:=FALSE); END_IF
Suggerimento
Si consiglia l'uso di una visualizzazione per un comodo comando e monitoraggio dell'intero programma di controllo. Nel progetto di esempio finito per questo tutorial, che viene creato con il file CODESYS-Installazione standard (directory Projekte) è fornito è uno con CODESYS Visualizzazione integrata. È possibile caricare e avviare questo progetto sul controller per vederlo funzionare insieme alla visualizzazione. All'avvio, il Live_Visu è iniziato con una rappresentazione del frigorifero, che riflette il funzionamento del programma di simulazione senza che tu debba inserire alcuna voce. Tuttavia, è possibile aprire e chiudere la porta facendo clic sull'interruttore di accensione/spegnimento e anche regolare la preselezione della temperatura utilizzando l'ago sulla manopola. Non entreremo nella creazione della visualizzazione in questo tutorial. Un tutorial corrispondente come parte della guida CODESYS La visualizzazione è pianificata.
Definizione dei programmi da eseguire nella configurazione delle attività
La configurazione dell'attività predefinita contiene la chiamata per il programma principale PLC_PRG. Per il nostro progetto di esempio devi ancora chiamare il programma Simulation Aggiungere.
- Nella struttura dei dispositivi, trascina la voce - Simulationcon il mouse- MainTasksotto il configurazione dell'attività.- Il programma - Simulationviene inserito nella configurazione dell'attività.
- Se si desidera visualizzare la configurazione dell'attività, fare doppio clic sulla voce - MainTaskper aprire Blocco note.- Nella tabella nella parte inferiore dell'editor è possibile visualizzare le POU richiamate dal task: - PLC_PRG(inserito per impostazione predefinita) e- Simulation. Il tipo di chiamata dell'attività è ciclico a intervalli di 20 millisecondi. In modalità online, l'attività elaborerà i due blocchi una volta per ciclo.
Definizione dell'"Applicazione attiva" per la comunicazione con il PLC
Il nome dell'applicazione Application è nella finestra attrezzatura mostrato in grassetto. Ciò significa che questa applicazione è stata impostata come "applicazione attiva". La comunicazione con il controller si riferisce quindi a questa applicazione.
Se è presente una sola applicazione in un progetto, diventa automaticamente l'applicazione attiva. Se la tua applicazione non è ancora attiva, attivala come segue:
- Fare clic con il pulsante destro del mouse - Applicatione selezionare il comando nel menu contestuale Imposta applicazione attiva.- L'applicazione Applicazione sarà in vista attrezzatura ora mostrato in grassetto. 
Controllo degli errori del programma applicativo
Durante l'inserimento del codice istruisce CODESYS Avvisa immediatamente di errori di sintassi con ghirigori rossi. Puoi anche vedere i risultati del controllo nella finestra del messaggio. Se necessario, aprire la finestra del messaggio con il comando . I messaggi vengono assegnati alla categoria dei messaggi precompilazione visualizzato. È possibile selezionare un messaggio e premere il pulsante F4 passare al codice corrispondente. Ulteriori controlli del programma applicativo vengono eseguiti quando l'applicazione viene caricata nel controllore.
È possibile caricare un'applicazione priva di errori sul controller solo in un secondo momento.