Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

2
voti

La temperatura condizionata III parte ... ( e ultima... )

Se nella vita pensi che sbagliando si impara, ecco ….allora il paracadutista non fa per te. ( anonimo )


La premessa sulle macchine combinatorie scritta nel capitolo precedente era necessaria per cercare di spiegare il metodo generale per la risoluzione dei problemi nei sistemi embedded. In tutti questi sistemi elettronici si crea un flusso di dati che nasce dagli ingressi e finisce con le uscite. All’interno di esso la logica sviluppata dal firmwarista interviene macinando triturando, scomponendo e aggregando quelli che sono gli elementi base di questo flusso e che sono i dati. In realtà esistono due ulteriori moduli virtuali nel nostro sistema e che sono la parte condizionatore dei segnali in ingresso e la parte degli attuatori delle uscite. Questi moduli raggruppano tutto quell’insieme di circuteria elettronica che interfaccia il microcontrollore con il mondo esterno. Gli errori si riveleranno solo nelle uscite ( ovviamente ) alcuni saranno bloccanti altri saranno tollerati molto dipenderà dal grado di aspettazione che abbiamo del sistema.

Raggiungemmo a metà mattinata l’azienda che era un anonimo capannone di generose dimensioni in una zona industriale nella periferia di Milano. Il primo piano era al 90% predisposto ad officina meccanica. Alcune sezioni erano attive altre erano spente e coperte con cellophan. ( il segno di una crisi anticipata ). Salii su una scala metallica per raggiungere il laboratorio.

Entrammo in una stanza molto ampia e altrettanto illuminata. Le scrivanie erano allineate ordinatamente in due file e sopra una di queste due tecnici montavano un assieme di un condizionatore. In fondo a sinistra riconobbi il nostro prototipo e la sezione dove facevano le prove. Sulla destra una vetrata e poi una porta ampia e scorrevole dove si celava un ambiente che sembrava essere una camera termica. Uno dei tecnici si avvicinò e ci presentammo con misurato garbo e nello stesso momento Arnaux usci dall’ufficio felicissimo del nostro arrivo. I soliti preliminari convenevoli e poi subito iniziammo con la descrizione del guasto in tutte le sue varianti, a cui facevano seguito una miriade di dettagli, elenchi di particolarità delle operazioni fatte nelle ore precedenti. Era mattino inoltrato “Un caffè ?”... “Certo ! Ma non francese..” risate un po’ idiote per una pausa che sapeva tanto di pretesto per prendere ancora un po’ di tempo.

Qualche tempo prima avevamo saputo del disastro dell’Ariane esploso in volo. L’Ariane era un missille europeo utilizzato per l’invio di satelliti che sono l’odierna spazzatura cosmica che ogni tanto ci casca addosso. I progettisti avevano mantenuto tutta la architettura hardware e software riprendendola dal progetto precedente l’Ariane 4 ( come se fosse un gigantesco cut and paste del progetto, perché squadra che vince non si cambia... ) e ufficialmente ammisero di aver sostituito unicamente i motori con un tipo più efficente e performante ( e scommetto anche più economico ) …. Non aggiungo oltre perché il report con la descrizione del bug che ha causato l’esplosione è molto bello e lo potete trovare in questo link. . Qui invece un articolo del famoso giornalista americano Gleik sempre sull’accaduto link .

Bene dopo questi rilassanti articoli, arrivammo sul condizionatore e mentre parlammo osservai le due unità notando l’evidente guida in plastica flessibile che univa le due unità, che copriva i tubi contenenti il gas compresso da una parte all’altra della batteria. Questa guida era composta da tanti moduli di una decina di centimetri ognuno e che venivano assemblati insieme; nella parte di contatto c’era una specie di perno che rendeva possibile la variazione dell’angolo. Seguimmo con la linea dell’occhio il percorso di quella sonda all’interno del condizionatore, ma subito lo perdemmo perché entrava in una guida di plastica rigida che non potevamo smontare. Non c’erano altre macchine perché era un prototipo e quello che avevamo davanti era aimè l’unico pezzo completo disponibile. Allora ci spostammo sulla unità esterna e li scoprimmo il disastro.

