Sistema de control de motores de Corriente Continua
basado en el microcontrolador LM629
Desarrollo del Software
Descripción de los programas

CAPITULO ANTERIOR

ÍNDICE del Capítulo
Sistema de control de motores de Corriente Continua basado en el microcontrolador LM629
Desarrollo del software
Descripción de los programas
Capítulo XI
Desarrollo del Software
Descripción de los programas
A continuación se desarrollan de forma esquemática los módulos de programación imprescindibles para el desarrollo que nos ocupa.
Índice

Comandos de usuario
Los comandos se pueden catalogar según su función:
1. - Iniciación
2. - Interrupciones de Control
3. - Filtros de Control
4. - Trayectorias de Control
5. - Lectura de registros
| COMANDO |
TIPO |
DESCRIPCIÓN |
HEX |
Nº Bytes |
| RESET |
(1) |
RESET LM629 |
00 |
0 |
| PORT8 |
" |
SALIDA 8 BITS |
05 |
0 |
| PORT12 |
" |
SALIDA 12 BITS |
06 |
0 |
| DFH |
" |
DEFINE INICIO |
02 |
0 |
| SIP |
(2) |
FIJA POSICION INDICE |
03 |
0 |
| LPEI |
" |
INTERRUPCION EN ERROR |
1B |
2 |
| LPES |
" |
PARADA EN ERROR |
1A |
2 |
| SBPA |
" |
FIJAR PUERTO DE RUPTURA ABSOLUTO |
20 |
4 |
| SBPR |
" |
FIJAR PUERTO DE RUPTURA RELATIVO |
21 |
4 |
| MSKI |
" |
INTERRUPCION ENMASCARABLE |
1C |
2 |
| RSTI |
" |
INTERRUPCION DE RESET |
1D |
2 |
| LFIL |
(3) |
CARGA DE PARAMETROS DEL FILTRO |
1E |
2 a 10 |
| UDF |
(3) |
ACTUALIZACION DATOS DEL FILTRO |
04 |
0 |
| LTRJ |
(4) |
CARGAR TRAYECTORIA |
1F |
2 a 14 |
| STT |
" |
COMENZAR MOVIMIENTO |
01 |
0 |
| RDSTAT |
(5) |
LEER BYTE DE ESTADO |
-- |
1 |
| RDSIGS |
" |
LEER REGISTROS DE SEÑALES |
0C |
2 |
| RDIP |
" |
LEER INDICE DE POSICIÓN |
09 |
4 |
| RDDP |
" |
LEER POSICION DESEADA |
08 |
4 |
| RDRP |
" |
LEER POSICIÓN REAL |
0A |
4 |
| RDDV |
" |
LEER VELOCIDAD DESEADA |
07 |
2 |
| RDRV |
" |
LEER VELOCIDAD REAL |
0B |
2 |
| RDSUM |
" |
LEER SUMA DE INT. |
0D |
2 |
TABLA 3-6 Lista de comandos de usuario.

Descripción
de los programas
INICIO: Inicialización
ESPERA:
Mantener reset al menos 1.5 milisegundos
LECTURA_SB:
Lectura del Byte de estado
CARGA de COEFICIENTES del FILTRO PID
CARGA de TRAYECTORIA
Decodificación de palabra de control y envío de datos.
CARGA de TRAYECTORIA
DATOS de TRAYECTORIA:
Gestión de interrupciones
Posibles interrupciones del MPID
Al solicitar un RDSTAT, con motivo del envió por parte del MPID de una interrupción, obtenemos la información en el byte de estado compuesta por 8 bits.
De todos ellos, algunos son útiles tan solo en fase de depuración; otros son informativos y el bit 0 (Busy_bit), se utiliza como consulta.
A continuación se hace una breve descripción de cada uno, y se evalúa su uso o su enmascaramiento, con MSKI.
Hay que considerar que el enmascaramiento afecta a la generación o no de la interrupción HI, pero la información se genera en el BYTE en cualquier caso. Salvo el bit 7 y el 0, todos generan interrupción (HI) y se pueden limpiar, bit a bit o en grupo, con RSTI.
Todos son activos en lógica 1.
En definitiva, para una programación normal y ya depurada, solo nos interesa detectar la información de los bits 2, 4, 5 y periódicamente el bit 0.
Podemos enmascarar los bits 1, 3, 6 y 7 y prescindir del comando RDSIGS.
Esto nos deja como significativos en el byte de estado:
Trayectoria completada (bit 2), Desbordamiento (bit 4), Error de posición (bit 5), que pueden ser leídos bit a bit.
Las combinaciones posibles serán:
| MSB |
|
|
|
|
|
|
LSB |
|
| 7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
HEX |
| 0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0h |
| 0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
4h |
| 0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
10h |
| 0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
14h |
| 0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
20h |
| 0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
24h |
| 0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
30h |
| 0 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
34h |
| 1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
80h |
| 1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
84h |
| 1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
90h |
| 1 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
94h |
| 1 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
A0h |
| 1 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
A4h |
| 1 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
B0h |
| 1 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
B4h |
Para nuestro objetivo es suficiente considerar el byte de estado, que leemos y pasamos a acumulador con la subrutina
Bit_b.
Descodificación de interrupciones MPID (HI)
Lectura de corrientes máxima y media
Errores de corriente máxima y media
El programa ocupa unos 220 bytes, 250 aportando espacios de seguridad, e incluyendo los códigos de error del display, es decir 2 kbs, y la memoria dispone de 16 kbs, lo que supone 14 Kbs libres.
El MPID necesita como máximo 9 bytes en cada trayectoria mas 2 bytes para las corrientes estimadas por trayectoria, espaciando, 15 bytes, se pueden programar datos para unas 100 trayectorias, añadiendo un programa que las lea secuencialmente, y tras la depuración de datos y coeficientes de cada una.
/EA a nivel alto, el proesador ejecuta instrucciones desde la EPROM interna hasta 4096 (4Kbytes), y las superiores a externa.
Tratamiento de tablas de datos:

Diagrama de flujo típico


TABLA de ERRORES
La tabla de indicadores de error / información y su tratamiento, si procede, queda como sigue:
| Nº |
SEÑAL |
SIGNIFICADO |
Tratamiento |
| 0 |
Er_0 |
No hay problemas |
N/A |
| 1 |
Er_1 |
Trayectoria completada con éxito |
N/A (Informativo) |
| 2 |
Er_2 |
Error de desbordamiento de datos |
Nueva carga / Inicialización. |
| 3 |
Er_3 |
Error de posición |
Inicialización. |
| 4 |
Er_Imx |
Error corriente máxima |
Reset MPID Reset manual |
| 5 |
Er_Imd |
Error corriente media |
Reset MPID Reset manual |
| 6 |
Er_Tmp |
Temperatura |
Reset.MPID Reset manual |
| 7 |
|
No usado |
N/A |
| 8 |
|
No usado |
N/A |
| 9 |
Er-4 |
Error desconocido |
Reset MPID
Investigar / Reset manual. |
Sistema de control de motores de Corriente Continua basado en el microcontrolador LM629
CREDITOS
(cc) Some Rights Reserved (Algunos derechos reservados). Los diseños expuestos por los diferentes participantes son propiedad de cada uno de ellos, y no pueden usarse para ningún otro fin sin su consentimiento escrito.