MINI PLC

Progetto pubblicato sulla rivista Fare Elettronica  

IL PROGETTO

Al giorno d’oggi, l’hobbista elettronico trova poche soddisfazioni nel costruire qualcosa con le proprie mani, si trova di tutto già pronto in tutti i negozi di elettrodomestici, per non parlare dei centri commerciali. Una volta valeva la pena costruire un amplificatore HI-FI anche se l’estetica del contenitore lasciava a desiderare, attualmente costa meno l’acquisto di un impianto commerciale che il montaggio di un Kit. Lo stesso discorso vale per i ricevitori e i trasmettitori di alta frequenza, le riviste erano piene di progetti più o meno complessi e più o meno funzionanti, ora costa meno comperare uno scanner o un RTX che autocostruirselo. Per non parlare del reperimento dei componenti, difficilmente si trovava tutto nello stesso negozio. A volte si aspettava la fiera del radioamatore per iniziare una furiosa ricerca tra le bancarelle che non sempre andava a buon fine. Analogamente anche l’altra branca che affascina l’hobbista elettronico, l’automazione, non è più irraggiungibile per il portafoglio. Infatti si trovano in commercio PLC dal costo di poco superiore ai 100 €, certo con funzioni piuttosto limitate ma perfettamente funzionali ed affidabili.

Quello che vi propongo non è un progetto in concorrenza con i modelli commerciali. Non ho nessuna intenzione mettermi contro le multinazionali o la miriade di aziende, il più delle volte artigianali, che faticano a restare sul mercato. E’ semplicemente un PLC facilmente costruibile e, nel caso non vi soddisfi, i singoli componenti possono essere utilizzati in altri progetti. Tra l’altro la programmazione è piuttosto rigida, ma è completa della tradizionale algebra di Bool compresi i NOT, ha otto Marker e sei Timer. Implementa le operazioni al BIT come l’uguaglianza, cioè l’uscita rispecchia la condizione logica in ingresso, il Set/Reset e il Complemento. Dispone di otto ingressi e sei uscite a transistor. Ho optato per tali uscite sia per contenere i costi che per limitare le dimensioni del circuito stampati. E’ quindi, un dispositivo valido per l’hobbista che può usarlo per piccole applicazioni e, lo spero vivamente, lo avvicini al mondo dell’automazione, della programmazione e del microprocessore.

 

 

IL PLC

 

Il PLC (circuito a logica programmabile) viene usato già da diversi anni nell’automazione degli impianti. In origine veniva usato nei processi produttivi più complicati sia perché servivano dispositivi in grado di compiere calcoli, sia perché in commercio mancavano singoli componenti come contatori, contatori veloci per encoder, temporizzatori multipli o particolari, ecc.. La programmazione dei primi dispositivi era in assembler, in pratica si prendeva una scheda CPU con un certo numero di ingressi e uscite e la si programmava per compiere un determinato compito. Voi capite che la sua programmazione e, se necessario, riprogrammazione non era delle più semplici e richiedeva del personale molto specializzato. Nel tempo si sono evoluti diversi linguaggi per la programmazione dei PLC, in modo da avvicinare un numero di tecnici maggiore e diffondere maggiormente il loro utilizzo. Sono nati linguaggi molto potenti, come AWL, anche se non proprio semplici, ma necessari allo sfruttamento completo delle potenzialità dei nuovi microprocessori progettati appositamente per la costruzione dei PLC. Tale linguaggio assomiglia molto all’assembler, ma di una potenzialità incredibile. Basti pensare che una riga di programma può parametrizzare un qualunque tipo di timer, o controllare, con una certa logica, molti ingressi e disporre le uscite con una certa conseguenza. Ma resta un linguaggio ad alto livello, non facilmente comprensibile dal tecnico medio. Per permettere una maggiore diffusione dei PLC, sono stati trovati linguaggi “visibili”, con i classici simboli grafici del circuito elettrico. Chiunque sia in grado di leggere e disegnare uno schema elettrico tradizionale con contatti e relè è in grado di programmare un PLC. Nascono, così, il linguaggio Ladder o KOP (a “contatti”) come lo chiama qualcuno. E’ un’enorme passo avanti nella progettazione delle automazioni, perché per qualunque tecnico è possibile programmare un PLC, anche se limitato alle funzioni essenziali. Negli ultimi anni, il linguaggio Ladder si è evoluto al punto da permettere lo sfruttamento completo delle potenzialità dei microprocessori.

