"Le soluzioni si ottengono dall'esperienza. L'esperienza si ottiene dai problemi..."
La ripetibilità di un errore è un po' la chiave della risoluzione. Se troviamo un evento che è in grado di replicare il problema, abbiamo qualche chance di riuscire a venirne a capo. Ovviamente i bachi software, più semplici, saranno rilevati subito, quelli più complicati dopo che il prodotto è stato visionato e verificato. Tipicamente i bachi peggiori si presenteranno quando invece si saranno fatte le installazioni sul campo (migliaia di pezzi). In questi casi non c'è modo di fare un'analisi del problema perché appunto non è ripetibile in laboratorio. Questo tipo di bachi, sono particolari, perché solo in alcuni casi risiedono nel firmware, il più delle volte il baco nasce da una serie di iterazioni, complesse, fra il firmware e il sistema, includendo in alcuni casi il cliente stesso ( che per natura non è replicabile ).
Era un giorno di autunno inoltrato. Plumbeo, afono, per le strade il saltuario rumore delle macchine mi distraeva dalla serie di misure che stavo facendo.
Dovevo verificare la sezione di alimentazione in una scheda per il controllo radio, di una poltrona con rulli massaggianti. I diodi antiscemo, i condensatori di alta capacità come filtro antiripple della rete ma solo se è di bassa frequenza, oppure, se è a valle del regolatore, come pompa di corrente in caso ci fossero carichi da attivare, i condensatorini di bypass sugli IC per filtrare il rumore della linea e così via. Il regolatore poi scelto con un basso drop out per migliorare l'efficienza energetica anche se non ne avevo bisogno e con una bassissima quiescent current. Anche se non sembra c'è molto da vedere sull'alimentazione . Il controllo radio non era però l'attivazione remota della poltrona, ma un più banale sistemino con la gestione di un tastierino capacitivo, che doveva cambiare le stazioni radio e alzare o abbassare il volume della microcassa in dotazione. Ovviamente era un accessorio burla, utilizzato solo per giustificare, l’esorbitante prezzo della poltrona. Però è così che va il sistema....
Sulla scheda era montato un display a 7 segmenti e un piggyback con il controllore capacitivo che era un AD7142 se non ricordo male... Poi una serie di led blu con delle guide di luce che retroilluminavano delle sezioni di plexiglas non mascherate e creavano un bell'effetto tron.
Il microprocessore era un anonimo 16F876 della Microchip.
MPLAB è il sistema di sviluppo madre della Microchip sviluppato per creare un progetto assembly o c e debuggarlo con i loro microcontrollori. Di recente c’è stato un pesante restiling del programma perché in effetti, la vecchia interfaccia in stile windows 3.11 era diventata indiscutibilmente obsoleta. Hanno così creato una nuova interfaccia IDE, eclipse like, chiamata MPLABX molto più razionalizzata ed efficace.
In quel periodo a casa mia stavo ultimando alcuni lavoretti, dopo la pesante ristrutturazione che avevo fatto. Prevedevo di montare le casse dell'impianto stereo, dietro il divano ma adesso dovevo finire di cablare l’armadio con le altre casse acustiche, per mantenere l’effetto surround spaziale. Che era una minchiata lo capii al primo film, quando mi accorsi che i bicchieri bellavista continuavano a tintinnare ad ogni vibrazione del woofer; la cosa peggiore era che ad ogni tintinnio mia moglie mi guardava senza dir nulla, con quello sguardo compiaciuto di chi aveva capito tutto sin dall’inizio. Quel giorno sarei dovuto uscire qualche ora prima, per passare dal rivenditore di materiale elettrico e comprare due jack audio.
Così mi anticipai un po’ per il resoconto dei lavori da portare al Mangusta. Preparai i soliti punti settimanali con lo stato in progress delle task, le telefonate ricevute, i clienti contattati insomma le solite cose. Raggiungo l’ufficio bello gioviale ma vedo uscire Mangusta che tutto trafelato, anticipandomi, mi ferma e dice..
“Kirkegaard aspettavo proprio te.. senti io adesso devo andare così per il resoconto ci sentiamo dopo domani... a poi, se non sbaglio, Peter ha da dirti qualcosa... stammi bene...“
Quando Mangusta mi diceva “stammi bene” già sentivo una crepa sotto i piedi, poi finire nell’ufficio di Peter il lunedi era solo la premessa di un disastro. Uscii dall’ufficio di Peter dopo due ore, di pacato resoconto con un foglio A3 in mano. Mi chiedevo davvero come fosse possibile una cosa del genere.
La settimana prima avevamo ultimato il centro operativo alla Wasserdome. Questa era una azienda privata, piuttosto importante, gestiva l’intera rete idrica delle ferrovie dello stato. Non tutti sanno che, le ferrovie, hanno un servizio di distribuzione dell’acqua interno privato, che è la perfetta replica del servizio idrico locale. Nel loro caso dovevano controllare la distribuzione su tutto il territorio nazionale e diedero in appalto l'intero controllo della rete a questa ditta. Il sistema di monitoraggio, per le reti idriche è “abbastanza” semplice, perché si devono rilevare delle misure di profondità dei serbatoi ma in particolar modo era necessario, monitorare i consumi. Questa necessità era imposta dal nuovo protocollo europeo, di austerity, imposto a tutte le aziende statali e parastatali. Gli impianti di distribuzione dell’acqua, sono notoriamente dei colabrodo e tutti in generale hanno un indice delle perdite, che deve essere tenuto sotto controllo.
Un problema serio per le aziende che distribuiscono l’acqua ( e solo loro ) sono le partite di Champions o della Nazionale. I gestori hanno notato che la richiesta massima di risorse d’acqua, arriva proprio durante queste partite.
Questo vero e proprio picco di consumi è dovuto dal fatto che lo spettatore tipico un po’ per lo stress e un po’ perché non sa cosa fare appena finisce il primo tempo va in bagno. Tirando l’acqua del water in pochi secondi si buttano via una decina di litri che vengono istantaneamente richiesti dalla rete. Sommando le decine di migliaia di richieste istantanee potete immaginare cosa accade alla rete idrica di un centro cittadino... C’è un'azienda del nord ovest dove un responsabile ha stampato questo picco e lo ha appeso nel corridoio di entrata con sotto le etichette.. Juventus - Liverpool, Italia - Francia, Inter-Barcellona e così via...
Ma torniamo a noi... Le periferiche misuravano i consumi dell’acqua e ogni 4 o 5 giorni spedivano un sms al centro operativo con i dati statistici rilevati nel periodo. Minimi medi massimi lo scarto quadratico e così via, un pacchettino di dati che poi un bel centro operativo avrebbe dovuto elaborare e creare tabulati certificati che avrebbero dovuto poi, essere visionati da una misteriosissima autority dell’acqua...
La periferica, avrebbe inviato un sms in formato PDU al centro, con all'interno le misure rilevate (scusate per l'ennesima sigla) Gli sms sono di due tipi ci sono quelli testo e ci sono quelli PDU (Protocol Data Unit) Gli sms di testo li conosciamo tutti e sono quelli che inviamo con i nostri cellulari. Quelli PDU sono conosciuti dagli addetti ai lavori, ed è un tipo di sms fatto apposta per trasmettere dei dati.
Tutti i sistemi embedded tradizionali si collegano con il gsm attraverso una seriale tradizionale ( RS232 ) e comunicano con un celeberrimo ed essenzialissimo protocollo ascii detto “protocollo AT”..
Faccio degli esempi per chiarire. Se devo effettuare una chiamata il comando AT
è
ATD123456789
Ovviamente questo è il commando considerato standard. C'è da dire però che la mia generazione ha conosciuto invece i commando ATDT e ATDP distinguendo le chiamate effettuate a toni o ad impulsi e qui ci sarebbe un'altra incredibile storia... Divagando ancora un po' sulla chiamata a toni, ho un amico che ogni tanto vedo per strimpellare con la chitarra, che dopo essersi studiato la tabella DTMF delle frequenze telefoniche, si accordava il "la" della chitarra con il tono di libero della linea ( 440Hz La4 ).
Ma ritorniamo al commando ATD. Se il gsm all’altro capo “alza la cornetta” il mio gsm mi risponde con una stringa CONNECT altrimenti con la stringa NO CARRIER.
Se devo leggere un sms
AT+CMGL=ALL
Se devo inviare un messaggio devo inviare il comando
AT+CMGS=<num tel>
il gsm mi risponderà con un prompt
>
si invia il messaggio e lo si fa terminare con un carattere di controllo <ctr z>
Per questo progetto c'è stato un restiling della scheda con un nuovo assieme elettronico. Il cellulare è stato sostituito il Siemens ( glorioso) TC35 col Wavecom e il loro (vanaglorioso) Q2403A e alla fine si è passati al meno pretenzioso Telit montato su un piggyback.
Guardavo il tabulato e c’erano delle cose che non tornavano. Gli apparati funzionavano regolarmente per un certo tempo e poi casualmente spedivano messaggi corrotti. Ora siccome l'autority a breve avrebbe richiesto il resoconto annuale, l'insieme degli sms farlocchi avrebbe falsato pesantamente i consumi complessivi e quindi inevitabilmente avrebbero esposto la Wasserdome a delle pesanti sanzioni che poi sarebbero di conseguanza passate alla nostra azienda come pacifica richiesta danni...
Questo era il messaggio inviato
288C11DB070906052D2A00DB07090572F90000000000000030393036 30353244324130304442303730393035373246393030303030303030 30303030303000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000 000000000000000000000000000000
Tornai a casa passando dal rivenditore per i jack audio litigandoci tutte le volte per i prezzi da orefice di quell'aguzzino. Non risposi al messaggio di Phil ignorandolo completamente, e dopo cena mi buttai nel letto sprofondando in un sonno letargico. Fortunatamente sognai Freddy Krueger, per rimanere in buona compagnia e dimenticarmi della realtà.