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
Application
ingresso e clic nel menu contestuale. Cambia il nome predefinitoGVL
aGlob_Var
e fai clic Aggiungi per confermare.Le
Glob_Var
l'oggetto viene visualizzato di seguitoApplication
. L'editor GVL si apre a destra dell'albero dei dispositiviQuando si apre la vista testuale, contiene già le parole chiave
VAR_GLOBAL
eEND_VAR
. Per il nostro esempio, fai clic supulsante 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_GLOBAL
e il Tipo di datiBOOL
vengono inseriti automaticamente nella riga.Specificare
rTempActual
nel Nome campo.Fare doppio clic nel campo nella colonna tipo di dati.
Ora il campo può essere modificato e
viene visualizzato il pulsante.
Fai clic su
pulsante e quindi seleziona Input Assistant.
Il dialogo aiuto di input si apre.
Scegli il tipo di dati
REAL
e 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_PRG
nell'albero dei dispositivi.L'editor CFC si apre nella
PLC_PRG
scheda. 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_PRG
scheda.L'ingresso senza nome
???
è stato inserito.Nell'editor CFC, fai clic su
???
all'ingresso, quindi fai clic super aprire l'Input Assistant. Variabili categoria, seleziona
rTempActual
variabile qui sotto . Ecco come fare riferimento alla variabile globalerTempActual
qui.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 nomerHysteresis
.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
REAL
e il valore di inizializzazione1
fuori. Fare clic sul pulsante ok.La variabile
rHysteresis
appare 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
???
ConADD
.Il blocco aggiunge tutti gli ingressi ad esso collegati.
Collega l'ingresso
Glob_Var.rTempSet
con l'elemento costitutivoADD
. Per fare ciò, fare clic sul pin di output dell'input e trascinarlo sul pin di input superiore del bloccoADD
.Collegare l'ingresso allo stesso modo
rHysteresis
con l'ingresso inferiore del bloccoADD
.I due ingressi
rHysteresis
eGlob_Var.rTempSet
sono ora daADD
aggiunto.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
ADD
in poi. Egli dovrebbeGlob_Var.rTempActual
con la somma fuoriGlob_Var.rTempSet
+rHysteresis
per confrontare. Assegna al blocco la funzioneGT
(Più grande di).il
GT
blocco funziona come segue:IF (oberer Eingang > unterer Eingang) THEN Ausgang := TRUE;
Collega l'ingresso
Glob_Var.rTempActual
con l'ingresso superiore del bloccoGT
.Collegare l'uscita del blocco
ADD
con l'ingresso inferiore del bloccoGT
.Ora usa l'elemento block per creare un blocco funzione a destra del
GT
POU che avvia e arresta il compressore in base alle condizioni di ingresso (Set — Reset). Specificare il nomeSR
nel???
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_0
e il tipo di datiSR
. Fare clic sul pulsante ok.L'elemento costitutivo
SR
dalla bibliotecaStandard
è istanziato.SR
serve a definire ilTHEN
all'uscita del blocco GT. Gli ingressiSET1
eRESET
apparire.Collegare la connessione di uscita sul lato destro del blocco
GT
con l'ingressoSET1
del blocco edilizioSR_0
.SR
può essere una variabile booleana diFALSE
in poiTRUE
e rimetti a posto. Se la condizione all'ingressoSET1
è vero, la variabile booleana è attivaTRUE
impostato. Soddisfa la condizioneRESET
a , la variabile viene reimpostata. La variabile booleana (globale) è nel nostro esempioGlob_Var.xCompressor
.Inserisci un elemento Uscita e assegnargli la variabile globale
Glob_Var.xCompressor
a. Disegna una linea di collegamento traGlob_Var.xCompressor
e connessione di uscitaQ1
a partire dalSR
.
Ora si specifica la condizione in cui il compressore deve spegnersi nuovamente, ovvero il RESET
ingresso 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
Application
oggetto e aggiungere un oggetto POU di tipo Programma con il Scala (LD2) linguaggio di implementazione.Assegna un nome al programma come
Signals
.Le
Signals
il programma è elencato nell'albero dei dispositivi accanto aPLC_PRG
. L'editor dei diagrammi a scala si apre inSignals
scheda. L'editor delle dichiarazioni appare nella parte superiore, ToolBox vista a destra. Il diagramma a scala contiene una rete vuotaCrea 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
TON
timer POU nei passaggi successivi. Commuta un segnale booleanoTRUE
dopo 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 susimbolo 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
TON
Timer e fai clic OK.Ora nell'editor di riga del blocco, che mostra il nome del blocco funzionale
TON
, premere il tasto Invio.Le
TON
Il POU viene visualizzato con i relativi ingressi e uscite.Per rimuovere il
EN
ingresso e ilENO
output, seleziona il blocco e clicca su IT/IT → IT nel menu contestuale.Ora il blocco ha solo il
IN
EPT
input e ilQ
EET
uscite.Fai doppio clic sui tre punti interrogativi [???] direttamente sopra il blocco, inserisci
TON_0
come 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
TON
POU viene istanziato con il nomeTON_0
.Programma il blocco da attivare non appena il compressore inizia a funzionare. Per prima cosa trascina
Contact
elemento scala del ToolBox vista davanti alIN
ingresso 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.
Il nome della variabile
Glob_Var.xCompressor
viene 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
Q
uscita delTON
bloccare. Specificare il nomeGlob_Var.xSignal
per la bobina.Definire il periodo di tempo dall'attivazione del POU
TON_0
fino a quando il segnale non dovrebbe suonare. Questa definizione avviene tramite la variabileGlob_Var.timAlarmThreshold
, che inserite a tale scopo all'ingressoPT
diTON_0
. Per fare ciò, sposta il puntatore del mouse all'estremità sinistra del pin di inputPT
. Fate clic sulla casella dai bordi sottili che ora viene visualizzata a sinistra del pin di input e specificate il nome della variabilePremere 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
TON
POU 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
TON
POU per l'attivazione temporizzata del segnale. Questa volta viene attivato dalla variabile globaleGlob_Var.xDoorOpen
all'ingressoIN
. All'ingressoPT
, aggiungi la variabile globaleGlob_Var.timDoorOpenThreshold
.Dal
Util
libreria, aggiungi unBLINK
POU in uscitaQ
delTON
POU in questa rete e istanziatelo con il nomeBlink_0
.Le
BLINK_0
POU blocca l'inoltro del segnaleQ
e quindiGlob_Var.xSignal
.Innanzitutto, trascina due Contatti elementi del ToolBox vista su
OUT
uscita del POU. Assegna la variabileTON_1.Q
al contatto direttamente dopo l'uscitaQ
e la variabile globaleGlob_Var.xDoorOpen
al secondo contatto.Aggiungi un elemento dopo i due contatti Lavandino della cucina e assegnargli la variabile globale
Glob_Var.xSignal
a.Dichiara la variabile locale
timSignalTime : TIME := T#1S;
e aggiungi questa variabile agli inputTIMELOW
eTIMEHIGH
uno; il tempo di ciclo è quindi 1 secondo per ciascunoTRUE
e 1 secondo perFALSE
.Fate clic con il pulsante destro
TON
POU e clicca Rimuovi i pin non utilizzati nel menu contestuale.L'output non utilizzato
ET
viene 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.xDoorOpen
al contatto.Il contatto inserito porta direttamente a una bobina. Aggiungere una bobina a destra del contatto e assegnare la variabile globale
Glob_Var.xLamp
alla 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.xSignal
bobina.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
DoorIsOpen
dai 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_PRG
si 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
Signals
programma 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
Simulation
con il mouseMainTask
sotto il configurazione dell'attività.Il programma
Simulation
viene inserito nella configurazione dell'attività.Se si desidera visualizzare la configurazione dell'attività, fare doppio clic sulla voce
MainTask
per aprire Blocco note.Nella tabella nella parte inferiore dell'editor è possibile visualizzare le POU richiamate dal task:
PLC_PRG
(inserito per impostazione predefinita) eSimulation
. 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
Application
e 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.