• Non ci sono risultati.

Capitolo 4 Sistema di controllo sensorless

N/A
N/A
Protected

Academic year: 2021

Condividi "Capitolo 4 Sistema di controllo sensorless"

Copied!
33
0
0

Testo completo

(1)

Capitolo 4 Sistema di controllo sensorless

Capitolo 4 Sistema di controllo sensorless.

4.1 Sistema sensorless per il controllo del precarico.

Il nuovo sistema di controllo del precarico è l evoluzione della versione precedente descritta nel capitolo 3. Si distingue da quest ultima sostanzialmente perchè riesce a settare il precarico senza fare ricorso all uso di un sensore che misuri la corsa della sospensione.

Le condizioni in cui il controllo opera sono identiche alla versione precedente ossia: cavalletto laterale sollevato, veicolo in moto con velocità compresa fra 20 e 40 km/h e accelerazione inferiore a 1 m/s

2

per un tempo T

in_range

.

Il sistema prevede di distinguere tre situazioni di carico:

Solo conducente;

Conducente con bagagli;

Conducente con passeggero;

e di settare il relativo valore di precarico:

S0;

S4;

S7;

Il precarico resta quantizzato su otto livelli determinati dal numero di giri del motore, partendo da un offset di 50 giri si incrementa un livello ogni 53 giri.

Si è scelto di distinguere solo tre situazioni di carico perché la misura in corrente non offre una risoluzione sufficiente per poter distinguere otto situazioni di carico. Nella precedente versione veniva rilevato ogni livello ma si impostava solo se differiva da quello attuale per più di un livello.

Le variabili di sistema necessarie per lo svolgimento del controllo sono:

Velocità del veicolo

(2)

Capitolo 4 Sistema di controllo sensorless

Posizione del cavalletto Valore del precarico

Valore della corrente istantanea assorbita dal motore in continua che aziona il precarico.

Quando il veicolo si trova in moto col cavalletto sollevato e rispetta i range di velocità e accelerazione definiti dal controllo, ha inizio la fase di misura del carico.

Diversamente da come accadeva nella versione precedente, ora il valore del carico non è disponibile in ogni istante, ma lo si deve determinare con una procedura apposita che richiede l attivazione del motore.

Fig 4.1 Schema a blocchi delle architetture dei due sistemi.

Il sistema prevede di distinguere il carico statico sul veicolo dal confronto fra la corrente media a regime assorbita dal motore che aziona

Azionamento del motore

Rilevamento corsa dal sensore

Setting del precarico solo se differisce per più di un livello Setting

precarico

Elaborazione dei campioni Stima del carico Determinazion

e del precarico su tre livelli

Nuovo sistema Versione precedente

determinazione del precarico su 8 livelli Campiona

mento della

corrente

(3)

Capitolo 4 Sistema di controllo sensorless

il circuito idraulico di regolazione del precarico e le soglie di corrente determinate sperimentalmente. Pertanto la fase di misura deve prevedere l azionamento del motore elettrico con il solo scopo di misurarne la corrente assorbita.

Il motore viene pertanto attivato, compie un escursione del precarico e contemporaneamente si campiona la corrente. I campioni vengono elaborati dal microprocessore che ne determina la situazione di carico. Le fasi successive prevedono di determinare il precarico più appropriato al carico, ed impostarlo.

Il controllo viene ripetuto periodicamente ogni due minuti ed ogni volta il che il veicolo si ferma (condizione rivelata dalla velocità nulla) per un tempo significativo in cui potrebbe cambiare il carico statico.

4.2 Controllo in feedforward.

Il controllo in catena aperta feedforward si usa frequentemente nei controlli automatici in supporto al controllo in feedback. Unendo i due metodi si ottiene una maggior efficienza del controllo. Nel caso in cui la grandezza che si intende controllare sia affetta da un disturbo misurabile, si interviene in ingresso col controllo in feedforward per bilanciarne gli effetti in uscita. Il controllo in feedback completa la regolazione dell uscita portandola al valore desiderato.

In figura 4.2 viene mostrato lo schema tipico di un applicazione che

combina il controllo in feedback col controllo in feedforward.

(4)

Capitolo 4 Sistema di controllo sensorless

Fig 4.2 Schema di controllo combinato feedback feedforward.

Dove d è il disturbo da compensare, P e P

d

sono le funzioni di trasferimento del dispositivo e del disturbo[23][24].

Nel sistema di controllo del precarico la grandezza che si vuole controllare è la corsa dell ammortizzatore e la grandezza di controllo è il numero di giri del motore.

La misura non viene eseguita direttamente sulla grandezza in uscita, ma si esegue una misura secondaria su una grandezza intermedia che è corrente assorbita dal motore.

Il controllo si compie in due fasi successive. Nella prima si misura la corrente, nella seconda il valore misurato viene riportato in ingresso ed utilizzato per realizzare il controllo in feedforward.

Fig 4.3 Schema di controllo feedforward.

Il valore della corsa viene stimato e regolato agendo sul precarico. Il livello del precarico viene deciso dal confronto con delle soglie

motore

soglie sospensione

corsa corrente

precarico Giri motore

Controllo feedback

Controllo feedforwar d

P

P

d

d

-

-

r output

(5)

Capitolo 4 Sistema di controllo sensorless