Il linguaggio del nostro PLC non è certo evoluto ne immediato come quello a “contatti”, ma è più semplice dell’AWL. Considerando il display a disposizione e l’intera programmazione ottenuta unicamente con quattro pulsanti, è il massimo della semplicità che si può ottenere. Avendo a disposizione un display grafico o programmare attraverso il fido PC con un programma appositamente progettato, si sarebbe potuto semplificare il linguaggio di programmazione, renderlo più versatile ed efficace. Ma un display grafico costa come un PLC commerciale e non essendo in grado di fare programmi con il PC (ne ho fatti diversi con lo Spectrum e con il Commodore, in basic, altri tempi), ci possiamo accontentare.

In ogni caso, una volta programmato, il PLC può funzionare tranquillamente senza display.

SCHEMA ELETTRICO

 

Nel disegnare lo schema elettrico ho cercato di rendere tutto il più semplice possibile.

Quasi tutto il lavoro è riservato al microcontroller, un PIC16F876. Il PIC in questione dispone di una memoria da 8 K BYTE di tipo Flash, riprogrammabile per circa mille volte. E’ possibile quindi, riutilizzare il micro per altre applicazioni, aggiornando unicamente il programma.

Altra importante caratteristica è la memoria dati da 256 BYTE di tipo EEPROM, da noi usata per salvare le righe di programma che andremmo ad immettere una volta completato il montaggio. Sono disponibili 3 porte programmabili come ingressi o uscite per un totale di 21 ingressi/uscite.     

I vari segnali in ingresso, applicati alla morsettiera X1, sono collegati alla porta B del microprocessore da un resistenza da 4K7. Ogni ingresso è forzato a massa da una resistenza da 10 K  e protetto da eventuali tensioni superiori alla massima consentita di 5 V da uno zenner da 4V7. In questo modo possiamo applicare tensioni comprese tra 5 e 24 V.

Le entrate sono otto quanti sono i BIT della porta B del PIC. L’ingresso 1 coincide con la porta B,0, l’ingresso 2 con la porta B,1 e così via per arrivare all’ingresso 8 coincidente con la porta B,7. Volendo proteggere ulteriormente il micro, sarebbe stato opportuno interfacciare ognuno degli 8 ingressi con altrettanti fotoaccoppiatori in modo da isolare il PIC da eventuali extratensioni e disturbi sempre presenti negli ambienti industriali, ma questo esula dal proposito di proporre un circuito economico anche se funzionante.

Analogamente per le 6 uscite si è preferito usare degli economici transistor da 1 A, piuttosto di utilizzare dei relè più costosi e ingombranti. Per le uscite la scelta è caduta sulla porta A del PIC perché è composta da 6 BIT ed era l’unica porta libera rimasta. In realtà la porta A per i suoi collegamenti interni all’ADC, sarebbe stato più logico usarla come ingresso, ma di norma il numero degli ingressi è preferibile siano superiori alle uscite. Troverete conferma a questa affermazione durante la programmazione del dispositivo.

I transistor di uscita sono pilotati da U2 contenente 7 darlington, permettendo al carico di essere alimentato da una tensione superiore ai 5V del PIC. Attraverso la morsettiera X2 possiamo applicare carichi non superiori a 1 A e 24 V massimi.

La restante porta C del micro, controlla ed invia al display intelligente i caratteri da visualizzare di volta in volta. A questi piedini sono collegati anche i 4 pulsanti necessari alla programmazione. Il pin collegato alla porta C,4 legge i pulsanti e il pin porta C,7 controlla l’illuminazione del display, pilotando il transistor Q7.

Il display è un modello da una riga per 16 caratteri, retro illuminato con il connettore basso. Se non lo trovate retro illuminato, funziona lo stesso e se trovate difficoltà nel reperirlo ad una riga, montatene uno da 2 righe, semplicemente la riga inferiore non verrà utilizzata però avrete un display con più possibilità di riutilizzo. Nel prototipo ho usato un 2x16 retro illuminato di un bel verde ambientalista.

