JAPM 2010
 

anterior / previousDescripción de programas  siguiente / next

Descripción de programas.
Comandos de usuario.
Los comandos se pueden catalogar según su función:



Tipo 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 # Bytes
RESET 1 RESET LM629 00 0
PORT8 1 SALIDA 8 BITS 05 0
PORT12 1 SALIDA 12 BITS 06 0
DFH 1 DEFINE INICIO 02 0
SIP 2 FIJA POSICION INDICE 03 0
LPEI 2 INTERRUPCION EN ERROR 1B 2
LPES 2 PARADA EN ERROR 1A 2
SBPA 2 FIJAR PUERTO DE RUPTURA ABSOLUTO 20 4
SBPR 2 FIJAR PUERTO DE RUPTURA RELATIVO 21 4
MSKI 2 INTERRUPCION ENMASCARABLE 1C 2
RSTI 2 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 4 COMENZAR MOVIMIENTO 01 0
RDSTAT 5 LEER BYTE DE ESTADO -- 1
RDSIGS 5 LEER REGISTROS DE SEÑALES 0C 2
RDIP 5 LEER INDICE DE POSICIÓN 09 4
RDDP 5 LEER POSICION DESEADA 08 4
RDRP 5 LEER POSICIÓN REAL 0A 4
RDDV 5 LEER VELOCIDAD DESEADA 07 2
RDRV 5 LEER VELOCIDAD REAL 0B 2
RDSUM 5 LEER SUMA DE INT. 0D 2
TABLA 3-6 Lista de comandos de usuario.
anterior / previous

Descripción de los programas
Módulos principales

siguiente / next
ÍNDICE del PROYECTO
Inicio:
Inicialización del sistema.

 
 

Instrucción Comentario
Inicio: MOVX @RST,LOW Envía reset
CALL Delay_15 Espera 1.5 mseg
CALL Bit_b Lectura del byte de estado
SUBB A,#C4h ACC-C4h C4h=1100 010 0
JNC Cnt Si la diferencia es 0, ve a Continua...
CALL Bit_b Lectura del byte de estado
SUBB A,#84h ACC-84h 84h=1000 010 0
JNC Cnt Si la diferencia es 0, ve a Continua...
JMP Inicio ... si no, vuelve a Inicio
Cnt: CALL Bit_b  
MOVX @P0,RSTI Envía clear interrupciones al MPID
CALL Bit_b Lectura del byte de estado
SUBB A,#C0h ACC-C0h C0h=1100 000 0
JNC Fin Si la diferencia es 0, ve a Fin
CALL Bit_b Lectura del byte de estado
SUBB A,#80h ACC-80h 80h=1000 000 0
JNC Fin Si la diferencia es 0, ve a Fin ...
JMP Inicio ... si no, vuelve a inicio
Fin: RET  

 

Comentarios:
Nótese que en todas las comparaciones el Bit_busy es 0.

CNAM Loyola Aranjuez

 
ÍNDICE del PROYECTO
ESPERA:
Mantener reset al menos 1.5 milisegundos.

 
 

Instrucción Comentario
Delay_15  
MOV TL1,#TL1 Precarga inferior contador
MOV TH1,#TL1 Precarga superior contador
SETB ET1 Habilita interrupción de contador
SETB PT1 Da prioridad 1
CALL Bit_b Lectura del byte de estado
SETB TR1 Comienza la cuenta
ORL PCON,1 Modo bajo consumo
CLR TR1 Para contador
CLR PT1 Desactiva prioridad
CLR ET1 Deshabilita interrupción
RET  
Fin: RET  

 

Comentarios:
Durante el delay, se pasa a modo IDLE, bajo consumo, porque la única operación es contar.
Obtención de la precarga.
Precarga = osc (Khz)
* Tiempo espera (msg) / 12

CNAM
 
ÍNDICE del PROYECTO
LECTURA_SB:
Lectura del Byte de estado.

 
 

