2 disseny del programari del sistema
2.1μC / OS-II arquitectura
μC / OS-II és un nucli de sistema operatiu multiplataforma portàtil, implantable en ROM en temps real, que es pot cultivar, amb alta eficiència d'execució, petita empremta, bon rendiment en temps real i escalabilitat. Característiques, el nucli més petit es pot compilar a 2 KB. μC / OS-II està escrit en C i en el llenguatge de muntatge. La major part del codi s'escriu a C. Només uns quants del codi estretament relacionat amb el processador estan escrits en llenguatge de ensamblat. μC / OS-II només inclou funcions bàsiques com ara programació de tasques, gestió de tasques, gestió del temps, gestió de memòria, comunicació entre tasques i sincronització.
Tasca de tasques sota el sistema 2.2μC / OS-II
Després de portar amb èxit el sistema μC / OS-II a STM32F107, la programació basada en μC / OS-II es realitza dividint una gran aplicació en tasques relativament independents. La prioritat de cada tasca es defineix i el kernel μC / OS-II programa i gestiona aquestes tasques.
La idea de disseny de programari és donar a la velocitat del motor i la posició de direcció de l'engranatge de direcció a través del port sèrie d'acord amb el funcionament real del robot. La velocitat del motor es compara amb el valor establert del codificador incremental i el control de circuit tancat s'implementa mitjançant l'algoritme PID de velocitat. La posició de l'engranatge de direcció és principalment que el codificador de valor absolut retorna la posició actual i la velocitat de l'engranatge de direcció s'ajusta segons el requisit del temps d'acció. Les funcions que ha de realitzar el programari del sistema de control del motor d'aquest robot manipulador són les següents:
◆ La màquina superior proporciona la velocitat del motor, l'angle de direcció i el temps d'acció;
◆ Requereix un ajust continu de la velocitat del motor i un bon rendiment estàtic i dinàmic. La velocitat no s'explica per l'algoritme PI.
◆ Necessita que l'engranatge d'orientació arribi ràpidament a l'angle especificat i s'utilitzi la retroalimentació de posició com a ajust de la velocitat determinada de l'engranatge de direcció;
◆ Té una certa funció de protecció d'errors. Quan el motor està bloquejat, el corrent és massa gran, i l'equip de direcció toca l'interruptor de límit, és necessari per aturar el mòdul d'accionament.
Per implementar les funcions anteriors, el disseny de l'aplicació es pot dividir en les tasques següents:
1 Comença la tasca. Inicialitzeu el sistema, creeu un estat inicial del motor, suprimiu-lo i inicieu la tasca per dormir.
2 tasques de protecció de marxes motor i de direcció. S'utilitza per respondre a una interrupció externa quan l'interruptor de sobrecàrrega o límit està activat. Quan s'introdueix l'estat d'interrupció, s'envia el semàfor de tasques. El programa de tasques detecta que el semàfor és vàlid i respon a la tasca i s'atura la sortida. La prioritat de la tasca s'estableix al nivell 0.
3 tasques assignades per ordinador amfitrió. S'utilitza per a la màquina superior per controlar el motor i l'engranatge de direcció, i la prioritat de la tasca s'estableix al nivell 1. Quan es genera el registre d'entrada de dades de l'equip host, es generarà una interrupció que enviarà el byte rebut a la buffer i allibera el semàfor de la tasca donada de l'ordinador amfitrió; quan es detecta el semàfor, la tasca començarà a executar i s'executarà el corresponent byte. La informació s'analitza en la velocitat del motor corresponent i la informació de la posició del marge de direcció per assignar valors a les variables corresponents.
4 tasques de control de la velocitat del motor. Per a la regulació de la velocitat del circuit tancat del motor, la prioritat de la tasca s'estableix al nivell 2.
5 tasques de control d'engranatges. S'utilitza per controlar l'engranatge de direcció per arribar a la posició especificada dins del temps especificat i la prioritat de la tasca s'estableix al nivell 3.
2.3 Comença la tasca
En el programa principal, abans de trucar a altres tasques de μC / OS-II, primer crideu la funció d'inicialització del sistema OSInit () per inicialitzar totes les variables i estructures de dades de μC / OS-II; al mateix temps, estableixi la tasca inactiva OS_TaskIdle (), aquesta tasca és sempre Està en estat preparat; truqueu a la funció OSTaskCreate () per establir la tasca d'inici; truqueu a OSStart (), transfereix el control al nucli μC / OS-II, comença a executar la multitarea.
La tasca d'inici es crea en el programa principal, que té tres funcions principals:
1 per a la inicialització del sistema (mòdul de sortida PWM, port sèrie, mòdul ADC, funció d'interrupció de nivell d'entrada, temporitzador).
2 Estableix la quantitat de senyal utilitzada pel sistema.
3 estableixi altres tasques del sistema.
Finalment, truqueu a OSTaskDel (OS_PRIO_SELF) per esborrar-se i començar la tasca a dormir. El flux de tasques del programa principal es mostra a la figura 4.
2.4 tasca de control de la velocitat del motor
Cada vegada que el codificador incremental genera una interrupció externa, el semàfor de tasques s'emet a l'estat d'interrupció. El programa de tasques detecta que el semàfor és vàlid i respon a la tasca. La tasca realitza el control de circuit tancat mitjançant la mesura de la velocitat del motor actual i la comparació de la velocitat determinada. El flux de tasques de control de velocitat del motor es mostra a la Figura 5.
2.5 tasca de control de marge d'adreça
El control servo genera un temps de referència per un temporitzador, envia un semàfor cada temps fix, i la tasca s'executarà una vegada. La tasca de control de servitud compara la posició mesurada pel codificador absolut amb la posició donada i ajusta la velocitat del servó segons el temps restant. El flux de tasques de control de servitud es mostra a la figura 6.
3 interfície electromecànica del sistema
L'engranatge del robot consisteix en un reductor 30: 1 connectat al motor DC. El codificador de posició absolut està connectat a l'engranatge de direcció i envia el senyal d'angle de l'engranatge de direcció al tauler de control de la unitat. Els dos eixos de la roda delantera del robot estan connectats per una vareta de transmissió. Un dels eixos està connectat a l'engranatge de direcció mitjançant un cinturó de transmissió, de manera que quan l'engranatge de rotació gira, la corretja de transmissió acciona la vareta de transmissió per garantir que les dues rodes davanteres puguin girar de forma sincrònica. El motor de tracció posterior és un motor de corrent continu que es connecta directament amb el codificador incremental. Una vegada que la reducció es redueix mitjançant un reductor de 25: 1, la roda posterior es condueix pel diferencial mecànic. Els senyals del codificador incremental també s'envien al tauler de control de la unitat. L'estructura del sistema electromecànic es mostra a la figura 7.
Conclusió
En aquest article, es realitza el disseny del maquinari del motor i servomotor del robot de manipulació. El sistema operatiu en temps real μC / OS-II s'incorpora amb èxit a la STM32F107, i es completa l'experiment de velocitat de circuit tancat del motor i l'engranatge de direcció. Utilitzant les característiques del rendiment en temps real de múltiples tasques del controlador Core-Cortex-M3 i el sistema μC / OS-II, proporciona una base de programari i maquinari per a la posterior captura de vídeo d'imatge robot i rastreig de navegació. Si es millora l'algorisme PI existent i es pot realitzar la velocitat del motor i el control doble de doble tancament actual, les característiques del motor robot seran millors i la perspectiva d'aplicació del robot de manipulació serà més àmplia.