sperimentali che consentono solo di restringere il valore dell uscita entro un intervallo.

4.3 La misura in corrente.

La misura in corrente sfrutta il legame esistente fra i valori a regime della corrente assorbita dal motore che azione il precarico e la coppia resistente all albero, strettamente legata al carico.

Il livello di precarico iniziale è necessariamente uno fra: S0, S4, S7;

corrispondente ad una delle tre possibili condizioni di carico previste.

A partire da una di queste tre situazioni viene azionato il motore per variare il livello di precarico superiore, incrementandolo nei casi S0, S4 , nel caso S7 il precarico viene prima portato su S4 e poi riportarlo su S7.

Durante la fase in salita la corrente istantanea viene campionata e memorizzata.

Per ridurre gli effetti dei disturbi legati agli attriti che influenzano i valori della corrente, viene eseguita una misura differenziale prelevando i campioni di corrente anche durante la fase di riduzione del precarico.

Analizzando l andamento della corrente durante i vari azionamenti possiamo distinguere diversi intervalli.

Fig 4.4 Andamento della corrente e dei giri del motore.

(6)

Capitolo 4 Sistema di controllo sensorless

Nella figura 4.4, la parte superiore della schermata rappresenta il numero di giri compiuti dal motore nel tempo, la parte inferiore indica il valore della corrente assorbita sempre nel tempo.

All avvio del motore si ha un rapido aumento del valore della corrente che dipende dalle costanti di tempo, terminato il transitorio (teoricamente infinito) la corrente si stabilizza su un valore di regime pressoché costante. Raggiunto il nuovo livello di precarico il motore viene spento dando origine al transitorio che porta il valore della corrente a zero. Dopo un piccolo intervallo di tempo il motore viene azionato nuovamente per riportare il precarico al valore di partenza. Nella fase di discesa il motore deve vincere solo gli attriti mentre il carico statico tende a favorire il raggiungimento del nuovo livello, ciò fa si che il valore della corrente a regime abbia un valore nettamente inferiore e possa essere considerato indipendente dal carico.

Dall attivazione del motore fino al suo spegnimento la corrente assorbita viene continuamente campionata. L informazione sul valore del carico è contenuta solo sui campioni della corrente a regime, è necessario quindi distinguere i campioni utili.

D analisi dell equazione meccanica del motore che segue

m

r

C

C t dt D

t J d ( )

(N4.1) si osserva che il contributo legato all inerzia è proporzionale alla derivata della velocità angolare, pertanto i suoi effetti sono presenti solo nel transitorio di spunto del motore, ma a regime possono essere trascurati.

Il secondo termine rappresenta la coppia resistente dovuta agli attriti viscosi che dipendono dalla velocità con cui i corpi si muovono. Il sistema è dotato di un riduttore di giri che riduce la velocità con qui le parti meccaniche si muovono il che rende trascurabile questo contributo.

La dimostrazione di quanto appena detto si ottiene osservando che il

valore della corrente non cambia se ripetiamo la misura nelle stesse

situazione di carico e precarico con diversi valori di tensione di

alimentazione del motore (es. 12V, 11V, 10V), quindi con diverse.

(7)

Capitolo 4 Sistema di controllo sensorless

L equazione meccanica si riduce a:

m

r

C

C

(N4.2) La coppia resistente è la somma della componente dovuta al carico statico e della componente dovuta ai disturbi che raggruppiamo in C

d

.

d c

r

C C

C

(N4.3) In questa equazione il carico contribuisce col segno positivo, ossia si oppone al movimento del motore, poichè stiamo aumentando il precarico.

Quando riduciamo il precarico, il carico non influisce il moto del motore e il suo contributo è nullo, resta il solo contributo dell attrito.

d

r

C

C

(N4.4) Il valore della corrente a regime e legata alla coppia resistente tramite la costante di coppia K

T

,

T d c

sal

K

C I C

(N4.5)

T d

disc

K

I C

(N4.6)

Eseguendo l analisi differenziale si trova:

T c d d c T disc sal

diff

K

C C C K C

I I

I 1

(N4.7) Si nota come il valore della corrente differenziale non dipende dal contributo dei disturbi.

4.4 Il banco di prova.

Il banco di prova [3], è stato realizzato per testare l efficacia del sistema

di controllo del precarico e simula l intelaiatura posteriore dello scooter

in cui operano le sospensioni. È composto da una parte fissa e una mobile

libera di scorrere verticalmente sulla fissa.

(8)

Capitolo 4 Sistema di controllo sensorless

La componente fissa è costituita da due piani paralleli in alluminio, tenuti da quattro cilindri cavi in acciaio. Il centro del piano superiore è cavo per poter contenere la sospensioni, mentre il piano inferiore poggia a terra tramite quattro rotelle che consentono di spostare facilmente tutta la struttura.

Fig 4.5 Particolari del banco di prova.

La componente mobile, invece, è realizzata da un terzo piano in alluminio su cui sono montati altri quattro cilindri di dimensione inferiore rispetto a quelli appartenenti alla componente fissa, in modo da potervi scorrere dentro, vincolando il piano ad un solo grado di libertà.

Le sospensioni sono fissate con un estremo sulla parte fissa e l altro sulla

mobile, così da poter lavorare senza impedimenti.

(9)

Capitolo 4 Sistema di controllo sensorless