Instrucción Comentario
Bit_b: MOVX @CS,LOW  
MOVX @PS,LOW Pon a 0 TTL /CS Y /PS
MOVX A,@ P0 Lee PUERTO 0
JB @B0,Bit_b Si B0 es diferente de 0, repite
RET MPID no ocupado

 

Comentarios:

La instrucción "hardware" RDSTAT se ejecuta poniendo a 0 TTL /CS, /PS y /RD, pero en MOVX está implícito /RD a 0 TTL.

Por otro lado, se pasa a Acumulador el byte entero, aunque se usa solo el Bit_busy, para poder utilizar la información acumulada posteriormente.

El programa se asegura de que el MPID no está ocupado.
 


CNAM Loyola Aranjuez
 
ÍNDICE del PROYECTO
Flt_pid:
CARGA de COEFICIENTES del FILTRO PID.

 
 

Instrucción Comentario
Flt_pid: CALL Bit_b Lectura byte de estado
MOVX @P0,LFIL Envía comando LFIL al MPID
CALL Bit_b Lectura byte de estado
MOVX @P0,P_c Envía palabra de control al MPID
CALL C_pid Envía coeficientes al buffer primario
CALL Bit_b Lectura byte de estado (OPCIONAL)
MOVX @P0,UDF Actualiza datos del filtro (OPCIONAL)
RET  

 

Comentarios:

La descripción de comandos, coeficientes y palabras de control
se explican en otro apartado.
Las líneas opcionales se deben a que se puede proceder a la carga inmediatamente, o mantenerlas guardadas en buffer primario del MPID para actualizar con UDF con posterioridad, mientras el µC realiza otra tarea.

CNAM
 
ÍNDICE del PROYECTO
Try:
CARGA de TRAYECTORIA

 
 

Instrucción Comentario
Try: CALL Bit_b Lectura byte de estado
MOVX @P0,LTRJ Envía comando LTRJ al MPID
CALL Bit_b Lectura byte de estado
MOVX @P0,P_c Envía palabra de control al MPID
CALL T_try Envía datos de trayectoria al buffer primario
CALL Bit_b Lectura byte de estado (OPCIONAL)
MOVX @P0,STT Inicia trayectoria (OPCIONAL)
RET  

 


Comentarios:

Las líneas opcionales, como en el filtro PID, se deben a que se puede proceder al arranque inmediatamente, o mantener los datos guardados en buffer primario del MPID para arrancar con STT con posterioridad, mientras el µC realiza otra tarea.

CNAM Loyola Aranjuez
 
ÍNDICE del PROYECTO
T_try:
DATOS de TRAYECTORIA: Decodificación de palabra de control y envío de datos.

 
 

Instrucción Comentario
T_try: JB B5,Bit_3 Si bit 5 = 0 salta a Bit_3
CALL Bit_b Lectura byte de estado
MOVX @P0,Ac Envía dato de aceleración
Bit_3: JB B3,Bit_1 Si bit 3 = 0 salta a Bit_1
CALL Bit_b Lectura byte de estado
MOVX @P0,Vel Envía dato velocidad
Bit_1: JB B1,Bit_0 Si bit 1 = 0 salta a Bit_0
CALL Bit_b Lectura byte de estado
MOVX @P0,Pos Envía dato posición
Bit_0: RET  

 


Comentarios:

Puede no ser enviado ningún dato.

CNAM

CNAM Loyola Aranjuez

anterior / previous

IV
Posibles interrupciones del MPID

siguiente / next

ÍNDICE del PROYECTO
Solicitud de RDSTAT

 
 

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.

Bit 7: Motor apagado. Se pone a 1 lógico cuando el motor se apaga. Esto sucede al enviar un reset, por un excesivo error de posición si se envió LPES, o si se usa LTRJ en una parada manual.
El comando de arranque STT limpia el bit (lo pone a cero).
No genera interrupción, luego será sólo consultivo.
Esta información se encuentra también en bit 2.
Bit 6: Breakpoint alcanzado. Se pone a 1 lógico al alcanzar una posición prefijada por SBPA o SBPR.
Se usa en depuración. No lo vamos a considerar y será enmascarado.
Bit 5: Error de posición excesivo.
Viene determinado en sus limites por los comandos LPEI o LPES.
 Bit 4: Desbordamiento numérico.