Appena smontata la grata esterna, subito ci guardammo e una gocciolina di sudore calò dalla fronte. Sull’unità esterna una spiralina scendeva perpendicolarmente dal supporto che da una parte portava i tubi del Freon alla batteria. La spiralina viene utilizzata dai cablatori per rendere ordinato un generico cablaggio, ma in questo caso accoppiava insieme i fili della sonda di temperatura con le fasi di alimentazione della ventola esterna, del compressore compreso il neutro e anche il cavo di terra. Molti di voi sanno cosa succede quando abbiamo due conduttori accoppiati e ad uno di questi facciamo scorrere della corrente.
Ma il problema non era la spiralina.
Nei giorni successivi ripetemmo le prove in laboratorio che confermarono quanto visto in sede dal cliente. La 220 volt indotta causava gli errori sulla misura della ntc sulla batteria esterna provocando i cicli di sghiacciamento esterni.
Il problema era che di soluzioni non ne avevamo. Potevamo eliminare la spiralina, potevamo evitare il passacavo sulla unità esterna e interna, ma non potevamo sostituire il supporto plastico, flessibile, utilizzato per collegare le due unità. Questa specie di anaconda in plastica ( stampata brevettata e pubblicizzata ) prevedeva una sezione per il passaggio dei cavi che inevitabilmente li avrebbe resi solidali per tutto il percorso.
Riprogettare la guida ? Schermatura della 220 volt ?
Niente da fare alla fine l’Ariane era esploso anche a noi....

Tornammo a casa un pochino più seri. Le battute erano meno caciarone; mentre quella mattina si rideva... adesso i sorrisi erano appena accennati.

Il giorno dopo entrai in laboratorio. Feci un po’ di ordine nel codice e misi a posto un paio di macro. Erano di confronto fra flag generici di due registri generici. Queste due macro avevano come parametri di ingresso delle costanti utilizzate dal preprocessore dell'assembler e come si può notare sono costanti a 16 bit. Nella dichiarazione implementeremo nel byte alto l’indirizzo del registro, nel byte basso l’indice del bit che vogliamo utilizzare. Le macro le scrivevo in maiuscolo per capire subito dove fossero all'interno del codice e poi di solito aggiungo sempre una lettera ( nel nostro caso una f ) alla definizione delle costanti e dei registri per implementare Hungarian notation anche nel nostro ambiente...

#define fSYNC            (Address1 << 8) | Address1 & 0FFh    
#define fREADY_NTC       (Address2 << 8) | Address2 & 0FFh    


es...


      SBSAME    fSYNC, fREADY_NTC
      jmp        Cycle_Main


Le macro saranno fatte in questo modo

;----------------------------------------------------------------------------------------------------------------------
; SBSAME    : Macro Compare two bit in general register and skip
;            if equal
;
; Input       Address1 : Address first register, and bit
;            Address2 : Address second register. and bit
; Output    NONE
; Ram        1 Reg : Spare_a
; Ram        1 Reg : Spare_b
;----------------------------------------------------------------------------------------------------------------------
SBSAME        MACRO        Address1, Address2
       clrf            Spare_a
       bsf            Spare_a,LSB
       btfss       (Address1 >> 8) & 0FFh,Address1 & 0FFh    
       bcf            Spare_a,LSB
       clrf            Spare_b
       bsf            Spare_b,LSB
       btfss       (Address2 >> 8) & 0FFh,Address2 & 0FFh    
       bcf            Spare_b,LSB
       movfw       Spare_b
       xorwf       Spare_a,w
       skpz
   ENDM
;----------------------------------------------------------------------------------------------------------------------
; SBDIFF    : Macro Compare two bit in general register and skip if different
;
; Input        Address1 : Address first register
;        Address2 : Address second register
; Output    NONE
; Ram        1 Reg : Spare_a
; Ram        1 Reg : Spare_b
;----------------------------------------------------------------------------------------------------------------------
SBDIFF        MACRO        Address1, Address2
       clrf            Spare_a
       bsf            Spare_a,LSB
       btfss       (Address1 >> 8) & 0FFh,Address1 & 0FFh    
       bcf            Spare_a,LSB
       bsf            Spare_b,LSB
       btfss       (Address2 >> 8) & 0FFh,Address2 & 0FFh    
       bcf            Spare_b,LSB
       movfw       Spare_b
       xorwf       Spare_a,w
       skpnz
   ENDM

Robert mi fece sapere che arrivò la conferma della proposta Sgs. Avevano abbassato i prezzi e dovevamo prendere in considerazione l’utilizzo dei suoi controllori l’ST6 per un Cronotermostato da sviluppare a breve per la York....

0

Commenti e note

Inserisci un commento

Inserisci un commento

Per inserire commenti è necessario iscriversi ad ElectroYou. Se sei già iscritto, effettua il login.