Fig 4.6 Il banco di prova.

Il motore elettrico, la scheda elettronica ed il circuito idraulico sono sostenuti da un lamina di alluminio che li fissa al banco, in fine la scheda di comunicazione Bluetooth è posizionata su una scheda separata, nell applicazione sullo scooter non previsto vi sia una scheda di comunicazione pertanto deve essere asportabile.

Il carico viene simulato con dei pesi da palestra da dieci kg ciascuno che di volta in volta vengono poggiati sul piano superiore e sono tenuti da un asta verticale al centro del piano che consente di operare in sicurezza.

Il banco così realizzato costituisce un elemento indispensabile allo

svolgimento del progetto in quanto consente, in maniera semplice, di

determinare la migliore strategia di misura della corrente e verificare

l efficacia del controllo del precarico. In sua assenza si sarebbe dovuto

(10)

Capitolo 4 Sistema di controllo sensorless

ricorrere alla sperimentazione diretta sul veicolo con intuibili complicazioni.

4.5 Interfaccia grafica LabVIEW.

Descrizione del programma [4]

LabVIEW è l acronimo di Laboratory Virtual Engineering Workbench, è un ambiente di sviluppo per applicazioni orientate principalmente all acquisizione dei dati, alla gestione degli strumenti di misura e all analisi ed elaborazione dei segnali.

LabVIEW fornisce un ambiente di programmazione di tipo grafico ad oggetti, denominato linguaggio G (graphical language), il quale consente di realizzare programmi in forma di diagrammi a blocchi. Il linguaggio G conserva molte similitudini con gli ambienti di programmazione tradizionali, tra le quali:

Tipi di dati e operazioni di uso comune;

Strutture di controllo del flusso di programma;

Metodi di debag;

Funzioni di libreria;

La differenza sostanziale fra il linguaggio G e quelli tradizionali risiede nel controllo del flusso del programma. Nei linguaggi tradizionali di tipo testuale, l ordine di esecuzione delle istruzioni che costituiscono il codice del programma è determinato dall ordine in cui le istruzioni sono scritte all interno del codice stesso. Nel linguaggio G, l ordine di esecuzione è stabilito dal flusso dei dati , ovvero ognuna istruzione viene eseguita non appena sono disponibili i suoi dati in ingresso, in questo modo è possibile eseguire operazioni in parallelo: il parallelismo è una delle proprietà peculiari di LabVIEW.

I programmi che vengono generati prendono il nome di strumenti

virtuali (VI), il termine strumenti deriva dal fatto che durante

l esecuzione i programmi sviluppati presentano un interfaccia analoga a

(11)

Capitolo 4 Sistema di controllo sensorless

quella degli strumenti di misura, mentre il termine virtuale dipende dal fatto che l interazione avviene con un programma in esecuzione e non con un dispositivo fisico reale.

Un programma VI è composto da tre parti fondamentali:

Pannello frontale (Front Panel)

Diagramma a blocchi funzionale (Block Diagram).

Pannello frontale.

Il pannello frontale è l interfaccia grafica che consente di definire tutte le grandezze di ingresso (input) e di uscita, si possono inserire controllori ed indicatori. I controllori sono delle variabili che possono essere variate durante lo svolgimento del programma, gli indicatori visualizzano la variabili ma non consentono di modificarle agendo sul pannello frontale.

Diagramma a blocchi.

È lo strumento grafico che consente di scrivere il codice del programma, il suo aspetto ricorda a grandi linee lo schema di un circuito elettrico. Al suo interno sono contenute i nodi ed i collegamenti. I nodi sono gli elementi di elaborazione elementare e appaiono come delle icone, i collegamenti appaiono come dei fili che collegano le varie icone.

Interfaccia usata nella sperimentazione

Al fine di semplificare la determinazione dei parametri da inserire nel firmware e testare la strategia di controllo migliore, le misure sono state eseguite con l ausilio di un interfaccia grafica Labview, con la quale si sono visualizzati i dati inviati dal processore relativi ai vari sensori.

Tramite l interfaccia grafica si è potuto intervenire durante lo svolgimento delle misure e modificare i parametri. È stato possibile inoltre agire direttamente sul banco, in modalità remota, passandogli dei comandi prestabiliti.

In figura 4.4 è mostrato il pannello di controllo utilizzato per eseguire le

misure per la determinazione delle soglie di corrente da utilizzare poi nel

controllo.

(12)

Capitolo 4 Sistema di controllo sensorless

Il pannello frontale è stato realizzato a partire da una versione precedente di cui conserva la componente relativa al trasferimento e alla visualizzazione dei valori rilevati dai sensori. Sono state aggiunti gli indicatori ed i controllori relativi al campionamento e all elaborazione dei campioni. Nelle parte in basso a destra compare il riquadro di controllo utile per testare di volta in volta la validità delle soglie determinate.

Fig 4.7 Pannello frontale dell interfaccia usata per la determinazione delle soglie

Grazie a essa è stato possibile visualizzare il flusso del programma e

scegliere la strategia di campionamento ed elaborazione dei campioni più

opportuna. Agendo semplicemente sui controllori del pannello frontale si

possono selezionare il numero ed il range di valori da prelevare. Il

pannello conserva ancora gli indicatori relativi alla velocità e alla batteria

per una futura sperimentazione a bordo del veicolo al momento non

