S.E.P. S.E.I.T. . D.G.I.T. CENTRO NACIONAL DE INVESTIGACI~N Y DESARROLLO TECNOL6GICQ 18 I ’, i cenidet “SISTEMA DIGITAL DE PROCESAMIENTO CONCURRENTE ORIENTADO A APLICACIONES EN TIEMPO REAL” 1 I 1 TESIS PARA OBTENER EL GRADO DE MAESTRO EN CIENCIAS EN INGENIERIA ELECTRONICA P R E S E N T A: I’ 1/ SISTEMA NACIONAL DE INSTITUTOS TECNOLÓGICOS Centro Nacional de Investigación y Desarrollo Tecnológico Cuernavaca, Moreloc a 31 de julio de 1998 Ing. Javier Reyes Sánchez Candidato al grado de Maestro en Ciencias en Ingeniería Electronica Presente Despues de haber sometido a revision su trabajo final de tesis titulado: “SISTEMA DIGITAL DE PROCESAMIENTO CONCURRENTE ORIENTADO A APLICACIONES EN TIEMPO REAL”, y habiendo cumplido con todas las indicaciones que el jurado revisor de tesis le hizo, le comunico que se le concede autorización para que proceda a la impresión de la misma. como requisito para la obtención del grado. Reciba un cordial saludo / C.C.P.: Ing. Jaime Rosas ÁIvaredJefe de Servicios Escolares Expediente dinwarism Institutos Tecnológicos 50 años de educación superin: lecnc. ‘Ógica en México _- . APARTADO POSTAL 5-164. CP 62051. CUERNAVACA. MOR. MEXICO. TELS. (73’ EMAIL Cenidell @infosei.nei.mr 7 6 1 3 . Fr I: (73)i z 2434 - li I S.E.1.T S.E.P. S.N.1 T I - CENTRO NACIONAL DE INVESTIGACION Y DESARROLLO TECNOLOGICO 1 cenidel ACADEMIA DE LA MAESTRIA 8 EN E L E C T R ~ N I C A 1 FORMAR11 ACEPTACION DEL TRABAJO DE TESIS I I Dr. Juan Manuel Ricaño Castillo Director del cenidet Presente 1 f Cuernavaca. Mor. a 3 1 de julio de 1998 At’n. Dr. Jaime E. Arau Roffiel Jefe del Depto. de Electrónica I 1 i I Después de haber revisado el trabajo, de tesis titulado: “Sistema digital de procesamiento concurrente orientado a aplicaciones.en I tiempo real”, elaborado por el alumno Javier Reyes Sánchez. bajo la dirección del M.C., José Martin Gómez López, el trabajo presentado se ACEPTA para proceder a su impresión.; ATENTAMENTE , C.C.P.: I I Javier Meneses Ruíz M.C. Javier Meneses Ruíz/ Pdte, de la Academia de Electrónica I Ing. Jaime Rosas Álvarez / Jefe,del Depto. de Servicios Escolares Expediente. ! i I ! cenidet/ Interior Internado Palmira SR.I C.1’. 62490 Apanado Postal 5.164. C,P. 62050. Cuernavaca Mor.. Mexico Tels. (73) 18-77-41 ! 12-76-13. Fav. 12-24-34 ~ I Dedico mi trabajo y mi esfuerzo I; ~ I A Dios y a Dios en el Hombre A mipadre José Carmelo Reyes Franco A mi madre Catalina Sánchez Muñiz Graciaspor darme la oportunidad y creer en mi ~ 1 I ¡I 1 Agradecimientos: Agradezco a mi familia por todo el apoyo que me han brindado a lo largo de todos estos años. A mis padres. A mis hermanos: Miguel, Arturo, Lucha, Daniel, Lety, Chayo, Silvia y a los agregados y agregadas culturales. En especial a Lety por su apoyo al inicio de m i s estudios. Agradezco a la Secretaría de Educación Pública (SEP), al Consejo Nacional de Ciencia y Tecnología (CONACYT) y al Centro Nacional de Investigación y Desarrollo Tecnológico (CENIDET), por el apoyo recibido para la realización de mis estudios. Ai M.C. José Martin Gómez López por su asesoría y por su esfuerzo para la realización de este trabajo. A los profesores: M.I. Hugo Calleja, M.C. Carlos Ramírez y M.C. Javier Meneses, por sus aportaciones realizadas. A mis compañeros del depa: Aido, Nacho y Rafa, gracias por saber ser los mejores amigos. A mis amigos y compañeros de generación: Adriana “ACTA’ A., Leobardo C., Jaime O., Enrique R., David A. y Liliana T. A la señora Maria Elena, Mario Moreno, Alfred0 Gonzalez y Mayra Correa por su apoyo y su amistad mostrada a lo largo de este tiempo. Ai Dr. Sergio A. Horta Mejía por haber gestado la idea original de esta tesis A mis amigos: Claudia Ibarra, Sandra Aguilar, Ricardo Carrillo, Javier h a , Julio C. Sosa, Alberto Rueda, Andrea Magadán, Alfonso May, Edson Peralta, Boris, Angel, Alex e Hilmara, Huante. A todos los que he olvidado mencionar les debo una disculpa, pero no bastan unas cuantas líneas para manifestar todo el agradecimiento que siento en este momento. Y para cerrar con broche de oro quiero agradecer a una persona muy especial, que con sus atenciones, cariño, dedicación, comprensión y apoyo, se ha convertido en una parte muy importante de mi vida: Ldí: Gracias. Te amo. , 1/ l. 1; ,, li Tabla de contenido. Tabla de figuras. VI j 'i I! 11 Introducción. vm Antecedentes. Objetivo. ¡I " i: ', M X Metas de diseño. Contenido. Capítulo 1. Sistemas de procesamiento concurrente. 1.1 Generalidades. 1.1 1.2 Software operativo. 1.1 1.2.1 Sistemas de tiempo real. 1.2 1.2.2 Sistemas concurrentes. 1.2 1.3 1.3 Núcleo del sistema operativo. Ij I I II ,I I! ! I\ I! I1 I! IjI 1.3.1 Elementos del sistema operativo. 1.3 1: 1.3.2 Procesos. 1.5 1! 1.4 Gestión de procesos. 1.5 I! 1.5 Comunicación y sincronización entre procesos. 1.6 1.6 Manejo de los elementos de hardware. 1.6 \ I! I 1.7 Manejo de interrupciones. 1.8 Aplicaciones de control en tiempo real. 'I Capítulo 2. Descripción del sistema. 2.1 Introducción. I/ i 1: 2.2 Descripción del sistema. 2.1 2.1 2.3 Módulo de procesamiento concurrente. 2.2 /i 2.3.1 Descripción funcional del módulo de procesamiento. 2.3 I! 2.3.2 Consideraciones del módulo de procesamiento. 2.4 2.3.3 Descripción general del hardware. 2.4 2.3.4 Descripción general del software. 2.5 2.3.4.1 Software operativo. 2.6 2.3.4.2 Software de aplicación. 2.7 I I ,/ ij I1 , !' 2.3.5 Características del módulo de procesamiento. 2.4 Descripción de los procesos físicos controlados. 2.4.1 Periodo de muestreo. I 2.7 'I 2.8 I' 1, 2.8 1; 1' 2.9 2.4.2 Simulación de los procesos. Capítulo 3. Desarrollo del hardware. 3.1 Introducción. j II 3.1 I! II 3.2 Diseño del módulo de procesamiento. 3.1 3.2.1 Submódulo de procesamiento. 3.1 3.2.2 Submódulo de memoria. 3.2 3.2.3 Lnterfaz de entradashalidas analógicas. 3.3 3.2.4 Interfaz local. 3.4 ,I 3.2.5 Interfaz serie. 3.5 I1 3.2.6 Interfaz E/S digitales. 3.5 3.2.7 Generadores de PWM. 3.6 3.2.8 Fuentes de alimentación. 3.1 '1 3.7 11 3.3 Mapa de memoria. 3.3.1 Direccionamiento de los submódulos. 1 lj 'I I li1 I, I; 3.8 , I! 3.9 3.4 Diagrama eléctrico del circuito. !j Capítulo 4. Desarrollo del software. /I 4.1 Organización del software. 4.1 4.2 Desarrollo del software operativo. 4.1 . , '1 '/ 4.2 'i 4.2.1 Núcleo del software operativo. 1, 4.2 4.3 Inicialización del sistema. li 4.2 ,I 4.4 Gestión de procesos. 4.4.1 Elementos del software. 4.3 4.4.2 Elementos en la gestión de procesos. 4.3 4.4.3 Planificador. 4.3 4.4.4 Manejo de las colas de procesos. 4.6 4.4.5 Contexto de los procesos. 4.6 4.4.5.1 Salvar contexto. 4.6 4.4.5.2 Cargar contexto. 4.1 I1 11 lj I ~ I 4.7 4.4.5.3 Restablece contexto. 4.7 4.4.6 Pila de los procesos. 4.5 Sincronización y comunicación entre procesos. 4.6 Gestión de interrupciones. 4.6.1 Descripción de las interrupciones usadas. 4.7 Manejo del hardware. 4.8 4.8 4.8 4.9 4.9 4.7.1 Memoria. 4.10 4.7.2. Manejo del procesador. 4.10 4.7.3 Manejo del timer. 4.10 4.7.4 Pantalla de cristal liquido. 4.11 4.7.5 Interfaces de EIS analógicas. 4.11 4.8 Software de aplicación. 4.8.1 Descripción de las tareas de aplicación. 4.11 4.8.2 Control de los procesos físicos. 4.12 4.8.2.1 Descripción de los módulos de control de los procesos físicos. 4.12 4.13 4.8.3 Interfaz al usuario. 4.8.3.1 Diagnóstico del hardware del controlador. 4.14 4.8.3.2 Opciones de los procesos. 4.15 I! 4.8.3.3 Despliegue de variables. 4.15 11 4.8.4 Interfaz de comunicación serial. 4.16 I! 4.8.5 Operaciones aritméticas de punto flotante. 4.16 11 'I 4.8.5.1 Adición y substracción. 4.17 I/ 4.8.5.2 Multiplicación. 4.18 'i 4.9 Herramientas de generación de código. 4.9.1 Generación del código ejecutable. 4.10 Alta de los procesos de software de usuario. I( I 4.18 !I 4.18 j II 4.19:I: Capítulo 5. Pruebas y Resultados. 5.1 Introducción. 5.11 5.2 Pruebas de diseño del hardware. 5.2 5.3 Pruebas del software operativo. 5.3 5.3.1 Pruebas de gestión de procesos. 5.4 5.3.2 Pruebas de sincronización y comunicación. 5.5 1: I I11 I !i 5.3.3 Pruebas de manejo de interrupciones. 5.4 Pruebas funcionales. 5.4.1 Pruebas a los procesos controlados. 5.4.2 Pruebas de los algoritmos de control PID. 5.4.3 Pruebas del sistema de control. Capítulo 6. Desarrollo de procesos de usuario. 5.7 I! /I 5.8 I/ 5.8 ,' 5.10 11 5.10 ;i I I¡ I I; 6.1 )I 6.2 Elementos requeridos en el sistema. 6.1 ,; 6.3 Descripción del archivo TESIS.ASM. 6.1 6.2 1, /i 6.1 Introducción 6.4 Procesos de software de usuario. i // 6.4.1 Limitantes en los procesos de usuario. 6.3 6.4.2 Manejo de buzones y semáforos y memoria disponible al usuario. 6.4 j 1 ,/ 'i 6.4 6.5 Rutinas de aplicación general. 6.5.1 Rutinas de manejo de la pantalla LCD. I; 6.4 6.5.1.1 Rutina despliega cadena. 6.4 1; 6.5.1.2 Despliega carácter, ejecuta comando y limpia pantalla. 6.5 ) 6.5.2 Rutinas de comunicación serie. 6.5 6.5.3 Retardos. 6.6 '1 6.5.4 Transferencias de bloques de memoria. 6.6 6.5.5 Rutinas de operaciones aritméticas. 6.7 'I Ii ' II 6.5.5.1 Conversión de entero a punto flotante. 6.1 6.5.5.2 Conversión de punto flotante a entero. 6.1 6.5.6 Otras rutinas. ;j / 11 6.7 6.6 Ejemplos de procesos de software a nivel de usuario. 6.6.1 Algoritmos de control PID. 6.8 li I! 6.8 6.6.2 Manejo de la interfaz local. 6.9 I 1; 6.7 Alta de un proceso de software de usuario. !I 6.9!I Capítulo 7. Conclusiones. Hardware 7.1 Software 7.2 Problemática. 7.3 I! N I 1.3 Aspectos de operación ~ 1.4 Aportación. 7.5 Trabajos futuros. Apéndice A. Descripción de conectores. A.l. Conector J1 Control del AEF4752 A.2. Conector 52 EntradaslSalidas digitales A.3. Conector 53 Canal Serie I, I¡ A.l 1; I A.l lj A.l I A.4. Conector 54 Teclado A.5. Conector J 5 Pantalla LCD A.6. Conector JS Control de convertidores. A.7 Conector J 9 Salidasmntradas Analógicas A.2 I; A.2 /j 11 Apéndice B. Descripción de componentes. I! B.l Lista de componentes utilizados. B.1 B.2 Microcontrolador DSSOC310. B.2 /j B.3 Memoria RAM no volátil DS1225Y. B.3 B.4 Convertidor AnalógicoíDigital MAX182. B.4 B.5 Convertidor Digital/Analógico MAX527. B.5 B.6 Generador PWM HEF4752. B.6 :I I '1 I' ! /j I' ,I B.7 Amplificador operacional OP490. 4 B.7 /j B.8 Pantalla de cristal líquido AND491. B.8 '1 I! Apéndice C. Referencias. I/ C.l Referencias bibliográficas. c.1I! C.2. Referencias técnicas. c.3'! c.3'j C.3. Referencias en internet. I,< Apéndice D. Glosario. D.l Definiciones y abreviaturas. D.l V Tabla de figuras. Figura 1.1 Estructura básica de un sistema operativo. s roce so s. 1.5 i; Figura 2.1 Diagrama a bloques del Sistema. 2.1 il Figura 2.2 Conformación del módulo de control 2.2 1, Figura 2.3 Diagrama a bloques del módulo de procesamiento. 2.4 Figura 2.4 Esquema general del software. 2.6 Figura 2.5 Respuesta al escalón de los procesos controlados. 2.9 Figura 1.2 Estados de 10s '1 1; ,, !I ,j Figura 2.6 Diagrama de los procesos físicos controlados. 2.10 /j Figura 2.7 Diagrama de flujo de los procesos físicos. 2.11 Ir Figura 3.1 Hardware del módulo de procesamiento. 3.1 ii Figura 3.2 Submódulo de procesamiento y control. 3.2 lj Figura 3.3 Submódulo de memoria. Figura 3.4 Interfaz de E/S analógicas. 3.3 3.3 Figura 3.5 Interfaz local. 3.4 1 Figura 3.6 Conexión de teclado. 3.5 Figura 3.7 Diagrama de la interfaz serie. Figura 3.8 Interfaz de E/S digitales. 3.5 Ij 3.6 1 Figura 3.9 Diagrama a bloques de los generadores de PWM. 3.7 /j Figura 3.10 Fuente de alimentación del módulo. 3.7 I¡ Figura 3.11 Espacio de memoria externa. 3.8'1 Figura 3.12 Direccionamiento de los submódulos. 3.9'! Figura 4.1. Relación entre los niveles de software. 4.1 Figura 4.2. Inicialización del sistema. 4.2 Figura 4.3. Política de multinivel de colas. Figura 4.4. Planificador de asignación cíclica. Figura 4.5. Diagrama de flujo del planificador. Figura 4.6. Algoritmo de control de procesos iísicos. Figura 4.7. Menú principal del sistema. Figura 4.8. Registro de diagnóstico del hardware. Figura 4.9 Formato de punto flotante. I¡ 1; I1 4.4 4.4 4.5 I 4.12 4.14 4.1'5 I 4.17 I /I ! '! I i !j I 11 I; Ni Figura 5.1 Esquema de pruebas del sistema. Figura 5.2 Esquema de prueba de procesamiento Y controlFigura 5.3 Procesos de prueba de la concurrencia. Figura 5.4 Esquema de prueba de concurrencia. Figura 5.5 Prueba de sincronización entre procesos. 5.1 li I' 5.2 I1 5.4 'I 5.5 li Figura 5.6 Esquema de prueba de sincronización. Figura 5.7 Prueba del manejo de interrupciones. Figura 5.8 Esquema de prueba de interrupciones. 5.8 Figura 5.10 Respuesta ai escalón del simulador. 5.9 Figura 5.9 Esquema de prueba de los procesos simulados. Figura 5.11 Validación de los algoritmos de control. Figura 5.12 Control de un proceso. Figura 5.13 Respuesta del proceso controlado. Figura 5.14 Esquema de prueba del sistema completo. Figura 5.15 Respuesta de tres procesos en operación simultánea. Figura 6.1. Estructura de los procesos 'I !j 11 5.9 li 5.10 I! 5.11 I/ 5.11 ,i i 5.12 5.13 I1 6.3 I! ! 'i 6 I' Introducción. Antecedentes. Las aplicaciones convencionales de los sistemas digitales basados en procesador han sido tradicionalmente en el procesamiento de datos, como en computadoras, sistemas de comunicación, procesamiento de información, etc., donde el tiempo de procesamiento no siempre es un factor crítico. Las aplicaciones asociadas con el control de procesos fisicos, demandan dispositivos de procesamiento que respondan de manera rápida ante la ocurrencia de eventos, ejecutando en períodos de tiempo muy cortos algoritmos y programas de control que permitan efectuar acciones en tiempo real. !I Ij 'j 11 ij !j ;I il Los dispositivos de procesamiento más adecuados para estas funciones son los procesadores especializados como los microcontroladores, los procesadores de señales y los dispositivos ASIC. Estos dispositivos poseen en mayor o menor grado, la capacidad de procesamiento y la velocidad de respuesta suficiente para ejecutar diversos algoritmos en forma "simultánea", de manera tal que cada algoritmo puede ser concebido como una tarea independiente que realiza una secuencia de actividades y que incluye puntos en los cuales el procesador puede abandonar y regresar ai proceso para ejecutarlo. La velocidad de operación de los procesadores les permite ejecutar programas en períodos de tiempo muy cortos Esta alta velocidad, relativa a la baja velocidad de respuesta de los procesos fisicos da la posibilidad de ejecutar los algoritmos de control de manera concurrente. Esta filosofia operativa permite la aplicación de los sistemas monoprocesador, al control de diversos eventos de manera concurrente. Un sistema con esta filosofia de operación requiere de un sistema operativo que !Ij administre los recursos de hardware y software, y que mediante ciertas políticas resuelva y atienda los conflictos que se presenten durante el procesamiento, además de permitir la 11 concurrencia. El sistema o software operativo concurrente implica el paralelismo, ! simultaneidad y solapamiento de procesos de software activos, cuyo manejo debe permitir !i que sus resultados sean obtenidos dentro de los limites de tiempo establecidos por las li; características dinámicas de la aplicación que deben satisfacer. li En este trabajo se plantea el desarrollo de un sistema digital con capacidades de procesamiento concurrente orientado al control de procesos fisicos en tiempo real, dentro del cual se incluye el desarrollo en hardware de módulo de procesamiento bajo' un esquema monoprocesador, un esquema de procesamiento concurrente en tiempo real y un software de usuario orientado a aplicaciones de control de procesos. En la aplicación especifica de este sistema se requiere controlar tres procesos fisicos y atender interfaces de usuario-sistemas. Dentro de las tareas que debe realizar el sistema en el control de los procesos: los algoritmos de control PiD son la principal actividad a realizar, la ejecución concurrente de algoritmos de control o de cualquier tarea en general, se encuentra relacionada con la siguiente problemática: VI11 ,I ii I! 8; I ij I I! Un manejo eficiente de las tareas o procesos que debe ejecutar concurrentemente el sistema, esto implica a que tarea se le asigna el procesador. LOS algoritmos PID son la tarea principal y deben ser ejecutados en tiempo real, para poder mantener condiciones estables en los procesos. Manejo de cierta política para decidir en qué orden deben ejecutarse las tareas que realiza el sistema para alcanzar un máximo desempeño en el funcionamiento. Comunicación y sincronización entre las tareas de software para facilitar su ejecución concurrente. Manejo de interrupciones y cambios de contexto con tiempos mínimos. Administración eficiente de los recursos de hardware del sistema. Tiempo de respuesta mínimo a los procesos fisicos controlados. ij I. !I J! !I !I En el trabajo de tesis se planteó la solución sobre un esquema monoprocesador con un software operativo concurrente. El componente principal del hardware 10 constituye un procesador especializado o microcontrolador que permite satisfacer los requerimientos específicos de procesamiento mencionados. Por su parte el software operativo permite atender a cada una de las tareas o procesos de software que debe realizar el sistema, manteniendo independencia entre ellas y manteniendo la concurrencia. jl Ij li 'j I/ Objetivo. El objetivo de este trabajo de tesis consiste en resolver una problemática asociada con el control de múltiples procesos fisicos, mediante el desarrollo de un sistema digital basado en un elemento procesador para ejecutar concurrentemente algoritmos de control y orientado a procesamiento en tiempo real. i 11 /I I Ij El trabajo es probado aplicando el sistema como un controlador de múltiples procesos que operan simultáneamente. En el desarrollo del trabajo se incluye el hardware del sistema 'I digital, el software operativo, el software de aplicación como controlador y la implementación 1; de un simulador de los procesos fisicos a controlar. El proyecto incluye el desarrollo del 1; software de control (tipo PID). 1: , 'I !i Metas de diseño. Los aspectos más importantes del sistema completo desarrollado se presentan a continuación: Ii I1 Sistema digital basado en microcontrolador, con E/S analógicas y digitales e '1 interfaces de comunicación local y serie. Arquitectura de procesamiento concurrente, Controlar tres procesos fisicos por medio de algoritmos de control PID que se encuentran en operación simultánea. I! Generación de las señales de control para los tres procesos controlados en un lapso ,i de tiempo menor a 10 ms. Simulación de los procesos fisicos en una computadora personal (PC) modelados I!i 'I I/ IX ,'I 11 I! por una ecuación lineal de primer orden. Las características analógicas. .de., cada proceso físico simulado son obtenidas a través de un sistema de adquisicion de datos. Interfaces al sistema, local, y remota a través del canal serie, de fácil manejo que permiten manipular al sistema y realizar cambios en línea de todos los parámetros de control. Contenido. El desarrollo de la tesis se presenta en cinco capítulos, a continuación se presenta una breve descripción de cada uno de ellos. En el capítulo 1 se presenta un marco teórico sobre sistemas operativos y se enfoca sobre todo a los sistemas de procesamiento concurrente orientados a tiempo real. En el segundo capítulo, se realiza la descripción general del sistema implementado, el cual se describe en cuanto a su integración y su funcionalidad. Se presentan las descripciones del hardware del módulo de procesamiento concurrente, el software operativo y el software de aplicación. En el capítulo 3 se describe el diseño y la implementación del hardware del sistema, desglosado al nivel de bloques funcionales y del sistema integrado completo. En el capítulo 4 se presentan los niveles de detalle del desarrollo e implementación del software. Aquí mismo se divide el software operativo del software de aplicación, describiendo los detalles importantes de cada uno de ellos. En el capítulo 5 se presenta las pruebas al sistema y los resultados obtenidos. En el capítulo 6 se describen los procedimientos y las consideraciones que se deben tomar para el desarrollo de aplicaciones en la plataforma desarrollada. En el capítulo 7 se presentan conclusiones, aspectos importantes del sistema y sugerencias de trabajos futuros. Finalmente se presentan una serie de apéndices; en el apéndice A se presenta la descripción de los conectores necesarios en el hardware del sistema y complementa a los diagramas presentados en el capítulo 3 . En el apéndice B se presentan los principales componentes de hardware utilizados en el módulo de procesamiento concurrente. El apéndice C presenta las referencias utilizadas en el desarrollo del trabajo y finalmente se incluye un glosario con los términos más importantes empleados en el sistema, X Capítulo 1. Sistemas de procesamiento concurrente. 1.1 Generalidades. I, Un sistema de procesamiento concurrente orientado a tiempo real encuentra Su nicho en aplicaciones en las que un solo sistema requiere realizar de una diversidad de tareas, Y por la importancia de cada tarea, deben ser atendidas con un mínimo de retraso y generar SUS resultados en un intervalo de tiempo adecuado. En este trabajo se pretende resolver una problemática asociada al control de múltiples procesos que operan simultáneamente, mediante un solo módulo que funcione como controlador Como solución es posible plantear esquemas de procesamiento en una arquitectura de multiprocesador o esquemas monoprocesador. En un esquema multiprocesador se tiene un hardware sumamente complejo, que requiere de políticas complejas para el manejo de la intercomunicación entre los procesadores y por lo tanto se tiene un hardware de alto costo pero que no requiere de un esfuerzo notable en su programación. Por otro lado en los esquemas monoprocesador se tiene una arquitectura de hardware sencilla y de bajo costo, sin embargo cuando se requiere que el sistema realice procesamiento concurrente es necesario un software complejo, cuya función sea coordinar la ejecución en paralelo de un conjunto de tareas o procesos que se encuentran activos simultáneamente; dicho software recibe el nombre de software operativo concurrente o de multiproceso. El término software operativo o sistema operativo, es utilizado a lo largo de este capítulo indistintamente, sin embargo se considera al software operativo como un subconjunto de elementos y funciones básicas de un sistema operativo complejo. 1.2 Software operativo. I, Un software operativo es un conjunto de programas que administran la distribución de los recursos de un sistema entre los diferentes procesos o tareas que deben ejecutarse. El software operativo actúa directamente sobre el hardware del sistema de procesamiento y es por lo tanto una interfaz entre los elementos de hardware y los programas de usuario o tareas que se deben realizar. Cuando se genera un requerimiento o sucede algún evento en el módulo de procesamiento, el sistema o software operativo coordina todas las acciones para manejar de forma adecuada cada tipo de situación que se presente. El software operativo debe resolver los conflictos que se presenten en el sistema mediante la implantación de políticas adecuadas [Daza]. ~ '1 li ' 'ij ! Los sistemas operativos se pueden clasificar de acuerdo al número de tareas o procesos activos que soportan en sistemas monotarea o multitarea: Un ejemplo de monotarea se presenta en el procesamiento serie o por lotes y en general un sistema monotarea se caracteriza por que sólo una tarea se encuentra activa a la vez, la cual acapara el tiempo de procesador hasta que ella termine su ejecución y sólo entonces una nueva tarea puede ser ejecutada [Milan]. 1.1 1: '3 1) Conceptos básicos de sistemas operativos. Capítulo 1 1 Un sistema multitarea permite realizar varias tareas distintas "al mismo tiempo", en estos casos el sistema operativo soporta varios procesos que se encuentran activos al mismo tiempo. Dentro de este tipo se tienen los sistemas multiprogramados y de tiempo compartido [Hwang]. Los sistemas operativos por otra parte pueden estar orientados ai manejo de aplicaciones, como manipulación de archivos o desarrollo de software, donde el tiempo no es un parámetro importante, o pueden estar orientados a aplicaciones en tiempo real en las que el sistema debe dar servicio a tareas cuya ejecución se sincroniza con eventos externos a ellas. 1.2.1 Sistemas de tiempo real. En los sistemas de tiempo real las salidas no sólo dependen de las entradas y secuencias en las que estas se presentan, sino también del instante en el que la salida debe hacerse presente. La relación de un sistema de tiempo real con respecto al momento que se deben presentar las salidas establece la constante de tiempo del sistema, cuyo valor determina la velocidad con la que el sistema debe actuar ante las distintas entradas. En sistemas de tiempo real, los eventos con los que se sincronizan las tareas pueden ser programados o indeterminados con respecto al tiempo, estos eventos se relacionan normalmente con señales eléctricas generadas por el mismo sistema digital o por los elementos fisicos que conforman a la aplicación. El procesador por lo tanto debe incluir características que permitan la operación en tiempo real, como interrupciones, temporizadores, etc. [Daza]. Un software operativo en tiempo real, debe ser multitarea, con características de: programación de eventos, priorización de tareas, sincronización y comunicación entre tareas, temporizadores y manejo de interrupciones. Estas características permiten de algún modo garantizar que las tareas sean realizadas en el intervalo de tiempo requerido por la aplicación en tiempo real. 1.2.2 Sistemas concurrentes. Un sistema multitarea o concurrente consiste de un grupo de programas que permiten que múltiples procesos o tareas de software independientes coexistan activos y les permite a 1 todos los procesos operar simultáneamente. La alta velocidad de un procesador relativa a las : operaciones fisicos que controla, permite compartir el procesador sobre varios procesos lentos. El procesador salta de un proceso a otro y ejecuta una parte de cada uno en un intervalo de tiempo dado [Porat]. El siguiente proceso que se ejecuta es seleccionado 'j mediante una planeación a la que responde el sistema operativo. Entre cada conmutación de I j tareas se realiza un cambio de contexto que incluye el almacenamiento del estado del proceso ' que sale de ejecución y la restauración del contexto del estado que entra. ': 11 1.2 1; Conceptos básicos de sistemas Operativos. Capítulo 1 i i En el procesamiento concurrente los procesos o tareas deben ser escritos como una secuencia de actividades e incluir puntos en los cuales el procesador pueda dejar y regresar al proceso, y/o incluir una política que permita la salida y entrada de los procesos en cualquier punto de su estructura. Cada proceso o actividad inicia o reinicia su operación en un punto de entrada determinado por el sistema operativo, y es disparado por un evento externo o por otra actividad y puede a su vez iniciar a otras actividades o tareas. I1 1 I, í I! 'I 1.3 Núcleo del sistema operativo. I! El sistema operativo tiene como principal función controlar la ejecución de cada uno de las tareas o procesos que se desea realice el sistema. El primer nivel de software de un sistema operativo está constituido por un conjunto de rutinas y herramientas que permiten el manejo de todos los componentes de hardware y software del sistema. /I 11 I! i 'I El núcleo de un sistema operativo es el primer nivel de software que trabaja sobre el hardware del sistema, configura y maneja los componentes del hardware. El núcleo realiza las funciones primarias del sistema operativo, como la gestión de procesos, el manejo básico de entradasísalidas, el manejo de interrupciones, la configuración e inicialización del sistema, la comunicación y sincronización entre procesos y el manejo de errores y excepciones. /j ,I' I 1; 1.3.1 Elementos del sistema operativo. 1; I Para trabajar en un sistema multitarea, un proceso o una tarea de software requieren de rutinas especiales, estructuras de datos que controlen el flujo de ejecución y herramientas para la sincronización e intercambio de datos. '' ,, 1; Dentro de las rutinas básicas que se requieren para el funcionamiento del núcleo del sistema se tienen las siguientes: i: Una rutina que maneje el procesador y decida su asignación sobre un conjunto de 11 tareas o procesos activos. 1 Una rutina que inicialice, configure y maneje al hardware y al software del sistema. 'j Rutinas y/o políticas que permitan responder a eventos como interrupciones, errores y excepciones. Con este conjunto básico de rutinas es posible controlar las tareas que se ejecutan y responder a los eventos que se presentan en el sistema. Para el funcionamiento del sistema se requiere también de un conjunto básico de estructuras de datos auxiliares en el control de las tareas de software, dentro de este conjunto básico se incluyen las siguientes tres: Una tabla de tareas o procesos en RAM, que contenga punteros a los puntos de entrada de las actividades esperando a ser ejecutadas. 1.3 ,I II Conceptos básicos de sistemas operativos. Capítulo 1 Una tabla de procesos, de la cual se designará la siguiente tarea poseedora del procesador basado en cierta política que permita tomar la decisión. * Una estructura en memoria RAM que permite almacenar el estado de los registros del procesador para cada uno de los procesos que se encuentren activos. Dentro de las herramientas para la sincronización e intercambio de datos, que permiten la administración del sistema digital, están: Los semáforos que se usan para sincronizar, excluir y/o distribuir recursos de hardware y software. Pueden constituirse por una variable booleana o por un contador. Los buzones son bloques de memoria usados para la transferencia de información y coordinación entre procesos. En la Figura 1.1 se ilustran los elementos básicos que conforman un sistema operativo. Las rutinas básicas se auxilian de los buzones, de los semáforos y de las tablas del sistema, para poder decidir sobre la asignación de los recursos de hardware sobre cada uno de los procesos de usuario .......................................................................... Pmcesos de usuario ..................................... .................... ..............., - 4 Núcleo del sistema operativo. ....................... Tablasdel ! .................. I Rutinas bhsicas y de procesos Tablas descriptivas ....................... j ........................ j Herramientas Hardware I .................................. ..................................... 4 ......................... .................................... Hardware ........................................................................... Figura 1.1 Estructura básica de un sistema operativo. 1.4 I Conceptos básicos de sistemas operativos. Capítulo 1 1.3.2 Procesos. Se define como proceso de software a un conjunto de líneas de código que se encuentran en ejecución en cierto momento [Milan] y tiene como objetivo hacer que el sistema desempeñe cierta función al nivel de usuario. Un proceso se puede considerar como la unidad funcional del software de aplicación. En algunos casos el término proceso y el término tarea son manejados como sinónimos, sin embargo una tarea puede estar constituida por uno o varios procesos, o sea un proceso puede integrar a una tarea o una actividad que debe realizar el sistema o simplemente ser una parte de ella. Dentro del desarrollo de este documento se utiliza la palabra proceso para referirnos a los programas de software que conforman las tareas de aplicación del sistema. 1.3.2.1 Estado de los procesos. Los procesos por su estado se pueden clasificar en activos o inactivos. Un proceso activo se diferencia de uno inactivo en que el primero se encuentra compitiendo por el USO del CPU. Un proceso activo puede estar en cualquiera de los tres estados de la Figura 1.2: En ejecución, procesos poseedor del CPU. Listo, es el proceso en la cola para tomar posesión del CPU. Bloqueado, es un proceso que tiene que esperar a que ocurra cierto evento para ser ejecutado[Tanembauml]. Activos ............... E : Ejecución . . .: :. I n a c t i v o s . . ................................................ I . L : Listo B : Bloqueado I: Inactivo. !I I/ Figura 1.2 Estados de los procesos. En un momento dado pueden presentarse cambios de un estado a otro, de acuerdo a la ocurrencia o no de determinados eventos a los que debe responder cada proceso particular. ': ',' 1.4 Gestión de procesos. La gestión de procesos es uno de los componentes básicos de todo núcleo de sistema operativo y es la parte encargada de administrar y controlar el comportamiento de los ,; procesos de software de un sistema, esto es manejar los procesos inactivos o activos en sus ,, diferentes estados: listos, en ejecución o bloqueados. La gestión de proceso se encargal, también de manejar los procesos residentes en el sistema o creados por el usuario. '! j 1.5 'I Capítulo 1 Conceptos básicos de sistemas operativos. , I1 El manejo de los procesos se realiza en base a cierta política que determina el orden en que el CPU es entregado a cada uno de los procesos. El elemento encargado de realizar esta función se llama planificador y tiene como objetivo optimizar el rendimiento del sistema de acuerdo a los puntos que se consideran importantes dentro de las particularidades del sistema. Ij I 1; 1: 'i Algunos criterios que permiten definir al planificador son: la relación de tiempo de ejecución entre el software de aplicación y el software operativo, el número de procesos ejecutados por unidad de tiempo, el tiempo promedio que un proceso debe esperar para que se le asignen los recursos de hardware [Milan]. En general el criterio de selección del planificador debe ser de acuerdo a las características consideradas más importantes por el diseñador. 1: Ji ,I 1; 'I 1, 1.5 Comunicación y sincronización entre procesos. La comunicación y sincronización entre procesos es la parte de un sistema operativo que permite que dos o más procesos se relacionen entre ellos, con los elementos del hardware, o con algunos eventos externos a los mismos procesos. Dos elementos básicos para el manejo de la comunicación y sincronización son los semáforos y buzones. Los semáforos son elementos principalmente usados para la sincronización entre procesos, se utilizan para determinar el estado de cierto evento que permite a los procesos determinar el siguiente paso dentro de su ejecución. Los semáforos pueden ser conformados por una variable booleana o por un contador cuyo estado es modificado por la sucesión del evento que se pretende indicar. I/ I/ !i Los buzones por su parte se utilizan para el intercambio de conjuntos de datos, ' y !I además de permitir la sincronización entre procesos. Cada buzón está integrado por un ,; segmento de memoria, dicho segmento se divide principalmente en dos bloques, uno para el I; almacenamiento de la información y otro que permite determinar tanto el estado de la '1 información que almacena como el estado del mismo buzón. I1 1; El manejo de semáforos y buzones permite la cooperación entre diversos procesos sobre una misma tarea común a ellos. El manejo de la sincronización y comunicación pretende resolver problemas de intercambio de información y sincronización de procesos, y de manejo de recursos del sistema hardware/software a través de la exclusión mutua. 1.6 Manejo de los elementos de hardware. i El manejo de hardware de un sistema pretende gestionar la asignación de estosii recursos a los procesos de usuario. Una gestión eficiente del hardware se relaciona con una: identificación de las características sobre el uso de cada recurso y sobre las funciones qu6 debe realizar. Debe realizarse un análisis que permita identificar si el uso de cada recurso es' apropiativo por parte de los procesos o si el recurso puede ser compartido por ellos [Tanembauml]. En ambos casos se establecen técnicas y/o políticas que permitan el manejo /i 1; : !I I< 1; Capítulo 1 Conceptos básicos de sistemas operativos. j I! '! exclusivo o compartido de los recursos !i En el caso del uso exclusivo de un recurso, a través de elementos de sincronía se puede lograr la exclusión mutua entre los distintos procesos que le requieren. Cuando un recurso es compartido entonces es necesario controlar su compartición mediante una planeación estática (fuera de línea) o dinámica (durante la operación). ', I! ', 11 '! El manejo de cada componente del hardware requiere de un programa que permita controlarlo, a través de este elemento llamado controlador, a cada recurso se le dan ordenes, se le establecen parámetros y en general, se coordina la operación del recurso. Estas rutinas se encuentran disponibles para ser llamadas por los procesos de aplicación y tienen como objetivo facilitar al usuario el manejo del hardware. 11 II I 11 1; I/ Ij 1.7 Manejo de interrupciones. Otro de los aspectos importantes que deben considerarse en los sistemas operativos son las interrupciones. Las interrupciones son eventos de hardware o software que cambian el flujo normal de un programa que se encuentra en ejecución y permiten sincronkar la operación de los dispositivos de hardware con el procesador [Tanembauml]. Las interrupciones, ya sean de hardware o de software se generan como respuesta a algún evento que requiere de atención inmediata del procesador, como intermpciones de E/S, temporizadores o timers, etc. (en el caso del hardware) y detección de errores y excepciones (como interrupciones de software). ii'I I! li I! j ( \ I! 'I !i Dentro del manejo de las interrupciones deben definirse características como niveles de prioridad de las interrupciones, detectar segmentos de código que no deben interrumpirse, ,I el tiempo de atención a las solicitudes de interrupción, etc. Con el fin de determinar las I! políticas adecuadas que permitan manejar las interrupciones garantizando que las solicitudes de interrupción son atendidas, manteniendo una operación correcta tanto en las rutinas de ,,I! atención como en los progranias interrumpidos y que posteriormente retoman el uso del I! procesador. 1; ii 1.8 Aplicaciones de control en tiempo real. I! Los sistemas de tiempo real se usan en aplicaciones donde es necesario aceptar y dar I respuesta a sucesos, en su mayoría externos al sistema, con el menor retardo posible. En ' j control industrial, comunicaciones, aplicaciones militares, etc. se requieren de sistemas que li 81 brinden procesamiento en tiempo real. ) Cada aplicación específica de tiempo real presenta características especiales que permiten al sistema establecer estrategias y técnicas adecuadas para que realice atención en tiempo real En aplicaciones industriales se requiere regular el comportamiento de los procesos a través de alguna técnica de control La tarea que permite controlar los procesos se presenta como un programa cuya ejecución se sincroniza con una interrupción que determina 1.7 Conceptos básicos de sistemas operativos. Capítulo 1 el periodo de muestreo del proceso a controlar. La frecuencia de ejecución de una tarea de control se relaciona directamente con la constante de tiempo de la planta a controlar. Por el teorema del muestreo se determina una frecuencia de dos veces el inverso de la constante de tiempo de la planta, pero para obtener mejores resultados el periodo debe ser entre 5 y 50 veces el inverso de dicha constante [Hoang]. En las aplicaciones de control el funcionamiento del sistema debe sincronizarse con el periodo de muestreo establecido por las plantas que interesa controlar. Esto permite definir: El tiempo máximo de ejecución de las tareas de tiempo real Políticas para el manejo de las tareas y de los recursos del sistema. Tareas criticas que requieren procesamiento en tiempo real. Con la definición del periodo de muestreo y con la identificación de los puntos anteriores es posible definir la base de un sistema operativo que realice procesamiento en tiempo real, para aplicarlo al control de procesos industriales. '! ! 1.8 I. Capítulo 2. Descripción del sistema. 2.1 Introducción. En este capítulo se realiza una descripción general del sistema desarrollado, el cual se encuentra integrado por tres bloques principales: el módulo de procesamiento concurrente, la interfaz de comunicación serie y los procesos fisicos controlados. El módulo de procesamiento concurrente es la parte más importante de este trabajo. Los otros dos elementos presentan su importancia en la aplicación del módulo de procesamiento como controlador de los procesos físicos. Se presenta también la descripción funcional y de configuración tanto general como de cada uno de los componentes del sistema. Dentro de la descripción de cada uno de los bloques del sistema se destaca el módulo de procesamiento concurrente y se presentan sus tres componentes: hardware, software operativo y software de aplicación. El hardware y el software operativo establecen la plataforma para el procesamiento concurrente, mientras que el software de aplicación o de usuario permite configurar al sistema para su operación como controlador. ‘i 1 (i ;I ‘i ‘i 2.2 Descripción del sistema. 8! El sistema se encuentra integrado por tres bloques: el módulo de procesamiento concurrente, la interfaz de comunicación serie y los procesos físicos controlados que integran !: un sistema de multicontrol sobre tres plantas que operan simultáneamente, Figura 2.1. El !: I/ módulo de procesamiento concurrente realiza las funciones de un controlador y opera ; directamente sobre las plantas o procesos fisicos. Cada proceso fisico responde en función a ‘i las señales generadas por el módulo de procesamiento o control y la respuesta obtenida en las plantas es retroalimentada al módulo de procesamiento para generar los valores de control y ,;! lograr una regulación adecuada sobre ellas. La señal de control para cada proceso físico es !i 1 obtenida mediante la ejecución de algoritmos PID. 1; procesos controlados 4-p lnterfaz de acceso remoto I’ Modulo de procesamiento concurrente Figura 2.1 Diagrama a bloques del sistema. I: El módulo de procesamiento concurrente se encuentra basado en una arquitectura’ monoprocesador, que permite ejecutar varias tareas en forma “simultánea”. Se encuentra constituido por un microcontrolador que realiza varias funciones en forma concurrente, y realiza el control de los procesos fisicos en tiempo real. 2.1 I/ Capítulo 2 Descripción del sistema. Las plantas o procesos fisicos se implantaron en un simulador, mediante una PC con un sistema de adquisición de datos. Cada proceso corresponde a un sistema andógico modelado por una ecuación de transferencia lineal de primer orden. Las entradas y salidas de cada proceso simulado corresponden a una entrada y una salida analógica del sistema de adquisición de datos. Los procesos son simulados uno tras de otro en forma cíclica y el tiempo de ejecución de cada proceso se mantiene dentro de los limites definidos por las funciones matemáticas usadas en la simulación. Por otra parte, la PC es usada en la Interfaz Hombre Máquina y tiene como objetivo proveer de acceso remoto al módulo de control, manteniendo comunicación serie mediante el estándar RS-232. Provee de una interfaz amigable que permite, entre otras cosas, cambios en los parámetros de los algoritmos PID, habilitar o inhabilitar procesos, etc 2.3 Módulo de procesamiento concurrente. El módulo de procesamiento concurrente es un sistema digital basado en procesador, constituido por tres bloques básicos de acuerdo a la Figura 2.2: El hardware del sistema, El software operativo que permite el procesamiento concurrente y El software de aplicación. operativo ,I .I Figura 2.2 Conformación del módulo de control El núcleo del módulo de procesamiento concurrente se encuentra conformado por el 'j hardware, sus elementos se agrupan en tres bloques principales y su descripción se presenta ! en el apartado 2.3.3. Estos submódulos son: Procesamiento y memoria. E/S analógicas y digitaies. Interfaz al usuario. 22 '1 Descripción del sistema. Capítulo 2 1, El siguiente nivel se encuentra constituido por el software operativo, su principal objetivo es permitir el control concurrente de los procesos fisicos además de controlar y administrar los recursos de hardware y software del módulo de procesamiento. El software de aplicación consiste en un conjunto de programas enfocados a que el módulo de procesamiento regule adecuadamente el comportamiento de los procesos fisicos a controlar. Los sistemas digitales basados en elementos de procesamiento basan su operación en la interacción de estas tres partes básicas mencionadas. La relación entre ellas permite a los sistemas digitales estar capacitados para realizar una gran diversidad de tareas, realizando cambios sólo a nivel del software de aplicación. '1 2.3.1 Descripción funcional del módulo de procesamiento. El módulo de procesamiento se encuentra constituido por un conjunto de elementos de hardware y software que establecen características generales, básicas y típicas de algunos sistemas de procesamiento. Lo que establece la particularidad en el sistema es el software de aplicación el cual se encarga de realizar el control de los procesos fisicos. Este conjunto de tareas de aplicación se encuentra residente en la memoria ROM del módulo de procesamiento, al igual que el software operativo. El microcontrolador inicia su operación a través del software operativo cuya primera función consiste en inicializar los componentes del hardware, del software operativo y del software de aplicación, Posteriormente el software operativo ejecuta una rutina que decide que proceso de sofiware es el primero al que se le asigna el procesador, esta rutina es conocida como planificador. La ejecución del planificador se encuentra sincronizada con una serie de interrupciones de timer utilizadas para evitar que un sólo proceso acapare al CPU; estas interrupciones además se encuentran programadas para que se presenten de acuerdo al periodo de muestreo establecido por las plantas a controlar; de esta forma se sincroniza finalmente la ejecución de las tareas de control con el periodo de muestreo requerido. 'i 'I Dentro de las tareas que se realizan a nivel del software de aplicación, la principal ,I consiste en mantener a cada planta en cierta condición de operación deseada mediante la adquisición de datos, la ejecución de algoritmos PiD y la salida de datos. Las tareas de aplicación dentro de sus funciones se encargan también de la comunicación con el usuario ', mediante una interfaz local y mediante una interfaz con la PC a través del canal serie, estas I! interfaces permiten al usuario visualizar e introducir información al sistema mediante un ,' conjunto de menúes. El módulo de procesamiento realiza también funciones de diagnostico sobre algunos de sus componentes de hardware, lo que permite detectar algunas fallas en el ' !! sistema. I, ,: ,, 2.3 Capítulo 2 Descripción del sistema. I, 1. I '! 2.3.2 Consideraciones del módulo de procesamientopara lograr un funcionamiento adecuado del módulo de procesamiento es necesario tener en cuenta importantes consideraciones. Dentro de estas consideraciones se cenceuntran las siguientes: !I 1: I Ij ''1 El software operativo garantiza que los programas de aplicación se ejecutan de acuerdo a sus características. Il Las tareas de control, que tienen mayor relevancia que las interfaces, se les otorga un tiempo mayor de procesador, para que sean ejecutadas en un lapso de tiempo menor al establecido por el periodo de muestreo. lj lj Ii En un lapso de tiempo igual al periodo de muestreo debe también ejecutarse al menos uno de los procesos de interfaz al usuario para garantizar que no sólo los algoritmos de control sean poseedores del procesador. l. li I1 La última consideración es que el tiempo de ejecución de las tareas de control debe ser menor a una cuarta parte del periodo de muestreo, para garantizar la ejecución de las tres tareas de control, la ejecución de al menos una de las interfaces al usuario, además del tiempo requerido por el software operativo. li Ii '1 ': !i 2.3.3 Descripción general del hardware. 'I El hardware del módulo de control se encuentra conformado de acuerdo al diagrama de bloques presentado en la Figura 2.3. I; I: I Módulo de Procesamiento Concurrente. Procesamiento I Analógicas ydigitales y control v ........ Fuente de alimentación lnterfaz al ........ usuario Figura 2.3 Diagrama a bloques del módulo de procesamiento. Procesamiento Y control. Es el submódulo encargado de la coordinación general de las funciones del sistema; provee de capacidad de cálculo y procesamiento para ejecutar i los algoritmos de control, coordina las señales de control necesarias para todo el 11 i 2.4 !j 'I Descripción del sistema. Capítulo 2 sistema e interpreta y ejecuta las ordenes provenientes de la interfaz bcal 0 de la comunicación serie, Se constituye por el microcontrolador y la lógica necesaria Para la decodificación y control. Consiste también de una memoria ROM en la Cual residen software operativo y de aplicación para el microcontrolador Y de una memoria RAM que almacena 10s datos que se requieren durante la operación. Se incluye además el cristal oscilador y el reset del microcontrolador. E/S halógicas y digitales. Este submódulo está conformado por tres grupos: una interfaz de E/S analógicas que consiste de dos conjuntos de tres señales, uno de entrada y otro de salida, con rangos de O a 5 V y una resolución de 12 bits. Una interfaz digital consistente de 7 líneas de salida digital y de 7 líneas de entrada digital, el puerto de entrada puede ser atendido por una interrupción en el microcontrolador. El tercer componente lo integra un generador PWM, este submódulo es capaz de generar tres grupos de señales de PWM tnfásicos de niveles TTL. Interfaz al usuario. La interfaz ai usuario se encuentra constituida por una interfa local que consta de una pantalla de cristal líquido de 2 renglones por 16 columnas, y un teclado matricial de 16 teclas. La interfaz funciona a través de menúes para facilitar su manejo por parte del usuario. También se incluye en este submódulo una interfaz serie que permite establecer comunicación serie con una PC y permite una fácil interacción con el módulo de procesamiento concurrente. Fuente de alimentación. Este submódulo provee de las tensiones de CD adecuadas para el fu~CiOnamient0de cada uno de los componentes del módulo de procesamiento, Provee tensiones de 2 5 y ? 15 VcD. 2.3.4 Descripción general del software. El soRware básicamente consta de dos partes: el software operativo y el software de aplicación. En la Figura 2.4 se presenta un aspecto general del software del sistema. Figura 2.4 Esquema general del software. 2.5 Capitulo 2 Descripción del sistema. !1 I El software operativo da soporte a los procesos de usuario y permite que estos residan activos de forma simultánea en el hardware del sistema. Mientras que el software de aplicación tienen como finalidad efectuar las tareas de control de los procesos fisicos y de interfaz de usuario. ; I ! ;i 2.3.4.1 Software operativo. li EI software operativo tiene como función administrar los recursos de hardware Y 10s procesos de software, permitiendo la concurrencia de 10s programas de aplicación Y la ejecución de los algoritmos de control en tiempo real. Algunas características y funciones del software operativo son las siguientes: ,I !i 'i N i !; a) b) c) d) e) Capacidad de procesamiento concurrente Orientado a procesamiento en tiempo real Inicialización del sistema Gestión de procesos. Sincronización y comunicación entre procesos. t) Manejo de interrupciones. g) Administración de los recursos de hardware. El'software operativo basa su capacidad de concurrencia en dos aspectos importantes de la arquitectura del software: uno es el manejo de multiniveles de colas de procesos activos, donde cada cola se maneja con una política de round robin, y otro la asignación a cada cola de cuantos de tiempo finitos de procesador de acuerdo a la prioridad de la cola. II '1 I/ 11 Con la asignación de tiempos finitos en función de la prioridad de la cola, se garantiza la ejecución de los algoritmos de control en un tiempo finito que es función de dichos cuantos de tiempo; y mediante un conjunto de variables que permiten la coordinación y sincronización de los procesos con respecto a otros procesos y al tiempo, es posible tener las señales de control en tiempos discretos. I: I ,I ,I 1, 2.3.4.2 Software de aplicación. El software de aplicación es un conjunto de rutinas realizadas en lenguaje ,I ensamblador, que tienen como objetivo realizar las tareas del controlador. Los programas I,: para el funcionamiento del controlador son los siguientes: 1; Aiaoritmos P i D Son tres rutinas encargadas de calcular las acciones de control de las plantas que se desean controlar. Estas tareas tienen prioridad alta y deben ejecutarse constantemente. ! ~ 'I , Salida de datos Es el proceso de software encargado de mandar por medio de la interfaz de E/S analógicas, los resultados de la ejecución de los algoritmos PID a cada planta correspondiente I, li 2.6 'I Capítulo 2 Descripción del sistema. Menú del sistema. Esta tarea utiliza la pantalla LCD y el teclado para dar al usuario algunas opciones que permiten manipular al sistema, como mostrar y cambiar parámetros, dar de alta o de baja el proceso correspondiente a una planta, etc. Dentro de las opciones del menú destaca el diagnóstico del sistema el cual permite obtener información de algunas condiciones del hardware y del estado de operación del sistema para identificar errores o alguna mala operación del sistema. Comunicación Serie. Es la encargada de atender las requisiciones de envío y recepción de información a través del canal serie. Corresponde a un proceso de prioridad baja que se encuentra siempre activo e incluye básicamente las mismas opciones que en el menú del sistema. Este proceso interactúa directamente con la PC a través de la cual se seleccionan las acciones que debe realizar el módulo de procesamiento comunicar el resultado de las acciones a la PC. 2.3.5 Características del módulo de procesamiento. El módulo de procesamiento concurrente incluye un conjunto de elementos de hardware y software que le permiten ser utilizado en un variado campo de aplicaciones. Dentro de estas características se tienen: Hardware: Sistema monoprocesador. 3 canales E/S Analógicos. 7 canales E/S Digitales. Interfaz local (Pantalla y teclado). Interfaz de comunicación serie. Fuente de alimentación. Facilidades de hardware para autodiagnóstico Software: Software operativo concurrente orientado a procesamiento en tiempo real. Software de aplicación del módulo como controlador. * Ejecución de algoritmos PID Cambio de parámetros de los PID. * Manejo de interfaz local. Comunicación serial. * Diagnostico del hardware. Estas características permiten obtener un módulo de procesamiento concurrente aplicado al control de procesos. El procesamiento concurrente permite atender varios procesos fisicos independientes dentro de ciertas condiciones de operación deseada y el tiempo de procesamiento se limita de acuerdo a las características de la aplicación. El 2.1 Capítulo 2 Descripción del sistema. hardware debe poder realizar procesamiento en tiempo real para garantizar una regulación adecuada sobre el funcionamiento de los procesos físicos. 2.4 Descripción de los procesos físicos controlados. Las plantas utilizadas fueron implementadas en una computadora personal, mediante un simulador. Cada planta fue representada por una función de transferencia lineal de primer orden de acuerdo a la ecuación: F( S) = 1 100 x 10-)s+ 1 Dicha función fue programada en la computadora en lenguaje C, obteniéndose un sistema de tipo una entrada una salida, con sus niveles escalados donde la amplitud del 100% iorresponde a un valor de voltaje de 5 V. La constante de ~ O O X ~ Ose. tomó ~ de una función de transferencia correspondiente a la identificación práctica de un motor de inducción trifásico [Solís]. 2.4.1 Periodo de muestreo. La respuesta a un escalón de la función anterior se presenta en la Figura 2.5; en ella se identifica la constante de tiempo de los procesos a un valor de 1 O0 ms, la cual se relaciona con el 63.2% de la amplitud total del sistema. Mediante el valor obtenido para la constante de tiempo se determinó el periodo de muestreo del sistema considerando un periodo de un décimo del valor de dicha constante, lo que determina un periodo de muestreo de 10 ms. r O ,,e Pendiente IO0 l/r 200 300 400 500 rns Figura 2.5 Respuesta al escalón de los procesos controlados. Este periodo de muestreo establece las restricciones de tiempo tanto en el módulo de procesamiento como en la simulación de los procesos a controlar. Con el periodo de 2.8 Capítulo 2 Descripción del sistema. muestre0 en 10 ms se determinó el límite de tiempo por debajo del cual se deben ubicar los tiempos máximos de ejecución de los algoritmos de control PiD. Si se considera que se tienen tres algoritmos PID además de las interfaces al sistema entonces se puede plantear una repartición inicial del tiempo de procesador sobre cuatro tareas. Considerando una repartición equitativa se obtiene un tiempo de ejecución máximo de 2.5 ms por cada tarea y tomando en cuenta que el software operativo toma O. 15 ms en realizar su operación, se establece un límite 2.35 ms para la ejecución completa de cada tarea de contiol. Con esto es posible establecer un criterio para determinar el límite máximo en la ejecución de los algoritmos de control, de tal forma que sea posible que se ejecuten otras tareas como las interfaces al sistema dentro del periodo base de 10 ms. 2.4.2 Simulación de los procesos. La simulación de los procesos en PC se basó en el algoritmo de Runge-Kutta [Zill] de segundo orden. Para la simulación de los procesos se requiere de un sistema de adquisición de datos para mantener las características analógicas requeridas por cada planta e interaccionar con el módulo controlador, Figura 2.6. I :I Módulo de procesamiento concurrente \ j i Tarjeta de adquisición ......................................................................................................................... : Figura 2.6 Diagrama de los procesos físicos controlados. El módulo de procesamiento entrega a la PC las señales de control analógicas para cada planta; cada señal se convierte de analógica a digital por el sistema de adquisición de datos de la PC y esta calcula los valores de salida de cada planta. El sistema de adquisición de datos incluye 3 canales analógicos de salida, por medio de los cuales se retroalimentan al controlador las variables monitoreadas de las plantas controladas, haciéndose esto cíclicamente para obtener el comportamiento de la planta. El diagrama de flujo correspondiente a la operación de las plantas o procesos controlados se representa en la Figura 2.7. 2.9 Descripción del sistema. Capítulo 2 9 Iniciar adquisición - Leer CAüi Inicio I Inicio conv. CADi Simular Proc (i-1) CAü(i-I) Figura 2.7 Algoritmo de simulación de los procesos. A través de la simulación de los procesos fisicos controlados se probó el funcionamiento del módulo de procesamiento como controlador; manteniendo una regulación independiente sobre cada planta mediante la ejecución concurrente de cada tarea de control. 2.10 Capítulo 3. Desarrollo del hardware. 3.1 Introducción. I 'i En este capítulo se presenta el desarrollo del hardware del sistema como una secuencia lógica con respecto al capítulo anterior. Se detalla el diseño de cada bloque integrante del módulo de procesamiento concurrente así como su asignación de direcciones en el mapa de memoria. En la Figura 3.1 se presenta el diagrama a bloques del módulo de procesamiento concurrente para facilitar la descripción del capítulo. 'I 'j '! , Módulo de Procesamiento -* Memoria Interfaz Serie Procesamiento y Control PWM Interfaz EIS Analógicas Interfaz EIS I ................................................................................................... - 1 Fuente de alimentación .................................................................................................. Figura 3.1 Hardware del módulo de procesamiento. 3.2 Diseño del módulo de procesamiento. El módulo de procesamiento fue diseñado, implementado y probada por etapas partiendo del núcleo básico de procesamiento y control, sobre el cual se le adicionaron el resto de los bloques funcionales presentados en la Figura 3 . 1 . 3.2.1 Submódulo de procesamiento. El principal componente de este submódulo es un microcontrolador 80C3 10 fabricado por Dallas Semiconductors, el cual es compatible 100% con los microcontroladores de Intel de la familia 8051, pero este microcontrolador mantiene un desempeño mucho mayor. Un mismo programa puede ser ejecutado hasta tres veces más rápido en el 80C310 para una misma frecuencia de reloj, que en los microcontroladores de Intel de dicha familia. 3.1 j I Capítulo 3 Desarrollo del hardware. I En este submódulo se incluyen todos los elementos TTL utilizados para la decodificación, sincronización y multiplexión de todas las líneas necesarias en la operación del módulo de control, así como un cristal el cual es necesario para la generación de la señal de reloj del sistema de control. I ,j Oscilador I' direcciones Figura 3.2 Submódulo de procesamiento y control. ', Funcionalmente este módulo se encarga de coordinar y sincronizar el funcionamknto ! de todos los componentes del sistema (hardware del módulo de control, comunicación con la I! PC y control de los procesos fisicos). Para mantener un funcionamiento correcto en el j sistema, el submódulo de procesamiento hace uso del software operativo y de los programas j de aplicación. (Figura 3.2). 3.2.2 Submódulo de memoria. 'I 1; El submódulo de memoria externa se encuentra integrado por una memoria ROM y I: una memoria RAM,de acuerdo a la Figura 3.3. Todas las tareas y funciones que realiza el 'I módulo controlador corresponden a programas de software alojados en memoria ROM y son ejecutadas por el submódulo de procesamiento. Algunos de estos programas corresponden al software operativo del módulo de control el cual permite coordinar y controlar las tareas que debe realizar el módulo controlador. Los programas que realizan las tareas del usuarioli corresponden al software de aplicación y su principal característica es que estas tareas se'; ejecutan en el ambiente que suministra el hardware y el software operativo. Tanto el software: operativo como de usuario requieren de la memoria RAM para poder realizar sus funciones. ' 1 3.2 Capítulo 3 Desarrollo del hardware. c Procesamiento y control Memoria I Memoria de direcciones Figura 3.3 Submódulo de memoria. I I' 3.2.3 lnterfaz de entradadsalidas analógicas. Este submódulo da las capacidades al sistema de procesamiento para interconectarse con sistemas analógicos, en concreto esta jnterfaz permite realizar el monitoreo del estado de los procesos controlados y permiten que sean entregadas las señales de control analógicas para cada proceso. Este bloque está integrado de acuerdo a la Figura 3.4. El canal D o 3 de ambos convertidores es interconectado con fines de poder realizar el diagnóstico de esta intetfaz. 1; '; ': 'I ,; 1; ;I I, Figura 3.4 Interfaz de E/S analógicas. Este submódulo permite al módulo de control intercambiar información con los procesos controlados a través de un par de convertidores fabricados por Maxim, cuyas principales características se muestran en la Tabla 3 . 1 . 3.3 Capítulo 3 Desarrollo del hardware. Resolución 12 bits 12 bits No. parte Conversión A/D MAX 182 DIA MAX 527 Canales 4 4 R.V.E. 0-5 Volts 0-5Volts Tiempos tconvcrjián 12011s tsstablccimicnto. 611s Tabla 3.1 Características de los convertidores usados. Ambos convertidores se aislan de los procesos controlados mediante circuitos operacionales. Las señales de entrada al convertidor analógico a digital (CAD) se filtran previo a su adquisición. El buffer digital tiene como finalidad aislar al bus de datos del módulo de procesamiento del CAD, para evitar la generación de errores en el resultado final de la conversión, por efecto de la ocupación continua del bus. El submódulo de procesamiento __ atiende al CAD como respuesta a una solicitud de atención realizada mediante la intermpción INTO,Por su parte el convertidor digital a analógico es aislado de los procesos fisicos mediante circuitos operacionales conectados en una configuración de seguidores. Procesamiento ........... 'PuertoI PI qJ - Exhibidor 4 Decodificador deteclado ........... Teclado Figura 3.5 Interfaz local. La pantalla de cristal líquido es mapeada en memoria y es conectado a los buses que entrega el submódulo de procesamiento y control. La pantalla de cristal líquido corresponde al módulo AND491 I El teclado por su parte es conectado a un decodiñcador de teclado matricial 74C922, este decodificador tiene como entradas ocho líneas que corresponden a las 4 líneas de columnas y a las 4 líneas de renglones del teclado; cuando una tecla es pulsada el decodificador entrega un valor hexadecimal correspondiente a dicha tecla y activa una señal 3.4 'I Capítulo 3 Desarrollo del hardware. decodificador entrega un valor hexadecimal correspondiente a dicha tecla y activa una señal que indica que hay un valor disponible en el decodificador. El teclado es conectado directamente al puerto P1 del microcontrolador y puede ser atendido por verificación constante o por interrupción. Figura 3.6. FControlador 4 PI 1 I ,Decoder 4 14C922 disponible Figura 3.6 Conexión de teclado. 3.2.5 Interfaz serie. El módulo de control tiene la capacidad de comunicarse con una PC mediante el canal serie propio del microcontrolador a través de los terminales RXD y TXD. Estos terminales son conectados a una interfaz serie MAX232 fabricado por Maxim, para adecuar 'I los niveles entre l T L y el estándar RS-232. Figura 3.7. ................................................................... . Figura 3.7 Diagrama de la interfaz serie. 3.2.6 Interfaz E/S digitales. El módulo controlador cuenta con 7 canales de entrada y 7 canales de salida digitales (canales O a 6, opcionales) implementados por un buffer 74HC244 y un latch 74HC373, respectivamente. El octavo canal de ambos circuitos, es interconectado igual que en el caso de la interfaz analógica, para el diagnóstico del submódulo. La interfaz de entrada puede activar la interrupción NT1 para solicitar atención del microcontrolador. Tanto los canales de entrada como los de salida se encuentran mapeados en memoria, Figura 3.8. ~ 3.5 4 , Capítulo 3 r--- 1 L Desarrollo del hardware. Buffer d e entrada Procesamiento n y control I Figura 3.8 Interfaz de E/S digitales. 3.2.7 Generadores de PWM. El módulo de control también cuenta con tres generadores de PWM trifásicos opcionales que son incluidos para que el módulo pueda ser fácilmente aplicable al control de sistemas con inversores como en el caso del control de motores eléctricos. El diagrama a bloques de los generadores de PWM se presenta en la Figura 3.9. El submódulo generador de PWM, consta principalmente de un circuito HEF4752 (fabricado por Philips) que genera una señal PWM trifásica, este circuito utiliza principalmente como entradas dos señales cuadradas que representan la frecuencia y el voltaje de la señal modulada generada. Los valores de voltaje y frecuencia de la señal generada varían de acuerdo a las frecuencias de las señales aplicadas al circuito. Para la generación de las frecuencias de control se utilizaron dos circuitos 8254, conocidos como temporizadores programables de intervalos; cada circuito integrado cuenta con tres contadores/temporizadores programables de 16 bits. Cada 8254 utiliza una señal de reloj como entrada y el valor de las frecuencias generadas por cada temporizador depende del valor de la frecuencia de la señal de entrada, y del valor de la cuenta programada en su registro correspondiente. Esta capacidad para generar diferentes patrones de PWM permite que el sistema de control pueda ser fácilmente utilizado en el control de motores eléctricos. 3.6 Capítulo 3 r w O Desarrollo del hardware. Temporizador programable ~.lG;en~~ Procesamiento U y control n Temporizador programable Frecuencias de control Figura 3.9 Diagrama a bloques de los generadores de PWM. 3.2.8 Fuentes de alimentación. Los diferentes componentes del módulo de procesamiento requieren de los siguientes voltajes de alimentación: 2 5 y 2 15 Volts. La fuente de alimentación del módulo se desarrolló de acuerdo ai siguiente diagrama. Regulador Transf. 1 _I - 127 VA, Transf. 2 u Regulador I - Figura 3.10 Fuente de alimentación del módulo. 3.3 Mapa de memoria. El microcontrolador maneja en forma separada la memoria de programas y la memoria de datos El acceso a la memoria de programas sólo permite realizar lecturas y tiene una capacidad máxima de 64KB que corresponden a 16 líneas de direcciones (OOOOH a FFFFH). El acceso a la memoria de programas se realiza mediante -la línea PSEN mientras que para el acceso a la memoria de datos se usan las líneas R ü y WR del microcontrolador, Figura 3 1 1 Por lo tanto se pueden direccionar 128KFi de memoria y sólo en el espacio de memoria RAM pueden ser asignados los diferentes componentes de hardware del sistema. ~ 3.1 Capítulo 3 Desarrollo del hardware. memoria memoria OOOOH Figura 3.11 Espacio de memoria externa. 3.3.1 Direccionamiento de los submódulos. Para la asignación de cada uno de los componentes del hardware al mapa de memoria del módulo de procesamiento, se consideraron los siguientes elementos: 1. Pantalla de cristal líquido. 2. Teclado y decodificador de teclado. 3 . Dos temporizadores programables, correspondientes a los tres submódulos generadores de PWM. 4. Convertidor de analógico a digital. 5. Convertidor de digital a analógico. 6. Buffer de entradas digitales. 7. Latch de salidas digitales. 8 . MemoriaRAM 9. Memoria ROM 3.8 Capítulo 3 Desarrollo del hardware. La asignación de cada uno de los componentes de hardware a un espacio fisico dentro del mapa de memoria, se realizó de acuerdo a la Figura 3 12 La interfaz serie y el decodificador de teclado se conectan directamente a los puertos del microcontrolador y no son presentados en el mapa de memoria TFFH SfA FFFFH OH CAD Sin asigna1 CDA 77FFn 7000~ 6FFFH 6800~ Entrada digital 67FFH 6000H Salida dig~ial 5FFFH 5800~ Exhibidor LCD 57FW 5000H Temponzador 2 4 F m 4800~ remponzador 1 47FFH 4000H 3FFFH Memona RAM MOOH ~ Memoria de programas i3FFH nonnH i000H Memoria ROM Figura 3.12 Direccionamíento de los submódulos. 3.4 Diagrama eléctrico del circuito. Con la elección de los componentes de hardware y su asignación al mapa de puertos y de memoria se realizó el diseño de detalle del módulo controlador y finalmente se impiementó conforme a los diagramas eléctricos de las siguientes hojas. La descripción de los conectores se presenta en el apéndice A 39 I u 74HC08 I . . . . .. .. U22A A15 1 74HCO4 J I CW Y D D ISELO ISEL1 í 11 I l l > I Y "7 r.1 Í OY M 2 OBMi OBM2 .J.Z. - c n c n L * P P I 0 o P N- < < _I- - I $1 I 4 w .-m JS 1 1 ) > IAQ 1 1 1 > A2 - 1 J7 I I 7 26 -x < "2: <INTO - 1 1 1 1 k 741 4 . 7°F OP490 ZL - 22°F 27K II m k :( r l c m- oo <o o P N I: 4 N N N N o D UI < l 0 c Hoia 5 de : Capítulo 4. Desarrollo del software. 4.1 Organización del software. El nivel de software de los sistemas basados en procesadores se divide generalmente en dos grandes grupos: el software operativo y el software de aplicación. El software operativo tiene como función manejar y administrar los recursos con los que cuenta el CPU, sirve como interfaz entre el usuario y el hardware del sistema. El software operativo constituye el primer estrato en el software por encima del núcleo del hardware. Mientras que el software de aplicación o software de usuario permite al sistema realizar una tarea especifica; el software de aplicación es controlado por el software operativo y hace uso de las prestaciones de este último para realizar sus funciones. Figura 4.1. Relación entre los niveles de software. En este capítulo se presenta en primer lugar el desarrollo del software operativo y después el desarrollo del software de aplicación. Ambos tipos de software se desarrollaron de una forma estructurada en base a las tareas que realizan. 4.2 Desarrollo del software operativo. El software operativo desarrollado consiste en un sistema de procesamiento concurrente, capaz de realizar procesamiento en tiempo real. El desarrollo del software operativo se encuentra estrechamente ligado con el software de aplicación, ya que es necesario cumplir los requerimientos de procesamiento en tiempo real de la aplicación. Para cumplir con los requisitos de tiempo el software operativo debe evitar sobre carga en el procesamiento manteniendo una estructura simple que requiera de poco tiempo de procesador. 4.1 Capítulo 4 Desarrollo del software. 4.2.1 Núcleo del software operativo. El núcleo del software operativo es el estrato más bajo en el software del sistema desarrollado y se encarga de realizar las funciones siguientes: 1. 2. 3. 4. Inicialización del sistema. Gestión de procesos. Gestión de interrupciones. Manejo del hardware. Estas funciones se desarrollaron e implementaron en el software operativo ya sea como rutinas encargadas de realizar alguna actividad, o como una política que define la forma en que deben manejarse cada uno de los puntos anteriores. 4.3 Inicialización del sistema. Este servicio se pone en marcha cada vez que se inicia o reinicia el módulo controlador, tiene como finalidad inicializar los modos de operación del hardware del sistema, tanto del CPU como de sus periféricos. Inicializa también las estructuras y tablas de datos necesarios para el sistema hardware/software y establece una configuración inicial del sistema y entrega el CPU a un proceso inicial. El diagrama de flujo de la Figura 4.2 muestra la secuencia de pasos de la inicialización del sistema. 7 Inicializa Generadores de PWM Pantalla LCD Inicializa Inicializa Prccesos Inicializa filas de procesas Inicializa Convertidores Figura 4.2. Inicialización del sistema. 4.4 Gestión de procesos. La gestión de procesos tiene como objetivo distribuir y asignar los recursos de hardware sobre cada uno de los procesos de software del sistema. Determina las políticas y la forma de manejar los procesos, plantea también una estructura de los procesos y caracteriza la forma de manejar el resto de los elementos de software. 4.2 Capítulo 4 Desarrollo del software. 4.4.1 Elementos del software. A continuación se realiza una descripción de los tipos de elementos que componen el software de aplicación. A la unidad funcional del software de aplicación se le denomina proceso y dentro del desarrollo del sistema se define como un conjunto de líneas de código que realizan alguna función, tiene asignada una pila de memoria interna del microcontrolador, y un espacio de RAM externa que almacena el contexto del propio proceso. Por lo tanto un proceso es una unidad de software, que estando en ejecución, puede abandonar el CPU y retomarlo, en un momento dado, sin que aparentemente nunca hubiera sucedido esto. Algunos procesos de software requieren llamar a rutinas encargadas de realizar cierta función; estas rutinas a su vez pueden llamar a otras subrutinas. Como la pila asignada a cada proceso es limitada debe cuidarse la cantidad de llamadas anidadas existentes durante la ejecución de un proceso, (ver apartado 4.4.6). Para tal efecto se distinguen entre dos tipos de subrutinas: Subrutina de nivel O. Es una subrutina que no hace ningún llamado a ninguna otra subrutina. Subrutina de nivel 1. Subrutina que incluye una llamada a una subrutina de nivel O. Una subrutina de este nivel puede llamar a una rutina del mismo nivel, sólo si se deshabilitan las interrupciones durante la ejecución de la subrutina llamada. 4.4.2 Elementos en la gestión de procesos. La gestión de procesos tiene como finalidad administrar y controlar cada uno de los procesos que son ejecutados por d procesador. Responde a un conjunto de herramientas que permiten al sistema operar adecuadamente y que van desde la inicialización de los procesos (tablas de procesos, pilas de procesos, etc.) hasta las políticas que rigen el manejo de los procesos. La gestión de procesos se compone principalmente por los siguientes elementos: Planificador. Manejo del contexto. Comunicación y sincronización. 4.4.3 Planificador. El planificador es la parte del software operativo que se encarga mediante cierta política de asignar el recurso del procesador, a los procesos de software del sistema. En este trabajo se planteó una política de multinivel de colas con dos niveles de cola, prioridad alta y prioridad baja. 4.3 Capítulo 4 Desarrollo del software. En esta política los tipos de trabajos que se realizan son clasificados de acuerdo a su prioridad dentro de la operación del sistema. Cada proceso es asignado en la cola correspondiente conforme a sus atributos. Figura 4.3 .- Cola de prioridad 1 Procesos activos ., .Cola de prioridad O 7 Figura 4.3. Política de multinivel de colas. Cada cola es a su vez arbitrada mediante una política de round robin o circuito cíclico con asignación de “cuantos” de tiempo de procesador a cada cola de acuerdo su nivel de prioridad, Figura 4.4. A la cola de prioridad alta se asignan 4 ms y 2 ms a la cola de prioridad baja. En la cola de prioridad alta se concentran los procesos relacionados con el control de las plantas. La mayor asignación de tiempo a los procesos de prioridad alta garantiza la terminación de los algoritmos PID en un lapso de tiempo finito y menor a las limitantes de tiempo determinadas por el periodo de muestreo. 1 2 3 4 5 Figura 4.4. Planificador de asignación cíclica. El planificador implementado lleva a cabo su función de acuerdo a lo siguiente: al inicializarse el sistema, se cargan en las colas de procesos el número de cada una de las tareas que al inicio de la operación deban encontrarse activos. Después de que el sistema es inicializado el planificador es el siguiente código que ejecuta el procesador. Las condiciones iniciales establecidas en la inicialización, permiten que los procesos formados en la cola de prioridad alta sean los poseedores del CPU durante los primeros 4 ms. Durante los siguientes 2 ms el CPU se asigna a la cola de prioridad O y nuevamente los procesos de prioridad 1 son preferentes en los siguientes de 4 ms. Esto conforma un ciclo de 10 ms de acuerdo a lo requerido por el periodo de muestreo del sistema. El planificador es activado por la interrupción del timer TO del microcontrolador, el cual está encargado de medir los tiempos de asignación del CPU. El planificador es también activado por los procesos de software cuando estos caen en algunas de las siguientes condiciones: 4.4 Capítulo 4 Desarrollo del software. 1. El proceso termina su ejecución. 2. El proceso detecta alguna condición de bloqueo. En el primer caso el planificador verifica el estado del proceso activo o inactivo. Si el proceso continua activo es nuevamente formado en la cola de procesos de acuerdo a su prioridad y si está inactivo simplemente no se vuelve a formar en la cola de procesos. En el segundo caso, cuando un proceso detecta una condición de bloqueo inmediatamente se invoca al planificador para que asigne el CPU a un nuevo proceso. A un proceso se le asigna el CPU cuando es el siguiente elemento en la FIFO de procesos que tiene preferencia en el momento de la asignación, para lo cual se carga el contexto de dicho proceso. En caso de no existir ningún proceso en las colas de procesos entonces por excepción se carga un proceso correspondiente al menú del sistema. En la Figura 4.5 se muestra las preferencias de asignación del procesador entre las colas de procesos. Un ejemplo de la operación del planificador se muestra en la misma figura, se tienen activos los procesos PI, P2 y P3 de prioridad uno y los procesos P4 y PS de prioridad cero formados en sus respectivas colas. En los primeros 4 ms se ejecutan los procesos de prioridad uno de acuerdo a la asignación de preferencias, P1, P2 y P3 son los primeros procesos que se ejecutan, P1 y P2 terminan su operación y son desactivados. Durante la ejecución de P3 se presenta el cambio de preferencias y sale de ejecución en inconcluso. Durante los siguientes 2 ms la preferencia es para los procesos de prioridad O, aquí se le asigna a P4 el CPU durante este lapso, pero lo abandona quedando también inconcluso y se forma al final de la cola O. En la cola de prioridad 1 el único proceso que se mantiene activo es P3 por lo que retoma el CPU para terminar su operación y desactivarse. Si la cola preferente se encuentra vacía entonces se asigna el CPU a los procesos de la otra cola (PS toma el CPU durante la preferencia de la cola 1). Preferencias sobre el procesador Cola I Cola0 ....................................................... ....................................................... 1....................................................... O ..................................................... 10 ms 6 4 Ejemplo. I ........................................ ........................... Figura 4.5. Diagrama de flujo del planificador. 4.5 Capítulo 4 Desarrollo del software. 4.4.4 Manejo de las colas de procesos. Los procesos activos son manejados por dos filas de acuerdo a lo que se explicó en el planificador. A cada proceso se le asigna una prioridad de acuerdo a su importancia dentro de la operación del sistema y es formado en la fila de procesos que le corresponde. A cada proceso se le asigna en cierto instante el uso del procesador, si al terminar el tiempo asignado al proceso este no ha concluido, el proceso es formado nuevamente al final de la fila correspondiente. Cada cola de procesos es manejada por software como una memoria FIFO que almacena el número de los procesos, de está forma se garantiza que cada proceso podrá tomar el CPU en algún momento dado. 4.4.5 Contexto de los procesos. A cada proceso se le asigna un tiempo finito de procesador, si al cabo de dicho tiempo el proceso no concluye con su cálculo, el sistema respalda toda la información requerida por el proceso para su buen funcionamiento. Esta información que corresponde a los registros internos del CPU es duplicada en memoria externa, en un lugar previamente designado para cada proceso. Cuando el proceso tiene otra vez el turno con el CPU el contexto es restablecido, es decir todos los registros invoiucrados en la ejecución del proceso son nuevamente cargados y se devuelve el procesador a dicho proceso. La distribución de los registros en cada contexto es de acuerdo a la siguiente tabla. Tabla 4.1. Disposición de registros en el espacio de contexto en RAM externa. Para el manejo del contexto se desarrollaron las siguientes funciones: Salvar contexto. Cargar contexto. Restablecer contexto. 4.4.5.1 Salvar contexto. Esta función es utilizada cuando un proceso que no ha terminado su ejecución debe abandonar el CPU. Como el proceso se mantiene activo y no ha terminado de desarrollar su 4.6 Desarrollo del software. Capítulo 4 función, debe almacenarse el estado en el que se encuentra el CPU al momento de que el proceso lo abandona. 4.4.5.2 Cargar contexto. Un proceso que abandonó el CPU manteniéndose activo está listo para que le sea reasignado el CPU, una vez que su contexto ha sido restablecido en los registros internos del procesador. Cuando el proceso retoma el CPU, continua su operación en el punto en que lo dejo. Básicamente el manejo correcto del contexto es lo que permite la ejecución concurrente de los procesos. Las transferencias entre CPU y memoria realizadas en las operaciones de cargar y salvar contexto, se realizan de acuerdo a la correspondencia mostrada en la Tabla 4.1. 4.4.5.3 Restablece contexto. Cuando un proceso termina y se mantiene aun activo, el SP apunta a una dirección que no corresponde a la dirección de inicio del mismo. Por lo tanto debe ejecutarse una rutina al final del código del proceso que restablece la dirección de inicio de cada proceso de la pila y el SP apuntando a dicha dirección; así en la siguiente ocasión que se requiera del proceso este puede ser utilizado sin mayor problema. 4.4.6 Pila de los procesos. Otra parte importante dentro del contexto corresponde a las pilas de RAM interna de los procesos. Dentro de la memoria interna direccionable directamente son asignados diferentes bloques a cada proceso. Cada bloque de memoria es utilizado como stack por cada proceso. Cada pila de stack consta de 8 bytes, que nos permiten almacenar 4 direcciones de 16 bits. Durante la inicialización del sistema la primera dirección de cada stack es cargada con la dirección de inicio del núcleo del software operativo y la segunda dirección es cargada con la dirección de inicio del proceso propietario del stack. De igual forma se carga en el contexto de cada proceso (en la celda del SP), la dirección de memoria interna en la cual se encuentra la dirección de inicio de cada proceso. Con esto se consigue otorgar el CPU a cada proceso. Como la pila de memoria de cada proceso se encuentra limitada a 4 direcciones de 16 bits y 2 bytes son ocupados por la dirección de inicio del proceso en forma permanente, sólo se tiene espacio para otras tres direcciones. Esta característica obliga a que las rutinas llamadas por los procesos se desarrollen evitando hacer uso de rutinas anidadas. Vea apartado 4.4.1. 4.7 Capítulo 4 Desarrollo del software. 4.5 Sincronización y comunicación entre procesos. Algunos procesos requieren como entradas, las salidas de otros procesos, o bien requieren de cierto evento; por lo que su ejecución debe ser detenida hasta que se presenten las condiciones necesarias para que sean ejecutados, Lo cual se logra mediante la implementación de semáforos y buzones. A cada proceso se le dan capacidades de verificación sobre sus elementos de sincronía para que decidan su estado, es decir, si continua con su ejecución o entrega el CPU por detectarse bloqueado. Cada proceso verifica al inicio de su ejecución sus buzones ylo sus semáforos, si el proceso detecta alguna condición de bloqueo, el proceso abandona el CPU y se restablecen el SP y su dirección de inicio en su stack, pero no salva el contexto. El proceso se mantiene en la FIFO correspondiente hasta que se le asigna nuevamente el procesador. 4.6 Gestión de interrupciones. Las interrupciones son eventos de hardware que cambian el flujo normal de un programa que se encuentra en ejecución y permiten sincronizar a los dispositivos de hardware con el procesador. En el control de las interrupciones del sistema se consideraron los siguientes aspectos: Ninguna interrupción en proceso puede ser interrumpida Algunos segmentos de código no pueden ser interrumpidos. Por lo que respecta al primero de los puntos anteriores, se definen en los registros correspondientes del microcontrolador las interrupciones como prioridad alta, de esta forma cuando se presente una interrupción definida por hardware con mayor prioridad no pueden interrumpir ninguna interrupción que se encuentre en ejecución. En el segundo punto se detecta dentro cada ente de código las operaciones críticas, cuya interrupción podría causar errores en la ejecución del sistema. Antes de iniciar una operación crítica se deshabilitan las interrupciones en forma global en el sistema, para habilitarlas una vez concluido el punto crítico. En cualquiera de los dos casos descritos debe tenerse en cuenta, que si el tiempo en que no puede actuar ninguna otra interrupción no es adecuado, el sistema puede tener un funcionamiento erróneo; por lo tanto la deshabilitación de las interrupciones y su atención debe ser rápida. 4.6.1 Descripción de las interrupciones usadas. En el sistema se utilizaron las siguientes interrupciones: Interrupción timer TO. 4.8 Capítulo 4 Desarrollo del software. - Interrupción INTO La interrupción del timer TO es utilizada por el software operativo para generar 1% bases de tiempo que permiten al planificador reasignar el CPU entre los procesos que se mantienen activos. La interrupción del timer TO es activada al vencerse cierta cuenta programada. Estas interrupciones permiten controlar un semáforo contador que sincroniza las tareas de control con el periodo de muestre0 marcado en el apartado iError!Vínculo no válido. __ La interrupción INTO corresponde al circuito de conversión analógico/digital, la atención a esta interrupción consiste en leer el canal analógico que produce la interrupción e iniciar la conversión del siguiente canal si corresponde. Los valores de conversión son escritos en el buzón correspondiente a cada canal de entrada, para que de ahí sean leídos por los procesos que los requieran. 4.7 Manejo del hardware. Cada dispositivo de hardware utilizado en el sistema tiene una rutina de software asociada; cada rutina constituye el controlador de un dispositivo. El controlador permite accesar a cada uno de los registros de los dispositivos para establecer modos de operación y ejecutar comandos. Estas rutinas de control sobre cada dispositivo pueden ser realizadas a nivel de usuario y escritas como un programa de aplicación. El manejo del hardware requiere de una planeación en cuanto al modo en que los recursos son utilizados por cada aplicación de software. Básicamente esta planeación se resume en identificar si los elementos de hardware son usados en forma exclusiva o son elementos que son compartidos por varios procesos. En el caso de ser elementos de uso compartido debe establecerse alguna técnica que permita el uso del recurso por todos los elementos que lo requieren. 4.7.1 Memoria. El manejo de memoria RAM del sistema se realizó de acuerdo a una asignación estática de memoria particionada. Es decir, se hace una planeación fuera de línea que consiste en dividir en bloques la memoria y asignar cada bloque de acuerdo a los requerimientos de cada recurso de software. Por lo tanto debe identificarse la cantidad de memoria que requiere cada proceso y cada subrutina, y asignárseles localidades de memoria bien identificadas que sólo ellos pueden accesar. En el caso de que una mismo espacio de memoria deba ser utilizado por dos o más recursos de software, entonces se utilizan algunas técnicas que garanticen que dicho espacio de memoria no puede ser accesado al “mismo tiempo” por dos programas que puedan modificar el contenido de dicha memoria. Por ejemplo el uso de semáforos y buzones o deshabilitación de interrupciones, permite la exclusión mutua entre procesos para evitar errores. 4.9 Desarrollo del software. Capitulo 4 4.7.2. Manejo del procesador. El procesador ejecuta únicamente software operativo o software de aplicación. El software de aplicación controla el acceso de los procesos al CPU de acuerdo a la política de planificación descrita anteriormente. Dicho de otro modo el procesador es manejado por unidades de tiempo, en cierto intervalo de tiempo es asignado a ejecutar los procesos que se encuentran en la FIFO preferente durante ese intervalo si la FIFO se encuentra vacía, entonces el CPU busca un proceso dentro de la FIFO no preferente. El manejo del procesador corresponde al manejo que realiza el planificador sobre él, descrito en el apartado 4.4.3. 4.7.3 Manejo del timer. El control de la temporización del sistema es realizado por medio del timer TO del microcontrolador. El timer TO se encuentra programado como temporizador de 16 bits, y activa una interrupción cada vez que la cuenta ha sido terminada. En la inicialización el timer se programa con cierta cuenta con la parte baja del timer con ceros. Cada vez que el timer termina su cuenta sólo el registro alto del timer THL es programado, con esto se garantiza que si un proceso por alguna circunstancia no cede el control del CPU al presentarse la interrupción TO por haber desactivado las interrupciones, al activar nuevamente las interrupciones y al atender TO, simplemente el tiempo asignado al siguiente proceso se reduce, evitando así un desplazamiento de tiempo en la ejecución del sistema. 4.7.4 Pantalla de cristal liquido. En el manejo de la pantalla se desarrollaron tres rutinas: La principal rutina utilizada permite desplegar una cadena de 16 caracteres arreglados en dos renglones de 8 caracteres cada renglón. Esta rutina se llama DISP y recibe como entrada una dirección de memoria en ROM donde se almacena dicha cadena. La cadena que se despliega debe estar estructurada de acuerdo al siguiente formato: “Cadena I”,RC,SL, “Cadena 2”,CERO La “Cadena 1” y “Cadena 2” deben ser de máximo 8 caracteres cada una, los símbolos RC (regreso de c&o) y SL (salto de línea), corresponden a los códigos ASCII de estos mismos caracteres y el valor CERO determina el final de la rutina DISP. Se pueden desplegar mensajes dinámicos almacenando en RAM externa la cadena a desplegar, de acuerdo al formato anterior, en la dirección OOOOh e iniciando la rutina DISP en la etiqueta DISPl. La rutina DESCAR permite presentar un caracter a la vez en la dirección actual de la pantalla, el código a desplegar se coloca en el acumulador antes de ser llamada 4.10 Capítulo 4 Desarrollo del software. la rutina. Una vez desplegado el caracter se incrementa la dirección donde se presentará el cursor, como operación implícita del hardware de la pantalla. 0 DESCOM es una rutina que permite a la pantalla ejecutar comandos cuando lo requiere; esta rutina recibe el número del comando en el acumulador. Otra rutina desarrollada para el manejo de la pantalla es CLRDIS, esta rutina limpia la pantalla y la memoria del módulo, colocando la dirección de despliegue del siguiente caracter en el origen. 4.7.5 Interfaces de E/S analógicas. En el manejo de las interfaces de entrada se desarrollaron por separado las rutinas que manejan tanto el bloque de entrada (convertidor analógico/digital) como el bloque de salidas (convertidor digital/analógico). El manejo de la interfaz de entradas analógicas se presento en el apartado 4.6.1. En la interfaz de salida se desarrolló una subrutina que recibe como entrada los valores digitales a convertir en el buzón correspondiente a cada canal. La rutina lee el valor del buzón lo marca como vacio e inicia la conversión en el siguiente canal. 4.8 Software de aplicación. El software de aplicación configura al sistema de procesamiento como controlador de procesos físicos, es manipulado por el software operativo y hace uso de este para accesar a los recursos de hardware del sistema. Algunas de las tareas principales que debe realizar el sistema son divididas en pequeños actividades individuales, las cuales pueden conformarse como procesos de software o como subrutinas que son llamadas por los procesos. Un proceso de software a su vez puede estar constituido por una o varias actividades, cada actividad también puede estar conformada por otro grupo de subactividades. La forma en que se dividen cada unidad de software, ya sea proceso o subrutina, tarea o actividad, se realiza para obtener una estructura clara, cuyo primer objetivo es permitir al sistema global mantener un funcionamiento adecuado y que facilite el desarrollo y mantenimiento del código. 4.8.1 Descripción de las tareas de aplicación. Las tareas de aplicación permiten al controlador desarrollar sus funciones, las tareas implementadas como software de aplicación son las siguientes: El control de los procesos fisicos. La interfaz al usuario. La comunicación serie. 4.1 1 Desarrollo del software. Capítulo 4 4.8.2 Control de los procesos físicos. El control de los procesos físicos se realiza de acuerdo a una secuencia lógica de pasos. Esta secuencia de pasos se encuentra constituida de acuerdo al algoritmo de control de control de la Figura 4.6. En el primer paso se establecen los parámetros: proporcional, integral y derivativo necesarios para el algoritmo de control PID, así como el punto de operación deseado o set point. A partir de este punto la operación del algoritmo PID se hace cíclicamente, esto es: se hace la adquisición de la variable controlada; se establece el error de operación y se ejecuta el algoritmo de control; para que finalmente el resultado obtenido por el algoritmo PID sea escrito como comando de control al proceso físico. parhetrns de de l a sena1 I I l*l Determinar i Ejecucion Figura 4.6. Algoritmo de control de procesos físicos. Con la ejecución cíclica, de los últimos 4 pasos, se logra mantener a cada proceso físico dentro de las condiciones de operación deseadas. Cabe destacar que es posible realizar cambios en línea a todos los parámetros del controlador a través de las interfaces al sistema, lo que significa que es posible realizar cambios dinámicos en el punto de referencia y en todos los demás parámetros para facilitar la sintonización del controlador. 4.8.2.1 Descripción de los módulos de control de los procesos físicos. De acuerdo a la Figura 4.6 el ciclo representado por los últimos 4 bloques permiten mantener una regulación constante. Los bloques de entrada y salida corresponden 4.12 Capítulo 4 Desarrollo del software. básicamente al manejo de los convertidores A/D y DIA cuyo manejo corresponde al software operativo. Vea apartado 4.6.1. La tarea de control de los procesos físicos a nivel de proceso de usuario fue limitada a las siguientes dos actividades: al cálculo. del error entre el punto de referencia y la variable controlada y a la ejecución del algoritmo de control PID. Un algoritmo PID se puede escribir de acuerdo a lo siguiente [Warwick]: m(t) = K,e(t) + K,T, de(t) + dt T, [e(t)dt En el dominio del tiempo o en términos de Laplace en la siguiente ecuación. - Discretizando la función Y reagrupando términos entonces se puede reescribir el algoritmo PID de la siguiente forma: M, = K,[A e,, +B.e,., +C.!,.,] T De acuerdo a lo anterior se obtiene una simplificación en el número de operaciones aritméticas al considerar los parámetros del algoritmo como constantes en el sistema. 4.8.3 lnterfaz al usuario. La interfaz con el usuario permite la comunicación usuarioisistema. la interfaz tiene el objetivo de permitir al usuario establecer. modificar y visualizar datos importantes para la operación del sistema. La interfaz al usuario hace uso de la pantalla de cristal líquido y del teclado del módulo controlador: el funcionamiento de la interfaz se basa en el uso de menúes y submenúes los cuales guían al usuario a traves de las opciones válidas: las opciones elegidas son introducidas a traves del teclado y se encuentran validadas de tal forma que alguna selección incorrecta es detectada e ignorada. El menú principal se hace presente en el sistema después de inicializar la operación del controlador y se presenta en la Figura 4.7. 4.13 Desarrollo del software. Capitulo 4 Figura 4.7. Menú principal del sistema. El menú principal del sistema da el acceso a cada una de las siguientes opciones: Diagnóstico del controlador. Opciones de los procesos físicos. Despliegue de variables. Información general del sistema. A continuación se presenta una descripción de las tres primeras opciones. 4.8.3.1 Diagnóstico del hardware del controlador. La opción marcada como O permite realizar un diagnóstico al módulo controlador sobre su propio hardware. Dicha prueba se realiza sobre los siguientes elementos: Memoria RAM, Memoria ROM, EíS analógicas y EíS digitales. La memoria RAM externa es probada mediante la escritura de cierto dato conocido en un bloque de 256 bytes. Posteriormente el bloque es leído byte por byte y es comparado con el dato escrito inicialmente, si una de estas comparaciones resulta una desigualdad entonces se termina la prueba de RAM externa y se almacena el resultado de la prueba como error de memoria RAM. La prueba de memoria ROM se lleva de forma similar que la prueba de RAM, con la diferencia de que el bloque sobre el que se realiza la comprobación ya contiene la información a probar. La interfaz analógica es probada mediante los dos convertidores, primero se escribe un valor en el canal 3 del convertidor digitahnalógico, la salida de este canal se encuentra conectado con el canal 3 del convertidor analógicoídigital. A continuación se inicia una conversión en el canal 3 del convertidor y el valor obtenido de la conversión es comparado con el valor escrito originalmente en el CDA. Si la comparación de los datos se encuentra dentro de un margen de error de 2 bits se realiza el mismo proceso de comparación para un nuevo valor. En caso de que el error exceda a dos bits la prueba de la interfaz analógica es terminada y se registra la condición de error para la interfaz. En la comparación se lleva a 4.14 Capítulo 4 Desarrollo del software. cabo un enmascaramiento de los 2 bits menos Significativos para garantizar que el funcionamiento de ambos convertidores es correcto. El último módulo probado corresponde a la interfaz digital y es probado de la misma forma que la interfaz analógica. El canal 7 del módulo de salida es conectado con el canal 7 del módulo de entrada. Los resultados de las pruebas individuales se anotan en un registro en memoria interna del microcontrolador, que es direccionable bit a bit y corresponde a la dirección 24H, cada uno de los bits del nible bajo de este byte es designado para almacenar el resultado de cada prueba. Cuando es detectado un error en alguno de los módulos bajo prueba, se pone entonces a uno el bit correspondiente al módulo bajo prueba. La asignación de los bits se realiza de acuerdo al siguiente formato: “Sinasignar” iA ID RO RA ID: Interfaz Digital Figura 4.8. Registro de diagnóstico del hardware. Una vez terminadas las pruebas, se presenta en pantalla el valor del registro 24H en formato hexadecimal, salvo que no se hayan detectado errores, en cuyo caso se presenta el mensaje “NO SE DETECTARON ERRORES”. 4.8.3.2 Opciones de los procesos. Esta opción del menú principal permite al usuario actuar sobre los parámetros de los procesos físicos. Las opciones disponibles sobre los procesos son las siguientes: Visualizar parámetros. Esta prueba permite ver los parámetros de control de cada proceso. Modificar parámetros. Modifica los parámetros de control de cada proceso. Alta de procesos. Inicia la operación de control sobre el proceso físico seleccionado. Baja de procesos. Desactiva el control en el proceso físico controlado. 4.8.3.3 Despliegue de variables. Esta opción permite al usuario monitorear el valor que está siendo leído en cada uno de los canales de entrada analógica, los cuales corresponden a los valores en que se encuentra cada planta. Cuando esta opción es activada entonces son leídos los buzones de entrada de cada canal analógico y el valor almacenado en cada buzón es desplegado en su valor porcentual en la pantalla de cristal líquido. 4.15 Desarrollo del software. Capítulo 4 4.8.4 Interfaz de comunicación serial. La interfaz de comunicación serie provee el usuario de una interfaz con el sistema a través de una computadora personal. La interfaz serie permite las mismas opciones que la interfaz local usuario/sistema. La comunicación serie se realiza mediante un protocolo elemental de parada Y espera, este pro to^^^^ permite el intercambio de información a través de asentimientos. Al inicio de la operación en e] módulo controlador se activa el proceso encargado de la Comunicación. El proceso de comunicación serial inicialmente monitorea constantemente el canal sene verificando si se ha recibido un dato de inicio de comunicación, por su parte la interfaz en la PC inicia la comunicación con el controlador mediante la transmisión inicial de un carácter que permite establecer la comunicación. AI inicio, cuando el proceso serial en el controlador recibe un byte verifica si es el correspondiente al de inicio, si no es el caso, este proceso se mantiene en estado de espera para establecer comunicación. Como se mencionó anteriormente la parte de la interfaz serie residente en la PC se encarga de iniciar la comunicación con el controlador, cuando la PC manda el byte de inicio de comunicación y este es recibido, entonces el controlador manda un byte de asentimiento indicando que está listo para seguir con la comunicación. El módulo controlador actúa como esclavo durante la comunicación, la PC envía un conjunto de comandos que son recibidos, interpretados y ejecutados por el controlador. El protocolo de parada y espera permite sincronizar la comunicación entre ambos módulos, los módulos de software en ambos elementos de hardware se diseñaron de tal forma que trabajaran conjuntamente: En general, cuando algún elemento envía información al otro módulo espera una confirmación de la recepción antes de enviar más información. En la contraparte cuando alguno de los módulos recibe información, primero la procesa y después envía un asentimiento por la información recibida. El protocolo de parada y espera y el diseño de ambos módulos para una operación interactiva y coordinada permite una comunicación eficiente y coordinada entre ambos módulos sin problemas de sincronía. 4.8.5 Operaciones aritméticas de punto flotante. En el desarrollo de algunas de las funciones del controlador es necesario realizar operaciones aritméticas, como multiplicaciones y sumas, de tipo de punto flotante. Para el desarrollo de estas rutinas se consideró un número de 24 bits, 1 bit de signo, 7 bits de exponente y 16 bits de fracción, de acuerdo con el formato de la Figura 4.9. En el manejo de las operaciones de punto flotante se consideran fracciones normalizadas y con un bias o desplazamiento en el exponente. 4.16 Desarrollo del software. Capítulo 4 (; Dirección: Base0 {T\ Exponente siglo: o =+ 1=_ Fracción Base2 Figura 4.9 Formato de punto flotante. 4.8.5.1 Adición y substracción. La rutina desarrollada para la adición y substracción se basa en una misma estructura. La substracción usa el complemento a dos del substraendo. Para iniciar la operación se asume que cada operando consiste de fracciones normalizadas y de exponentes con desplazamiento [Cavanagh]. El algoritmo de adiciódsubstracción se divide de acuerdo a los siguientes pasos: 1. Verificar si hay operandos iguales a O. 2. Alinear la fracción. La fracción del exponente menor es corrida a la derecha y se incrementa el exponente hasta que ambos exponentes sean iguales. 3. Sumar o restar fracciones. 4. El exponente del resultado es igual al exponente mayor. 5. Normalizar el resultado. 6 . Checar subflujo o sobreflujo. Los operandos implicados se encuentran representados de acuerdo a los siguientes registros: R1 = el . sl R l = e2 ' s2 . fl . fz Primer operando. Segundo operando. Donde e es el exponente, s presenta el signo,frepresenta la fracción. En el funcionamiento de esta rutina se requiere establecer el primer operando en los registros internos del microcontrolador R2, R3 y R4,el segundo operando se establece en los operandos R5, R6 y R7,se llama a la rutina SUMA y entrega el resultado en los registros R2, R3 y R4.Cada operando de entrada debe estar normalizado para obtener el resultado correcto el cual se entregará también normalizado. Todos estos pasos de variables se realizan de acuerdo al formato de la Figura 4.9. 4.17 Capítulo 4 Desarrollo del software. 4.8.5.2 Multiplicación. desarrollada para la multiplicación se basa en el mktodo de L~ sma/corrimiento; es ejecutada sobre dos operandos de punto flotante normalizados, que usan un exponente con desplazamiento [Cavanagh]. La multiplicación se basa en los siguientes cinco pasos: 1. Verifica operandos iguales a cero. 2. Determina el signo del producto. 3. Suma los exponentes. 4. Multiplica las fracciones. 5 . Resta el bias y normaliza el producto. 6. Checar subflujo o sobreflujo. Los registros implicados son los mismos que en el caso de la suma. En las llamadas a la rutina los operandos deben encontrarse normalizados, el primer operando se pasa a través de los registros R2,R3 y R4 y el segundo operando se pasa a través de R5, R6 y R7. El resultado se entrega normalizado en los registros R2, R3 y R4. Tanto en la suma como en la multiplicación se verifica que no existan errores de flujo en las operaciones, en caso de que esto suceda entonces se llama a una rutina que maneja este error. Esta rutina io que hace es desactivar al proceso que genera el error y despliega un mensaje en la interfaz local indicando el error y el número del proceso que generó el error. 4.9 Herramientas de generación de código. Las herramientas utilizadas para la generación del código ejecutable en el módulo de procesamiento concurrente fueron desarrolladas por Avocet Systems, y son las siguientes: Programa ensamblador para 8051 y compatibles: AVSIM5I. Programa ligador: A VLINK. Programa convertidor a formato binario: HEXFORM. Con esta serie de programas se genera el código ejecutable para el módulo desarrollado, la secuencia y la sintaxis de cada programa se presenta en el siguiente punto. 4.9.1 Generación del código ejecutable. El programa que incluye todo el código con el software operativo y con los programas de aplicación se llama TESIS.ASA4 el cual es sometido al siguiente tratamiento para obtener el código ejecutable en el módulo de procesamiento. 1. Se compila el programa con la siguiente sintaxis: A V M C51 TESIS.ASM 2. Si no hay errores en el paso anterior A VLINK TESIS=TESIS 4.18 Capítulo 4 Desarrollo del software. 3. Finalmente: HEXFOR M TESIS= TESIS Con estas secuencia de instrucciones se obtiene el archivo TESIS.BIN, el cual contiene el código ejecutable para el microcontrolador. Este archivo es grabado directamente en la memoria de programas del módulo de procesamiento. 4.10 Alta de los procesos de software de usuario. Para agregar un proceso de software de usuario al sistema una vez comprobado el funcionamiento correcto de dicho proceso, debe llevarse a cabo una serie de pasos para darlo de alta dentro del sistema. Dentro del archivo TESIS.ASM se encuentra la subrutina INIPROC, la cual se encarga de inicializar los procesos de usuario dentro del sistema. En esta subrutina en la leyenda: “TABLAS DE DIRECCIONES DE PROCESOS, debe incluirse el nombre del proceso que nos interesa dar de alta añadiendo las siguientes líneas de código: MOV DPTR,#(Nombre-del -Proceso) MOV (Base_Pila(n)+2),DPL MOV (Base-Pila(n)+3),DPH La base de pila se refiere a la pila de memoria RAM interna designada para cada proceso, aquí se relaciona el número del proceso con el nombre del proceso y se describe en la Tabla 4.2. Tabla 4.2 Relación entre pilas y procesos. En el archivo TESIS.ASA4 se encuentra también la rutina INIDAT, la cual establece los parámetros de control de los procesos internos, entre ellos los parámetros de las colas de procesos activos. Aquí deben formarse los procesos activos que se integran en el sistema, se disponen de ocho espacios para los procesos de prioridad O y ocho para prioridad 1. Aquí se integra el número del proceso en alguna de las filas, por ejemplo: Si se quiere integrar el proceso número 3 en la fila de prioridad O, entonces se debe realizar lo siguiente: 4.19 Desarrollo del software. Capítulo 4 En la cola de procesos FIFO O, se integra la línea MOV 30H,#03, después el apuntador FWRO debe hacerse corresponder con la localidad donde se carga el último proceso en la fila mediante la siguiente línea MOV FWRO,#30H. Finalmente en la rutina SCSP se deben integrar unas líneas de c d i g o a partir de la etiqueta SSPI, de acuerdo al siguiente formato: MOV DPTR,#CPRO(n) MOV RO,#(Base-Pila(n) + 2) MOV A,#(BasePila(n) + 3) MOV DPTR,#(Nombre-del -Proceso) Con estas líneas se integra finalmente un proceso de usuario al sistema de procesamiento concurrente. Por lo que el siguiente paso a realizar es la generación de código de acuerdo a lo descrito en el punto 4.9.1. Con lo que se obtiene el proceso de usuario inmerso en el módulo de procesamiento y listo para ser ejecutado. 4.20 Capítulo 5. Pruebas y Resultados. 5.1 Introducción. En este capítulo se describen las pruebas realizadas a cada uno de los componentes del sistema. Dentro de esta descripción se incluyen las pruebas de diseño del hardware y las del software operativo, en las cuales se enfatizan las pruebas de gestión de procesos, la sincronización y comunicación entre procesos y manejo de interrupciones. Se presentan también las pruebas funcionales del sistema, realizadas para comprobar el módulo de procesamiento concurrente en su operación como controlador. También se verificaron el funcionamiento de las plantas simuladas en la PC y las interfaces al usuario en la PC a través del canal serie y en la interfaz local. En la Figura 5.1 se presenta la configuración general sobre la cual se llevaron a cabo las pruebas del sistema, la cual está comprendida por los instrumentos utilizados para las pruebas del sistema y los elementos que fueron probados. r-- .................................................................................................................... lnterfaz de acceso remoto Instrumentos ! Tarjeta de adquisición Módulo de ............................................................................................................. procesamiento Figura 5.1 Esquema de pruebas del sistema. 5.1 Pruebas y resultados. Capitulo 5. 5.2 Pruebas de diseño del hardware. Las pruebas de diseño permitieron detectar y corregir errores en la etapa de desarrollo del hardware. Se realizaron sobre cada bloque funcional que conforma al módulo de procesamiento. Dentro de estos submódulos funcionales la etapa de procesamiento y control es la parte básica por lo que requirió de una verificación exhaustiva. El esquema de pruebas para este submódulo se constituyó de acuerdo a la Figura 5.2, mediante este esquema y con un programa de prueba se comprobó el funcionamiento de cada uno de los elementos de este bloque. Se comprobaron las funciones de acceso a memoria ROM y RAM, direccionamiento y reset. iy? direcciones ROMIRAb b Líneas de control t Lógica de control Decodificador de direcciones control 4 Figura 5.2 Esquema de prueba de procesamiento y control. El submódulo de procesamiento y control, una vez depurado sirvió como platafoma para continuar con la implantación y prueba del resto de los submódulos que conforman el sistema de procesamiento. Las pruebas de diseño realizadas sobre cada submódulo del sistema se describen en la Tabla 5.1. 5.2 Pruebas y resultados. Capitulo 5. Submódulo Comentarios Pruebas Procesamiento y Oscilador y reset. control. Acceso a memoria RAM. Acceso a memoria ROM. Direccionamiento. Verificación del hardware de la Figura 5.2 bajo una subnitina de prueba y despliegue de resultados a través del led de indicación Interfaz local. Teclado y decodificador. Prueba a través de conmutación de Pantalla de cristal líquido. mensajes desplegados en la pantalla y Interrupción. seleccionados mediante el teclado. Atención del teclado por interrupción. Interfaz serie. Circuito de comunicación. Transmisión de mensajes a una terminal TransmisiónRecepción. (PC) y recepción de comandos para conmutación de mensajes desde la terminal. Interfaz digital. Buffer de entrada. Latch de salida. Lectura de buffer controlado por teclado, presentación del dato en la pantalla y en latch de salida, para verificación manual. Interfaz analógica. Convertidor A/D. Convertidor D/A Lectura de señales de entrada fijas y conocidas, presentación en la pantalla y escritura al CDA. Prueba mediante comparación entre conversiones. Generadores de Timers programables 8254 Variación de frecuencias de control y en Generadores HEF4752 las señales PWM generadas. Fuente de alimentación Voltajes: 2 5 V 215 V Prueba bajo carga máxima, niveles de tensión 2 1% de error. Nivel de ruido I 50 mV. 5.3 Pruebas del software operativo. Las pruebas realizadas sobre el software operativo se enfocaron a verificar el procesamiento concurrente de las tareas de usuario y se orientaron también a comprobar el funcionamiento de los elementos básicos del núcleo del software operativo. Las pruebas se realizaron sobre: La gestión de procesos, (planificador, manejo de contexto, colas de procesos) Sincronización y comunicación entre procesos, y El manejo de hardware e interrupciones. 5.3 Pruebas y resultados. Capitulo 5. 5.3.1 Pruebas de gestión de procesos. LB pruebas de gestión de procesos se realizaron para comprobar el Procesamiento concurrente de los procesos de usuario, para lo cual es necesario también comprobar el funcionamiento de los elementos involucrados en la gestión de procesos, como son: el planificador, el manejo de contexto y las colas de procesos activos. Cada uno de estos módulos fueron desarrollados, probados y depurados individualmente mediante el simulador del microcontrolador Avsim5 1. La comprobación de la correcta gestión de procesos se hace a través de un conjunto de procesos de usuario que permiten determinar si se lleva a cabo el procesamiento "simultáneo" de los procesos; con lo cual también se comprueba que la implementación de la gestión de procesos ha sido adecuada. La prueba de concurrencia del sistema se realizó primero a nivel de simulación con dos procesos (Figura 5.3). Un proceso presentaba dos mensajes distintos en memoria interna y los conmutaba en intervalos de tiempo iguales y el segundo proceso simulaba una transmisión del contenido del acumulador a través del canal serie. Los procesos fueron activos con prioridad 1 y prioridad O respectivamente. I Proc 1 I zri Espera Inc. Acc Espera Figura 5.3 Procesos de prueba de la concurrencia. Esta misma prueba se realizó en el módulo real con los mensajes presentados en la pantalla LCD y con un intervalo entre conmutaciones de 1 s, mientras que la transmisión serie se realizaba hacia una PC que desplegaba el dato recibido, de acuerdo a la Figura 5.4. 5.4 Capitulo 5. pruebas y resultados. -* Despliega dato recibido Módulo Controlador -Pantalla: Conmutación de mensajes. PC: Terminal Figura 5.4 Esquema de prueba de concurrencia. Con ambas pruebas se verificó en primer lugar: la ejecución concurrente de los procesos de software dentro del sistema. Y por otra parte se verificó también que ei funcionamiento de las rutinas de software de la gestión de procesos: el planificador, el manejo del contexto y el manejo de las filas de procesos, se llevó a cabo en forma correcta. De esta prueba se destaca como resultado el hecho de que la política elegida para la administración de los procesos funcionó adecuadamente. 5.3.2 Pruebas de sincronización y comunicación. El objetivo de esta prueba fue verificar ia filosofía de manejo de los elementos de sincronización y comunicación entre los procesos, la cual se desarrolló a partir del manejo de semáforos. Esta prueba se realizó en base a dos procesos de acuerdo a lo siguiente: Un proceso manejando dos mensajes como el descrito en el inciso 5.3.1, pero que espera por un semáforo para empezar su funcionamiento, con un nivel de prioridad 1, Y Un segundo proceso que espera a que una tecla sea oprimida para activar el semáforo que espera el primer proceso y continúa con la transmisión cíclica del contenido del acumulador a través del canal serie y tiene un nivel de prioridad O. Ambos procesos se presentan en la Figura 5.5, esta prueba también se desarrolló primero a nivel de simulación en el Avsim51 y una vez depurado el manejo de semáforos se realizó la prueba a nivel del módulo real. 5.5 Pruebas y resultados. Capitulo 5. semáforo D Espera Figura 5.5 Prueba de sincronización entre procesos. El ambiente planteado para la realización de esta prueba se presenta en la Figura 5.6, en ella se observa el funcionamiento de los procesos de prueba. Se inicia la operación al oprimirse una tecla en la interfaz local y comienza tanto el proceso de comunicación sene, como el de conmutación de mensajes. DesDliena . - datos al oprimir tecla en el controlador y--. , , Pantalla: Conmutación de mensajes al activar semáforo. PC: Terminal I Teclado: Activa semáforo e inicia transmisión serie. Figura 5.6 Esquema de prueba de sincronización. Esta prueba permitió verificar el funcionamiento correcto de procesos que involucran semáforos en su sincronización con algún evento. Los buzones, como herramienta de sincronización, fueron probados bajo un esquema muy similar, por lo que no se describe la prueba realizada sobre ellos. 5.6 pruebas y resultados. Capitulo 5. 5.3.3 Pruebas de manejo de interrupciones. El propósito de esta prueba consistió en comprobar el funcionamiento correcto de 10s procesos de usuario en presencia de interrupciones, y determinar, si con las políticas establecidas para el manejo de interrupciones se obtienen resultados correctos en la ejecución de los procesos. Dentro del sistema sólo se utilizaron las interrupciones - del timer O, usado para asignar las “rebanadas” de tiempo, y la interrupciónINT0 utilizada para el manejo del convertidor de analógico/digital. Para realizar la prueba de manejo de interrupciones se implementaron dos procesos y dos rutinas de atención a interrupciones, de acuerdo a la Figura 5.7. Un proceso encargado de leer tres buzones y desplegar el valor de cada buzón en la pantalla; cada buzón se relaciona con cada canal del convertidor analógico/digital y el 6 + b Lee BUZO b P 6 Acc=O Semáforo 23 Lee canaKj) j=O Inc. Acc Des. valor1 9 Lee BU22 lnic canai(i) Des. valor2 Figura 5.7 Prueba del manejo de interrupciones. valor desplegado corresponde al valor de entrada en cada canal. Un segundo proceso se encarga de transmitir el contenido del acumulador por el canal serie y tiene como objetivo en la prueba mantener la concurrencia con el primer proceso. En las rutinas de atención a las interrupciones el manejo del timer permite la operación síncrona del sistema al controlar los tiempos de operación del planificador a través de interrupciones en el timer O, las cuales son contabilizadas para lograr sincronizar el funcionamiento del convertidor analógico/digital. Cada 10 ms la m i n a que atiende al timer inicia una conversión en el canal O del CAD y habilita la interrupción __ INTO, la cual corresponde al convertidor. 5.7 Pruebas y resultados. Capitulo 5. Al presentarse una interrupción del CAD la rutina de atención lee el canal actual y el valor de la conversión es escrito en el buzón correspondiente, e inicia la conversión del siguiente canal del convertidor. Si todos los canales han sido muestreados en este periodo de muestre0 se termina la rutina sin iniciar más conversiones. Las conversiones son iniciadas nuevamente por la rutina de atención del timer O. El esquema para las pruebas de interrupciones se presenta en la Figura 5.8, en él se presenta el módulo controlador. Este último se encarga de adquirir las señales analógicas y de desplegar sus valores en la pantalla de la interfaz local. El módulo controlador se encarga también de transmitir una secuencia de valores por el canal serie a una PC, que despliega los valores recibidos en el monitor. -T! Despliega datos recibidos PC: Terminal -n Módulo Controlador .. . . . .... i.i. .... > : t Enlace serie Entradas analógicas ..: ... / ... .. ..,. 5v I P a n t a l l a : Presenta los valores de la conversión Figura 5.8 Esquema de prueba de interrupciones. Con la realización de esta prueba se comprobó el funcionamiento concurrente de los procesos de usuario en un ambiente en el que constantemente se presentan interrupciones de hardware. Con esta prueba se corroboró que las políticas adoptadas para el manejo de las interrupciones arrojó resultados adecuados que permitieron al sistema ser utilizado en un ambiente real de control. 5.4 Pruebas funcionales. Las pruebas funcionales se desarrollaron para comprobar el funcionamiento del sistema en su aplicación como controlador, de acuerdo al esquema de pruebas de la Figura 5.1. Las pruebas realizadas en cuanto a funcionalidad incluyen al módulo de procesamiento en su nivel de aplicación, las plantas simuladas y la interfaz serie. 5.4.1 Pruebas a los procesos controlados. El objetivo de las pruebas realizadas sobre los procesos simulados en la PC fue el verificar su funcionamiento de acuerdo a las características presentadas por el modelo usado en la simulación de los procesos. Esta prueba consistió en aplicar un escalón a la entrada del simulador y verificar la respuesta generada por el programa en la PC. 5.8 Capitulo 5. Pruebas y resultados. El esquema de pruebas utilizado se presenta en la Figura 5.9. El módulo controlador se encarga de generar el escalón de prueba para los procesos simulados en la PC, el proceso simulado en la PC responde conforme a los cambios que se presentan en la entrada de la tarjeta de adquisición. La salida del simulador es monitoreada en un osciloscopio para poder analizar la respuesta de los procesos simulados. osciloscopio _~- ................................................................... Entorno de ............................ Módulo Controlador .......................... Figura 5.9 Esquema de prueba de los procesos simulados. En la Figura 5.10 se presenta la respuesta al escalón del simulador. Sobre esta figura se realizó la medición del valor de la constante de tiempo de los procesos simulados, la cual se identifica en el valor de 3.16 V o del 63.2% del valor máximo de los procesos. Este valor es alcanzado por la respuesta aproximadamente a los 90 ms de ser aplicado el escalón. Con esta prueba se caracterizaron los procesos simulados utilizados en el sistema de 5" L ......................................... O o. 1 0.2 63.2 % 0.3 s Figura 5.10 Respuesta al escalón del simulador. control y se comprobó que la constante de tiempo de los procesos simulados correspondía 5.9 Capitulo 5. Pruebas y resultados. con el modelo matemático utilizado para la simulación. Obteniéndose los procesos controlados de acuerdo a lo descrito en el punto 2.4 en la página 2.8. 5.4.2 Pruebas de los algoritmos de control PID. Esta prueba se realizó para comprobar el funcionamiento de los algoritmos de control PID desarrollados para ser implementados en el módulo de control. Esta prueba se realizó a través de la comparación de los resultados generados en simulación entre el código para el módulo de control y un programa de alto nivel para PC desarrollado para establecer un punto de referencia. Para el desarrollo de esta prueba se utilizó un ambiente de simulación de acuerdo a la Figura 5.1 I . Por un lado se desarrolló el algoritmo PID en lenguaje ensamblador tal como sería implantado en el módulo de procesamiento concurrente, y por otro lado el mismo algoritmo de control PID se programó en lenguaje C en una PC, para establecer comparaciones entre los resultados obtenidos por cada elemento de la prueba. En ambos algoritmos se establecieron los mismos parámetros de control y como entrada se les suministró el error actual desde teclado. Simulación de AvsimSI algoritmos PID: --h ! - J anc a y"' ": . ' 7 -- v r 7 ~ -. = ' --' =' Simulación de Comparacián de resultados ! s e 1. r I Figura 5.11 Validación de los algoritmos de control. Con esta prueba se comprobó que el funcionamiento de los procesos de software con el algoritmo PID era adecuado y generaban resultados correctos. Una prueba más realizada sobre los algoritmos de control fue la medición del tiempo de ejecución en el módulo real el cual fue de 2.1 ms, con lo que se cumplió el limite establecido para la ejecución de los algoritmos de control que tenía que ser menor a 2.5 ms. 5.4.3 Pruebas del sistema de control. Las pruebas finales realizadas se efectuaron para comprobar el funcionamiento adecuado y simultáneo de cada uno de los elementos que integran el sistema completo. Las pruebas principales en esta parte, tuvieron como objetivo el verificar la operación del sistema como controlador sobre los procesos que se encuentran operando simultáneamente. La primera prueba de control se realizó sobre un único proceso físico, con el objeto de comprobar las acciones de control en estado estable del proceso físico (Figura 5.12); para 5.10 Pruebas y resultados. Ca itulo 5. lo cual se activó un proceso de software en el módulo real encargado de regular el comportamiento de dicho proceso fisico. Entornode .-..- Módulo Controlador Figura 5.12 Control de un proceso. Se estableció un punto de operación al 50% para el proceso fisico a controlar y se inicio la operación de control en el sistema. A través del osciloscopio conectado en la salida del proceso correspondiente se observó la respuesta del sistema, la cual se presenta en la Figura 5.13, observándose un error aproximado de 21% entre el Comportamiento del proceso físico y el valor deseado establecido en el módulo ontrolador. 1 5 9 13 17 21 25 s Figura 5.13 Respuesta del proceso controlado. Con esta prueba se verificó que la operación del módulo como controlador permitía mantener una regulación sobre los procesos aceptable en condiciones de operación estáticas. 5.1 1 Pruebas y resultados. Capitulo 5. La siguiente prueba se desarrolló con la intención de comprobar el funcionamiento del sistema completo, es decir controlando los tres procesos fisicos en forma "simultánea", además de ejecutar las tareas de interfaces al usuario, tanto local como sene (Figura 5.14). PC: lnterfaz Serial ~. .................................... -1 Módulo Controlador Enlace serie Figura 5.14 Esquema de prueba del sistema completo. La prueba consistió en controlar tres procesos en forma simultánea en diferentes puntos de operación y generar cambios en la carga a través de cambios en la referencia. En esta prueba se establecieron los puntos de operación deseados de acuerdo a los siguientes valores: I ~0.proceso Proceso 1 Proceso 2 Proceso 3 I Referencia 80% 50% 30% Con estos valores se inicio la operación de regulación en los procesos. En cierto instante de tiempo se generaron cambios en la referencia de alguno de los procesos y se observó la respuesta de cada uno de ellos. Con esta prueba se verificó la independencia entre los procesos de software y el control simultáneo de las plantas. En la Figura 5.1 5 se observa la respuesta obtenida para esta prueba y se presentan los perfiles de carga en cada uno de los tres procesos. En los procesos 1 y 3 se establecen los puntos de operación en un 80% y en un 30% respectivamente, y se mantienen en ese valor durante toda la prueba. En el proceso 2 inicialmente se pone el punto de operación en un 50% y se inicia la operación del sistema con los tres procesos operandos simultáneamente y se comprueba la operación simultánea y correcta de los tres procesos. En un instante dado se realizan cambios en la referencia del proceso 2, de un 50 a un 25%; tanto en el proceso I como en el 3, el perfil de carga se mantiene en 10s puntos de operación iniciales y se observa que la operación de cada proceso no se ve afectada por los cambios en la operación de otro proceso. Lo mismo sucede cuando el cambio se realiza del 20 al 80% en el punto de operación; se observa también que el tiempo en que el proceso controlado alcanza la 5.12 Pruebas y resultados. Capitulo 5. respuesta el valor de referencia cuando se realiza un cambio en la referencia es de 70 ms aproximadamente, además de que los cambios en un proceso se dan en forma independiente entre los diferentes procesos. 90 Yo 80 70 .- 60 -- SO .- 40 .- 30 . 20 IO 0 .-- " Proceso 1 // - I / Proceso 3 Cambios en la carga 4 U 50ms Figura 5.15 Respuesta de tres procesos en operación simultánea. Con esta prueba se verificó que realmente el control simultáneo de los procesos se realizaba, debido principalmente al esquema de software operativo que permite el procesamiento concurrente y otorga total independencia entre cada uno de los procesos de usuario que se encuentren activos. Con estas pruebas y con las de interfaces de usuario el sistema quedo integrado y probado completamente, con lo cual se dio por terminado el desarrollo del sistema. 5.13 Capítulo 6. Desarrollo de procesos de usuario. 6.1 Introducción En este capítulo se describe la operación del software operativo de modo tal que pueda ser aprendido por usuarios que requieran desarrollar aplicaciones en esta plataforma O que desean realizar mejoras en el sistema desarrollado. Para tal efecto se recomienda el estudio conjunto de esta sección y del software contenido en el disco anexo, para familiarizarse con el código a través de esta guía. Todo el software del sistema se encuentra desarrollado en ensamblador y se tiene acceso a cada segmento de código, por io que se deben respetar las condiciones establecidas para mantener el ambiente de concurrencia. 6.2 Elementos requeridos en el sistema. Para el desarrollo de nuevas aplicaciones sobre esta plataforma es necesario contar con los siguientes elementos: Software anexo al documento en disco flexible. Arquitectura de hardware compatible de acuerdo a lo descrito en el capítulo 3. Ensamblador de código del 805 1. Ligador de código para el 8051. Herramienta para cambio de formato HEX a binario. Grabador de memoria para la memoria de programas del sistema. 6.3 Descripción del archivo TESIS.ASM. El software operativo se encuentra en el archivo TESIS.ASM en el disco anexo, este documento incluye el software operativo completo y todos sus elementos auxiliares, también se encuentran incluidos los procesos de aplicación del sistema. La estructura de este archivo se describe a continuación: 1. Se definen constantes del sistema como direcciones de los espacios de contexto, constantes de procesos de software, localidades para variables de procesos de software, etc. 2. A continuación se realiza la inicialización de los elementos del sistema; las rutinas de inicialización se puede escribir en este punto o en el espacio en el archivo marcado como "Rutinas de inicialización" (ver punto 5). En este punto se realiza la inicialización de los elementos del software operativo como son los registros internos del microcontrolador y los estados de los elementos del software operativo, así como de los procesos de usuario que requieran de condiciones iniciales. 6.1 Desarrollo de procesos de usuario. Capítulo 6. 3 . A continuación se presenta el planificador del sistema, el cual empieza SU operación guardando los registros que son utilizados por 61, con el fin de evitar corrupción en 10s registros del proceso que abandona el CPU. A Continuación selecciona el siguiente proceso poseedor del CPU, salva y restablece contextos y entrega el procesador al siguiente proceso de software. 4. El siguiente código consiste de rutinas auxiliares en el manejo de los procesos de usuario, como salvar y cargar contexto, retira e inserta procesos en fila de procesos activos de prioridad 1 y las mismas rutinas para prioridad O. La rutina que restablece el contexto (RSTCTX), es usada por procesos que terminaron SU funcionamiento pero que requieren mantenerse activos y reiniciar su operación. La rutina que salva el contexto del Stack Pointer (SCSP) restablece las condiciones iniciales de cada proceso de software que termina su operación y se desactiva. 5 . El siguiente espacio de código se utiliza para almacenar las rutinas de inicialización del sistema tanto en hardware como en software. El usuario que requiera de realizar la inicialización de algún elemento, debe agregar en este espacio el código correspondiente y realizar la llamada al final de la inicialización del sistema, de acuerdo a lo descrito en el punto 2, después de la instrucción CALL INIPROC. 6. El punto siguiente corresponde a las rutinas de atención de interrupciones, en este punto se presentan las rutinas de atención escritas para el sistema. La primera corresponde al manejo del timer o reloj del sistema y la segunda para el manejo del convertidor analógico/digital. 7. En la rutina de atención del timer es posible añadir breves secuencias de código que permiten manipular semáforos binarios o contadores para lograr sincronía de algunos eventos con respecto al tiempo, en múltiplos de tiempo de la base de 10 ms. 8. El siguiente punto corresponde a las rutinas de inicialización del hardware, entre otros módulos se inicializa el canal de comunicación serie, la pantalla de cristal líquido, los temporizadores programables, la memoria RAM interna y la memoria RAM externa, etc. 9. Continúan las rutinas generales que pueden ser utilizadas por todos los procesos de usuario, entre estas rutinas se encuentran las del manejo de la pantalla de cristal líquido, las de comunicación serie, de retardos, de transferencias entre memorias, de operaciones aritméticas, y de conversiones de formatos de variables, entre otras. 1O.El siguiente espacio almacena exclusivamente los procesos del usuario. Algunos de los cuales son presentados como ejemplos al final del capítulo. 11.Finalmente se presenta el espacio para almacenar tablas de datos y algunas constantes para el sistema y cadenas de caracteres, I 6.4 Procesos de software de usuario. Un proceso de software de usuario debe ser escrito de acuerdo a la estructura propuesta para tareas de usuario mostrada en la Figura 6.1 : 6.2 Capítulo 6. Desarrollo de procesos de usuario. a FunciOn del .......... I ......... .Manipula buzones ; : y semáforos i L ,...... .......... .Verifica buzones: : y serniforos ........ I....... . : .'."'"'.$.'.."... Abandona Figura 6.1. Estructura de los procesos Cada tarea de software debe respetar esta estructura. Si se requiere sincronizar su operación con elementos como semáforos o buzones, el proceso debe comenzar verificando dichos elementos y determinar su propio estado para decidir si continua o entra en un estado de bloqueo. En la siguiente etapa de la estructura debe incluirse el código de los procesos. Un proceso que entra en ejecución al terminar y sólo si se requiere, debe manipular los elementos de sincronía involucrados en su operación. La ejecución se termina restableciendo las condiciones iniciales de la pila del proceso y abandonando el procesador. Estas operaciones se realizan de acuerdo a los siguientes casos: 1. El proceso termina y debe ser desactivado. En este caso deben ejecutarse al final de la operación del proceso las siguientes instrucciones. CLR 21H.0 RET Con estas instrucciones el proceso queda desactivado y no es vuelto a incluirse en la fila de procesos activos. El bit 21H.0 indica al planificador que el proceso que abandona el CPU deberá ser desactivado. 2. El proceso termina su operación pero debe reiniciarse o el proceso entra en un estado de bloqueo. Cuando el proceso termina su operación con la instrucción JMP RSTCTX,el proceso es nuevamente incluido en la fila de procesos activos y en su siguiente ejecución comienza la operación en la etiqueta de inicio de dicha tarea. 6.4.1 Limitantes en los procesos de usuario, El desarrollo de las tareas de usuario debe respetar ciertas reglas necesarias para la administración del proceso. 6.3 Desarrollo de procesos de usuario. Capítulo 6. Se recomienda no modificar ninguno de los elementos del software operativo, salvo aquellos que se indican en el punto de alta de procesos de usuario. Deshabilitación de interrupciones en un máximo de 760 instrucciones del microcontrolador con un ciclo máquina de 4 ciclos de reloj o en otro caso por un lapso de tiempo menor de 270 ,us Cada proceso de usuario tiene asignada una pila de memoria que se utiliza para controlar las llamadas y saltos realizados por interrupción. Esta pila solo almacena 4 direcciones de 16 bits por lo que las llamadas a rutinas anidadas deben limitarse a un máximo de tres llamadas. 4.4.1. y 4.4.6 En el caso de que se requieran elementos de sincronía como semáforos y buzones, el proceso debe verificar estos propios elementos. Para mayor detalle revisar los ejemplos incluidos. Terminación de los procesos de usuario de acuerdo al punto anterior. 6.4.2 Manejo de buzones y semáforos y memoria disponible al usuario. El manejo de los semáforos y buzones se realiza a través de los propios proceso de usuario por lo que es responsabilidad del programador el manejo de la sincronía y comunicación entre tareas. En los ejemplos de los programas de aplicación se ilustra el manejo de estos elementos. 6.5 Rutinas de aplicación general. Se cuenta también con una serie de rutinas que pueden ser utilizadas por cualquier usuario para facilitar el desarrollo de sus proceso de software, los que son descritos a continuación. 6.5.1 Rutinas de manejo de la pantalla LCD. Estas rutinas controlan la operación de la pantalla y son accesibles para todos los procesos de software. Para controlar el acceso a este módulo se asignó un semáforo que es activado por cada proceso que toma la pantalla, de esta forma se evitan que dos o más procesos tomen al mismo tiempo dicho módulo. El semáforo debe ser desactivado por el proceso de usuario antes de terminar su ejecución. 6.5.1.1 Rutina despliega cadena. La rutina principal permite desplegar una cadena de 16 caracteres arreglados en dos renglones de 8 caracteres cada renglón. Esta rutina se llama DISP y recibe como entrada una 6.4 Desarrollo de procesos de usuario. Capítulo 6. dirección de memoria en ROM donde se almacena dicha cadena. La cadena que se despliega debe estar estructurada de acuerdo al siguiente formato: “Cadena I”,RC,SL, “Cadena 2.”,CERO La “Cadena I ” y “Cadena 2” deben ser de máximo 8 caracteres cada una, el caracter RC (regreso de carro) y SL (salto de línea), corresponden a los códigos ASCII de estos mismos caracteres ODH y OAH respectivamente, mientras que el símbolo CERO (OOH) determina el final de la rutina DISP. Se pueden desplegar mensajes dinámicos, almacenando en RAM externa la cadena a desplegar, de acuerdo al formato anterior, en la dirección OOOOH e iniciando la rutina DISP en la etiqueta DISP1. 6.5.1.2 Despliega carácter, ejecuta comando y limpia pantalla. Estas rutinas permiten un manejo más específico de la pantalla de cristal líquido y se describen a continuación. La rutina de despliegue de caracter DESCAR permite presentar en la dirección actual de la pantalla un simbolo cuyo código se coloca en el acumulador antes de ser llamada la rutina. Un vez desplegado se incrementa la dirección donde se presentará el siguiente caracter, como operación implícita del hardware de la pantalla LCD. La rutina DESCOM permite controlar la ejecución de comandos en la pantalla, esta rutina recibe el número del comando a ejecutar en el acumulador. Otra rutina desarrollada para el manejo de la pantalla LCD es CLRDIS, esta rutina limpia la pantalla y la memoria del módulo, y coloca la dirección de despliegue del siguiente caracter en el origen. Esta rutina no recibe datos de entrada. 6.5.2 Rutinas de comunicación serie. Las rutinas desarrolladas para el manejo de la comunicación en serie del sistema son las siguientes: TXDl. Esta rutina recibe un byte en el acumulador y lo envía por el canal serie, termina su operación una vez que el dato ha sido transmitido. La rutina RXDl recibe un dato en el canal serie en el formato ASCII para los números hexadecimales y los convierte a formato hexadecimal. Devuelve el resultado en el acumulador. RXD2 recibe un dato en el canal serie y io deposita en el registro Acc del microcontrolador. 6.5 Desarrollo de procesos de usuario. Capítulo 6. La rutina ENVIAR transmite por el canal serie una cadena de caracteres que se encuentra alojada en memoria de programas. Recibe como en el DPTR la dirección de inicio de la cadena y temina su transmisión en cuanto es detectado un código de valor OOH. 6.5.3 Retardos. Se desarrollaron una serie de rutinas que tienen como objetivo generar diferentes valores de retardo en el sistema. Dichas rutinas no reciben ningún dato de entrada pero requieren para su operación los registros internos del microcontrolador R2, R3 Y R4, dependiendo del retardo llamado. Por lo tanto, al realizar alguna llamada a un retardo es necesario duplicar la información existente en estos registros. Las rutinas realizadas son: DELC: esta rutina genera un retardo corto de aproximadamente 70 ,LAS y utiliza para su operación sólo al registro R2. La rutina DELL genera un retardo medio de aproximadamente 500 ps y utiliza en su operación los registros R2 y R3. El retardo DELAY hace uso de los registros R2,R3 y R4 y tarda aproximadamente 1 segundo en realizar su operación. DELAY2 es una rutina que genera un retardo largo de aproximadamente 8 segundos y utiliza en su operación los registros R2,R3 y R4. 6.5.4 Transferencias de bloques de memoria. Se cuenta también con un conjunto de rutinas que permiten realizar transferencias de bloques de datos entre las diferentes memorias del sistema. Las siguientes son las rutinas desarrolladas para las distintas transferencias de datos: MOVIE: esta rutina realiza transferencias de bloques de memoria entre la memoria RAM interna del microcontrolador y la memoria RAM externa. Utiliza como variables de entrada los registros RO, Ri y DPTR. RO contiene la dirección inicio del bloque fuente, R1 indica el número de bytes que se transferirán y el DPTR incluye la dirección destino para el bloque a copiar. La rutina MOVE1 realiza transferencias de bloques de datos de memoria externa a memoria interna. Utiliza el registro R1 para indicar el número de bytes a transmitir, RO indica la dirección destino de la memoria interna y el DPTR contiene la dirección inicial del bloque a copiar. La siguiente rutina se llama MOVEE y es utilizada para realizar transferencias de código entre distintas localidades de la memoria RAM externa. Para realizar sus funciones requiere los siguientes registros: R1 con el número de bytes a transferir, RO con el byte bajo de la dirección fuente, el registro OAOH con el byte alto y el DPTR con el registro destino. La última rutina desarrollada corresponde a la transferencia de datos entre memorias ROM y externa. MOVRE utiliza los mismos registros que la rutina anterior con la 6.6 Desarrollo de procesos de usuario. Capítulo 6. única diferencia de que el DPTR contiene la dirección inicial del bloque fuente y el registro OAOH y RO contiene la dirección del bloque destino. 6.5.5 Rutinas de operaciones aritméticas. Se cuenta con dos rutinas principales que realizan operaciones aritméticas de punto flotante de acuerdo al formato presentado en el punto 4.8.5. Estas rutinas son las de suma y multiplicación. Los operandos de entrada para ambas rutinas deben estar normalizados y ei exponente debe incluir el bias o desplazamiento. Estas rutinas reciben los operandos de entrada en los registros del microcontrolador; el primer operando es recibido en los registros R2, R3 y R4, y el segundo operando en los registros R5, R6 y R7. El resultado se entrega normalizado en los registros R2, R3 y R4. La rutina llamada SUMA realiza la suma algebraica de dos números de punto flotante y la rutina MUL realiza la multiplicación de dos números de punto flotante. Ambas rutinas verifican que el sistema no presente errores de flujo, en cuyo caso se despliega un mensaje de error junto con el número del proceso que lo genero. El proceso que genera el error es desactivado y sale inmediatamente de ejecución. En el software del disco anexo se incluye un programa que realiza conversiones entre el formato de punto flotante realizado en el sistema y los números reales. 6.5.5.1 Conversión de entero a punto flotante. INTFP convierte un número entero de 12 bits con formato magnitud signo a punto flotante. Recibe el entero R4 (MSB) y R5 (LSB) y el resultado es entregado en los registros R2, R3 y R4 de acuerdo al formato manejado en este trabaio. 6.5.5.2 Conversión de punto flotante a entero. PFENT recibe un número de punto flotante normalizado en los registros R2, R3 y R4 y lo convierte a entero de 12 bits, entrega el resultado en R5 y R6. 6.5.6 Otras rutinas. La rutina ASCII recibe un número hexadecimal y entrega el ASCII correspondiente para dicho número. Recibe el número en el acumulador y regresa el valor en el acumulador. La rutina PON1 lee un número del teclado y devuelve su valor en hexadecimal en el acumulador. 6.7 Desarrollo de procesos de usuario. Capítulo 6. 6.6 Ejemplos de procesos de software a nivel de usuario. Para la aplicación del sistema desarrollado se implementaron una serie de procesos de usuario; dentro de estos procesos se encuentran los algoritmos de control, interfaces, etc. 6.6.1 Algoritmos de control PID. Los algoritmos de control son la tareas principales del sistema y sincronizan su operación con la constante del sistema de tiempo real de 10 ms. A continuación se presentan los segmentos más importantes del código de estos procesos, para ilustrar el funcionamiento de los diferentes componentes del software operativo. PID3: MOV DPTR,#BUZ30 MOVX A,@DPTR CJNE A,#OOH,PID3A JMP RSTCTX PID3A: JB 25H.2,PID3C MOV DPTR,#BUZ31 MOV A,#OFFH MOVX @DPTR,A CLR21H.0 RET PID3C: CLR 25H.6 MOV A,#OOH MOVX @DPTR,A iNC DPTR PID3 corresponde al nombre de este proceso y tiene asociado el buzón 03. Se verifica el estado del buzón, si este se encuentra vacío salta a la etiqueta RSTCTX y el proceso se bloquea. Si por el contrario se encuentra lleno el proceso continua su operación. En este segmento el proceso verifica si aún permanece activo a través del bit 25H.2. Si es así salta a PID3C si no pone el estado el buzón de salida de este proceso (BUZ31) como lleno para detener los segmentos de código relacionados y subsecuentes con este proceso. Se limpia el bit 21H.0 con lo que se desactiva por completo el proceso y se termina su ejecución con la instrucción RET. A partir de esta línea se inicia la ejecución del algoritmo PID y se limpia el bit 25H.6 para indicar que el PID3 se encuentra en ejecución. ... Una vez obtenido el valor final del algoritmo se carga en el buzón de salida. Se pone el valor destino en el DPTR, la dirección inicio en RO, el número de bytes a transferir en RI y se llama la rutina MOVIE para realizar la transferencia. Finalmente se indica el estado de lleno del buzón. ... Se salvan algunos valores necesarios para el calculo de la siguiente iteración y se realizan algunas transferencias entre memorias. Se deshabilitan las interrupciones (CLR 1E.7) ya que el valor del registro OAOH para el manejo debe encontrarse en el valor de OOH. En este caso al ejecutarse MOVEE se restablece el valor de OOH en el registro OAOH y se habilitan nuevamente las interrupciones. Finalmente se activa el bit 25H.6 para indicar que el proceso PID3 se terminó de ejecutar y se ejecuta la instrucción JMP RSTCTX, para que el proceso sea formado nuevamente en la cola de procesos activos y restablezca su pila. MOV DPTR,#BUZ3 I iNC DPTR MOV RO,#02H MOV RI,#03H CALL MOVIE MOV DPTR,#BUZ3 1 MOV A,#OFFH MOVX @DPTR,A CALL MOVEE MOV DPTR,#En3 CLR IE 7 MOV OAOH,DPH MOV R0,DPL MOV R I ,#03H MOV DPTR,#Ean3 CALL MOVEE SETB 25H.6 JMP RSTCTX 6.8 Desarrollo de procesos de usuario. Capítulo 6. 6.6.2 Manejo de la interfaz local. A continuación se presenta un segmento del código del manejo de la interfa local, las dos primeras líneas ilustran la exclusión mutua entre procesos que requieren un mismo recurso. MENU: JNB 24H.0,MENU.A. JMP RSTCTX MENU es el nombre de este proceso. El bit 24H.0 indica el estado de la pantalla: 1 indica ocupado y O libre. Como primera operación se verifica si la pantalla está libre, si es así se continua con la operación, si no, el proceso sale de ejecución y se bloquea. MENUA: MOV DPTR,#MMENU AI iniciar el proceso, se despliega el menú en la pantalla MENUO: MENUI: MENU2: MENU3: CALL DISP JB P1 .O,$ CALL PON1 JNB P1 .O,$ CJNE A,#OOH,MENUl JMP MOP1 CJNE A,#OIH,MENU2 JMP MOP2 CJNE A,#O2H,MENU3 JMP MOP3 CJNE A,#03H,MENUO y se espera a que el usuario haga una elección. La elección es validada y la ejecución continua con la selección hecha. En caso de una selección incorrecta simplemente se ignora dicha selección. 6.7 Alta de un proceso de software de usuario. Para dar de alta un proceso de software de usuario en el sistema, deben llevarse a cabo una serie de pasos. Para ejemplificar este procedimiento utilizaremos el proceso PID3 descrito en el punto 6.6.1 de acuerdo a como se encuentra en el código real implementado en el sistema: I . Dentro del archivo TESIS.ASA4 se encuentra la subrutina INIPROC, la cual se encarga de inicializar los procesos de usuario dentro del sistema. En esta subrutina se encuentra la leyenda: “TABLAS DE DIRECCIONES DE PROCESOS”, aquí debe incluirse el nombre del proceso que nos interesa dar de alta añadiendo las siguientes líneas de código: MOV DPTR,#(Nombre del Proceso) MOV (BasePPila(n)+2)$PLMOV (BasePPila(n)+3),DPH La base de pila se refiere a la pila de memoria RAM interna designada para cada proceso, aquí se relaciona el número del proceso con el nombre del proceso y se describe en la Tabla 6.1. 6.9 Desarrollo de procesos de usuario. Capítulo 6. Tabla 6.1 Relación entre pilas y procesos. Para nuestro ejemplo se selecciona la pila correspondiente al proceso 2 y el código queda " de la siguiente forma. MOV DPTR,#PIDI MOV 3AH,DPL MOV 3BH,DPH MOV DPTR,#PID2 MOV 42H,DPL MOV 43H,DPH MOV DPTRJPID3 MOV4AH,DPL MOV 4BH,DPH MOV DPTR,#MENU TABLA DE DIRECCIONES DE PROCESOS SIRVE COMO STACK Almacena en memoria interna las localidades de inicio de cada posible proceso ;PROC3 2. En el archivo TESIS.ASA4 se encuentra también la rutina INIDAT, la cual establece los parámetros de control de los procesos internos, entre ellos los parámetros de las colas de procesos activos. Aquí deben formarse los procesos activos que se integran en el sistema, se dispone de ocho espacios para los procesos de prioridad O y ocho para los de prioridad 1. Para el PID3 se considera prioridad 1 y se realiza lo siguiente: Las localidades 28H, 29H, 2AH contienen ya procesos que se encuentran formados, por lo que el proceso número 2 (ver Tabla 6.1) se forma en la localidad 2BH. El apuntador FWRl debe contener la dirección en la que se encuentra el último proceso formado. INIDAT: MOV FRD1,#27H ;Se inicializan MOVFWRl,#ZBH ;apuntadores FIFO 1 y O MOV FRDO,#2FH MOV FWRO,#3 1H MOV 28H,#06H MOV 29H,#OIH MOV 2AH,#OOH MOVZBH,,#OZH ;Cola de procesos ;FIFO prioridad 1 <=== Aquí se forma proceso 6.10 Desarrollo de procesos de usuario. Capítulo 6. MOV 30H,#03H ;Cola de procesos MOV 31H,#04H ;FIFO prioridad O 3. Finalmente en la rutina SCSP se deben integrar unas líneas de código a partir de la etiqueta SSPl, de acuerdo al siguiente formato: MOV DPTR,#CPRO(n) MOV RO,#(Base-Pila(n) + 2) MOV A,#(BasePila(n) + 3) MOV DPTR,#(Nombre-del Proceso) Para el proceso PID3 o número 2 serían los siguientes pasos: MOV DPTR,#CPR02 MOV RO,#4AH MOV A,#4BH MOVX @DPTR,A MOV DPTR,#PID3 SJMP SSP2 ;Localidad de PILA interna ;Ubicación del SP en RAM externa ;Reinicializa el SP proc2 Con estas líneas se integra finalmente un proceso de usuario al sistema de procesamiento concurrente. Por lo que el siguiente paso a realizar es la generación de código de acuerdo al procedimiento descrito en el punto 4.9.1. Con lo que se obtiene el proceso de usuario inmerso en el módulo de procesamiento y listo para ser ejecutado. 6.1 1 Capítulo 7. Conclusiones. En este trabajo se desarrolló el hardware y el software de un sistema digital para regular la operación de múltiples procesos físicos que operan simultáneamente. El hardware y el software se diseñó para realizar el procesamiento concurrente y en tiempo real de las tareas involucradas en un sistema de control. También se implement6 un simulador en tiempo real de las plantas a controlar de acuerdo a un modelo matemático que las define. El sistema completo consta de los siguientes elementos: El módulo de procesamiento concurrente, que es utilizado como controlador. Los procesos físicos controlados, implementados con un simulador en una PC Una interfaz de acceso remoto con comunicación serie a una PC. El trabajo desarrollado representa un sistema completo de control conformado, por el módulo digital en su función como controlador, las plantas controladas e implementadas en el simulador y la interfaz de acceso remoto. Con io que se cumplió con el objetivo inicial del trabajo de tesis. Hardware El módulo de procesamiento concurrente presenta aspectos importantes a nivel de hardware y a nivel de software, en cuanto al ámbito de hardware se obtuvieron las siguientes conclusiones: El proyecto concluyó en un prototipo de controlador construido en 3 módulos en circuito impreso integrados en un gabinete. El módulo de procesamiento concurrente desarrollado consta de un diseño de hardware sencillo, modular, de fácil adquisición y bajo costo. Además de la eficiencia presentada al momento de realizar las pruebas del sistema. Las ventajas en la velocidad de ejecución de los algoritmos PID residen sobre todo en el ciclo de máquina del microcontrolador DS80C310 de Dallas Semiconductors, sin embargo se mantiene una compatibilidad al 100% con los microcontroladores de Intel 80C3 1/80C32. El desarrollo modular permite mantener aisladas las etapas analógica y digital en el módulo de procesamiento Se puede aplicar fácilmente al control de motores al incluirse salidas PWM y aplicable a otros procesos controlados analógicamente o funcionar en un esquema de controlador lógico programable (PLC) gracias a las salidas y entradas digitales incluidas. Las interfaces al sistema, local y remota permiten modificar parámetros de control en línea en el funcionamiento del sistema. 7.1 Conclusiones. Capitulo 7. Software En cuanto al software operativo desarrollado se presentan aspectos importantes que pueden ser presentados como conclusiones: La distribución garantizada del CPU sobre todos los procesos activos, en un ambiente de concurrencia, asegura la ejecución de dichos procesos en un tiempo determinado. La concurrencia permite manejar con independencia cada proceso de software, evitando que un error que se presente en algún proceso activo afecte a los demás procesos. El desempeño del software operativo se consideró desde tres puntos de vista principales para la configuración de procesos específica del sistema. La productividad o número de procesos realizados por unidad de tiempo, el tiempo promedio de espera por proceso y la utilización del CPU, que es el porcentaje de tiempo durante el que este se encuentra ocupado [Pinkert]. + Productividad + Tiempo de espera + Utilización = = = 4 procesos/ 10 ms 1O ms/proceso 89.5% Estos valores fueron comparados contra otras configuraciones en la asignación de tiempos, como asignación idéntica de tiempo para cada proceso por un lapso de 2 ms. Donde se obtuvieron los siguientes valores: + Productividad + Tiempo de espera + Utilización = = = 3 procesos/ I O ms 1 1.66 ms/proceso 88% Otro esquema probado consistió de una asignación de 6.66 ms para procesos de prioridad 1 y 3.33 para prioridad O, el que arrojó los siguientes resultados. + + + Productividad Tiempo de espera Utilización = = = 3 procesos/ 1O ms I O msíproceso 89.5 % En este último caso se obtuvieron resultados casi idénticos a los arrojados por el planificador final, pero la diferencia en la productividad era un proceso de control PID que no terminaba su ejecución en los 10 ms. La medición del desempeño del sistema depende de una gran cantidad de factores tan diversos que involucran, desde aspectos de hardware que sólo interesan al diseñador, como la conveniencia y las prestaciones al usuario, pasando por el número de procesos activos, las políticas usadas en el planificador, etc. 7.2 Capitulo 7. Conclusiones. Problemática. La principal problemática enfrentada consistió en la ejecución concurrente de los algoritmos de control PID. La ejecución de los algoritmos de control se relaciona con dos aspectos que son: La adquisición periódica y discreta de la variable controlada en el proceso físico y La ejecución de los tres algoritmos de control en el intervalo del periodo de muestreo. Lo que deriva en establecer una base de tiempo para la adquisición de señales con periodos constantes y en realizar un código eficiente de las tareas de control para poder realizar procesamiento en tiempo real. La base de tiempo permite al software operativo administrar los procesos de software que compiten por los recursos del módulo de procesamiento, dicha base se estableció a partir de las características dinámicas de la aplicación. Más específicamente, la constante de tiempo de los procesos físicos determina el periodo de muestreo de cada planta o proceso. Este periodo de muestreo representa el periodo con el que deben ejecutarse los algoritmos de control de cada planta y se tomó como la base de tiempo en el diseño del software operativo. En aplicaciones de tiempo real es más importante generar rutinas que sean eficientes en cuanto a tiempo de ejecución más que la reutilización de 1código. En ocasiones es preferible repetir rutinas en cualquier parte que se requieran en lugar de hacer una llamada a una rutina general, que además requiere de sus parámetros en un formato dado, lo cual significa más retardos en el procesamiento. Dentro del procesamiento en tiempo real el objetivo es lograr satisfacer los requerimientos de tiempo de la1 aplicación, más que dar comodidades y prestaciones al usuario o programador del sistema. Aspectos de operación El procesamiento concurrente se debe al software oper/ivo, el cual maneja los procesos de usuario en base a una serie de herramientas y políticas que permiten a cada proceso realizar sus funciones, cumpliendo los requerimientos !en cuanto a tiempo y a resultados de forma satisfactoria. El empleo de políticas dentro del software operativo puede sustituir de cierto modo la implementación de primitivas, y por lo tanto reducir el tiempo de ejecución. Tal es el caso del manejo de buzones y semáforos y del manejo de procesos bloqueados. En ambos casos, a cada proceso se le atribuyen capacidades para que el mismo proceso manipule y verifique el estado de los buzones o semáforos que requiere, o en el otro caso para que el mismo proceso verifique su estado y decida si su estado es de bloqueo o puede continuar con su ejecución. De esta forma no es necesario utilizar primitivas para el manejo de estos elementos y estados de los procesos, lo que simplifica el diseño del software operativo y reduce los retardos extras que generarían estas rutinas. 7.3 Capitulo 7. Conclusiones. Otra política importante se estableció en la gestión de interrupciones, dicha política se basó en dos puntos: Ninguna rutina de atención a interrupción puede ser interrumpida y Los segmentos de código crítico no deben ser interrumpidos. En cualquiera de los dos casos descritos debe tenerse en cuenta, que si el tiempo en que no puede actuar ninguna otra interrupción no es adecuado, el sistema puede tener un funcionamiento erróneo; por lo tanto la deshabilitación de las iritempciones y su atención debe ser en periodos de tiempo determinados por el manejo de la pase de tiempo. Aportación. Como aportaciones del trabajo se presentan los puntos m'as relevantes de este y se lisian a continuación: Equipo terminal completo, que resuelve problemáticas Fn aplicaciones de control gracias a sus capacidades de procesamiento en tiempo real. Esquema de procesamiento concurrente que permitei mantener independencia entre los procesos y garantiza la ejecución de los procesos de software activos. Esquema de hardware de procesamiento basado en un!microcontrolador 8051 y compatibles con E/S digitales y analógicas, comunicación serie, interfaz local y generación de PWM. Herramienta de control de procesos, fácil aplicación al control de velocidad de motores, temperatura, flujo, nivel, etc. Las características más importantes del módulo de procesamiento concurrente realizado son las siguientes: Capacidad de ejecución concurrente de hasta 9 procesosi.de software. Orientado a control de procesos físicos con procesamiento en tiempo real. Relación eficiente (Software operativo)/(Software de aplicación): tsJtsa = 0.150ms/1.85ms En cuanto a la aplicación del sistema completo se establece lo sigu,Fte: Ejecución concurrente de 3 algoritmos de control PID. Tiempo de ejecución de los algoritmos PID de 2.1 ms aproximadamente. Regulación eficiente de los procesos controlados. Fácil modificación de parámetros de control. Interfaz serie portable independiente de diferencias de velocidades entre PC y módulo de procesamiento. Simulador en tiempo real de los procesos fisicos controlados. 1.4 Capitulo 7. Conclusiones. Trabajos futuros. Dentro de los trabajos futuros se presentan los siguientes: Mejorar la interfaz sene desarrollada en la PC llevándola a un ambiente visual. Mejorar las condiciones para la detección de errores en el diagnóstico del hardware del sistema Realizar pruebas exhaustivas en un ambiente de trabajq real. Desarrollar primitivas para que el software operativo permita crear y cargar procesos de software a través del canal serie. Probar otros esquemas de control bajo la misma arquitectura de hardware y software operativo. Aplicación del sistema al control de motores 7.5 Apéndice A. Descripción de conectores. A.l. Conector J1 Control del HEF4752 A.2. Conector 52 EntradasKalidas digitales Notas: 1, El símbolo "/" indica complementada. 2. Pines 1-10 Entradas digitales 3. Pines 11-20 Salidas digitales. 4. Pines 21-40. Generador PWM. A.3. Conector 53 Canal Serie A.l Y1, renglón I X2,columna 2 Y2, renglón 2 Y4, renglón 4 i 3 5 I 2 Xl,coiumna 1 4 X4,columna4 6 Y3, renglón3 8 X3,coiumna4 A.5. Conector 55 Pantalla LCD A.6. Conector J8 Control de convertidores. A.7 Conector J9 SalidaslEntradas Anaiógicas A.2 - - - Apéndice B. Descripción de componentes. B.1 Lista de componentes utilizados. Cantidad No. de parte 1 1 1 3 2 1 1 1 2 2 2 1 1 1 1 2 1 1 I 1 1 1 1 1 2 1 1 1 1 2 Descripción DS80C3 1 O Microcontrolador. Dallas. DS1225Y Memoria NVRAM, Dallas. 6264 Memoria RAM. HEF4752 Generador PWM, Philips. 8254 Temporizador programable. Interfaz serie, Maxim. MAX232 CDA, Maxim. MAX527 CAD, Maxim . MAXI 82 Amplificador operacional, Analog Devices. OP490 Latch. 74HC373 Buffer. 74HC244 Decodificador. 74HC I38 Decodificador de teclado 16 teclas. 74C922 Multivibrador astable/monoestable. 4047 Compuertas AND. 74HC08 Inversores. 74HC04 Compuertas OR. 74HC32 Regulador +5V. LM7805 Regulador -5V. LM7905 Regulador +15V. LM7815 Regulador -15V. LM7915 Pantalla de cristal líquido. AND491 Teclado matricial de 16 teclas . Cristal de 11.O59 MHz. Puentes rectificadores. Botón interruptor N.A. 1N4004 Diodo. LED’s varios. Transformador 1SV, I A. Transformador derivación central 15V, 1A. Potenciómetros 5K. Fusibles 0.75A. Resistencias varios valores . Capacitores varios valores y tipos. B. 1 B.2 Microcontrolador DSSOC310. DALLAS ~ DS80C310 Micro de alta velocidad SENICONDUCTOR Características Compatible con el 80C32 Compatible con el 805 len pines y en el set de instrucciones -Puerto serie Full duplex - Tres contadoreshemporizadores de I6 bits - 256 bytes de RAM interna -Bus direcciones/datos multiplexado - 64KB de direcciones ROM y 64KB de RAM Arquitectura de alta velocidad - 4 ciclos reloj/ciclo máquina (805 1 = 12) -Frecuencia de reloj hasta de 33 MHz - Ciclo de instrucción en I2 i ns -Puntero de datos dual - Duración variable de MOVX opcional para acceso rápido/lento a RAMíperiféricos 1 O fuentes de interrupciones, 6 externas Circuito interno de “power on reset” Compatible ascendentemente con el DS80C320 Disponible en PDIP 40-pin, PLCC 44-pin, y TQFP 44-pin - Asignación.de pines P1 YINT3 flSTd9.: DALLAS Dc80C310 4c-PIN DIP Descripción El DS80C3 1O es un microcontrolador rápido compatible con los microcontroladores 8OC31/8OC32. Este corresponde a un núcleo de procesador rediseñado sin desperdicios en ciclos de reloj y de memoria. Como resultado ejecuta cada instrucción del 8051 entre 1.5 y 3 veces más rápido que la arquitectura original para la misma velocidad del cristal. En aplicaciones típicas se ve una mejora de 2.5 veces usando el mismo código y el mismo cristal. El DS80C310 ofrece una máxima velocidad del cristal d& 33 MHz, resultando en una velocidad de ejecución aparente de 82.5 MHz (aproximadamente X2.5). B.2 B.3 Memoria RAM no volátil DS1225Y. II DALLAS ~ DS81225Y S W M de 64K No volatil OEIIIICO(IDUCTOR Asignación de pines Características IO Anos mínimo de retención en ausencia de alimentación externa Protección automática de datos durante la perdida de alimentación Reemplaza directamente memorias RAM estática o EEPROM de 8 K X 8 Ciclos ilimitados de escritura Empaque JEDEC estándar de 28 PDlP Acceso de lectura y escritura de I50 ns Descripción de pines OE -Direcciones DQO-DQ7 -E/S de datos CE -Habilita chip WE -Habilita escritura AO-A12 vcc GND NC -Habilita lectura -Alimentación (+5V) -Tierra -No conectar Descripción La memoria DS1225Y es una RAM estatica no volátil de 65536 bits, organizada como 8192 palabras de 8 bits. Cada NV SRAM contiene una pila de litio y una circuitería de control que monitorea constantemente VCC para detectar alguna condición errónea. Cuando esta condición se presenta se conecta automáticamente la pila y se habilita una protección de escritura para prevenir corrupción en los datos almacenados. Esta memoria puede ser utilizada para reemplazar directamente cualquier memoria SRAM de 8KX 8 ya que mantiene el empaque estándar de 28 pin-DIP. La memoria DS1225Y también corresponde pin a pin con las memorias EPROM 2764 y EEPROM 2864. No hay limitación en el número de lecturas que pueden realizarse y no se requiere circuitería especial para conectarla con microprocesadores. 0.3 B.4 Convertidor Analógico/Digital MAX182. ConvertidorN D 12 Bits, 4 canales calibrados con T/H y referencia Configuración de pines VISTA Características SÜPERIOR Calibración continua y transparente de offset y ganancia. CAZ AlNO AlNl AIN2 AIN3 REFIN AGND DGND Desempeño real de 12 bits sin ajustes T/H y referencia interna vcc DB7 DB6 DB5 DB4 DB3 4 canales de entrada de alta impedancia Interfaz estándar a microprocesador Descripción general VU0 vss REFOUT A0 AI CLK Bocp BYSL WR es m DBO DBI DB2 El MAXI 82 es un convertidor Analógico/Digital de 4 canales, el cual incluye una referencia de precisión de voltaje, track-and-hold y reloj de conversión. Una circuitería de calibración interna mantiene un desempeño real de 12 bits sobre todo el rango de temperatura de operación sin ajustes externos. Además, en las conversiones cada 60ps se incluye un ciclo de autocero que reduce los errores de cero a valores menores de 100pV. Se incluyen entradas de lectura, escritura y selección de chip (activas en bajo), para un fácil interfaciamiento con microprocesadores sin lógica adicional. Datos de 2 bytes o 12 bits son proveídos a través de un bus de 8 bits con salida de tres estados. Cualquier byte puede ser leído en cualquier orden. Dos líneas de direcciones controlan los 4 canales de entrada del multiplexor. El rango de entrada analógico del MAXI 82 de OV a +5V cuando se usa una referencia de +5V Aplicaciones. Procesamiento digital de señales. Procesamiento de audio y telecomunicaciones. Adquisición de datos con alta velocidad. Control de procesos con alta precisión. 0.4 o N B.5 Convertidor DigitaiíAnalógico MAX527. Convertidor DiA calibrado cuádruple de 12 Bits, con Salida en Voltaje Configuración de pines Características VISTA SUPERIOR Desempeño real de 12 hits sin ajustes voms VOUTA vss AGND VREFAB DGND LDAC D7 06 D5 D4 Salidas de voltaje aisladas Rápido establecimiento de salida: 5ps - Compatible con microprocesadores y TTLKMOS Operación con alimentación de -+5V Descripción general vourc VOUTO Vno CSMSB CSLSE - m VREFCD A0 AI DBIDO DQIDI DIOID2 011ID3 . El MAX527 contiene cuatro convertidores Digital/AnalÓgico, de 12 bits con salida en voltaje. Se incluyen buffers analógicos con salida de precisión en el chip para generar salidas de voltaje. Opera con alimentaciones de I 5 V . Destacan en este dispositivo la interfaz de doble aislamiento mediante un registro de 12 bits de entrada y un registro de 12 bits del CDA. Los datos en el registro del CDA establecen el voltaje de salida del CDA. El MAX527 tiene un ancho de bus de 8 bits. LOS datos son cargados en el registro de entrada usando dos operaciones de escritura con una escritura carga los 8 bits menos significativos y con otra e s c r i h a carga los 4 bits más significativos. Una carga asíncrona al CDA (LDAC) transfiere los datos del registro de entrada al registro del CDA. Todas las entradas lógicas son compaiibles con TTL y CMOS. Aplicaciones Ajuste digital de ganancia y offset. Generadores de funciones Control de procesos industriales. Equipos automáticos de pruebas B.5 B.6 Generador PWM HEF4752. Philip Semiconductors *duct epeciíiiion H EF4752V A.C. Motor control circuit 1 Ri I/ El HEF4752 es un circuito para control de velocidad de motores de C.A. El circuito sintetiza tres señales defasadas 120", cuyo valor de voltaje promedio vana senoidalmente con el tiempo en un rango de frecuencias de O a 200 Hz. El método utilizado se basa en la modulación por ancho de pulso (PWM), la cual es una onda puramente digital. Todas las salidas son del tipo push-pull. Las entradas y salidas son protegidas contra efectos electrostáticos en una amplia variedad de situaciones del manejo del dispositivo. Sin embargo, para una total seguridad, es deseable tomar precauciones en su manejo. a 4 OBC2 VAV 41 4 L RSYN 4 OYMI g OYM2 4 4 4 csp Entradas, grupo I1 dato dato dato 5=CW dato 13=A dato 15=B dato 16=C dato 12=FCT reloj de frecuencia 17=VCT reloj de voltaje 4=RCT jl reloj de referencia 6=OCT reloj de retardo en la salida 24=L 25=1 7=K OYCl Salidas. grupo I oyc2 23=RSYN 26=VAV IS=CSP 4 VCT J Entradas, grupo I C Diagrama de pines Voltaje de alimentación operación Sincronización de fase R voltaje promedio Pulsos de muestre0 de corriente Salidas, grupo I1 S=ORMl 9=ORM2 10=ORC1 11=ORC2 22=OYM1 21=OYM2 20=0YC1 IS=OYC2 3=0BM1 2=0BM2 I=OBCI 27=0üC2 4.5 al2.5V 8.6 principal. fase R principal, fase R conmutación, fase R conmutacibn. fase R principal, fase Y principal, fase Y conmutación. fase Y conmutación. fase Y principal. fase B principal, fase B conmutación. fase B conrnutaci6n, fase B B.7 Amplificador operacional OP490. AMPLIFICADOR OPERACIONAL CUADRUPLE DE BAJO VOLTAJE I II Características I Configuración de pines Alimentación sencillaldual +1.8V a 36V y 20.8V a ?18V Baja corriente 80pA max OP-490 de OUT A alimentación -IN A +IN A Excitación de salida alta 5mA min Alta ganancia de 700VlmV min V+ lazo abierto -IN D +IN D V- +IN B +IN C -IN B -IN C OUT B PSRR de 5.6pVN OUT D OUT C amplificador es capaz de entregar más de 5mA de salida de corriente a la carga. El offset de voltaje de entrada está abajo de 0.5mV con una deriva de offset de 5 p V K sobre el rango militar de temperatura. La' ganancia es mayor de 700000 y el rechazo en modo común (CMR) es mejor que 1OOdB. Una relación de rechazo de la fuente de alimentación (PSRR) abajo de 5.6pVN minimiza los cambios en el offset de voltaje. El OP-490 es un amplificador operacional cuádruple que opera con .6V fuente de alimentación sencilla de +I a +36V o con una fuente dual de 20.8V a 218V. El rango de voltajes de entrada incluye "la via negativa" permitiendo al OP-490 acomodar señales de entrada bajas a tierra en operación con alimentación sencilla, La excursión de la salida del OP-490 también incluye tierra cuando opera con una alimentación sencilla, habilitando la operación "zero-in, zero-out". Los requerimientos mínimos de voltaje y corriente 10 hacen ideal para aplicaciones de baterías y solares, como en los instrumentos portátiles y censores remotos. El OP-490 consume menos de 20pA corriente de alimentación en reposo por cada amplificador, pero cada 0.7 B.8 P a n t a l l a de cristal líquido AND491. @ LCD de matriz de puntos Configuración de pines , .,. ,<: . , ;;. ' l:: ,,:<<'i ' - Pantalla integrada compacta modular * Alto contraste, limpia pantalla 14 , AND491 Características: I _<, 16 caracteresx2 líneas ' . ?! I Vista superior AND491. Bajo voltaje, alimentacibn sencilla +5V * Amplio ramo de temperatura de o~eracibn (0°C a + 5 6 ~ ) . Caracter con formato de 57 ountos v cursor de linea Control LSI incorpo!ado, pantalla con RAM y generador de caracteres ROM * Interface directa de 4 u 8 bits al CPU 11 comandos de control -in Es una pantalla de cristal líquido de matriz de puntos de bajo consumo de potencia. El controlador tiene un generador de caracteres RAMlROM y exposición de caracteres RAM. Todas las funciones de la pantalla son controladas por instrucciones. I 3 7 8 9 10 II 12 13 B.8 Señal CND VDD VO RC Fun ci ón Tensión de alimentación +5v Tensión excitadora H. entrada de datas L. entrada de comando OV R/w H.'ecturadedatos L, escritura de datos E H, H-L. habilitación DO DI D2 D3 D4 D5 D6 Bus de datos 'i 1 4 bits 1 II 8 bits Apéndice C. Referencias. C.1 Referencias bibliográficas. [Astrom] Astrom, Karl Johan and Wittenmark, BjOm, ‘‘Adaptative cOntrOI>’, Addison Wesley, USA, 1 9 8 9 ~ . [Auslander] Auslander, David M. and Tham, H. Cheng, “Real-Time software for control: program examples in C”, Prentice Hail, USA, 1990. [Bimal] Bose, Bimal K..(Edited by). “Microcomputer control of power electronics and drives”, IEEE press 1987. Editorial Board. [Breyl Brey, Barry B. “Los microprocesadores’Inte1, 8086/8088, 80186, 80286, 80386 y 80486. Arquitectura, programación e interfaces”. Editorial Prentice-Hall, 3a Edición, México, 1994c. [Carbaliar] Carbailar, José A. “El libro de las comunicaciones del PC. Técnica, programación y aplicaciones”, Editorial AlfaOmega, 1” Edición, México, 1 9 9 7 ~ . // [Cavanagh] Cavanagh, Joseph J. F. “Digital computer arithmetic. Design and implementation”, Editorial McGraw-Hill, USA, 1984c. [Dual Daza V. Ismael. “Sistema operativo para procesos concurrentes (sopco-51), orientado a tiempo real”, Tesis de maestría, CENIDET, Cuernavaca, México. 1990. [Gonzáiez] Gonzáiez V. José A. “Introducción a los microcontroladores. Hardware, software, aplicaciones”, Editorial McGraw-Hill, 1” Edición, España, 1992c. [Hoangl Le-Huy, Hoang, “Microprocessors and digital IC’s for motion control”, Proceedings of the IEEE, VOL.,82, No.8, August 1994, pp. 1140-1 163. [Hwangl Hwang, Kai, “Arquitectura de computadoras y procesamiento paralelo”, Mc Graw-Hill, México, 1988. .[Marcus] Johnson, Marcus. “Assembly Language: For real programers only”, SAMS publishing, USA, 1993. [Milan] Milenkovic, Milan. “Sistemas operativos: Conceptos y diseños”, Editorial Mc. Graw Hill, España, 1 9 8 8 ~ . ” c.1 [Molina et. ai.] Molina, Pedro A.; González, Oscar J. y Mejía Pedro, “Desarrollo de una computadora de multiprocesadores y herramienta de software para equipos de adquisició& y control”, Instituto de Investigaciones Eléctricas. [Ogatal Ogata, Katsuhiko, “Ingeniería de control moderna”, Editorial Prentice Hail, México, D.F. c1980. [Pinkert] Pinkert, James R. and Wear, Larry L. “Operating systems. Concepts, policies, and mechanisms”, Prentice Hail, USA, 1989. [Porat] Porat, Zvi. “Simple guidelines help you implement a multitasking system”. EDN (Electronic Design), December 1O, 1992, pp. 96-103. Ripps, David L. “Real-Time programming, message buffers and mailboxes”, EDN Electronic Design, January 21, 1991, pp, 115124. Ripps, David L. “Real-Time programming, semaphores and controlled shared variables”, EDN Elktronic Design, February 4, 1991, pp, 85-90. Ripps, David L. “Real-Time programming, task coordination and communication via signals”, EDN Electronic Design, February 18, 1991,pp, 157-162. Ripps, David L. “Real-Time programming, task coordination: specific methods, general principles ”, EDN Electronic Design, March 1, 1991, pp, 97-110. Echavarría S., Rodolfo A. “Diseño e implementación de un accionador de motor operando en régimen permanente”, Tesis de maestría. CENIDET, Cuemavaca, México.1995. . [Tanenbaumi] Tanenbaum, Andrew S. “Sistemas operativos modernos”, Prentice-Hall, México, 1992. [Tanenbaum2] Tanenbaum, Andrew S. “Redes de ordenadores”, Editorial Prentice Hall, 2” Edición, México, 1991c. [Wanvick] Wanvick, K. and Rees, D. “Industrial digital control systems”, Peter Peregrinus Ltd. England, 1988c. [Ziii] Zill, Dennis G. “Ecuaciones diferenciales con aplicaciones”, Grupo Editorial Iberoamérica, 2” edición. México, 1988. c.2 C.2. Referencias técnicas. [Analog1 “Amplifiers reference manual”, Analog Devices, USA, 1992. [AND1 “Character LCD modules interface data, LCD dot matrix modules”, AND. [Intell] “Microcontroller handbook”, Intel corporation, USA, 1983 [Intel21 “Peripherals handbook”, Intel corporation, USA, 1990. [Philips] “HE4000B Logic Family CMOS”, Philips Semiconductors, January, USA, 1995. [Texas] “TTL Logic, data book”, Texas Instruments, USA, 1987. C.3. Referencias en internet. [Analog] Dirección: “http://www.analog.corn/”.Analog Devices [Dallas] Dirección: “http://www.dalsemi.com/”. Dallas Semiconductors. [Maxim] Dirección: Products. “http://www.rnaxim-ic.com/”. c.3 Maxim Integrated .- Apéndice D.Glosario. D.l Definiciones y abreviaturas. ASCII. (American Standard Code for Information Interchange; eódigo americano estándar para intercambio de información) Estándar que define ,;cómo representar dígitos, letras, signos y signos de puntuación en computadoras. Aunque existen otros esiándares, el ASCII es el más popular. ASIC. (Application Specific Integrated Circuit, Circuito integrado de Aplicación Especifica). Es un chip diseñado para desempeñar una hnción específica, como en el caso de los generadores de PWM. Vea apéndice B. 14 Bps. (Bits per second; Bits por segundo) Unidad de medida que indica los bits por segundo transmitidos por un equipo. Buzón. Estructura de datos en memoria, compartida por distintos procesos de software para la transferencia de información entre ellos. Código. Un conjunto de símbolos de máquina que represen& datos o instrucciones. También puede ser, cualquier representación de un conjunto de datos a través de otros. Contexto. Conjunto de registros del microcontrolador involucddos en la operación de todos los procesos de usuario. CPU. (Central Process Unit, Unidad Central de Procesamiento). Estas siglas se usan como sinónimo para referirse al microcontrolador. FIFO. (First In, First Out, primero en entrar, primero en salir). Técnica de manejo de filas en la que el siguiente proceso extraído es el que tiene mayór tiempo en la fila. Multitarea. Modo de operación que provee el ambiente para la ejecución concurrente de tareas o procesos de software. Núcleo del software. El núcleo de software es el corazón del sistema operativo, el cual coordina los diferentes procesos de los otros subsistemas. "De una manera central, en el diseño del kernel o núcleo del software están los códigos que optimizan ei acceso a los servicios para la actividad del usuario. Pila. Lista de objetos manejados por la política Last In, First Out (último en entrar, primero en salir). Es utilizada para el control de los saltos realizados por las llamadas que hacen los procesos y por las interrupciones presentadas. 1 I 1 I la parte del software operativo que determina el orden en que se ejecuan Planificador. los procesos de usuario, de acuerdo a una cierta política utilizada. Pointer. Registro apuntador que contiene el valor de cierta localidad de memoria. Proceso. Es un segmento de código que en cierto momento se encuentra en ejecución, Productividad. Número de procesos de usuario que realiza el sistema por unidad de tiempo. PWM. (Pulse Width Modulation, Modulación por Ancho de Pulso). Tecnica de modulación en la que se varia la duración del pulso de salida. Semáforo binario. Es un semáforo que toma sólo el valor de 1 Ó O. Semáforo. Es una variable para la señalización entre procesos que generalmente se usa como contador. El semáforo puede bloquear o desbloquear procesos. Software operativo, sistema operativo. Conjunto de programas que controlan la ejecución de los procesos de software y administran los recursos de hardware. Stack. Igual que pila Tarea. Igual que proceso de espera. Tiempo que pasa un tarea de usuario para que ]e sea asignado el procesador. del cpu. ES el tiempo medio durante el cual el procesador se encuentra ejecutando tareas de usuario. D.2