Per un ACEI in analogico ...
Dato il mestiere che faccio (progettista elettronico), ed aggiungendo i quasi 30 anni di esercizio del piccolo ACEI di Klausen21, mi sento di dire la mia.
Entrando un po' nel dettaglio.
L' idea di usare una scheda commerciale per supportare il processore ed altri componenti SMD (quindi piccolissimi) , mi pare azzeccata.
Quella può poi essere collegata a tutti i traslatori di livello, espansioni di I/O, relè, circuiti di binario, e chi più ne ha più ne metta.
Il vantaggio è duplice :
- la parte "grossa", ovvero interfacce, relè, etc, può essere realizzata facilmente ed affidabilmente su una o più basette millefori (non ho detto in poco tempo ...)
- la parte "fine", ovvero la logica, nasce con un hardware affidabile e con disponibilità di un ricambio sicuro in caso di guasto (un' altra scheda simile)
La logica fatta in software si presta facilmente a correzioni ed integrazioni.
Di processori ne esistono tanti, con le relative schedine di prova (valutazione), che su siti come RS o FARNELL e similari si trovano anche a poche decine di Euro.
Per tutti è disponibile il compilatore per il linguaggio "C", ma per principianti questo potrebbe essere un poco ostico. Inoltre spesso è a pagamento.
Quindi le soluzioni ipotizzate da Crystal13 sono valide.
E fin quì la parte rose e fiori.
Poi, non per scoraggiare, ma per mettere in guardia, vengono le spine (anche nel senso di connettori).
Un ACEI necessita di tappezzare il piazzale o il percorso di circuiti di binario.
Quindi occorre un gran numero di sezionamenti, coi relativi cavi che vanno dai binari alla "sala relè" o alla logica.
Sono dei blocchetti che capiscono quando una sezione è libera o occupata.
Non sono di utilità i moduli tipo S88 e tutti quelli a fotoaccoppiatore, perchè quando l' alimentatore và a 0, vedono la sezione libera. Con l' ACEI questo non deve succedere.
Occorre cercare in commercio un tipo adatto.
Quindi fare un ACEI, è un' operazione complessa, ben oltre l' assemblare qualche relè (cosa che comunque occorre saper fare).
Occorre progettarlo fino nei dettagli.
Per farsi un' idea, è sufficiente guardare il lavoro di Tz.
Usare la logica del vero non è conveniente, dato che solo per decidere se formare o no un itinerario, impiega un numero di relè superiore a quelli presenti nel 99% dei plastici.
Si deve, necessariamente, ripiegare su una logica equivalente, che imiti quello che l' ACEI fà.
Un funzionamento a porte logiche (NAND, NOR, NOT, XOR, ...) è fattibile per chi ha conoscenze tecniche, magari scolastiche (ITIS).
Ancora il lavoro di Tz ci illustra la complessità (e le ore di lavoro) del sistema.
Si deve anche tenere conto della diagnosticabilità dei guasti. La possibilità di sostituire moduli o pezzi è essenziale. Anche i veri ce l' hanno.
Una volta individuata la zona del guasto, consente di ripartire subito, con la semplice sostituzione di un modulo.
Per la soluzione software, ci sono due possibili basi :
- schedina a microprocessore (autocostruita o commerciale)
- PLC (sistema di automazione industriale)
Fra i due ci sono importanti differenze, di costo e di tecnica di programmazione.
Nel caso di microprocessore, anche se si usa un linguaggio di programmazione ad alto livello, come Basic o similare, non ci si libera dalla necessità di conoscere alcuni concetti di programmazione.
Il primo di questi concetti, è quello di dover strutturare almeno un minimo il programma.
Prima di scrivere il blocco logico occorre aver predisposto :
- un timer che setti periodicamente un flag (p.es. 10 volte al secondo) per dare una cadenza di esecuzione alla logica
- un sistema per gestire temporizzazioni e lampeggiamenti
- una funzione di lettura degli ingressi al relativo buffer (tasti, circuiti di binario, sensori posizione scambi, ...)
- una funzione di scrittura delle uscite secondo il relativo buffer (alimentazione tratte, comando scambi, comando segnali, ...)
- eventualmente una funzione di pilotaggio di una porta seriale per visualizzazione e/o telecomando
Un altro concetto molto utile è di scrivere il programma in modo non bloccante. Concetto illustrabile con l' esempio del lampeggiamento (sintassi Basic) :
Primo sistema di scrittura (quello che si tende a fare quando si è agli inizi) :
Codice:
Lampeggiamento:
While (Condizione = False)
Luce = 1 ' accende
Attesa 0.5
Luce = 0 ' spegne
Attesa 0.5
Wend
E' un loop che, intanto che attende il verificarsi di una condizione, accende e spegne un' uscita a cadenza 1 secondo.
Per farlo chiama due volte una routine, Attesa, la quale ferma l' esecuzione del programma per il tempo richiesto, tenendo occupato il controllore.
Ma intanto che il controllore attende, se si dovesse occupare un CdB, si rischia di perdere l' evento.
E non si può far lampeggiare un altro in contemporanea, o leggere i tasti.
Una possibile soluzione può essere questo secondo sistema di scrittura :
Codice:
Lampeggiamento:
If Condizione = False Then
LuceFlag = 1
Else
LuceFlag = 0
End If
...
Timer:
Static t As Integer
' un Interrupt deve chiamare questa funzione 10 volte al secondo
...
' zona generica in cui si crea una cadenza di lampeggio
If t > 0 Then
t = t - 1
Else
t = 50 ' per 50ms ON e 50ms OFF
Lamp = Lamp Xor 1
End If
...
' zona dedicata in cui si fà lampeggiare quell'uscita
Luce = LuceFlag And Lamp
...
Return
' -- -- -- fine funzione Timer
In questo caso la funzione Lampeggiamento può stare nella normale esecuzione del programma. Semplicemente "accende" o "spegne" il consenso a lampeggiare.
La funzione Timer è chiamata periodicamente, in questo caso 100 volte al secondo.
In essa è inserito il codice che si vede. I 3 puntini simboleggiano altro codice che si volesse far eseguire a quella funzione.
Indubbiamente è più complicato, ma non monopolizza il processore.
Era un esempio per dire che se si inizia a scrivere la logica senza una preventiva impostazione, ci si può facilmente scontrare con situazioni di difficile soluzione.
Altrimenti ci sono i PLC. Hanno già risolto i problemi dell' esempio precedente, si possono programmare scrivendo codice oppure "disegnando" delle logiche a relè. Hanno tanti relè disponibili, sono espandbili. Non costano poco ...
Poi ... buon lavoro !
Stefano Minghetti