disponibile.

(13)

Capitolo 4 Sistema di controllo sensorless

4.5 Descrizione delle misure

Prima di procedere alla modifica del firmware si è ritenuto opportuno verificare la fattibilità e l efficacia della misura in corrente, sperimentandola sul banco di prova descritto nel capitolo 2, mediante un interfaccia LabVIEW che agisce in modalità remota. Viene eseguita la stessa sequenza di operazioni svolte dal microprocessore e di volta in volta viene adeguata la scelta dei parametri che offrono maggior affidabilità al controllo.

La sperimentazione ha come scopo la distinzione di tre situazioni di carico: solo conducente, conducente con bagaglio, conducente con passeggero. Riconosciuto il carico, il controllo deve impostare automaticamente un valore di precarico tale da tenere la corsa della sospensione entro i limiti nei quali è garantito il corretto funzionamento.

Determinazione dei carichi

Con l intento di simulare le condizioni di carico tipiche di uno scooter (conducente, conducente + bagagli, conducente + passeggero), il banco è stato caricato, di volta in volta, con 80, 110 e 140 kg, che rappresentano rispettivamente le condizioni di carico minimo medio e massimo.

Numero di campioni prelevabile.

La strategia per il campionamento della corrente è la stessa per tutte le

situazioni di carico e precarico in cui la sospensioni può operare, pertanto

deve essere studiata in maniera tale da fornire dei valori significativi

anche nelle condizioni più stringenti. Il numero dei campioni che si

riesce a prelevare dipende dalla velocità con cui il motore raggiunge il

nuovo livello di precarico. La velocità del motore a sua volta dipende

dalla coppia resistente e quindi dal carico che non è noto al momento

della misura. Anche il livello di precarico influenza la velocità del

(14)

Capitolo 4 Sistema di controllo sensorless

motore, la forza da esercitare per comprimere la molla dal livello S0 a S1 è molto minore di quella necessaria per passare da S6 a S7.

La situazione critica si ha nel caso di carico minimo e precarico su S0.

Nel caso di carico minimo i campioni totali mediamente prelevati sui tre livelli di precarico sono:

livello S0: salita 1650, discesa 900.

livello S4: salita 1550, discesa 900.

livello S7: salita 1500, discesa 900.

I campioni prelevati vengono memorizzati in un registro per poi essere elaborati. Non tutti i campioni prelevati sono utili, la parte iniziale corrisponde al transitorio di salita, in questa fase i campioni sono molto diversi fra loro ed è difficile estrapolare le informazioni sul carico, inoltre nel transitorio sono contenuti gli effetti dell inerzia.

Per essere sicuri di prelevare i campioni a regime, in fase di salita, sono stati scartati i primi 1400 campioni, nella fase di discesa vengono scartati i primi 800 campioni.

Prelevare un numero elevato di campioni migliora la misura e riduce la varianza fra misure successive. Si corre il rischio di avvicinarci troppo al transitorio di spegnimento prelevando campioni non validi che falserebbero la misura. Il numero di campioni prelevabili è pertanto superiormente limitato. Per garantire un buon margine di sicurezza si è scelto di limitare il numero di campioni utilizzati a 250 in salita e a 100 in discesa.

Il controllo prevede di prelevare i campioni su un escursione di tre livelli

di precarico per consentire al motore di raggiungere una situazione

prossima al regime. In questo modo si dispone di una curva con una

pendenza trascurabile che consente di prelevare dei campioni quanto più

uniformi possibili. In realtà spostarci di un numero di livelli superiore

offrirebbe un maggior numero di campioni e affinerebbe la misura, allo

stesso tempo la misura si protrarrebbe per un tempo elevato. Oltretutto

(15)

Capitolo 4 Sistema di controllo sensorless

durante le varie prove il motore verrebbe eccessivamente sollecitato, costringendo a delle pause per il raffreddamento.

Spostando il precarico di soli due livelli, il motore non riesce a raggiungere il regime, i campioni che si prelevano sono molto diversi fra loro rendendo difficoltosa la determinazione delle soglie.

Determinazione delle soglie.

Il controllo feedforward prevede il confronto dei valori medi della corrente con delle soglie che distinguono inequivocabilmente i tre possibili carichi. La loro determinazione è pertanto la parte fondamentale per il controllo e da loro dipende l affidabilità di tutto il sistema.

Per determinare i valori di soglia è stata necessaria una lunga serie di misure che si è protratta per diverse settimane.

Sono state testate diverse combinazioni, le variabili su cui si è agito sono:

n° livelli su cui eseguire la misura.

n° campioni scartati.

n° campioni prelevati.

Scelta una combinazione si procede con una sequenza di misure necessarie all acquisizione dei valori relativi ai vari carichi. La stessa operazione viene ripetuta su ogni livello di precarico.

Dei campioni ritenuti validi viene calcolata la media e la varianza e si determinano i valori delle soglie ad essi compatibili.

Determinate le probabili soglie si verifica che siano compatibili con le misure sugli altri livelli e in caso contrario si cambia strategia e si inizia una nuova sessione di misure.

I risultati delle varie misure sono stati catalogati è forniscono un valido

strumento di analisi per la determinazione delle soglie.

(16)

Capitolo 4 Sistema di controllo sensorless

Possiamo brevemente riassumere i risultati:

