Controllo sequenziale

Il blocco funzione Controllo sequenziale consente di programmare sequenze di funzioni in formato testo.
In questo modo è possibile automatizzare vari processi che richiedono il controllo sequenziale.

Il blocco funzione può semplificare questi processi, che spesso richiedono diversi blocchi funzione convenzionali con una programmazione complessa.

I singoli passaggi vengono programmati riga per riga, un gruppo di righe che svolge una funzione specifica viene definito sequenza.

Contenuto


Ingressi

Alias Descrizione breve Descrizione Campo di valore
S1-8 Activate sequence 1-8 Attiva sequenza 1-8 0/1
AI1-8 Inputs 1-8 Ingressi 1-8
S Select sequence Seleziona sequenza 0...8
Off Off Impulso: le uscite vengono resettate/spente.
On: Il blocco è bloccato.
Ingresso dominante.
Il nome del sensore collegato viene utilizzato nell'interfaccia utente.
0/1
Rem Remanence input Ingresso Rimanenza: Se attivo, il blocco funzione mantiene lo stato precedente dopo un riavvio del Miniserver.
Lo stato del blocco funzione viene salvato:
- Al momento del salvataggio nel Miniserver
- Ad un riavvio programmato
- Prima di un backup
- Una volta all'ora
I dati vengono salvati sulla scheda SD.
0/1




Uscite

Alias Descrizione breve Descrizione Campo di valore
AQ1-8 Outputs 1-8 Uscite 1-8
S Current active sequence Attuale sequenza attiva
L Current program line Attuale linea di programma
TQ Text output L'uscita può essere utilizzata da sequenze. -
AC API Connector Connettore intelligente basato su API.
Comandi API
-




Proprietà

Descrizione breve Descrizione Campo di valore Valore predefinito
Configurazione Editor codice di programma - -
Intervallo[ms] Intervallo in millisecondi in cui vengono eseguite le righe del programma. Valori bassi possono influenzare il carico della CPU. 20...1000 500




Esempio di applicazione

L'esempio seguente mostra una semplice applicazione per il riscaldamento dell'acqua sanitaria, in cui due serbatoi di acqua calda vengono riscaldati consecutivamente da un riscaldatore centrale.

Le temperature del riscaldatore, dei due serbatoi dell'acqua calda e il setpoint della temperatura dell'acqua calda sono forniti agli ingressi del blocco funzione.
La sequenza 1 viene avviata tramite l'ingresso (S1), in questo esempio da un impulso a un'ora specifica.
Il riscaldatore, le pompe e le valvole sono controllati tramite le uscite:

Fare doppio clic sul blocco funzione per aprire la finestra di programmazione.
La libreria sul lato sinistro della finestra mostra la lista degli ingressi, delle uscite, dei comandi e delle variabili disponibili
Facendo doppio click su uno di questi oggetti verrà inserito nella finestra dell'editor a destra dove potrà essere ulteriormente personalizzato:

Ogni riga deve iniziare con un comando, come si può vedere nell'esempio sopra.
I commenti in verde non sono necessari per il funzionamento della sequenza, ma consentono di documentare i singoli passaggi.

Nota: questo esempio ha lo scopo di fornire una panoramica del blocco funzione e della sua funzionalità. Può essere utilizzato in un'applicazione specifica solo in misura limitata.

La funzionalità di una sequenza può essere testata in Simulazione / Liveview. La riga attiva corrente è contrassegnata in giallo nella finestra di programmazione. Per Liveview, l'intero documento deve essere identico al Miniserver.


Descrizione funzionale

Le sequenze vengono eseguite riga per riga a un intervallo regolabile. Sezioni specifiche possono essere saltate utilizzando condizioni o ritardate tramite comandi temporali..
È possibile creare più sequenze, ogni sequenza può essere avviata individualmente o commutata utilizzando un comando.

Il blocco funzione include anche un controllo della sintassi, che evidenzia gli errori di sintassi durante la modifica di una sequenza. Le righe non valide o vuote vengono saltate durante l'esecuzione della sequenza.

Una riga di programmazione inizia sempre con la funzione desiderata, seguita dai parametri e dagli operatori richiesti, ciascuno separato da uno spazio.