Sucede al excederse la capacidad de posición de datos en los cálculos en modo velocidad.
La información almacenada será errónea, y se debe corregir.
La solución será volver a una situación preestablecida y reiniciar o, si se repitiera, modificar los datos.
Bit 3: Llegada de pulso índice. Se activa si se envió SIP.
Se utiliza en depuración. Será enmascarado.
Bit 2: Trayectoria completada.
Indica el fin con éxito de los comandos de trayectoria LTRJ, STT.
Se usará para verificar el fin correcto.
Es la OR de los bits 7 y 10.
Bit 1: Error de comando.
Cuando se intenta leer datos y procede una escritura o viceversa.
Sólo se usará en depuración.
Bit 0: Ya descrito en otros apartados, indica cuándo es o no posible la comunicación con el MPID, y se usa continuamente.
No genera interrupción.

Además, mediante el comando RDSIGS, obtenemos información adicional, que no genera interrupción HI:


Los bits 1 a 7 replican el byte de estado.
El bit 0 se activa al enviar un comando SIP.

Bit 8: Modo salida de 8 o 12 bits.
No es aplicable en nuestro modelo.
Bit 9: Apagado en caso de error de posición excesivo.
Se activa al ejecutar LPES y lo limpia LPEI. Solo útil en depuración.
Bit 10: Indica objetivo cumplido tras enviar STT.

 Esta información se encuentra en bit 2.

 Bit 11: Modo velocidad. Indica esta selección.
No es aplicable en nuestro modelo, porque el control va a ser automático, resultando un dato inútil.
Bit 12: Forward Direction. Solo en modo velocidad. Informativo.
Bit 13: Ejecutado UDF. Indica actualización de coeficientes del filtro, sin ejecución.
Aplicable sólo en depuración.
Bit 14: Aceleración cargada, pero no ejecutada. Caso similar al bit 13.
Bit 15: "Host Interrupt". (HI). Es redundante, en "software" de la señal HI.

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.



 

CNAM


anterior / previous

V
Decodificación de interrupciones MPID (HI)

siguiente / next
ÍNDICE del PROYECTO
Este módulo verifica y analiza las interrupciones de estado, y actúa en consecuencia.
Tamaño aproximado 34 bytes.

 
 

Instrucción Comentario
I_MPID: CALL Bit_b Ejecuta Busy_bit; acumulador cargado con puerto 0.
MOVX @P1,Er_4  Envía al puerto 1 (display) mensaje de error desconocido.
MOV B,A  Pasa la información del acumulador al registro B.
CALL Bit_b
MOVX @P0,RSTI  Envía clear interrupciones al MPID
MOV A,B  Carga acumulador con registro B (byte de estado)
JB @B2,E0  Si bit 2 es cero salta a E1.
MOVX @P1,Er_1 Envía al puerto 1 (display) mensaje de trayectoria completada.
RET  Vuelve a programa principal. No hay opción de 4 o 5.
E1: JB @B4,E2  Si bit 4 es cero, salta a E2.
MOVX @P1,Er_2
Envía al puerto 1 (display) mensaje de error de desbordamiento.
JB @B5,E2 Verifica si esta activado error de posición.
JMP Flt_pid Si no, salta a cargar datos de nuevo.
E2: JB @B5,E3 Si bit 5 es cero salta a E3.
MOVX @P1,Er_3 Envía al puerto 1 (display) mensaje de error de posición
E3: MOVX @RST, LOW Envía reset al MPID
HALT Detén programa; espera RESET general manual. Reinicio.
JMP Inicio

 


Comentarios:

Primero se pasa a registro B la información del byte de estado, porque el acumulador va a ser usado de nuevo, y queremos antes que nada limpiar las interrupciones.