carico kg corrente diff Varianza conducente 80 2.258 0.007 conducente con bagagli 110 2.748 0.017 conducente con passeggero140 3.39 0.026

È stata eseguita una vasta gamma di misure prima di riuscire a determinare delle soglie ben definite che separino i tre livelli, i valori individuati sono: 2,5A per distinguer il primo dal secondo e 3A per distinguere il secondo dal terzo. I risultati di tali misure sono riportati nell appendice A.

4.6 Risultati della sperimentazione.

La sperimentazione sul banco ha portato all individuazione delle due soglie. Il sistema di controllo riconosce la condizione di solo conducente se viene misurata una corrente media inferiore a 2,5A, per valori compresi fra 2,5A e 3A si identifica la condizione di conducente con bagagli , infine per valori superiori a 3A si ha la situazione conducente con passeggero .

Una seconda interfaccia grafica LabVIEW è stata messa a punto per

testare l efficacia del controllo,

(17)

Capitolo 4 Sistema di controllo sensorless

Fig 4.8 Interfaccia LabVIEW usata nei test.

L interfaccia, mostrata in figura 4.6, esegue il ciclo di misure sotto il controllo del pulsante MISURE, agendo sul tasto AUTOMATICO viene eseguito il ciclo di misura per identificare il carico, dopo di che si procede ad impostare il valore di precarico corrispondente.

I risultati della sperimentazione compiuta mediante l interfaccia grafica dimostrano l efficacia della misura in corrente per la determinazione del carico.

Il test svolti consistono nel posizionare i pesi corrispondenti alle tre situazioni di carico sul banco ed eseguire la sequenza di operazioni che producono l adeguamento del precarico mantenendo il valore della corsa entro un intervallo che oscilla intorno al valore di 1 cm. Il valore della cosa viene rivelato dal sensore di elongazione ancora montato in parallelo alle sospensioni, allo scopo di fornire un riferimento che dia conferma del buon funzionamento dell intero dispositivo.

Per verificare l efficacia del controllo sono state simulate tutte le possibili situazioni in cui il dispositivo può trovarsi ad operare.

In figura 4.9 sono mostrati i risultati di una prova.

(18)

Capitolo 4 Sistema di controllo sensorless

Fig 4.9 Andamento delle grandezze di interesse.

Le grandezze rappresentate nel grafico sono:

Giri motore (linea nera)

Pesi in kg aggiunti sul banco ( linea rossa).

Corsa in cm (linea verde).

Corrente assorbita (linea celeste).

Livello precarico (linea blu).

Inizio misura (linea azzurra).

Il test inizia con precarico sul livello S7 e 140 kg di carico sul banco, corrispondenti al conducente con passeggero. Il valore della corsa è 1,5 cm.

Inizia la misura, il precarico viene aumentato fino al livello S3 per poi ritornare a S0. Il nuovo valore di precarico è S7, pertanto il precarico resta invariato.

La seconda misura viene eseguita sempre sul livello S7 ma con un carico

di 80kg che corrispondono alla situazione di solo conducente. In questa

situazione il precarico è eccessivo e la corsa è nulla, la sospensione si

(19)

Capitolo 4 Sistema di controllo sensorless

comporta come corpo rigido per le piccole oscillazioni (cioè per quelle oscillazioni che non riescono a comprimere la molla). Il controllo riconosce il carico e imposta il precarico al valore minimo riportando la corsa a 1cm, ripristinando la funzionalità della sospensione.

La misura ripetuta sul livello S0, senza variazione di carico e non produce variazioni del precarico che resta, correttamente, sul livello minimo.

Ponendo il carico a 110kg, ossia conducente con bagagli, la corsa si porta a 2cm, eseguendo la misura su S0, il controllo rileva la condizione è impone il precarico al livello medio.

Ripetendo la misura sul livello S4, il controllo rileva che il carico non è cambiato e non varia il precarico.

L ultima misura viene eseguita sul livello S4, e a pieno carico.

La corsa supera i 2cm, il controllo rilava il carico eccessivo ed imposta il precarico massimo riducendo la corsa.

Il test descritto dimostra come il controllo, indipendentemente dalla situazione di carico e precarico, è capace di distinguere correttamente la situazione di carico e di impostare il valore di precarico adeguato, riportando sempre la corsa su un valore prossimo al cm in modo da garantire il corretto funzionamento della sospensione. Gli altri test eseguiti sono riportati nell appendice A.

4.7 Firmware.

Dimostrata la realizzabilità del controllo nell ambiente di lavoro

Labview, si passa alla realizzazione del firmware per trasferire il

controllo interamente al microprocessore che fino a questo momento a

agito solo da interfaccia permettendo la comunicazione fra il PC e

l insieme di sensori ed azionamenti che controllano la sospensione.

(20)

Capitolo 4 Sistema di controllo sensorless

F ig 4.10 Schema del flusso dei dati con controllo su LabVIEW .

Nell applicazione pratica il microprocessore agisce indipendentemente e in modo trasparente all utente. Da qui in poi l interfaccia grafica servirà solo per visualizzare lo svolgimento del controllo, senza avere una parte attiva in esso.

F ig 4.11 Schema del flusso dei dati con controllo sul microprocessore .

Descrizione del ciclo lento