Il PIC, come tutti i microprocessori, ha bisogno di un clock e generalmente si usa un quarzo per le caratteristiche di stabilità in frequenza che tale componente garantisce. Nel caso non sia necessario gestire un orologio o una seriale, è possibile sostituire il costoso quarzo con un più economico risuonatore ceramico. Il modello scelto è completo dei due condensatori necessari all’oscillatore interno al PIC. Personalmente ho usato il risuonatore anche nei circuiti utilizzante la seriale.    

Terminiamo la descrizione dello schema elettrico con la sezione di alimentazione. In X3 alimentiamo il tutto con una tensione di 12V continui o 9/10V alternati e circa 100mA per il solo circuito, di potenza adeguata se alimentiamo anche le uscite. U3 stabilizza la tensione per U1 e il display. Il ponticello J1 posto tra X2 e X3 se chiuso alimenta le uscite con la tensione di alimentazione. La stessa è collegata anche sul pin 1 di X1, per attivare gli ingressi.

 

 

CIRCUITO STAMPATO

Tutto il circuito trova posto in un stampato monofaccia da 108x64 mm. Consiglio il metodo fotografico per la costruzione del CS. Una volta in possesso del stampato forato, procedere con il montaggio dei componenti più piccoli come resistenze, diodi, condensatori, ponte raddrizzatore e risuonatore. Quindi con gli zoccoli di U1 e di U2 e, a questo punto, le due reti resistite.

La resistenza R19 va montata dalla parte rame. Non dimenticate il ponticello tra il C2 e il regolatore U3. Continuate con i transistor e le morsettiere.

Per quanto riguarda la morsettiera X1, consiglio un modello a basso profilo per non creare impedimenti di altezza al display.

Sconsiglio il montaggio diretto del display, sia perché renderebbe difficoltoso il recupero, sia perché una volta programmato il PLC è possibile toglierlo senza pregiudicarne il funzionamento. Consiglio quindi l’utilizzo degli strip maschi e femmine, porterebbe il display alla giusta altezza. Per quanto riguarda i pulsanti, se intendete montare il progetto per provarlo o per installarlo fisso all’interno di un quadro, montate pure i classici modelli miniatura, magari recuperati da qualche scheda surplus o videoregistratore guasto. Ma se intendete montare il tutto in un contenitore, o installate dei pulsanti da pannello o montate delle prolunghe sul CS fino ad arrivare alla giusta altezza, e infilate a pressione dei pulsanti miniatura, provvisti di piolini in rilievo, in modo da forare il panello frontale del contenitore e fare uscire i piolini dei pulsanti per poterli azionare.

Dopo avere programmato il microcontroller con il file oggetto “MINI_PLC.HEX”, infilatelo nel relativo zoccolo, montate U2 e tutto è pronto per il collaudo.

Dopo avere ricontrollato se ogni componente è al suo giusto posto, alimentate la scheda con 8/10V in alternata o 10/12V in continua. Se va tutto bene, sul display dovrebbe apparire un  qualunque messaggio di errore.

PROGRAMMAZIONE

Prima di procedere all’acquisizione del linguaggio di programmazione, è opportuno conoscere i vari simboli addottati dal PLC e il significato dei quattro pulsanti montati sulla scheda.

I pulsanti sono quattro e sono disposti come visibile nella figura 1.

                 

MENU’

Le loro funzioni cambiano

     In menù

 
CANC.TOT.SICURO?


            P1 :  pulsante UP, cancella l’intero programma

          (confermare con ENTER)

CANC. RIGA N.05

            P2 :  pulsante DOWN, cancella una giga di programma

                      ( con i pulsanti UP e DOWN selezioniamo la riga

                        da cancellare. Confermare con ENTER. La riga

cancellata viene sostituita dall’ultima riga del programma)

P3 :  pulsante ENTER, conferma il dato

          P4 :  pulsante END, il PLC va in esecuzione