Gli ingressi e le uscite specificati nella libreria del blocco possono essere impostati o interrogati.
Se un ingresso è collegato alla logica, è valido l'ultimo valore impostato. Le modifiche all'ingresso sovrascrivono il valore impostato da una sequenza.

I comandi supportati dal blocco funzione Formula possono essere utilizzati per impostare e confrontare le uscite (es. SET AQ1 = AI2 * 3).


Operatori, ingressi/uscite (IO) e variabili

Gli operatori disponibili sono =, >=, >, <=, <, !=

Ingressi disponibili: (AI1 - 8). I nomi degli ingressi possono essere personalizzati nella finestra di dialogo.

Uscite disponibili: (AQ1 - 8). I nomi delle uscite possono essere personalizzati nella finestra di dialogo.

Variabili: value1 - value5. I nomi delle variabili possono essere personalizzati nella finestra di dialogo.
Le variabili vengono utilizzate per elaborare i valori che non sono disponibili negli IO. Possono essere impostate come IO, utilizzate nei calcoli o come memorie.


Comandi

Sleep
Attende il tempo specificato
Sintassi: sleep [valore] [s: secondi, m: minuti]
Esempi:
sleep 300 s (aspetta 300 secondi, poi procede con la riga successiva)
sleep 10 m (aspetta 10 minuti, poi procede con la riga successiva)

Waitcondition
Attende che la condizione sia soddisfatta
Sintassi: waitcondition [IO] [operatore] [valore]
Esempi:
waitcondition AI1 > AQ1 (attende che AI1 sia maggiore di AQ1, quindi procede con la riga successiva)
waitcondition AI1 + 3 > value1 (attende che AI1 + 3 sia maggiore della variabile value1, quindi procede con la riga successiva)

Set
Imposta un ingresso, un'uscita o una variabile su un valore
Sintassi: set [IO] = [valore]
Esempi:
set AQ1 = AI1 - AI2 (sottrae AI2 da AI1 e restituisce il risultato su AQ1)
set value1 = AI2 + AI3 (somma AI2 e AI3 e imposta la variabile value1 al risultato)

Setpulse
Fornisce un impulso su un ingresso o un'uscita
Sintassi: setpulse [IO]
Esempi:
setpulse AQ1 (fornisce un breve impulso ad AQ1)
setpulse AI2 = 4 (fornisce un breve impulso con valore 4 su AI2)

Startsequence
Avvia una sequenza specifica
Sintassi: startsequence [numero] o startsequence [nome della sequenza]
Esempi:
startsequence 2 (inizia la seconda sequenza)
startsequence Alarm (avvia la sequenza denominata “Alarm”)

Return
Se la sequenza corrente è stata avviata da un'altra sequenza con [startsequence], questo comando ritorna alla sequenza chiamante e procede alla riga successiva
Sintassi: return

Goto
Va a una riga specifica
Sintassi: goto [valore]
Esempi:
goto 1 (riprende la sequenza dall'inizio)
goto 23 (salta alla riga 23 e continua da lì)

If
"If" verifica prima se una condizione è vera. Solo se la condizione è vera, vengono eseguiti i comandi successivi fino a "endif".
Sintassi: if [termine sinistro] [operatore] [termine destro] ... endif
Esempi:
if AQ3 >= 4
set AQ1 = AQ3
endif

Commenti e testi

Commento
Aggiungi un commento alla riga corrente o disabilita il resto della riga
Sintassi: //
Esempi:
waitcondition AI2 > AI4 // attende che AI2 sia maggiore di AI4 (il commento viene utilizzato per descrivere la riga)
// waitcondition AI2 > AI4(le barre di commento vengono utilizzate all'inizio per disabilitare l'intera riga)

Uscita di testo TQ
I caratteri tra virgolette vengono emessi come testo, altrimenti vengono gestiti come valori analogici
Sintassi: set TQ = "..."
Esempi:
[set TQ = AQ2] emetterà "27.5"
[set TQ = "Il valore di AQ2 è" AQ2] emetterà "Il valore di AQ2 è 27,5"