Luego se devuelve la información al acumulador para operar y se envía al display mensaje de error desconocido, que se modificara solo si aparece otro identificado.

Si la interrupción se produjo por trayectoria completada, se excluyen las otras y no queda sino retornar a programa principal, indicando en display la incidencia.

Si se activo por desbordamiento, primero se verifica si se ha activado también error de posición, lo que resetea el sistema.

En otro caso se repite la operación de carga de datos y arranque, reflejando la incidencia en display.

Puede suceder que se repita el error:

Si no se activa otra interrupción al repetir, se trata de la introducción de datos erróneos en la grabación del chip o en los cálculos.

Si se activó error de posición o no sabemos cuál es la causa de la interrupción, se envía el mensaje al display y en ambos caso se resetea el MPID.

Si permanece activado el error desconocido, se debe investigar la causa antes de continuar.

Índice / Index

anterior / previous

VI
Lectura y errores de corrientes máxima y media

siguiente / next
ÍNDICE del PROYECTO
Los siguientes módulos leen las corrientes máxima y media y envian el correspondiente código de error, cuando procede.

Lectura de las corrientes

(21 bytes)
 
 

Instrucción Comentario
Lee_I: MOVX A,@P2  Lee PUERTO 2, Imax y pasa a acumulador (ACC)
SUBB A,#Imax  ACC-Imaxima; diferencia lectura y valor prefijado
JNB AC,I_med Si bit AC en PSW es 1 (negativo) I máxima correcta, lee I media
CALL EI_max si es 0 (positivo), llama a error Imaxima.
I_med: MOVX @ADS,LOW escribe 0 en ADS (P1.0) para direccionar el A/D en I media
MOVX A,@P2 Lee PUERTO 2, Imed y pasa a acumulador (ACC)
SUBB A,#Imed ACC-Imedia; diferencia lectura y valor prefijado
JNB AC,Fin Si bit AC en PSW es 1 (negativo) I media correcta, acaba.
CALL EI_med si es 0 (positivo), llama a error Imedia.
Fin: MOVX @ADS, HIGH  Escribe 1 en ADS (P1.0) para direccionar el A/D en I max.
RET Retorno a programa principal.

Errores

Error de corriente máxima



Instrucción Comentario
EI_max: MOVX @RST,LOW Envía reset al MPID
MOVX @P1,Er_Imx Envía al puerto 1 (display) mensaje de error de I máxima.
HALT Detén programa; espera RESET general manual. Reinicio.
JMP Inicio

Error de corriente media



Instrucción Comentario
EI_med: MOVX @RST,LOW  Envía reset al MPID
MOVX @P1,Er_Imd  Envía al puerto 1 (display) mensaje de error de I media.
HALT  Detén programa; espera RESET general manual. Reinicio.
JMP  Inicio

 

Comentarios:

Preseleccionado por "hardware" el convertidor A/D en lectura de I máxima, se toma la lectura y se compara con la grabada en la posición Imax.

Se consulta el bit AC de la palabra de estado (PWS) para ver si la bandera de acarreo indica positivo, lo que significaría que la lectura es mayor que la prefijada y por tanto esta fuera de tolerancia.

 En este caso, se envía el programa a secuencia de error de Imaxima.

 Si el acarreo es negativo, I máxima correcta, se selecciona en A/D la salida de Imedia y se procede igual que en el caso anterior.

Si ambas son correctas, se vuelve a seleccionar A/D en I máxima para siguiente lectura, y se vuelve a programa principal.


Comentarios:

En ambos casos, se resetea el MPID, se envía el mensaje de error correspondiente al display y se detiene el programa, para reiniciar con RESET general manual cuando el operador lo estime.

Con reset el programa se reiniciará en la posición Inicio; la última línea es una precaución.

Índice / Index

   
anterior / previous

VII
Tratamiento de tablas de datos

