• Non ci sono risultati.

MODALITA PLC Moduli IoT

N/A
N/A
Protected

Academic year: 2022

Condividi "MODALITA PLC Moduli IoT"

Copied!
5
0
0

Testo completo

(1)

MODALITA’ PLC – Moduli IoT

La modalità PLC permette di programmare i moduli IoT con un semplice linguaggio di programmazione per trasformare i moduli in vere e proprie applicazioni tuttofare, in grado di gestire situazioni complesse. Automatismi, temporizzazioni, controlli su ingressi ed uscite agevolano la stesura di compiti particolari.

La modalità PLC, che funziona in parallelo al normale funzionamento del modulo, opera ad una velocità fino a 3000 istruzioni al secondo, più che sufficienti a gestire la maggior parte delle problematiche di automazione. Ovviamente non è consigliato laddove si intenda analizzare rapidissime variazioni dei segnali di ingresso.

Caratteristiche del linguaggio:

26 variabili (da A a Z) gestibili da programma, in floating point. A tali variabili possono essere associati i timer gestiti dal modulo. Quando il timer va in ON la relativa variabile assume valore 1, in OFF assume valore 0.

Regole generali di questo documento:

NomeVar Nome di una variabile (da A fino a Z comprese, in maiuscolo)

Topic Numero di ingresso/uscita. Da 0 fino a G a partire dalla prima in alto (0123456789ABCDEFG).

NomeIO Nome proprio dell’ingresso/uscita

#Byte byte di test nel formato #nnnnnnnn. Lo zero più a destra corrisponde all’uscita 0