01 I . 0 & I . 0= Q0

            Durante la programmazione

            P1 :  pulsante UP, incrementa il dato selezionato

            P2 :  pulsante DOWN, decrementa il dato selezionato

            P3 :  pulsante ENTER, conferma il dato

            P4 :  pulsante END, ritorna in menù

 

oooooooo 01 oooooo


            Durante l’esecuzione

            P1 :  pulsante UP, accende il LED del display per10 secondi

            P2 :  pulsante DOWN, accende il LED del display per10 secondi

            P3 :  pulsante ENTER, accende il LED del display per10 secondi

            P4 :  pulsante END, richiama il menù

Come abbiamo detto, la programmazione è piuttosto rigida. Il PLC accetta sempre righe di comando di due operandi e un operatore, con un'unica combinazione logica associata ad una uscita. La sola variante riguarda la parametrizzazione del Timer che avviene su comando di un unico operando.

MENU’

Prima di immettere una qualunque riga di programma, è necessario pulire la memoria DATI del PIC nel seguente modo:

  1. premere il pulsante END e alimentare la scheda à
 
CANC.TOT.SICURO?

  1. premere il pulsante UP. à

 

 

MENU’


  1. premere il pulsante ENTER à

A questo punto la memori dei dati è cancellata (tutti i BYTE sono posto a 0), il puntatore TOP caricato con il valore 1 e siamo pronti a digitare la prima riga di programma che faremo subito eseguire dal PLC.

Dal menù per accedere alla programmazione dobbiamo premere il pulsante ENTER.

La prima videata sarà questa:

 

01 I . 0 & I . 0= Q0


è la prima riga di programma o istruzione. Da sinistra a destra il significato è il seguente:

01 : è l’indirizzo relativo all’istruzione (numero della riga di programma)

I : codice del primo operando

. : se punto la condizione logica è quella visualizzata, se ! allora è negata (NOT)

0 : parametro del primo operando

& : operazione tra il primo e il secondo operando

I . 0 : secondo operando. Vale quanto detto per il primo

= : è il tipo di risultato richiesto

Q : codice dell’operando a cui applicare il risultato logico

0 : parametro dell’operando di uscita

il PLC ci mostra la riga di programma in memoria indirizzata da TOP, che essendo stata precedentemente cancellata e il TOP caricato con 1, indicherà la prima riga con i valori azzerrati.

Premiamo nuovamente ENTER, il cursore del display si posizionerà sotto il primo operando

 

01 I . 0 & I . 0= Q0


Premendo UP il codice dell’operando cambia il Q, quindi in M, infine in T. Come prima istruzione ci va bene provare con gli ingressi e vedere il risultato sulle uscite. Premete ENTER e il cursore si posiziona sotto il primo punto. Ci va bene anche questo e anche il parametro del primo operando lo lasciamo inalterato. Premiamo ENTER fino a posizionare il cursore sotto il parametro del secondo operando. Premendo UP incrementiamo il valore da 0 a 7, premendo DOWN decrementiamo fino a 0. Noi ci fermiamo a 1. Premiamo ENTER tante volte da cambiare indirizzo.

02 I . 0 & I . 0= Q0

Questa è la seconda riga che il PLC ha prelevato dalla sua memoria dati ma non verrà elaborata se non confermata. Per non complicare troppo la programmazione, mandiamo in esecuzione solo la prima riga, che andremmo a visualizzarla solo per accertarci di non avere commesso errori. Semplicemente premendo DOWN. Dobbiamo ottenere la seguente videata:

01 I . 0 & I . 1 = Q0

Il significato è molto semplice, l’uscita Q0 sarà attiva se e solo se soddisfatta la condizione logica dei due ingressi I0 e I1, cioè tutti e due devono essere posti a 1 (operazione AND).

Per mandare il programma in esecuzione è sufficiente premere END due volte.

Solo in questo momento il PLC elabora il programma e continua a farlo dalla prima riga all’ultima (quella indirizzata da TOP), testando gli ingressi richiesti dal programma ed aggiornando di conseguenza le uscite.

Non è necessario applicare carichi in uscita al PLC, almeno in questa fase, perché il display visualizza lo stato reale degli ingressi e delle uscite. Infatti sul LCD vedremo la schermata:

 

oooooooo 01 oooooo