Il main prevede l esecuzione di un ciclo lento che compie diverse operazioni definite dai Task:

Lettura ingressi locali Calcola nuovo stato nodo Esegue il controllo Scrive uscite locali Realizza il file di logging

Microprocessore LabVIEW

Sospensione a precarico variabile Sensori

Microprocessore LabVIEW

Sospensione

a precarico

variabile

Sensori

(21)

Capitolo 4 Sistema di controllo sensorless

Fig 4.12 Struttura del mein

Definizione dei task.

Lettura ingressi locali.

Vengono campionati gli ingressi presenti sulla porta del microprocessore, viene implementata un rete combinatoria che produce il nuovo stato.

Calcola nuovo stato nodo.

Il nodo può trovarsi in uno tra i possibili stati:

1. STATO_RESET 2. STATO_SLEEP 3. STATO_ON 4. STATO_PROG

In questo task viene controllato il valore della chiave e calcolato il nuovo stato del nodo, qualora il nuovo stato nodo sia differente da quello in corso si procede ad impostare il nuovo stato.

while(1) {

if (task_in_progress) {

task_in_progress = 0;

// esecuzione task lettura_ingressi_locali();

calcola_nuovo_stato_nodo();

esegui_controllo();

scrivi_uscite_locali();

logging();

// fine task }

// attesa di un nuovo tick idle();

}

(22)

Capitolo 4 Sistema di controllo sensorless

Esecuzione controllo.

Il controllo viene realizzato tramite due macchine a stati: una che implementa l algoritmo di controllo e una che controlla il motore.

Si inizia verificando che il nodo sia attivo (STATO_ON), in tal caso si avvia l algoritmo di controllo.

L algoritmo prevede diversi stati:

1. START 2. READY 3. MEASURE 4. REMOTE 5. WAIT 6. ERROR

7. PRELOAD_SETTING 8. PRELOAD_SET 1) Start.

È il punto di partenza dell algoritmo vengono impostate le variabili necessarie per l esecuzione del controllo.

2) Ready.

Il sistema è pronto e viene monitorato il cavalletto, se questo è sollevato si inizia la misura altrimenti si verifica la richiesta di una eventuale connessione remota.

3) Measure.

Rappresenta il nucleo del controllo, inizia col controllo della velocità e

della accelerazione per assicurarsi che siano nel range richiesto. Dopo di

che si procede alla determinazione del carico statico. Per determinare il

carico si controlla l attuale livello di precarico ed in base ad esso si

decide il nuovo livello incrementandolo di tre livelli, nel caso S0e S4 o

decrementandolo della stessa quantità nel caso S7. Dopo di che il

precarico viene riportato al valore iniziale. Ogni volta che il motore viene

azionato si campiona la corrente assorbita.

(23)

Capitolo 4 Sistema di controllo sensorless

Terminate le escursioni del motore e determinati i valori medi della corrente in salita ed in discesa, si esegue la differenza fra i due valori.

Terminata la misura della corrente differenziale si procede alla determinazione del nuovo livello di precarico mediante il confronto con le soglie.

4) Remote.

In questo stato è possibile leggere i comandi inviati dall utente tramite l interfaccia LabVIEW. È possibile azionare il motore in entrambi le direzioni o impostare un qualsiasi livello di precarico.

5)Wait.

Il sistema si pone in attesa di un input per eseguire una nuova istruzione.

6) Error.

L algoritmo si pone in questo stato se vengono riscontrate delle anomalie nel funzionamento.

7) Preload_setting.

Nella precedente versione si decideva se impostare il nuovo livello di precarico, nel controllo attuale serve per impostare le variabili necessarie al corretto svolgimento dell algoritmo.

8) Preload_set.

Imposta il nuovo livello di precarico.

Nella macchina a stati che controlla il motore sono definiti gli stati:

1. IDLE_CTRL 2. RESET_CTRL 3. LEGGI_CTRL 4. SETTA_CTRL

1) IDLE_CTRL.

Vengono impostate le variabili utili alla gestione del motore, in modo da

poter: azzerare il precarico, attivare il motore, leggere il precarico,

impostare il nuovo precarico.

(24)

Capitolo 4 Sistema di controllo sensorless

2)RESET.

Riporta il precarico al valore minimo ed imposta le variabili di controllo per un nuovo ciclo.

3) LEGGI.

Avvia il motore e chiama la funzione che esegue il campionamento della corrente.

4) SETTA.

Verifica che il verso del motore sia in accordo col livello di precarico da impostare.

Scrivi uscite locali

Scrive le variabili che controllano il motore.

Realizza il file di logging

Unisce i valori delle variabili da trasmettere in un pacchetto per essere inviate.

Esecuzione del controllo.

Analizziamo come avviene il controllo seguendo tutte le principali operazioni, evidenziando quali siano le differenze con la versione precedente.

Nel momento che il veicolo viene acceso, facendo commutare la chiave, viene alimentata la rete nodale di cui il sistema di controllo del precarico fa parte. La prima operazione eseguita da microprocessore è l acquisizione degli ingressi locali, da essi si procede al calcolo dello stato del nodo e se questo è attivo (STATO_ON) si procede con l esecuzione dell algoritmo.

Si inizia con la macchina a stati che implementa l algoritmo di controllo,

nello stato START.

(25)

Capitolo 4 Sistema di controllo sensorless