siguiente / next
ÍNDICE del PROYECTO
Se apunta la manera de programar un bucle para transferir y almacenar datos.

 

La instrucción MOV DPTR#, datos, de 16 bits, permite transferir datos de 16 bits desde memoria EPROM interna o externa.
 
DPTR es el puntero de datos que se controla con un bucle contador para obtener la cantidad de datos y en la posición que queramos.

El bucle se establece mediante una constante de inicio de tabla y una instrucción del tipo:

MOV A,@A+ DPTR  Lee memoria de programa en A+DPTR. Carga en Acumulador.

O bien usando el PC (Program Counter) para indicar la dirección base de la tabla:

MOV A,@A+PC   Lee memoria de programa en A+PC.

 Carga en Acumulador.



CNAM Ira al índice
   
anterior / previous

VIII
Consideraciones finales

siguiente / next
ÍNDICE del PROYECTO
Consideraciones sobre el volumen de software necesario y su soporte físico, hardware.

 

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.


Con /EA a nivel alto, el procesador ejecuta instrucciones desde la EPROM interna hasta 4096 (4Kbytes), y las superiores a externa, por si fuera necesario ampliar el volumen de la memoria con un soporte externo, o bien derivar datos del historial del funcionamiento en periodos de tiempo programados.



CNAM Ira al índice
   
anterior / previous

IX
Diagrama de flujo típico

siguiente / next
ÍNDICE del PROYECTO
Diagrama de flujo del programa:

 

Diagrama de flujo
CNAM Loyola Aranjuez
   
anterior / previous

X
Tratamiento de errores. Tabla de errores.

siguiente / next
ÍNDICE del PROYECTO
La tabla de indicadores de error / información y su tratamiento, si procede, queda como sigue:

 
 
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.
 
CNAM Ira al índice


anterior / previousCréditos / semblanza Breve


ÍNDICE del PROYECTO

Sistema de control de motores de Corriente Continua basado en el microcontrolador LM629

PROYECTO para la obtención del Título de BACHILLERATO + 4 DE CNAM FRANCIA

Proyecto PDF

PROYECTO Versión PDF


Juan Antonio Pizarro Martín
Julio Martín Rodríguez
Ángel Puerta Rubio

Perfil Profesional

J. Sereira - El turiferario

e-mail


Sereira: La mano de la diosa           ISBN 13: 978-84-96621-63-3


Sereira: La mano de la diosa

El autor, Juan Antonio Pizarro Martín.

Nacido en Madrid pero residente en Aranjuez desde siempre, disfruto de esta población privilegiada por sus jardines y sus sotos, como lo hará cualquiera que se acerque por aquí; y no puedo evitar hacerlo notar en mis escritos.
No hay mucho más de notable para el público en mi biografía, salvo que interese saber que nací en el 59 del siglo pasado, bajo el signo de Sagitario.

Y que la novela se la dedico a mis padres y también a Maite y Magda, por haber sido tan pacientes conmigo.


Igualmente he de agradecer el poema prólogo a Marcela Vanmak.

Y por supuesto a mi amigo Luis Tobalina, autor del dibujo de la portada.

Sinopsis

Juan T. Volta, escritor de relativo éxito, está secretamente instalado en Aranjuez donde trabaja en su última novela.
Su rutinaria vida se ve rota por la aparición de un e-mail firmado por “Sereira”.
Sereira resulta ser Eugène, una joven atractiva e inquieta que le dice a Juan que “tiene la marca”, y a la que Juan cree tan sólo porque ella luce un buen cuerpo y parece interesada en él.
Sus actividades les llevaran como un torbellino a meterse de lleno en una historia de puertas estelares, extrañas apariciones e intereses en que Juan aprenderá a ver las cosas de otro modo, mucho menos cínico, y donde todo se resolverá al final en una fuente de Aranjuez, en la mano de la Diosa.

Juan Antonio


 
Créditos


Perfil Profesional
en Facebook
Creative Commons License
e-mail


Índice

Página principal / home
ÍNDICE del PROYECTO