gli o indicano lo stato basso o 0 logico, mentre * indica lo stato alto o 1 logico. I primi 8 caratteri indicano lo stato degli ingressi (7 ßà 0), quindi 2 caratteri per l’indirizzo della riga di programma elaborata (che sarà molto veloce nel cambiare da risultare impossibile leggere un valore,il suo unico scopo è di monitorare il microprocessore), infine 6 caratteri per le uscite (5 ßà 0).

Sul primo morsetto di X1, colleghiamo 2 spezzoni di filo di rame. L’altro capo di uno di questi, lo infiliamo nell’ingresso I0 (morsetto 9 di X1). Immediatamente il corrispondente carattere sul display segnala il cambiamento di stato:

 

ooooooo* 01 oooooo


ma non succede nulla sulle uscite. Proviamo a collegare il capo libero del secondo filo sul morsetto 8 di X1 (corrispondente all’ingresso I1).

 

oooooo** 01 ooooo*


 Il display visualizza immediatamente l’uno logico anche sull’ingresso I1, ma qualcosa è cambiato anche sulle uscite. Finalmente il Q0 viene attivato. Per riprova proviamo a togliere un filo da I0 e/o I1, vedremo che non essendoci più la condizione logica richiesta tra gli ingressi, l’uscita Q0 verrà posta a 0 logico. Se non vi fidate delle indicazioni del display, provate a collegare dei LED sulle uscite del PLC (X2) come indicato nello schema.

Provata l’operazione AND tra due ingressi e un’uscita, modifichiamo la stessa riga di programma per provare l’operazione OR.

MENU’

Per uscire dallo stato di elaborazione programma, è sufficiente premere END. Il PLC carica la routine del menù

Premiamo ENTER, quindi DOWN per visualizzare la prima ed unica riga del programma.

 

01 I . 0 & I . 1 = Q0


Premiamo ENTER quattro volte per posizionare il cursore sotto &. Alla pressione del pulsante UP, il simbolo & cambia in o. A questo carattere ho associato la funzione OR. Probabilmente avrei potuto scegliere qualcosa di più adatto, ma non mi è venuto in mente niente di meglio. Se qualcuno ha un’idea migliore, me lo faccia sapere. La stessa riga diventa:

01 I . 0 o I . 1= Q0

ATTENZIONE: perché sia accettato il cambiamento, dobbiamo premere ENTER finche non compare la riga successiva. Se premiamo END per elaborare il programma, il PLC non terrà conto della variazione e continuerà a leggere la riga originale. In questo caso continuerà ad elaborare un AND e non un OR.

Continuando la conferma premendo ENTER fino a visualizzare la riga successiva, abbiamo memorizzato il cambiamento. Magari premendo DOWN controlliamo se tutto è in ordine. Premendo END il PLC rientra in modalità esecuzione programma.

Con i soliti fili colleghiamo l’ingresso I0 al morsetto 1 di X1, lo togliamo, colleghiamo I1, togliamo il collegamenti, colleghiamo sia I0 che I1 al morsetto 1 e ogni volta che togliamo e mettiamo i fili, vediamo cosa succede sul display.

 

ooooooo* 01 ooooo*


In pratica per attivare l’uscita, è sufficiente che uno degli ingressi sia posto a 1 logico. Abbiamo implementato un’istruzione con l’operazione OR.

Vediamo di capire come funziona il NOT utilizzando la stessa riga.

Ormai avete imparato ad uscire dall’esecuzione programma per accedere al menù e successivamente premere ENTER per visualizzare il programma, quindi DOWN per caricare la riga N.1. premendo ENTER due volte, il cursore si posiziona sotto al punto del primo operando e premendo UP sostituiamo il punto con il punto interrogativo.

 

01 I ! 0 o I . 1= Q0


Confermiamo la riga ed entriamo in esecuzione programma. La prima cosa che notiamo, è l’attivazione dell’uscita Q0 nonostante tutti gli ingressi siano posti a 0.

oooooooo 01 ooooo*

Contrariamente all’esempio di prima, per forzare l’uscita a 0 dobbiamo collegare l’ingresso I0 a 1.

In questo modo dov’è presente il NOT, il PLC legge 1 dove in realtà c’è 0 e 0 dove è presente 1.