Viene azzerato il precarico, questa operazione esige il passaggio nei vari stati, da START > IDLE >WAIT>RESET>WAIT>RESET>IDLE

Si controlla il cavalletto.

Ogni volta che viene eseguita un operazione che richiede più cicli si pone la variabile done a 0 , e l algoritmo si ferma nello stato WILE . Quando l operazione è terminata si pone done=1 e l algoritmo passa alla stato successivo che dipende dal flusso del programma.

Dopo aver controllato il cavalletto si passa ad eseguire la misura .

La misura prevede la determinazione della velocità, aggiornandola ogni qual volta siano presenti nuovi valori.

Fig 4.13 Porzione del codice: aggiorna il valore della velocità ed accelerazione

Si verifica che la velocità e l accelerazione sia nei limiti consentiti per poter eseguire correttamente la misura.

Fig 4.14 Porzione del codice: verifica le condizioni sulla velocità.

if(nuova_misura_vel) { nuova_misura_vel = 0;

if(delta_tempo==0) vel = 0;

else {

vel = num_cicli_contati;

vel = vel << 24;

vel = vel/delta_tempo;

}

if(vel>vel_prec) acc = vel - vel_prec;

else acc = vel_prec - vel;

vel_prec = vel;

}

if((vel < VEL_MAX) && (vel > VEL_MIN) && (acc < ACC_MAX)) vel_inrange = TRUE;

(26)

Capitolo 4 Sistema di controllo sensorless

In tal caso inizia la misura. In base al livello di precarico in cui il sistema si trova viene selezionato il nuovo livello di precarico e la direzione che deve avere il motore.

Fig 4.15 Porzione del codice: imposta il livello del precarico per la prima misura

La macchina a stati che controlla il motore si posiziona nello stato LEGGI che predispone per eseguire il campionamento della corrente.

Viene acceso il motore e chiamata la funzione _adc_driver che gestisce il convertitore analogico-digitale.