solo nel modulo ad 8 ingressi ed 8 uscite tale byte corrisponde a 16 bit (#nnnnnnnnnnnnnnnn) Valore Qualsiasi valore intero o in virgola mobile.

| Separa le tipologie possibili di opzioni utilizzabili (non contemporaneamente)

Comandi di gestione programma:

SET NomeVar1 Valore|@NomeVar2|NomeIO

Inizializza la variabile “NomeVar” al valore “Valore”.

Es: SET A 15 Inizializza A al valore 15

Es:SET A @B Copia il contenuto della variabile B in A

Es: SET A Analogico Copia il contenuto dell’ingresso/uscita “Analogico” in A ADD NomeVar1 Valore|NomeVar2

Somma alla variabile “NomeVar1” il valore “Valore” oppure il contenuto della variabile “NomeVar2”

Es: ADD A B Somma A a B e mette il risultato in A

Es: ADD A -100 Somma A con -100 (esegue quindi una sottrazione) e mette il risultato in A

PAU @NomeVar|Tempo

Fa una pausa di un certo numero di millisecondi indicati dalla variabile “NomeVariabile” o dal valore intero di “Tempo”.

Es: PAU 1000 Fa una pausa di 1 secondo (1000mS) Es: PAU @A Fa una pausa di ‘A’ millisecondi

PAI #Byte

Attende fino a che la condizione indicata da Test è vera.

Es: PAI #0001000 Attende che l’ingresso 4 vada ad 1 logico mentre tutti gli altri sono a 0.

Es: PAI #xxx1xxxx Attende che l’ingresso 4 vada ad 1 logico mentre il valore degli altri è indifferente.

(2)

OUT #Byte

Pilota le uscite usando i valori indicati da “Byte”.

Es: OUT #0011000 Accende le uscite 3 e 4 ed azzera tutte le altre Es: OUT #xx11xxx Accende le uscite 3 e 4 e lascia inalterate le altre

Es: OUT #xx!!xxx Inverte lo stato delle uscite 3 e 4 e lascia inalterate le altre

OUT NomeIO 1|0|!

Pilota l’uscita con nome “NomeIO” accendendola (1), spegnendola (0) o invertendola (!) Es: OUT Lampadario 1 Accende l’uscita chiamata “Lampadario”

Es: OUT Lampadario 0 Spegne l’uscita chiamata “Lampadario”

IF #Byte

Esegue tutte le istruzioni successive (precedute da uno spazio) se il test su “Byte” è valido. Il blocco di istruzioni da eseguire finisce quando si incontra una riga senza spazio iniziale. Se il test non è valido il programma passa alla prima istruzione che non inizia con spazio.

Es: IF #00000001 OUT Lampadario 1 PAU 2000

OUT Lampadario 0 SET A 100

Esegue le istruzioni (fino al SET A 100 non compreso) successive all’IF se l’ingresso 0 è a 1 e tutti gli altri a 0 Es: IF #xxxxxxx1

OUT Lampadario 1 PAU 2000

OUT Lampadario 0 SET A 100

Esegue le istruzioni (fino al SET A 100 non compreso) successive all’IF se l’ingresso 0 è a 1 ignorando lo stato di tutti gli altri.

IF @NomeVar1 =|>|<|! @NomeVar2|Valore

Esegue tutte le istruzioni successive (precedute da uno spazio) se il test su “NomeVar1” è valido. Ha le stesse regole dell’IF visto precedentemente.

Es: IF @A = 100

OUT Lampadario 1 PAU 2000

OUT Lampadario 0 SET A 100

Esegue le istruzioni (fino al SET A 100 non compreso) successive all’IF se a VALE 100 Es: IF @A = @B

OUT Lampadario 1 PAU 2000

OUT Lampadario 0 SET A 100

Esegue le istruzioni (fino al SET A 100 non compreso) successive all’IF se A è uguale a B

= Uguale

> Maggiore

< Minore

! Diverso

(3)

IF NomeIO|Topic 0|1

Esegue tutte le istruzioni successive (precedute da uno spazio) se il test su “NomeIO” o il numero di Topic è valido. Ha le stesse regole dell’IF visto precedentemente. Il Topic va da 0 a F in notazione esadecimale a partire dalla prima

uscita/ingresso Es: IF Pulsante 1

ONTM Ora Giorno

Esegue tutte le istruzioni successive (precedute da uno spazio) se il giorno “Giorno” e l’ora “Ora” coincidono con l’orario attuale. I giorni possono essere indicati con L M m G V S D singolarmente o in gruppo.

Es: ONTM 15.30 LmS OUT Lampadario 1 PAU 2000

OUT Lampadario 0 SET A 100

Esegue le istruzioni (fino al SET A 100 non compreso) successive all’ONTM se sono le 15.30 di Lunedì, di mercoledì o di Sabato.

MEM NomeVar

Mette nella variabile “NomeVar” il valore della memoria libera del modulo Es: MEM C

Ora C conterrà il valore in bytes della memoria libera.

PING NomeVar Host Pagina

Si connette all’indirizzo “Host” + “Pagina” (solo http) e ritorna nella variabile “NomeVar” il risultato dell’operazione. Per passare il valore delle variabili nell’indirizzo web precedere il nome variabile con ^. Il risultato dell’operazione riflette la risposta standard http (200=OK, 404=NOT FOUND, 302=MOVED, etc…). vale invece 0 se la connessione non è andata a buon fine.

Es: PING B http://www.mioindirizzo /index.html Si connette all’indirizzo specificato e ritorna in B il risultato

Es: PING B http://www.mioindirizzo /index.html?dat1=^A&dat2=^C

Si connette all’indirizzo specificato passando in dat1 e dat2 il contenuto delle variabili “A” e “C”

PWM NomeIO Valore|NomeVar

Setta il valore del PWM relativo a “NomeIO” utilizzando “Valore” oppure il contenuto della variabile “NomeVar”. Tali valori vanno da 0 (minimo) a 1024 (massimo)

Es: PWM Uscita0 512

Porta il PWM dell’uscita chiamata “Uscita0” a metà della sua escursione Es: PWM Uscita0 A

Porta il PWM dell’uscita chiamata “Uscita0” al valore contenuto nella variabile “A”

RND NomeVar Min Max

Mette in “NomeVar” un numero casuale (intero) compreso tra Min e Max Es: RND A 10 200

Mette nella variabile “A” un valore casuale compreso tra 10 e 200 / Seguito da qualsiasi cosa

La linea in oggetto diventa un semplice commento e verrà ignorata.

Es: OUT Lampadario 1 / Questo è un commento

(4)

Comandi di gestione modulo (questi comandi rallentano l’esecuzione, vanno utilizzati o nella sezione di inizializzazione Vars oppure quando strettamente necessario e non ciclate)

CMD IO NumeroUscita Nome Timer Ciclico (cambia il nome con Nome di NumeroUscita da 0 a F e i secondi del timer e se è ciclico)

CMD MQTT Server Porta ClientID Utente Password Attivo (setta i parametri del broker MQTT) CMD TIME Data Ora Fuso OraLegale (setta i parametri orari gg/mm/aaaa hh:mm n 1|0) CMD IP n n n n (setta l'ip, es: CMD IP 192 168 1 1)

CMD NMASK n n n n (setta la netmask) CMD GWAY n n n n (setta il gateway) CMD DNS n n n n (setta il dns)

CMD TSER n n n n (setta il time server) CMD DHCP ON|OFF (setta il dhcp)

CMD NAME Nome (setta il nome del modulo)

CMD PORT Valore (setta il valore della porta del server a Valore) CMD STAP STA|AP (setta il modulo come client o come access point) CMD SSID Nome (setta il nome della rete)

CMD PWDW Password (setta la password di rete)

CMD WSAVE (salva i parametri della connessione e inizia una nuova sessione wifi) Esempio di inizializzazione di un modulo

La sezione Var viene eseguita una sola volta all’accensione del modulo ed ogni volta che si modifica con “CAMBIA” il contenuto della programmazione del PLC. La sezione Program, invece viene continuamente eseguita, in ciclo. E’

necessario che tutte e due le sezioni finiscano con una linea vuota, pena rallentamenti nell’esecuzione.

Il risultato delle impostazioni in Var viste precedentemente:

Tips di programmazione

Se si vogliono attuare delle tempistiche di ritardo ma non si desidera rallentare il programma è consigliabile utilizzare l’incremento delle variabili seguite da pause brevi e controllare successivamente il raggiungimento del valore necessario a compiere un intero ciclo di ritardo. Se per esempio volessimo far lampeggiare una uscita ogni 2 secondi ma al

(5)

contempo volessimo tener controllato lo stato di un pulsante un approccio come il seguente è decisamente la cosa migliore.

Var SET A 0

Program

IF Pulsante 1 Controlla se pulsante è premuto.

/ qui le istruzioni / se il test è vero

IF @A = 200 Se A ha raggiunto i 2 secondi (10mS * 200) inverte l’uscita ed azzera A OUT Uscita !

SET A 0 PAU 10 ADD A 1

In questo modo il ritardo su tutto il ciclo è di 10 mS che permette di sentire una pressione anche minima del pulsante, in caso contrario il pulsante sarebbe stato testato ogni 2 secondi rischiando di perderne gli eventi.

Nel modulo ad 8 ingressi ed 8 uscite i test #byte devono essere indicati con 16 bit.

Es: IF #00001000xxxxxxxx

Corrispondenza delle uscite/ingressi (topic) con il #byte a 16 bit Topic: F E D C B A 9 8 7 6 5 4 3 2 1 0

Byte #0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Corrispondenza delle uscite/ingressi (topic) con il #byte a 8 bit Topic: 7 6 5 4 3 2 1 0

Byte #0 0 0 0 0 0 0 0

Il PLC va programmato usando le MAIUSCOLE per i comandi e per i nomi di variabile.

Riferimenti

Documenti correlati

ESERCIZI su FUNZIONI DERIVABILI, parte 3 Provare di ciascuna delle seguenti a↵ermazioni se `e vera o falsa.. Risolvere gli esercizi 11-25 del libro

l’allungamento della molla quando la sfera `e in equilibrio statico e il modulo della forza di attrito statico (tra sfera e piano inclinato) presente in tali condizioni;A. il

Il contributo allo sviluppo delle risorse umane da parte di Novartis avviene anche attraverso l’erogazione di attività formative e di crescita professionale: nel 2017, sono

Un secondo progetto sulla fontana nel cortile del Dini è simile al primo, con sette vasche di forma semisferica sovrapposte; la prima vasca contiene 5 litri d’acqua e ogni

Corso di STATISTICA MATEMATICA Prova scritta del

Nel sistema illustrato in figura 1 il blocco di massa M =3kg ` e collegato ad un blocco di massa m, poggiato su un piano inclinato rispetto all’orizzontale di un angolo α=30 o , che

Anche qui, essendo f continua e derivabile in ]0, +∞[, dovrà esistere almeno un punto di

[r]