Molte volte non è sufficiente controllare ingressi e uscite direttamente, ma durante la programmazione può rendersi necessario l’appoggio di BIT interni per soddisfare l’esecuzione del programma. Molti li chiamano relè interni perché svolgono la funzione di memorizzare lo stato logico applicato al loro ingresso senza modificare in alcun modo le uscite. Ovviamente sono relè virtuali e nel nostro PLC ve ne sono otto, da M0 a M7 (M sta per MARKER). Più avanti ne faremo largo uso negli esempi che vi proporrò, per il momento vediamo un’applicazione molto semplice.

Modificate la riga 01 in questo modo:

 

01 I . 0 & I . 1= M0


La novità sta nell’ultimo operando, non più un uscita fisica ma la gestione della condizione logica degli ingressi modifica lo stato un relè virtuale, ovvero un Marker. In questo esempio aggiungiamo una seconda riga ai programma.

02 M . 0 & I . 2= Q0

Questa volta per attivare il Q0 è necessario soddisfare la condizione logica su tre ingressi. Mi raccomando la conferma della riga 02 prima dell’esecuzione.

Provando con i soliti fili (questa volta ne servono tre) ci accorgiamo che l’attivazione di due ingressi non è sufficiente per portare a 1 l’uscita Q0. Solo collegando al positivo di alimentazione I0, I1 e I2, riusciamo ad porre Q0 al livello logico 1. Non sottovalutate i Marker nella programmazione, sono molto importanti.

Prima di passare al Timer, vediamo di capire come funziona il Set/Reset e il Complementa.

La funzione Set/Reset è paragonata ad un relè comandato da due pulsanti, uno per la marcia con autoritenuta del relè stesso, l’altro per l’arresto. Prendendo come esempio un semplice circuito a logica cablata, premendo il pulsante di marcia, il relè si eccita e resta eccitato per mezzo di un contatto ausiliario che alimenta il relè stesso anche dopo il rilascio del pulsante. Analogamente al PLC, si utilizza la funzione Set quando una condizione logica pone ad 1 un’uscita o un Marker e questo resta attivato anche se viene a mancare la condizione logica in ingresso.

Ritornando al nostro relè iniziale, resta eccitato (o in marcia) fintanto che non viene premuto il pulsante d’arresto o di Reset. Anche il BIT (sia uscita o Marker) resta a livello logico 1 finche non incontra un’altra istruzione con il compito di Resettare il BIT, ovviamente rispettando la condizione richiesta dalla riga del programma in cui si trova il comando Reset.

Un esempio pratico chiarirà ogni dubbio.

Rientriamo in programmazione e modifichiamo le due righe nel modo seguente:

 

01 I . 0 & I . 1 S Q0

 

 

02 I . 0 & I . 2R Q0


Collegando I0 e I1 al morsetto 1 di X1, attiviamo Q0 che resta attivo anche se scolleghiamo i due ingressi dal morsetto 1. Abbiamo implementato la funzione Set. Collegando al morsetto 1 I0 e I2 Resettiamo Q0. Possiamo divertirci lasciando collegato I0 e spostare l’altro filo da I1 a I2 e viceversa.

 

oooooo**01ooooo*

 

 

ooooo*o*01oooooo


SET/RESET

Ultima operazione al BIT è il Complemento. Il suo funzionamento è presto detto: rispettata la condizione logica Setta il BIT corrispondente e resta settato anche se non vi è più la condizione iniziale, al ritorno della condizione logica il BIT viene Resettato e così via. Tale funzione viene sempre associato al classico relè passo passo perché ha lo stesso funzionamento. Senza perdere tanto tempo in sterili spiegazioni provatelo aggiungendo la seguente riga al vostro programma di prova:

 

03 I . 7 & I . 7C Q5


Semplicemente collegando al positivo I7, viene Settato Q5. Ricollegando nuovamente I7, otteniamo il Reset di Q5, così via.

Il nostro PLC ha sei Timer attivabili da operatore sia esso un ingresso, un Marker, un uscita o un altro Timer. Dalla riga di attivazione, è necessario caricarlo con il tempo da conteggiare da 1 a 99 secondi o minuti. Vediamo come aggiungere una riga di programma per testare il funzionamento del Timer.

