2 progettazione del software di sistema
Architettura 2.1μC / OS-II
μC / OS-II è un kernel di sistema operativo multitasking in tempo reale preimpostato, ROM portatile, impiantabile, con elevata efficienza di esecuzione, ingombro ridotto, buone prestazioni in tempo reale e scalabilità. Funzionalità, il kernel più piccolo può essere compilato a 2 KB. μC / OS-II è scritto in linguaggio C e assembly. La maggior parte del codice è scritta in C. Solo alcuni dei codici strettamente correlati al processore sono scritti in linguaggio assembly. μC / OS-II include solo funzioni di base come la pianificazione delle attività, la gestione delle attività, la gestione del tempo, la gestione della memoria, la comunicazione tra le attività e la sincronizzazione.
Assegnazione di compiti nell'ambito del sistema 2.2μC / OS-II
Dopo aver eseguito correttamente il porting del sistema μC / OS-II su STM32F107, la programmazione basata su μC / OS-II viene eseguita dividendo un'applicazione di grandi dimensioni in attività relativamente indipendenti. La priorità di ogni attività è definita e il kernel μC / OS-II pianifica e gestisce queste attività.
L'idea progettuale del software è quella di fornire la velocità del motore e la posizione di guida dello sterzo attraverso la porta seriale in base al funzionamento effettivo del robot. La velocità del motore viene confrontata con il valore impostato dell'encoder incrementale e il controllo a ciclo chiuso viene implementato dall'algoritmo PID di velocità. La posizione dello sterzo è principalmente dovuta al fatto che l'encoder del valore assoluto riporta indietro la posizione corrente e la velocità dello sterzo è regolata in base al tempo di azione richiesto. Le funzioni che devono essere realizzate dal software del sistema di controllo del motore di questo robot di movimentazione sono le seguenti:
◆ La macchina superiore fornisce la velocità del motore, l'angolo di sterzata e il tempo di azione;
◆ Richiede regolazione continua della velocità del motore e buone prestazioni statiche e dinamiche. La velocità non è conteggiata dall'algoritmo PI.
◆ Richiede il meccanismo di governo per raggiungere rapidamente l'angolo specificato e il feedback di posizione viene utilizzato come regolazione della velocità specificata del meccanismo di governo;
◆ Ha una certa funzione di protezione dai guasti. Quando il motore è bloccato, la corrente è troppo grande e lo sterzo tocca il finecorsa, è necessario arrestare il modulo convertitore.
Affinché le funzioni sopra descritte siano implementate, la progettazione dell'applicazione può essere suddivisa nelle seguenti attività:
1 Avviare l'attività. Inizializza il sistema, crea uno stato motore iniziale, quindi elimina se stesso e avvia l'attività in modalità sospensione.
2 compiti di protezione del motore e dello sterzo. Viene utilizzato per rispondere a un interrupt esterno quando viene attivata la sovracorrente o il finecorsa. Quando viene inserito lo stato di interruzione, viene inviato il semaforo dell'attività. Il programma attività rileva che il semaforo è valido e risponde all'attività e interrompe l'emissione. La priorità dell'attività è impostata sul livello 0.
3 compiti assegnati dal computer host. Viene utilizzato per la parte superiore della macchina per controllare il motore e lo sterzo e la priorità dell'attività è impostata sul livello 1. Quando viene generato il registro di input dei dati del computer host, verrà generato un interrupt, che invierà il byte ricevuto buffer e rilasciare il semaforo dell'attività assegnata del computer host; quando viene rilevato il semaforo, l'attività inizierà l'esecuzione e verrà eseguito il byte corrispondente. L'informazione viene analizzata nelle corrispondenti informazioni sulla velocità del motore e sulla posizione della scatola sterzo per assegnare valori alle variabili corrispondenti.
4 task di controllo della velocità del motore. Per la regolazione della velocità del motore a ciclo chiuso, la priorità del compito è impostata sul livello 2.
5 compiti di controllo dello sterzo. Viene utilizzato per controllare il meccanismo di governo per raggiungere la posizione specificata entro il tempo specificato e la priorità del compito è impostata sul livello 3.
2.3 Avviare l'attività
Nel programma principale, prima di chiamare altri task di μC / OS-II, chiamare prima la funzione di inizializzazione del sistema OSInit () per inizializzare tutte le variabili e le strutture dati di μC / OS-II; allo stesso tempo, stabilire l'attività inattiva OS_TaskIdle (), questa attività è sempre È in stato pronto; chiamare la funzione OSTaskCreate () per stabilire l'attività di avvio; chiama OSStart (), trasferisci il controllo al kernel μC / OS-II, inizia a eseguire il multitasking.
L'attività di avvio viene creata nel programma principale, che ha tre funzioni principali:
1 per l'inizializzazione del sistema (modulo di uscita PWM, porta seriale, modulo ADC, funzione di interruzione del livello di ingresso, timer).
2 Stabilire la quantità di segnale utilizzato dal sistema.
3 stabilire altri compiti del sistema.
Infine, chiama OSTaskDel (OS_PRIO_SELF) per cancellarsi e avviare l'attività in modalità sospensione. Il flusso delle attività del programma principale è mostrato in Figura 4.
2.4 compito di controllo della velocità del motore
Ogni volta che l'encoder incrementale genera un interrupt esterno, il semaforo dell'attività viene emesso nello stato di interruzione. Il programma di attività rileva che il semaforo è valido e risponde all'attività. Il task realizza il controllo ad anello chiuso misurando la velocità attuale del motore e il dato confronto di velocità. Il flusso del task di controllo della velocità del motore è mostrato in Figura 5.
2.5 compito di controllo dello sterzo
Il servocontrollo genera un tempo di riferimento con un timer, invia un semaforo ogni tempo fisso e l'attività verrà eseguita una volta. Il task di controllo servo confronta la posizione misurata dall'encoder assoluto con la posizione data e regola la velocità del servo in base al tempo rimanente. Il flusso del task di controllo servo è mostrato in Figura 6.
3 interfaccia elettromeccanica di sistema
Il meccanismo di governo del robot è costituito da un riduttore 30: 1 collegato al motore CC. L'encoder di posizione assoluto è collegato alla scatola dello sterzo e invia il segnale dell'angolo dello sterzo alla scheda di controllo del convertitore. I due alberi della ruota anteriore del robot sono collegati da un'asta di trasmissione. Uno degli alberi è collegato allo sterzo tramite una cinghia di trasmissione, in modo che quando la ruota sterzante gira, la cinghia di trasmissione guida l'asta di trasmissione per garantire che le due ruote anteriori possano ruotare in modo sincrono. Il motore di trazione posteriore è un motore a corrente continua, che è collegato direttamente all'encoder incrementale. Dopo che il rapporto di riduzione viene ridotto di un riduttore 25: 1, la ruota posteriore viene azionata dal differenziale meccanico. Anche i segnali dall'encoder incrementale vengono inviati alla scheda di controllo del convertitore. La struttura del sistema elettromeccanico è mostrata in Figura 7.
Conclusione
In questo documento, viene realizzato il design del motore e del servo controller hardware del robot di movimentazione. Il sistema operativo in tempo reale μC / OS-II viene integrato con successo su STM32F107 e l'esperimento di velocità in anello chiuso del motore e dello sterzo è completato. Utilizzando le caratteristiche delle prestazioni multi-task in tempo reale del controller core Cortex-M3 e del sistema μC / OS-II, fornisce una base software e hardware per la successiva acquisizione di immagini video robot e tracciamento della navigazione. Se l'algoritmo PI esistente viene migliorato e possono essere realizzati il controllo della velocità e della corrente a doppio anello del motore, le caratteristiche del motore del robot saranno migliori e la prospettiva applicativa del robot di manipolazione sarà più ampia.