if(misura_in_corso){

if (prima_misura){

prima_misura=0;

if(livello_precarico==0){

nuovo_livello_precarico=3, s_m = MOTORE_UP;

} else{

if(livello_precarico==4){

nuovo_livello_precarico=7, s_m = MOTORE_UP;

} else{

nuovo_livello_precarico=4, s_m = MOTORE_DOWN;

} }

corrente_media_sal = 0;

stato_controllo = LEGGI_CTRL;

(27)

Capitolo 4 Sistema di controllo sensorless

Fig 4.16 Porzione del codice: avvia il campionamento della corrente.

Il convertitore analogico digitale campiona il valore della tensione che è proporzionale alla corrente assorbita dal motore e il valore della corsa della sospensione proveniente dal sensore di elongazione. In realtà nell applicazione pratica il sensore non compare, ma ai nostri scoppi è utile per dimostrare il corretto funzionamento del sistema.

La funzione adc_driver() riceve in ingresso la variabile adc_channel che distingue il campionamento della corrente da quello della corsa.

case LEGGI_CTRL:

if( num_sample_corrente<NUM_SAMPLE_CORRENTE) { stato_m = 1;// accendo il motore

dir_m =s_m;

_adc_channel=CORRENTE_ADC_CH;

// campiono la corrente adc_driver();

} else {

stato_controllo = IDLE_CTRL;

leggi = 0;

done = 1;

stato_m=0;

}

break;

(28)

Capitolo 4 Sistema di controllo sensorless

Fig 4.17 Funzione che esegue il campionamento della corrente.

La variabile corrente_media_sal contiene la somma dei campioni di corrente, il numero dei campioni e definito da

NUM_CAMPIONI_PRELEVATI_SAL .

Con questa operazione si conclude la prima fase di misure, e si procede con la seconda analoga alla precedente che consiste nel riportare il livello del precarico al valore originale, sempre campionando il valore della corrente a regime.

void adc_driver() {

ADCON &= ~MSK_ADCON_ADEOC;

switch(_adc_channel) {

case CORRENTE_ADC_CH:

//corrente istantanea

appoggio = ADDH - BYTE1(corrente);

corrente += appoggio;

//corrente media

if(stato_m){ //motore attivo if(s_m){

if(cicli_attesa < CLI_ATTESA_SAL) cicli_attesa++;

else {

num_sample_corrente ++ ;

if (num_sample_corrente < NUM_CAMPIONI_PRELEVATI_SAL) corrente_media_sal += ADDH;

}

}}

(29)

Capitolo 4 Sistema di controllo sensorless

Fig 4.18 Porzione del codice: imposta il livello di precarico per la seconda misura

Col termine della seconda misura si conclude la fase di misure e la variabile misura_in_corso viene posta a zero.

Si procede alla determinazione del carico statico. Le misure effettuate forniscono le variabili corrente_media_sal e corrente_media_disc che contengono le somme dei campioni di corrente prelevati. Per determinare i valori medi si divide per il rispettivo numero di campioni.

Per estrapolare il valore del carico viene prima calcolata la corrente differenziale, che viene nominata corrente_media , dopo tale valore viene confrontato con le soglie determinate sperimentalmente.

Il confronto produce il nuovo livello di precarico.

if (prima_misura){}

else{

prima_misura=1;

if(livello_precarico==3){

nuovo_livello_precarico=0, s_m = MOTORE_DOWN;

} else{

if(livello_precarico==7){

nuovo_livello_precarico=4, s_m = MOTORE_DOWN;

} else{

nuovo_livello_precarico=7, s_m = MOTORE_UP;

} }

corrente_media_disc = 0;

stato_controllo = LEGGI_CTRL;

misura_in_corso = 0;

}

(30)

Capitolo 4 Sistema di controllo sensorless

Fig 4.19 Porzione del codice: determina il nuovo livello di precarico

Prima di impostare il nuovo livello di precarico l algoritmo si pone nello stato PRELOAD_SETTING .

Fig 4.20 Porzione del codice: controlla se il nuovo livello precarico differisce dall attuale

corrente_media_assorbita =

corrente_media_sal/NUM_CAMPIONI_PRELEVATI_SAL- corrente_media_disc/NUM_CAMPIONI_PRELEVATI_DISC;

if(corrente_media_assorbita < CORRENTE_MEDIA1){

nuovo_livello_precarico = 0;

//carico = CONDUCENTE;

}

else{

if(corrente_media_assorbita < CORRENTE_MEDIA2 nuovo_livello_precarico = 4;

//carico = CONDUCENTE_BAGAGLI;

else nuovo_livello_precarico = 7;

//carico = CONDUCENTE_PASSEGGERO;

stato_algoritmo = PRELOAD_SETTING;

cicli_nuova_misura = CICLI_NUOVA_MISURA;

cicli_vel_zero = CICLI_VEL_ZERO;

leggi = FALSE;

case PRELOAD_SETTING:

if((nuovo_livello_precarico - livello_precarico!=0) && !set) { stato_algoritmo_saved = PRELOAD_SET;

done = FALSE;

setta_precarico = TRUE;

stato_algoritmo = WAIT;

setting = TRUE;

}

else stato_algoritmo = PRELOAD_SET;

break;

(31)

Capitolo 4 Sistema di controllo sensorless

In questo stato viene controllato se il livello del precarico coincide col livello attuale. In caso contrario la variabile setta_precarico diviene vera e il controllo del motore passa allo stato IDLE dove viene calcolato il nuovo precarico. La variabile nuovo precarico contiene il numero di giri che il motore deve compiere. Viene ottenuta sommando all offset di 53 giri il livello del precarico moltiplicato per 50 giri di ogni livello. Viene inoltre calcolata la direzione di rotazione del motore.

Fig 4.21 Porzione del codice che calcola il precarico.

A questo punto l algoritmo si sposta nello stato PRELOAD_SET e si procede all attivazione del motore che posiziona il nuovo precarico.

Fig 4.22 Porzione del codice che imposta il nuovo precarico.

if(setta_precarico) {

#define OFFSET_PRECARICO 50

#define DELTA_PRECARICO 53 setta = 1;

setta_precarico = FALSE;

nuovo_precarico = OFFSET_PRECARICO+

nuovo_livello_precarico*DELTA_PRECARICO;

stato_controllo = SETTA_CTRL;

if(nuovo_precarico > precarico) segno_precarico=1;

else segno_precarico = 0;

if(segno_precarico) dir_m = MOTORE_UP;

else dir_m = MOTORE_DOWN;

}

case PRELOAD_SET:

cicli_nuova_misura--;

setting = FALSE;

set = TRUE;

if (num_cicli_contati==0) cicli_vel_zero--;

else cicli_vel_zero = CICLI_VEL_ZERO;

if(cav_lat) stato_algoritmo = START;

else if((cicli_nuova_misura==0) || (cicli_vel_zero==0)) stato_algoritmo = MEASURE;

break;

(32)

Capitolo 4 Sistema di controllo sensorless

Infine lo stato dell algoritmo viene posto in MEASURE pronto per

eseguire un nuovo ciclo.

(33)

This document was created with Win2PDF available at http://www.win2pdf.com.

The unregistered version of Win2PDF is for evaluation or non-commercial use only.

This page will not be added after purchasing Win2PDF.

Riferimenti

Documenti correlati

L’ambiente in cui si inserisce la mostra vuole essere un ambiente di festa, un momento sociale per la comunità per conoscersi e per scambiare due parole e un momento

if (il pacchetto multicast è pervenuto attraverso il percorso unicast più breve tra il router e l’origine) then lo trasmette su tutti i propri collegamenti

if (il pacchetto multicast è pervenuto attraverso il percorso unicast più breve tra il router e l’origine). then lo trasmette su tutti i propri collegamenti in uscita else

Quanto ottenuto dalle simulazioni attraverso Matlab-Simulink è confortante, infatti l’algoritmo predittivo di controllo della coppia, inserendo sensori sull’albero, funziona molto

Interventi di attuazione del piano triennale di prevenzione della corruzione relativamente al processo Appalto lavori sopra e sotto soglia comunitaria mediante procedura

Vengono adesso create delle pre-combinazioni con lo scopo di creare il carico vento totale agente lungo una direzione sulla tutta la struttura, il carico complessivo

Nel primo capitolo viene illustrato come la regolazione del precarico della sospensione, influisca sull'assetto del veicolo e si presentano alcune delle

Per questo motivo noi di Ubi Maior Diamonds, pur essendo gemmologi qualificati, facciamo analizzare parte delle nostre pietre a enti esterni che, sulla base di