02M.0T005sec

01 I . 0&I . 1= M0

04 T . 0 & M .0= Q1

03 T ! 0 & M .0= Q0

Quattro righe per provare lo stesso temporizzatore in due modi diversi. Nella prima ipotizziamo la condizione logica necessaria usando un Marker come appoggio, nella seconda abbiamo scelto il Timer N. 0, caricato con 05 secondi, nella terza l’uscita Q0 viene subito attivata. Trascorso il tempo impostato (5 secondi), il Q0 viene disattivato e, grazie alla quarta riga, viene attivata l’uscita Q1. In pratica con la terza riga, utilizziamo il Timer T0 RITARDATO ALLA DISECITTAZIONE, nella quarta RITARDATO ALL’ECCITAZIONE.

Con questo abbiamo detto tutto. Eventuali dubbi svaniranno con la programmazione, magari provandone qualcuno di quelli che vi proporrò più avanti

MESSAGGI DI ERRORE

Ci sono tre messaggi che indicano errore.

Il primo

 

EEpromVuota


indica semplicemente che la memoria dati non contiene nessuna riga di programma. Succede dopo una cancellazione totale della memoria dati. Premere END per tornare al menù.

Il secondo

 

Mem. Piena


ci avvisa del raggiungimento della capacità massima della memoria dati che è di 84 righe. Sarà molto difficile arrivare a tanto, succedesse… Premere END per tornare al menù.

Il terzo messaggio merita un attimo di attenzione.

 

ErroreRigaN.05


Questo indica un eventuale errore di sintassi in fase di inserimento di una nuova riga o modifica di una esistente.

Di seguito sono descritti gli errori comuni.

PROGRAMMA DI ESEMPIO

Lampeggiante

           
 

01 I . 0&T ! 1 SM0

 

02 M.0T0 05 sec

 

03 T. 0 T 05 sec

 
 

04 T. 1&T . 1 RM0

 

05 T. 0&I . 0= Q0

 


                                  

T0 è il tempo pausa, T1 il tempo di lavoro (tempo pausa = Q0 OFF, tempo lavoro = Q0 ON).

(Per il momento vi propongo solo questo, spero di arricchire il capitolo con i vostri lavori)

CONSIGLI DI PROGRAMMAZIONE

1)

01 I . 0 & I . 1S Q0

                                                                                                                 

 

09 I . 6 & M1 =Q0


Dovete fare molta attenzione durante la programmazione quando dovete usare la stessa uscita in condizioni logiche diverse. In questo caso, ad esempio, anche rispettando la condizione logica nella riga 01, quando il programma elabora la riga 09 e trova la condizione logica NON VERA, disattiva l’uscita Q0.

2)

03 I.7 & I.7 C Q5

 

07 I.7 & I.7 C Q2


13 I . 7 & I.7 C Q4

La funzione complemento è gestita in maniera particolare e rende incerta la sua attuazione se la stessa condizione logica attiva più ingressi contemporaneamente. Piuttosto appoggiatevi ad un Marker, trasformando le righe precedenti in questo modo:

03 I . 7 & I . 7C M1

 

06 M .1 & M .1= Q4

 

05 M .1 & M .1= Q2

 

04 M .1 & M .1= Q5

La funzione complemento agisce una volta sola su un Marker e quest’ultimo su tutte le uscite che vogliamo controllare.

 

 

 


SCARICA IL PACCHETTO COMPLETO: miniplc.zip (circa 250 KB)

Il pacchetto è stato ceduto alla rivista FARE ELETTRONICA che lo ha pubblicato nel numero 220/221 (Ottobre 2003)

ATTENZIONE

Il file che scaricate dalla rivista ha la WORD di programmazione errata. In fase di caricamento del programma nel PIC, i fusibili NON devono essere spuntati, in particolare NON deve essere attivato il WDT (Watch Dog Timer) in quanto tale funzione non è gestita dal programma. Se per errore lasciate spuntato il WDT, il PLC dopo 18 ms viene resettato, impedendo di fatto il regolare funzionamento.

 

RITORNA ALLA MAIN PAGE