AttiloPLC
Link Articolo Originale:
http://www.grix.it/viewer.php?page=10185
Salve gente, questo e' il mio terzo articolo qui' su grix, ma diversamente dagli
altri due articoli stavolta ho deciso di pubblicare qualcosa di piu' utile che spero
apprezzerete.
Un plc, ma non il solito, un plc potente versatile e soprattutto
che non ha bisogno del pc ne di linguaggi cone il ladder per essere
programmato, in quanto si serve di menu' e sottomenu per la programmazione
dei vari eventi da gestire, e che non e' soggetto ai limiti del proprio hardwere.
L'oggetto in questione e' nato circa due anni fa' come un comunissimo
tymer che pero' ha preso una strada diversa da quello che ara in principio
per finire in bella vista sulla scrivania per piu' di un'anno aspettando questo
momento.
Lo schema elettrico non e' di sicuro tra i piu' complicati, ed e' composto
dal solito 7805 piu' i vari condensatori che formano lo stadio di alimentazione,
mentre una resistenza ed un diodo mantengono alto lo stato del pin di reset.
Il clock e' affidato a due quarzi, il primo per il clock del'ic da 10Mhz
con PLL 4x che ne moltiplica la frequenza per quettro quindi un clock di 40Mhz,
il secondo da 32768 Hz genera il clock per il tymer1 che ad ogni suo interrupt
fa avanzare i secondi e di conseguenza minuti ore e settimane.
Inoltre a bordo sono montati quattro pulsanti un lcd ed un sensore
per la temperatura ambiente, nulla di particolare in pratica a parte il
programma che gira al suo interno e che ha richiesto molto tempo per la sua
stesura.
Nella Prima immagine una foto del plc divisa in sezioni numerate.
1 Alimentazione
2 ingressi, quttro file di connettori strip a tre poli, in alto gli ingressi al centro le masse
e sotto i positivi in modo da potervi prelevare anche l'alimentazione per un eventuale modulo.
rispettivamente da sinstra verso destra abbiamo l'ingresso analogico 1, l'ingresso analogico2,
l'ingresso digitale 1 e l'ingresso digitale 2.
3 sensore di temperatura (lm335)
4 oscillatori
5 porta seriale
6 uscite con led di indicazione stato la fila superiore sono rispettivamente da sinistra
verso destra out1 out2 out3 out4 ed out5, la fila inferiore sono solo dei riferimenti a massa.
7 pulsanti, dall'alto verso il basso- up - back/exsit - ok/menu - down-
8 trimmer per la regolazione del contrasto
9 il pic 18f4685
10 il display lcd
11 la porta icsp.
Come ho detto prima l'ardware non e' nulla di particolare, infatti sono presenti
solo quattro ingressi e cinque uscite, ma e' presente anche una porta seriale
con cui e' possibile gestire praticamente centinaia di ingressi ed uscite
rendendo questo plc in grado di gestire praticamente qualsiasi
applicazione, vediamo come.
Al primo avvio vedrete un messaggio di benvenuto seguito da un breve
caricamento che dopo aver caricato l'intero contenuto dell'eeprom in ram
lascera' il posto alla schermata d'ellora.
Da qui potete alternare la visualizzazione dell'ora o della temperatura premento indistintamente
up o down.
Premendo ok/menu' si accede al menu' principale dove potrete muovervi coi tasti
up e down per selezionare la voce da modificare, il menu' e' strutturato nel modo seguente
Evento1
Evento2
Evento3
---
---
---
Evento50
Credits
Formatta Mem.
Imposta ora
Potete muovervi in entrambi le direzioni, quindi anche se l'impostazione dell'ora
e' inserita alla fine andando indietro col tasto down sara' la prima che troverete.
E' importante come prima operazione formattare la memoria, altrimenti non vi sara'
permesso di impostare degli eventi, alla prima formattazione non vi sara' messaggio
di conferma, cosa che invece troverete dalla seconda in poi, l'oporazione
scrive il file sistem del plc sulla eeprom in modo tale da mantenere le impostazioni
anche in assenza di alimentazione.
Bene, avete formattato la memoria ed impostato l'ora, siete pronti per impostare gli eventi.
Il discorso sara' un po l'ungo visto che i parametri che potete scegliere sono molti,
cerchero di descrivere i vari sottomenu nel modo piu' accurato possibile facendo
riferimento solo ad Evento1, per gli altri la procedura di configurazione sara' uguale.
Andate quindi su Imp. Event1.
Potrete scegliere tra,
Evento orario
Evento esterno
Evento seriale
Evento temp. (temperatura)
Evento inattivo
Se scegliete evento orario andrete al menu per l'impostazione dell'ora
dove potrete inserire a che ora deve verificarsi l'evento ed il giorno,
(se lasciate il giorno su No l'evento sara ripetuto giornalmente, diversamente
potete impostarlo su lun. mar. mer. e via dicendo)
Una freccetta segnala se state impostando giorni minuti o ore, se sbagliate
qualcosa potete andare indietro col tasto back.
Finito di impostare l'ora andrete al menu' dove potete selezionare l'uscita
PASSO1
uscita1
uscita2
uscita3
uscita4
uscita5
seriale
Se scegliete una qualsiasi delle uscite fisiche andrete el menu' azione
dove potrete selezionare se accendere spegnere o cambiare lo stato
dell'uscita selezionata.
Nota. Le uscite non sono vincolate agli eventi che le utilizzano quindi
e' possibile far interagire piu' eventi tra loro.
Se scegliete l'uscita seriale andrete al menu' dove scegliere i dati da inviare
sono quattro byte quindi potete inserire quattro valori da 0-255 che saranno inviati sulla seriale
nell'ordine in cui li avrete inpostati al verificarsi dell'evento (in questo caso l'ora).
Vediamo ora come funziona l'evento esterno.
Selezionate evento esterno, verrete portati al menu dove selezionare l'ingresso da
utilizzare (come per le uscite gli ingressi non sono vincolati, quindi potrete usarli per
piu' eventi) qui potrete scegliere tra,
Analog In1
Analog In2
Digital In1
Digital In2
Se scegliete un ingresso digitale andrete direttamente a scegliere l'uscita da gestire
come per l'evento orario (vedi passo1).
Se invece scegliete un ingresso analogico andrete al menu' successivo,
menu mode dove potrete scegliere tra < , = , e > .
Se scegliete < .
Se il valore dell'ingresso analogico scelto e' inferiore a quanto impostato
viene generato l'evento.
Se scegliete = .
Se il valore dell'ingresso selezionato e' uguale a quanto impostato viene
generato l'evento.
Se scegliete > .
Se il valore dell'ingresso selezionato e' superiore a quanto inpostato viene
generato l'evento.
Impostato il modo vi sara' chiesto di impostare la soglia di azione dopodiche
andrete come prima a scegliere l'uscita e l'azione (vedi passo1).
Ora parleremo dell'evento seriale.
Se scegliete un evento seriale andrete ad impostare come per l'uscita seriale
quattro dati in formato byte che se ricevuti nell'ordine in cui li avete
inseriti andranno ad azionare l'evento impostato, dopo aver impostato
i dati premendo ok andrete come prima (passo1) a selezionare l'uscita
e l'azione.
Evento temp. (temperatura).
Come per gli ingressi analogici vi troverete a scegliere fra i tre modi
disponibili, cioe < , = , e > , dopodiche andrete ad impostare il valore per la
temperatura, ed in seguito andrete come prima a scegliere l'uscita e l'azione (vedi passo1).
Evento inattivo.
Se scegliete l'evento inattivo l'evento viene disabilitato.
Nota.
Ad ogni operazione viene effettuato un caricamento, non e' un effetto grafico,
durante il caricamento tutte le variabili vengono salvate su eeprom,
questo si e' reso necessario a causa della grande quantita' di dati in gioco,
si tratta di un migliaio di variabili di tipo byte, quindi ho dovuto creare
delle rutin per il salvataggio ed il caricamento dei dati che agiscono in modo
autonomo.
Una mancanza di alimentazione durante il salvataggio dei dati porterebbe
a comportamenti imprevedibili da parte del plc che andrebbero vista la struttura
della rutin che gestisce le uscite ad influenzare l'intero funzionamento del sistema.
Credo finalmente di aver finito gli argomenti su cui parlare,
quindi non mi resta che caricare qualche foto della mia realizzazione
nonche' il file per il download dove troverete tutto il necessario per
la realizzazzione tranne il sorgente, questultimo ho preferito non inserirlo
a causa dei copia incolla selvaggi che ho visto di recente.
Non preoccupatevi,
inviero comunque il sorgente via mail agli utenti che ne faranno richiesta.
Da Qui potete scaricare il file rar contenente l'hex il pcb lo schema ed i datasheet
del pic 18f4685, dell'lcd e del 7805.
UserFiles/attilo72/AttiloPLC.rar
Dmenticavo Il connettore sul retro e' per la retroilluminazione.
Con questo ho finito, come sempre non esitate a contattarmi per aventuali dubbi.
Saluti Roberto.