930015 S.E I.T. S.E.P. D.G.I.T. CENTRO NACIONAL DE INVESTIGACION Y DESARROLLO TECNOLOGICO ,': DESARROLLO DE UNA INTERFAZ HOMBRE MAQUINA PARA CONTROL DE INSTRUMENTOS PROGRAMABLES MEDIANTE EL BUS IEEE-488 T E OBTENER PARA I S GRADO DE: S MAESTRO EL EN CIENCIAS EN INGENIERIA ELECTRONlCA P E R S B N T A, I C~(TRODE I N K ) ~ A C I W -A CUAUHTEMOC GONZALEZ GONZALEZ ASESOR: M.C. JAVIER MENESES R U E Cuernavaca, Mor. Mayo de 1993 CENlDET c P S l S T E M A NACIONAL DE INSTITUTOS TECNOLOGICOS Centro Nacional de Investigación y Desarrollo Tecnológico Cuernavaca. Mor. a 13 de Mayo de 1993 Dr. Juan Manuel Ricaño Castillo Director del CENIDET PRESENTE At'n: M.C. María Helguera Martínez Coordinadora de Electrónica Por este conducto, hacemos de su conocimiento que, después de haber sometido a revisión el trabajo de tesis titulado "Desarrollo de una interfaz hombremáquina para control de instrumentos programables mediante el bus IEEE-488". desarrollado por el Ing. Cuauhtémoc González González y habiendo cumplido con todas las correcciones que se le indicaron, estamos de acuerdo en que se le conceda la autorización de impresión de la tesis, y la fecha de examen de grado. Sin otro particular quedamos de usted. Atentamente Comisibn Revisora cenidet/ Intenor Internado Palmtra S/N C P. 62430 Apartado Postal 5-164, C.P. 62050 Cuernavaca, Mor. México Tels.. (73) 18 77 41 y (73) 12 76 13 SISTEMA NACIONAL DE INSTITUTOS TECNO1,OGICOS Centro Nacional de Investigación y Desarrollo Tecnológico Cuernavaca, Mor., a 2 de abril de 1993. ING. CUAUHTEMOC GONZALEZ GONZALEZ CANDIDATO AL GRADO DE MAESTRO EN CIENCIAS EN INGEN I ERI A ELECTRONICA PRESENTE. Después de haber sometido a revisión su trabajo de tesis titulado: " DESARROLLO DE UNA INTERFAZ HOMBRE-MAQUINA PARA CONTROL DE INSTRUMENTOS PROGRAMABLES MEDIANTE EL BUS IEEE -488 " habiendo cumplido con todas las indicaciones que el Jurado Revisor de Tesis le hizo, se le comunica que se le concede autorización para que se proceda a la impresión de la misma, como requisito para la obtención del grado. Y Sin otro particular, quedo de usted. c .c .p. - Expediente Coord. Académica Archivo /rbs cenidet / Interior Internado Pnlmira S/N C P. 62490 Apartado Postal 5-164. C.P.62050 CucrnJv.icJ. Mor.Mtxico Tcls.: (73) 18 77 41 y (73) 12 76 13 AGRADEZCO RL CENTRO NACIONAL DE INVESTICACION Y DESARROLLO TECNOLOGICO (CENIDET), Al CONSEJO NACIONAL DE (CONACYT), AL INSTITUTO DE CIENCIA Y TECNOLOGIA INVESTIGACIONES ELECTRICAS (IIE), AL DEPARTAHENTO DE COMUNICACIONES Y AL N . C . JAVIER MENESES RUIZ POR LAS FACILIDADES Y EL APOYO BRINDADOS PARA LA RBALIZACION DE ESTE TRABAJO. A MIS PADRES AMIS A HERMRKXS MI ESPOSA A MI HIJO Indice 1.- ~ntroducción . . .. .. .. .. .. .. .. .. .. .. .. .. . . . . . Intorfaa PC/IEEE-488 2.1 Conceptos basicos del estándar IEEE-488 . . . 2.1.1 Tipos de mensajes . . . . . . . . . 2.1.2 Parlantes. escuchas y controladores . . 2.1.3 Controlador a cargo y controlador del sistema . . . . . . . . . . . . 2.1.4 Líneas del GPIB . . . . . . . . . . 2.1.5 Características y eléctricas . . . . . 2.2 Interfaz PCIIEEE-488 . . . . . . . . . . . 2.2.1 Descripción del lPD7210 . . . . . . . 2.2.2 Tarjeta de interfaz ....... . 1.1 Antecedentes 1.2 Conceptualization 1.2.1 Herramientas de programacidn 2.- 3.- Desarrollo de la interfaa hombre-máquina . .. .. .. . .. .. ... . . . .. ... . . . .. ... . . . . . . . .. . ... . . . . . . . . . . .. . ... . . . . . . . .. . ... . . . . . . .. .. . ... . . . . . . .. 3.1 Descripción general 3.2 Descripción funcional 3.2.1 Programación de bajo nivel 3.2.1.1 PROG721O.ASM 3.2.1.2 DIR-DIS.ASM 3.2.1.3 ENV-DAT.ASM 3.2.1.4 REC DAT.ASM 3.2.1.5 DES:CIS.ASM 3.2.2 Paso de parámetros 3.2.2.1 Ligado de rutinas 3.2.2.2 Representación interna de los datos 3.2.2.3 Consideraciones del ensamblador 3.2.3 Programación de alto nivel 3.2.3.1 Programa de alta de equipos PC488A 3.2.3.2 Programa de control PC488C i ... . . .. .. . ... .. 1 2 3 4 5 5 5 6 8 9 9 11 13 16 16 19 19 19 19 20 20 21 21 23 24 24 27 4.- 5.- easi6n de trabajo aon a 1 PC4üS . . . . . . . . .. .. . . Conalusiones 5.1 Conclusiones . . . . . . . . . . 5.2 Trabajo a futuro . . . . . . . . Bibliogratla . . . . . . . . . . . . 4.1 Introducción 4.2 Sesión de trabajo con el PC488A 4.3 Sesión de trabajo con el PC488C Aphdice Listado de los programas ii ... .. . ... .. . ... .. . ... .. . . . . . . . . 33 33 41 48 49 51 Al Lista de Figuras Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura . . . . .. .. .. 27 . .. .. .. .. .. .. 96 . . . . . . 12 . . . . . . . 14 . . . 15 . .. .. .. 23 . . . 24 . .. .. .. .. .. .. 25 26 . . .. .. .. .. .. 29 .. .. 35 36 36 .. .. 37 37 36 ... ... 36 39 .. .. 39 40 . . 40 . . . . . 43 ... ... 43 44 44 . . 45 .. .. 45 46 .. . 46 . . 47 47 1.1 2.1 2.2 2.3 2.3 3.1 3.2 Estructura del sistema PC466 Esquema básico del sistema de interfaz Configuraciones de conexión Registros internos del PD7210 Tarjeta e interfaz PC/iEEE-466 Archivos de datos del PC466 Estructura general del sistema PC486 3.3 Estado del s t a c k después de un llamado a una rutina en ensamblador 3.4 Estructura del programa PC488A 3.5 Diagrama de flujo del PC466A 3.6 Estructura del programa PC466C 3.7 Diagrama de flujo del PC466C 4.1 Sesión de trabajo con el PC466A 4.2 Sesión de trabajo con el PC486A (cont.) 4.3 Sesión de trabajo con el PC486A (cont.) 4.4 Sesión de trabajo con el PC466A (cont.) 4.5 Sesión de trabajo con el PC468A (cont.) 4.6 Sesión de trabajo con el PC486A (cont.) 4.7 Cesión de trabajo con el PC466A (cont.) 4.8 Sesión de trabajo con el PC466A (cont.) 4.9 Sesión de trabajo con el PC468A (cont.) 4.10 Sesión de trabajo con el PC486A (cont.) 4.11 Sesión de trabajo con el PC486A (cont.) 4.12 Sesión de trabajo con el PC468C 4.13 sesión de trabajo con el PC466C (cont.) 4.14 Sesión de trabajo con el PC468C (cont.) 4.15 Sesión de trabajo con el PC466C (cont.) 4.16 Sesión de trabajo con el PC468C (cont.) 4.17 Sesión de trabajo con el PC466C (cont.) 4.16 Sesión de trabajo con el PC466C (cont.) 4.19 Sesión de trabajo con el PC486C (cont.) 4.20 Sesión de trabajo con el PC466C (cont.) 4.21 Sesión de trabajo con el PC488C (cont.) iii * Capítulo 1 Introducción 1.1 Antecedentes El desarrollo, por parte de Hewlett-Packard, de una interfaz para equipos de medición encaminada a la implementación de un sistema de instrumentación programable remotamente a través de una computadora personal, tuvo tal impacto entre los fabricantes de equipo de medición que, por tal motivo se adoptó, bajo auspicio de la IEEE', como un estándar internacional y de "de facto", a fin de poder incorporar los equipos de diversos fabricantes en un sistema heterogéneo de instrumentación a través de dicha interfaz. La interfaz propuesta por HP, el Bus de Interfaz de Propósito General (GPIB de sus siglas en inglés), se convirtió posteriormente en el estándar IEEE-488 que, hasta nuestros dlas, es el estándar más utilizado en los equipos de medición e instrumentación debido a su probada eficiencia y capacidad. Debido a lo anterior, un número considerable de los equipos de medición con que cuenta el Departamento de Comunicaciones del Instituto de Investigaciones Electricas tienen incorporado el GPIB. Esto generó el interés de utilizar dicha capacidad de los equipos, para implementar un sistema de instrumentación controlado por una computadora personal o PC. Como producto de ese interés se disefió y concibió una tarjeta de interfaz entre el GPIB y una PC. 1 Dicha interfaz fue el producto final de un proyecto de tesis, que se llevb a cabo dentro del mismo Departamento de Comunicaciones. Sin embargo dicho trabajo no fue objeto de mayor seguimiento y sblo se contaba con el prototipo y un programa que manejaba, de manera mínima, a la tarjeta de interfaz. En esos términos, el usar dicha interfaz para programar remotamente algún instrumento de medicibn requería de amplio conocimiento de la tarjeta de interfaz, del mismo GPIB, así como de programacibn de bajo nivel o ensamblador y de la informacibn de programacibn del dispositivo a controlar. Como un medio para hacer más accesible el uso de dicha interfaz, surgió el presente tema de tesis, cuyo objetivo es proporcionar al usuario un ambiente en el cual el uso del hardware de interfaz y la programadon de los dispositivos se realice de una manera rápida, fácil y eficiente. Además, permitirá al usuario con poca experiencia en el manejo del GPIB, de la tarjeta de interfaz GPIBPC y del lenguaje ensamblador, llevar a cabo la programacibn remota de los dispositivos conectados a través del GPIB. 1.2 conoeptualimaaión El presente trabajo de tesis tiene como finalidad la implementacibn de las capas superiores del sistema de interfaz entre el GPIB y el usuario mediante una PC, a fin de permitir al usuario un rápido y fácil acceso a los dispositivos a ser programados. La estructura total del sistema de interfaz se muestra en la figura 1.1, indicando además las etapas concernientes a este trabajo. I USWRIO SOFTWARE PC488 Figura No 1.1 Estructura del Sistema PCPS8 2 I Dichas etapas son: programación de bajo nivel, que es concerniente al manejo del hardware de interfaz entre la PC y GPIB; y otra de programacióñ de alto nivel que es la encargada proporcionar al usuario un ambiente de trabajo amigable y que permita el uso transparente del hardware y del protocolo GPIB. la el de le Este sistema permitirá suplir la falta de experiencia de un usuario dado en el uso del GPIB, facilitandole y haciendole accesible el control de instrumentos de medición por medio de la PC de manera transparente. 1.2.1 Barramientas de programacidn El alcance previsto incluye el desarrollo de software tanto de bajo como de alto nivel, para la tarjeta de interfaz y el ambiente de trabajo proporcionado al usuario. Para la realización del software requerido, se ha tomado en cuenta el lenguaje ensamblador para la parte de bajo nivel, por su eficiencia y velocidad; y el Turbo-Pascal para la parte de la interfaz del usuario debido a las amplias capacidades gráficas y de manejo de archivos. Además se hace uso del Turbo Graphix ToolBox, que es un conjunto de funciones para el Turbo Pascal que incrementa considerablemente las capacidades gráficas y el manejo de ventanas. Este trabajo se dividirá de la siguiente manera: Capítulo 1: Esta introducción. Capítulo 2: Conceptos básicos relativos ai GPIB, el controlador del GPIB utilizado en la tarjeta de interfaz, as€ como de la propia tarjeta. Capítulo 3: Planteamiento del sistema de interfaz, su estructura y niveles con los que cuenta. Se incluye la descripción de las rutinas o procedimientos de programación desarrollados tanto de alto como de bajo nivel. Capítulo 4: Se ilustra una sesión típica de trabajo con el sistema de interfaz desarrollado, apoyándose en la descripción de gráficas capturadas directamente de la pantalla de la PC. Capítulo 5: Conclusiones y trabajo a futuro. 3 Capítulo 2 Interfaz PCDEEE-488 2.1 Conceptos básicos del estándar IEEE-488. El estándar IEEE-488 define un bus de interfaz para interconectar y controlar dispositivos programables necesarios para ensamblar un sistema de instrumentación y f o medición. Este estándar es aplicable a sistemas de interfaz, donde: a) Los datos intercambiados entre los dispositivos son de tipo digital. b) El niímero de dispositivos interconectados es menor de 15. c) La longitud total de la trayectoria de transmisión no exceda de 20 metros. d) La velocidad de transmisión de datos sea menor 1 Mbyte por segundo. La versatilidad y rapidez de este bus obtuvo una amplia aceptacibn por parte de los fabricantes de equipo, por lo que se le dió el nombre de bus de interfaz de propósito general o GPIB por sus siglas en inglés. El esquema básico del bus y el arreglo para la conexion de los dispositivos que forman el sistema de interfaz se muestran en la figura 2.1. 4 2.1.1 Tipos de mensajes. La comunicación entre los dispositivos interconectados se logra por medio del intercambio de mensajes a través del sistema de interfaz. Dichos mensajes viajan en forma bit-serie, byte-paralelo. Existen dos tipos de mensajes: 1) Dependientes del dispositivo.- Llamados comúnmente "mensajes de datoso* o V?atosgV, contienen información especlfica relacionada con la programación del dispositivo, estado actual, resultados de mediciones. 2) De interfan.A mentido llamados tfcomandos**,son utilizados para el manejo de la interfaz. Por medio de éstos se realizan funciones tales como inicialización del sistema, direccionamiento de dispositivos. 2.1.2 Parlantes, escuchas y controladores. L o s dispositivos conectados a la interfaz pueden ser de 3 tipos: parlantes, escuchas o controladores. LOS parlantes son aquellos que envfan sus mensajes a uno o más escuchas, que son los encargados de recibirlos. El controlador es aquel dispositivo que supervisa esta transferencia, enviando los comandos apropiados a los dispositivos involucrados en ella. La transferencia inicia con el controlador, direccionando al parlante y al o los escuchas. Posteriormente, el parlante envía su mensaje y se finaliza, generalmente, con la deshabilitación de los dispositivos por parte del controlador. En algunas configuraciones donde un dispositivo siempre es parlante (conocido como sólo parlante) y existen uno o más dispositivos s610 escuchas, la presencia de un controlador no es necesaria. El controlador sólo es utilizado cuando la asignación de parlantes y10 escuchas esta cambiando, dentro del sistema. La función de controlador es generalmente asignada a una computadora. 2.1.3 Controlador a cargo y controlador del sistema. Aún cuando pueden existir varios controladores dentro del sistema de interfaz, sólo uno a la vez puede estar activo, a éste se ,le denomina controlador a cargo (CIC). El control de> sistema puede ser pasado de un CIC a un controlador inactivo, pero sólo, el controlador del sistema puede hacerse así mismo el CIC. 5 2.1.4 Lineae del G P I B . El GPIB está formado por 24 líneas, 16 de ellas son de Señal Y son retornos de tierra. Las 16 líneas de señal se agrupan en 3 buses: datos, handshake y manejo de interfaz, con 0 , 3 y 5 líneas respectivamente, como se muestra en la figura 2.1. 8 1) Lineas de datos: Denominadas DIO1-DI08, son las encargadas de llevar los mensajes, tanto datos como comandos, a través de la interfaz, utilizando el código ASCII de 7 bits, generalmente manteniendo el octavo bit sin utilizar o para verificación de paridad. 2) Lineae de handshake: Estas 3 líneas controlan, de manera asíncrona, la transferencia de mensajes mediante un protocolo de 3 hilos, el cual asegura una comunicación libre de errores. A continuación se presenta una breve description de cada una de estas líneas: - NRFD : Esta línea es la que indica si un dispositivo está o no preparado para recibir un mensaje. Es utilizada por todos los dispositivos cuando reciben comandos, y por los escuchas cuando reciben datos. - NDAC : Por medio de esta línea se conoce si un mensaje ha sido aceptado o no por un dispositivo. El uso de esta línea es similar al de la anterior. - DAV : La función de esta llnea es indicar si los datos en DIO1-DIO8 son válidos. Es utilizada por el controlador cuando envía comandos y por el parlante cuando envía datos. 3) Lineas de manejo de interfaz: Las 5 lineas utilizadas para mantener un flujo ordenado de datos dentro de la interfaz son: - ATM : El propósito de esta linea es indicar si a través de DIO1-DI08 se están enviando comandos o datos. El controlador la coloca en un nivel lógico verdadero cuando envía comandos, y en un valor falso cuando le permite a un parlante enviar sus datos. - I F C : Utilizada por el controlador del sistema para inicializar el sistema y convertirse en el CIC. - REN : A través de esta línea, el controlador del sistema coloca a los dispositivos restantes en modo de programación local o remota. 6 33”I x 3’1 3 SOLO PIRUNTE I I MSPOSmVO o SOLO ESCUCHA ] ’1 1 DIO1 Di08 L Figura 2.1 B u y i s u báaico del a h t a u da interfa. 7 - BRQ : Cualquier dispositivo, a través de esta línea, puede solicitar atención del controlador en forma asíncrona. - EO1 : Cuando esta línea es manejada por un parlante, indica el fin de una cadena de mensaje. El controlador la utiliza para solicitar una identificación de los dispositivos en una encuesta paralelo (parallel p o l l ) 2.1.5 caracteríeticae fisicae y eiéctricae. LOS dispositivos están interconectados por medio de un cable blindado de 24 conductores, con un conector tipo clavija y otro tipo receptáculo en cada extremo de él. Este diseno permite conexiones del sistema en configuración estrella o lineal o en combinación de ambas como se puede apreciar en la figura 2.2. Los niveles utilizados en el estándar son “TL con lógica negativa, de acuerdo a los siguientes valores: Las especificaciones de corriente, impedancias y otras características ,mecánicas adicionales se detallan ampliamente dentro de la norma’. A) CONRCUWION UNEAL Figura 2 . 2 Configuracianea de conexibn. 8 2.2 Interfaa PC/iEEE-400. Como se mencionó anteriormente, la --inción de contro idor puede ser realizada por una computadora, en este caso por una PC, por lo que se vuelve necesario el uso de una interfaz entre ésta última Y el GPIB. Dicha interfaz está constitulda por una tarjeta prototipo, diseflada alrededor del circuito integrado pPD7210, el cual es un controlador dedicado al manejo del protocolo de comunicaciones del GPIB. 2.2.1 Descripción del PD7210 El PD7210 es un controlador del GPIB que interconecta el bus de un microprocesador con el bus GPIB. Está diseñado para cumplir los requerimientos de las funciones de parlante, escucha y controlador como se especifican en el estándar, así como de proporcionar un manejo de alto nivel del propio GPIB a fin de simplificar el hardware y el software asociados a una interfaz dada. El PD7210 tiene como función liberar al procesador con el que se interconecta, de las tareas de manejo del protocolo del GPIB y para ello cuenta con 16 registros internos que le permiten fijar los parámetros de operación y conocer el ‘estado de la interfaz en un momento dado. Los 16 registros se dividen en 2 grupos, 8 de lectura y 8 de escritura, como se muestra en la figura 2.3 y son accesados a través de 3 líneas de direccionamiento (RSO a RS2) y las líneas de RD, WR, y CS de este controlador2. R R R W M r? SI Dl R R R sss [OR]MlODEENnuo* [lR] STAD0 DE UlTERRUPClONES I t2RI m A D 0 DE 1UTERRumES 2 [YI] fSlW DE n i C V m A SERE [4R] W AD0 DE MRfCCIüNfS [ S I PISO DE COUUIW [en] DlREccloH o [7R] MRü2CCti 1 REClSTRmMESCRlTUU Figura 2 . 3 Registros internos del PD7210. Registros de datos: El registro dato de entrada (OR) es donde se deposita la información recibida desde el GPIB para transferirla al microprocesador mientras que el registro de dato de salida (OW) es donde se escribe el dato que se desea enviar a través del GPIB. Registros de interrupciones: Son los encargados de fijar las máscaras de interrupciones, es decir, colocar las condiciones por las cuales se va a generar una interrupción y reportar el estado de dichas condiciones. Para esto se dividen en dos grupos los registros de máscara (1W y 2W) y los registros de estado (1R y 2R) contando con 13 condiciones de interrupción como se muestra en la tabla siguiente. INT CPT OR de todos los bits sin máscara Command Pass Throuah APT Address Pass Through END End (recepción del mensaje EOS) DET Device Clear w Data Out DI SRQI LOKC REMC ADSC co 11 Device Trigger DEC ERR l Error Data In Service Request Input Lockout change Remote change Address status change Command output - Registros de encuesta serie: Este registro (3R) guarda el byte de estado y el mensaje local de petición de servicio rsv. 10 Registros de dirección: El registro de modo de dirección (4W), fija el modo de direccionamiento del dispositivo y fija el modo de operación de las líneas de control de los transceptores (T/R2 y T/R3). El registro de estado de direcciones (4R), refleja la manera en que ha sido direccionado el dispositivo. El registro de dfreccidn O (6R) y el de dirección 1 (7R) son utilizados para fijar las direcciones a las que va a responder el dispositivo, ésto se lleva a cabo mediante el registro de dirección 0 / 1 (6W). Registro de paso de comando: Este registro (5R) es utilizado para que el procesador lea las líneas de datos cuando se presente un comando indefinido, una dirección secundaria o una respuesta a una encuesta paralelo. Registro de fin de cadena: En este registro (7W) se graba el byte de EOS con el que el GPIB marca el fin de un bloque de datos. Registro de modo auxiliar: Es un registro (5W) multipropósito utilizado para el envío de comandos auxiliares, programación del reloj interno del PD7210 y la escritura a los registros auxiliares A , B, E y al de encuesta paralelo. 2.2.2 Tarjeta de interfaa. La tarjeta de interfaz entre los buses de la PC y el GPIB cuenta, adicionalmente al PD7210, con un transceptor de datos para conectar el bus de datos de la PC al bus de datos del PD7210, dos transceptores dedicados, que cumplen con las especificaciones eléctricas de estándar, a las salidas del PD7210 para conectarse al GPIB, un bloque de decodificación de direcciones y una base de tiempo como se puede apreciar en la figura 2.4. La base de tiempo es un reloj de 6MH2, utilizado para generar los tiempos necesarios para que el PD7210 maneje adecuadamente los cambios de estado del protocolo IEEE-488. El bloque de decodificación de direcciones está diseñado para activar al PD7210 sólo cuando se direcciona la tarjeta como un dispositivo de entradalsalida. El acceso a la tarjeta se logra mediante 8 direcciones contiguas del espacio de direccionamiento de entradalsalida de la PC, en la región destinada a tarjetas prototipo y son las direcciones 0308H a 030FH. El acceso de los registros del PD7210 se logra conectando las 3 líneas de direcciones más bajas del bus de la PC a las terminales RSO, RS1 y RS2 del PD7210 mientras que el resto de las líneas de dirección en conjunto con las líneas de IOW e IOR se utilizan para decodificar la dirección base de la tarjeta que corresponde a la 0300H. 11 Para interconectar el bus de datos de la PC al bus de datos de entrada del PD7210 se coloc6 un transceptor bidireccional SN 74245 mientras que los transceptores a la salida del PD7210 son los circuitos integrados SN 75160 y SN 75162 utilizados para interconectar las líneas de control, manejo de la interfaz y de datos del PD7210 al GPIB. Figura 2.4 Tarjeta de interfar PC/iEEE-PSS. De esta manera quedan descritos de manera general el estándar y el hardware de interconexión entre la PC y el GPIB. El siguiente capítulo describe el desarrollo del software de bajo nivel para el control de la tarjeta de interfaz as€ como el software de alto nivel correspondiente a la interfaz hombre-máquina. 12 Capítulo 3 Desarrollo de la Interfaz Hombre-Máquina 3.1 . Descripción General. , La función principal de una interfaz hombre-máquina o de usuario es facilitar la interacción hombre-computadoraI involucrando el hardware y el software en un diálogo que le permita al usuario manejar algoritmos o procedimientos complejos, así como controlar de manera transparente dispositivos de entrada/salida. El manejo transparente se lleva a cabo cuando el usuario controla tales algoritmos o dispositivos de manera indirecta y, la mayoría de las veces, sin tener un elevado conocimiento acerca de ellos. La interfaz de usuario es la encargada de superar dicha falta de conocimiento solicitando al usuario los datos que si conoce para controlar los dispositivos antes mencionados a fin de realizar una tarea específica. Cabe mencionar que la importancia de las interfaces de usuario ha ido aumentando en tal medida que, en la actualidad, el código escrito para dichas interfaces supera al de la aplicación en sí. M ,4- o o M 0 8 E d 5: * + z; r; El objetivo de este trabajo es desarrollar una interfaz de usuario que permita hacer transparente al operador la programación O " y el manejo de la tarjeta de interfaz entre los buses de la PC y el GI GPIB descrita en el capítulo anterior, a fin de poder implementar un sistema de medición e instrumentación. A s í mismo, dicha interfaz v .. debe liberar al usuario del aprendizaje del protocolo IEEE-488 y los códigos de programación de los dispositivos que desea controlar remotamente. Lo anterior le permitirá a un usuario con relativa poca experiencia en el estándar, implementar un sistema de medición e instrumentación controlado de manera remota por una PC. 2 13 La interfaz desarrollada, que recibe el nombre de PC488, cuenta con las funciones de programar la tarjeta de interfaz, enviar y recibir datos de y hacia el GPIB, así como también las de mantener un índice de dispositivos que puedan eventualmente ser habilitados y controlados de manera remota, además de proporcionar la capacidad de incrementar el número de dispositivos. El sistema PC488 consta de 2 módulos principales para ejecutar las tareas antes descritas: a) PC488A b) PC488C Programa de Altas. Programa de Control. El PC488A tiene la función de generar y, posteriormente, actualizar el índice de dispositivos o instrumentos mediante una rutina de a l t a s de equipo, que recolecta los datos necesarios para generar un archivo que contiene la información requerida para programar un dispositivo en particular. El PC488A genera dos tipos de archivos, uno de ellos es el índice de dispositivos y el otro almacena las funciones del instrumento y sus respectivos códigos de operación. La estructura de esos archivos, que de aquí en adelante se denominarán archivo índice y archivo de dispositivo, se puede ver en la figura 3.1. DIRECCION cwxo cos mm Eos Figura 3.1 Archivos de dato. NUN. “CKmES del Pc488. El PC488C es el programa utilizado para el control de la comunicación de los dispositivos interconectados al GPIB. Este programa utiliza los archivos creados por el PC488A para tener una representacibn gráfica de los instrumentos dados de alta en el sistema; a partir de esta representación se pueden seleccionar aquellos que se requieran para una tarea en particular. como paso siguiente a la selección se tiene la programación de dichos instrumentos, mediante el archivo de dispositivo que de cada uno de ellos se mantiene y cuyo contenido son los códigos necesarios para su control a través del GPIB. 14 La estructura general del sistema, como se observa en la figura 3.2, consta del hardware de interfaz y dos etapas de programación, una de bajo nivel y otra de alto nivel. El hardware está representado por la tarjeta de interfaz; la primera etapa de programación, realizada en lenguaje ensamblador, esta constituida por las rutinas de programación y control de dicha tarjeta y finalmente la etapa de alto nivel, llevada a cabo en lenguaje Pascal, es la encargada de hacer transparente al usuario el uso del hardware y en la cual está desarrollado todo el sistema en sí. Este uso transparente del hardware se logró mediante llamadas a las rutinas de bajo nivel desde el lenguaje de alto nivel por medio de un mecanismo de paso de p a r h t r o s , que nos permite transferir datos entre los dos niveles de programación. T U R B O -PASCAL ALTO N M L ENSAMBUDOR WONML rll Figura 3 . 2 Estructura general del sistema PCP88 Como ya se mencionó anteriormente, para el desarrollo del sistema se eligió el lenguaje ensamblador, para la parte de bajo nivel, a fin de tener un control total y veloz sobre la tarjeta de interfaz y, como lenguaje de alto nivel, el Turbo-Pascal por sus cualidades gráficas, así como también por que proporciona un fácil y eficiente manejo de archivos. 15 3.2 Deecripcián Funcional. Para la descripción funcional se tomará como primer punto las rutinas en lenguaje ensamblador, para continuar con el mecanismo de paso de parámetros entre lenguajes y terminar con la etapa de alto nivel de programación, realizada en Lenguaje Turbo-Pascal. La secuencia necesaria para poder programar en forma remota un dispositivo principia con el envío, por parte del CIC, de la airección de escucha del instrumento a controlar y la dirección de parlante del propio controlador, para que posteriormente el controlador envíe cada código de operación del instrumento direccionado. En cualquier momento que se desee accesar las funciones de algún otro instrumento, se debe enviar su dirección de escucha antes de enviar los códigos de operación correspondientes. Programacibn de bajo nivel. 3.2.1 La programación a este nivel está destinada a las tareas de programación y control de la tarjeta de interfaz y a la comunicación con los dispositivos interconectados en el sistema de intrumentación. Para realizar dichas funciones se diseñaron las siguientes rutinas en lenguaje ensamblador de la familia del procesador 80x86, puesto que se utilizó una PC tipo AT: a) b) c) d) e) 3.2.1.1 Programación del PD7210 (prog7210.asm) Diredonamiento de dispositivos (dir dis.asm) Envío de datos y10 comandos (env datTasm) Recepción de datos (rec dat.asm)Deshabilitación del sisEema (des-sis.asm) PROG721Q.A8M La rutina de programación coloca los parámetros de operación del PD7210, así como también coloca al sistema de interfaz en un estado conocido de reposo o espera, a la vez que lo habilita como el CIC. Como primer paso se colocan las máscaras de interrupción colocando un valor de OOH en los registros de máscaras de interrupción 1 y 2. Las máscaras se colocan a cero ya que el manejo de interrupciones no se contempla en este trabajo. A continuación se programa el modo de direccionamiento escribiendo un valor 031H al registro de modo de direcciones. REGISTRO DE MOW DE DlRECClONES 16 Por medio de este registro se selecciona el modo de direccionamiento 1, en el cual la dirección mayor del dispositivo se coloca en el registro de direcciones O y la dirección menor en el registro de direcciones 1. Además se selecciona las funciones de las termínales T/R2 y T/R3 del PD7210 a CIC y PE respectivamente y según las tablas siguientes: Cic PE 1 EOIOE : INSI LA TERMINAL M EOI ES-OSUlM CIC : INDW SI LA FUNCION DE COHlROWOR ESTA ACTNA PE : INDICA EL npo OE LOS WEJADORES M BUS iRlG : K GENERA UN PULSO SI K ENVY< UN C O W W DE lRlCER 1 Después de ésto, se escribe al registro auxiliar A para colocar el modo de selección de datos y el mensaje de EOS. Al enviar un 84H se selecciona el handshake normal, se permite que el bit END sea colocado cuando se reciba el mensaje EOS, se inhibe la transmisión automática del mensaje de EOS y se habilita la opción de 7 bits del registro EOS como mensaje válido de EOS. Una vez hecho lo anterior, se procede con la programación de la cuenta del reloj interno del PD7210 que tiene la función de generar los tiempos necesarios para los cambios de estado dentro de la interfaz de acuerdo a la norma IEEE-488. Para ésto se envla un 26H al registro de modo auxiliar y con este valor se programa una frecuencia de 6 Mhz, que es igual a la del reloj con que cuenta la tarjeta. 17 Como paso siguiente se envlan un BCH al registro auxiliar El lo que permite seleccionar las características de prohibición de la recepción de comandos indefinidos, prohibición de la transmisión del EOS en una encuesta serie. Se elige también T1 como alta velocidad, esto se selecciona también al colocar la cuenta interna del reloj de referencia; además'se selecciona el nivel de la linea de interrupción y se indica que el primer valor de un mensaje local sea tomado como CRQS. REGISTRO AUXIWIR B Se inhibe la encuesta paralelo enviando un 70H al registro de modo auxiliar, para continuar con el envío de un COH al registro auxiliar E que deshabilita la retención de la llnea de DAC. A continuación se fija la dirección de la tarjeta, escribiendo al registro de dirección 1, como 01H y se deshabilita la dirección menor mediante el envio de un 80H al registro de direcciones 011. [ O I' I '1u I s 1 0 0 0 0 IP,IP?IPII REGISTRO DE ENCUESTA P W L O La secuencia de programación termina con la colocación, en el registro de EOS, de la palabra de 7 bits que servirá como mensaje de EOS, en este caso se envla un ODH o retorno de carro. Con ésto se tienen los parámetros requeridos para que la tarjeta funcione como controlador y responda a las características de hardware con las que fue construlda y además se le asigna la dirección 01H dentro del sistema de interfaz. Por último se procede a inicializar el sistema de interfaz por medio del envío del comando auxiliar PowerOn' (encendido) y colocando a un valor lógico verdadero la llnea de I F C por al menos 100 microsegundos, terminando con un comando auxiliar de RemoteEnable' (habilita remoto) que habilita al sistema de interfaz para trabajar en modo remoto de programación. 18 3.2.1.2 DIR-DIS.ABM 3.2.1.3 ENV DAT.ASM 3.2.1.4 REC-DAT.ASM La rutina para direccionar los dispositivos es la primera en utilizar el mecanismo de paso de parámetros, ya que tiene que recibir como entrada la dirección del dispositivo que se desea programar. Esta rutina cuenta con tres subrutinas locales denominadas ASCII, TEST CO y TEST TA las que se utilizan para fomatear el dato de dirección, verificar que el PD7210 esté en disponibilidad de enviar un dato y verificar si el PD7210 ha sido direccionado como parlante respectivamente. Esta rutina recibe la dirección del dispositivo en forma de una cadena de 2 caracteres en código ascii, y por medio de la rutina ASCII se convierte esa cadena de caracteres a un valor hexadecimal correspondiente a la dirección del dispositivo. Por medio de TEST CO se prueba si el registro de salida del PD7210 está libre paraenviar un dato hacia el GPIB. Esta subrutina prueba el bit CO del registro de status de interrupciones 2 y si se encuentra en un valor lógico verdadero se envía la dirección del instrumento al GPIB. Si esta última dirección cae dentro del rango de escucha, el CIC es direccionado como parlante enviando la dirección 41H verificando posteriormente, mediante la rutina de TEST TA, que se haya hecho el direccionamiento correcto. se finaliza con el envío del comando auxiliar GoToStandBy (ir a espera) que tiene como función colocar al sistema de interfaz en un estado conocido de espera. - Con esta rutina se envían los códigos de programación a los dispositivos previamente direccionados, Cuenta con una subrutina local que verifica que el PD7210 se encuentre en condiciones de enviar un dato al GPIB, ésto para no sobreescribir en el registro de salida y llegar a perder información. Esta rutina recibe, como primer parámetro, el número de caracteres ASCII que se van a enviar seguido de los propios caracteres. Con el primer parámetro se construye un lazo que verifica el estado del registro de salida del PD7210 y envía el carácter ASCII en turno; al terminar con el envío los códigos o caracteres, la rutina env-dat manda un mensaje de EOS para marcar el fin de cadena. Esta rutina es la utilizada cuando se requiere obtener información de algún dispositivo a través del GPIB. Cuenta con 5 subrutinas locales TEST DO, TEST CO, TEST LA, TEST DI, TEST CIC con las que se verifican las siguienfes condiciones: qüe el regrstro de salida esté libre, que se esté habilitado para enviar un comando, que el controlador esté direccionado como escucha, que se haya recibido un dato en el registro de entrada del PD7210 y que se éste actuando como CIC del sistema. 19 La rutina inicia con un llamado a TEST-DO para luego enviar el comando auxiliar de TakeControlAsynchronously (toma control asfncronamente) y verificando que se tenga el control del sistema haciendo un llamado a la rutina TEST-CIC. Continúa con un llamado a TEST CO a fin de enviar el comando auxiliar de Unlisten (no escuchar) para luego direccionar al controlador como escucha y enviar la dirección de parlante del dispositivo que se desea accesar, finalizando con el envio de l o s comandos auxiliares de Listen (escuchar) y GoToStandBy (ir a espera). Una vez hecho ésto, se tiene un lazo que verifica si ha llegado un dato al registro de entrada y lee dicho carácter, terminando este ciclo cuando se recibe el código de fin de cadena o retorno de carro. 3.2.1.5 - DES SIB.ASM Su función es la de devolver a los dispositivos al modo de programación local, a fin de que se puedan manejar desde el panel frontal de control. También es la encargada de restablecer y deshabilitar el sistema de interfaz. Cuenta con las subrutinas locales de TEST CO, -TEST-CIC y TEST-DO con las funciones antes descritas. Inizia con el envio del comando auxiliar de TakeControlAsynchronously verificando si se tiene el control del sistema para luego enviar los comando de Unlisten y Untalk (no hablar) a fin de no direccionar a ningún instrumento o dispositivo; finaliza con el comando auxiliar de ResetRemote (restablece remoto) seguido de un DisableSystemControl (deshabilita control del sistema) con lo que se libera todo el control del sistema, regresando a todos los dispositivos conectados al sistema de interfaz a su modo local de operación. 3.2.2 Paso de Parámetros El paso de parámetros es una técnica empleada para compartir datos entre lenguajes y surge de la necesidad de utilizar lenguajes diferentes para realizar tareas especlficas dentro de una aplicación global. Esta técnica nos permite dividir una aplicación en tareas individuales, mismas que son programadas en el lenguaje idóneo para llevar a cabo la función para la que han sido creadas. Esto último redunda en una mayor eficiencia de la aplicación, mediante la programación a distintos niveles y enfocada a un mejor aprovechamiento de las facilidades y beneficios otorgados por los distintos lenguajes utilizados. De esta manera, se puede tener un programa en Pascal para manejar la captura y presentación de los datos mientras que se tiene otro programa en ensamblador para manejar las comunicaciones de manera rápida y eficiente. 20 Para llevar a cabo la comunicación entre el Turbo-Pascal y el ensamblador, las rutinas en ensamblador deben ser ligadas al programa principal en Turbo-Pascal. Para ello se requiere cumplir con 3 requisitos: el primero es informar al Turbo-Pascal que la rutina es de tipo externo, como segundo paso se debe implementar un mecanismo para el intercambio de datos, en base a la representación interna de los datos en Turbo-Pascal y, por último, las rutinas en ensamblador deben ajustarse al modelo de llamado a procedimientos del Turbo-Pascal. 3.2.2.1 Ligado de rutinas Para cumplir con el primer requisito, la rutina en ensamblador declara como cualquier otro procedimiento o función del TurboPascal agregando al final la palabra reservada EXTERNAL y colocando, entre comillas, el nombre del archivo ejecutable correspondiente a la rutina, como se puede ver a continuación: 8.9 PROCEDURE EJEMPLO IPARAM1, PARAM2.i; EXTERNAL 'RUTINA.COM' La rutina debe ser ejecutable y del tipo COM, es decir, de código relocalizable para que el ligador pueda resolver las referencias y colocarlo debidamente junto al resto del código generado por el Turbo-Pascal dentro del mismo segmento de código. El segundo requisito involucra al Turbo-Pascal y al programador, ya que la tarea del Turbo-Pascal es preparar áreas de memoria para entradalsalida de datos mientras que la del programador es realizar el protocolo de acceso a dichas áreas. Esto se logra mediante el conocimiento de la representación interna de los datos en TurboPascal y con un manejo adecuado de las áreas de entradalsalida proporcionadas por el propio lenguaje. Generalmente el área de memoria conocida como s t a c k es el centro del proceso de intercambio de datos entre lenguajes, aún cuando se pueden manejar registros y algunas banderas del microprocesador. 3.2.2.2 Representación interna de los datos La representación interna de los diferentes tipos de datos que el Turbo-Pascal hace para el manejo y almacenamiento de los mismos es el siguiente: EnterOS: L o s números enteros son almacenados como números de complemento a dos en dos bytes, con el menos significativo en la dirección menor. . Caraateres y Booleanos: Se almacena un byte que corresponde al código ASCII del carácter. Para los booleanos se almacena un ' O ' para falso y un '1' para verdadero. 21 C.delu8 de oaraateres: Una cadena de tamaflo n ocupa n+l bytes de memoria, siendo el primer byte el tamaflo de la cadena. El ntímero que representa la longitud de la cadena es tratado como un entero sin signo, razón por la cuál el tamaño o longitud máxima de una cadena es de 255 caracteres. Reales8 El Turbo-Pascal tiene la posibilidad de representar los reales de 3 tipos: estándar, BCD y 8087 con 6, 10 y 8 bytes respectivamente. Debido a ésto las rutinas en ensamblador deben de "conocer" cuál de las tres versiones se está utilizando. Enumerados y subrangos: Se almacenan como un entero igual ai valor ordinal de la posición del elemento dentro de la declaración, iniciando con un ' 0 ' para el primero, un '1' para el segundo y así sucesivamente. El tipo subrango se almacena como el valor ordinal del elemento dentro del rango completo, por ejemplo, si se define un subrango del 5 . . 9 , el primer elemento será un 4. ' Conjuntos: Este tipo de dato ocupa en memoria un total de n bytes, donde n toma valores desde 1 hasta 32. El valor de n depende de los valores ordinales de los límites superior e inferior del conjunto, con el i-ésimo bit del arreglo total representando al elemento de valor ordinal i dentro de la declaración del conjunto. Apuntadores: Se almacenan 2 bytes, una para el offset y otro para el segmento, en ese orden. Registros: Se asigna una cantidad de memoria igual a la suma de todos los campos del registro de acuerdo a las definiciones anteriores. En los registros variantes, se reserva memoria para la parte fija más la necesaria para almacenar la parte variante de mayor tamaño posible. Las direcciones se asignan de menor a mayor de acuerdo a la posición de los campos dentro de la definición de dicho registro. Arreglos: L o s arreglos son almacenados por renglones con el elemento [i,j] seguido del elemento [i,j+i], con el espacio de memoria ajustándose a las descripciones antes proporcionadas. Cabe mencionar que para procedimientos y funciones , las salidas de datos son manejadas de manera distinta. Por lo general los procedimientos entregan sus salidas de datos a través de parámetros tipo VAR por lo que el ensamblador sólo requiere conocer las direcciones de esos parámetros y dichas direcciones se encuentran en el stack. Por de la salida maneje otro lado, las funciones entregan sus salidas en el nombre función; razón por la cual la mecánica de accesar dicha depende del tipo de función que se haya declarado y de cómo el ensamblador el tipo de dato de que se trate. 22 Así, los enteros, enumerados y subrango son regresados en el registro AX, con la posibilidad de ser en el registro AL si el dato es de 8 bits; los booleanos colocan la bandera de cero del procesador si el resultado es falso; los reales y las cadenas de caracteres son regresados a través del stack, siempre y cuando el apuntador del stack esté apuntando al primer byte del resultado de la función; los apuntadores son regresados en el par de registros DX:AX, segmento y desplazamiento respectivamente. 3.2.2.3 Consideracionee del ensamblador Con respecto al tercer requisito, el primer punto es generar, a partir de la rutina en ensamblador, un archivo ejecutable de tipo COM, o de código relocalizable, debido a la forma en que el TurboPascal genera sus archivos ejecutables. A continuación se debe almacenar el estado del programa, guardando los registros en el stack, al momento de iniciar la rutina en ensamblador y restablecerlos antes de regresar el control al programa principal, mediante instrucciones de PUSH y POP. Adicionalmente, se debe contar con un apuntador que permita el desplazamiento dentro del área de stack donde se encuentran los datos. Esto se logra copiando a un registro, por ejemplo BP, el apuntador de stack SP y navegar a través del stack mediante un desplazamiento de la forma [BP+n], donde n representa el n-ésimo dato que se desea accesar, como se ilustra en la figura 3.3 pop POP pop U POP Ds pop E M ligura No. 3.3 Eatado del stack después de rutina en ensamblador 23 BX SP ss UII llamado a m a 3.1.3 Programación de A l t o Nivel Como se mencionó anteriormente, la programación de alto nivel consta de 2 programas principales que son el PC488A y el PC488C procediendo a su explicación en ese orden presentando un diagrama jerárquico de los procedimientos utilizados, así como la explicación de las funciones realizadas por cada uno de ellos. Además se crearon algunos archivos de procedimientos que son incluidos en los programas principales, ésto para lograr una mayor modularidad y facilitar el manejo de los mismos. 3.2.3.1 Programa de Alta de Equipos PC488A El PC488A está dividido, para lograr una mayor modularidad, en dos archivos de código fuente, como se aprecia en la figura 3.4 donde además se observan los procedimientos que componen cada uno de esos módulos. Introduction WindowDefinition PC488A Instructions Enterlnfo Figura '. DrawDeviceNo 1 DrawDeviceNo2 DrawDeviceNo3 KbdClear Translations AddressLayout Beep EnterFunctions EnterData DecimalToBinary Bina ryToSwit c hes EnterDataTg no. 3.4 E s t r u c t u r a del Programa ~ ~ 4 8 8 ~ El programa principia con la inicialización y habilitación del modo gráfico, contintía con la definición de las ventanas a utilizar, después ejecuta la subrutina de presentación del programa donde, además se proporciona al usuario alguna información general del uso del programa. A continuación el PC488A verifica si se encuentra el archivo lndice de dispositivos, desplegando una advertencia en caso de no existir, para continuar a la etapa de captura de datos. Esta etapa está constituida por un lazo de captura que permite agregar varios dispositivos en forma consecutiva. Una vez terminada la operación de dar de alta a los dispositivos, se le da la opción a usuario de entrar directamente al segundo programa, el PC488C, a fin de accesar los dispositivos recién dados de alta. En el diagrama de flujo del PC488A, presentado en la figura 3.5, se puede observar de manera más clara la secuencia de operación descrita líneas arriba. 24 IN- GRAFKXK I wmdawcwinihs I IniroducUai Figura No. 3 . 5 Diagrama de F l u j o del PC488A. Los procedimientos que componen al PC488A son presentados a continuación dando una descripción de las funciones realizadas por cada uno de ellos: Proaedimiento WindowDefinitions: La función de este procedimiento es la de definir las ventanas que servirán como áreas de trabajo y despliegue. Las ventanas utilizadas en el programa son 11 y se definen como: Pantalla general, comandos, encabezado 1, encabezado 2, encabezado 3, movimiento y diálogos, borrado, máscara de direcciones, entrada de datos, borrar entrada-tg, y borrar letrero-tg. 25 Procedimiento Introduction: Este procedimiento se encarga de desplegar la pantalla de presentación del PC488A. Inicia por activar las ventanas de trabajo y graficar la pantalla de presentación auxiliandose de los procedimientos DrawDevicel, 2 y 3, terminando con un mensaje al usuario de cómo obtener información adicional. Procedimientos DraWDBViCBl, DrawDevice2 y DrawDevice3: Estos procedimientos grafican algunos de los elementos utilizados en la pantalla de presentación. Procedimiento Instructions: Este procedimiento genera una ventana de información acerca de la forma de introducir los datos al programa, debido a que existen varios formatos para los datos de los dispositivos. Procedimiento EnterInfo: Por medio de este procedimiento se captura la información relativa a un dispositivo y se crea el archivo correspondiente a la vez que actualiza el archivo indice. Como primer paso inicializa las variables involucradas en la captura de datos, para después, mediante el procedimiento EnterData, solicitar al usuario los datos necesarios. Adicionalmente verifica si existe ya un archivo de dispositivo con se depliega el nombre que se está capturando, en caso afirma:ivo una ventana de advertencia y se solicita un nombre diferente continuando con la captura del resto de la informción. Una vez que se han introducido todos los datos solicitados, se pregunta al usuario si estos están correctos proporcionando un mecanismo para correción en caso negativo. Una vez que se dan por validos los datos mediante el procedimiento AddressLayout se abre una ventana en pantalla que muestra los datos generales del dispositivo y sus direcciones en los 3 formatos posibles, es decir, en representación decimal, hexadecimal o con una gráfica de los interruptores con que cuenta el instrumento que, físicamente, son los encargados de fijar la dirección dentro del GPIB. A continuación, se hace un llamado al procedimiento EnterFunctions que es el encargado de capturar los datos relativos a funciones y códigos de operación del instrumento en cuestión. Para terminar, se verifica la existencia del archivo indice para determinar si se debe crear o sólo agregar el dispositivo recién dado de alta al archivo que lleva registro de todos los que están dados de alta en el sistema. Procedimiento EnterData: Este procedimiento tiene como función capturar y validar los datos del dispositivo que está siendo dado de alta. Tiene como entradas las coordenadas de pantalla de donde va a desplegar la información que está siendo tecleada, el número máximo de caracteres que permite, la leyenda que despliega en caso de error y el conjunto de los caracteres válidos. Además verifica las teclas de <BACKSPACE>, < E S O y <ENTER> ya que son teclas que tienen asignada una función dentro del procedimiento. 26 La tecla de <BACKSPACE> se utiliza para borrar, la de < E S O para salir del programa y la de <ENTER> para terminar la entrada de un dato. Todos los caracteres o teclas que no estén entre estas 3 y los caracteres válidos son ignorados a fin de evitar errores por el tipo de dato introducido. Proaedbiento EnterDataTg: Con los mismos parámetros y funciones que el anterior pero específicamente diseñado para manejar apropiadamente el tipo de font' asociado a esta etapa de la captura de datos. Procedimiento AddreesLayout: Por medio de este procedimiento se genera la ventana que permite al usuario visualizar las 3 posibilidades que tiene de representar la dirección del dispositivo en cuestión. Estas representaciones son decimal, hexadecimal y gráfica. Proaedbiento Translations: Por medio de este procedimiento se hacen las conversiones entre las 3 diferentes representaciones de la dirección mencionadas lfneas arriba. Este procedimiento se auxilia de los procedimientos DecimalToBinary y BinaryToSwitches descritos posteriormente. Procedimiento DecimalToBinary: Este procedimiento sirve para obtener una representación binaria de la dirección decimal del dispositivo. Procedimiento BinaryToSwitches: De manera análoga al anterior, este procedimiento genera una representación gráfica equivalente de los interruptores de dirección del dispositivo en cuestión. 3.2.3.2 Programa de Control PC488C Este programa inicia verificando la existencia del archivo lndice, en caso de que no exista se despliega una advertencia y se da por terminado el programa; si el archivo se encuentra en el directorio, se inicializan los gráficos, se definen las ventanas a utilizar y se ejecuta la introducción colocando posteriormente en la pantalla la ventana de trabajo. En dicha ventana se muestran los primeros 16 dispositivos que se encuentran en el archivo índice y se dan l o s mecanismos para n a v q a r a través de estos y10 para cargar l o s siguientes 16 o los que resten por mostrar del archivo índice. Esta navegación, que de hecho es a través del archivo lndice, representa listar todos los dispositivos dados de alta hasta el momento de correr el PC488C y se lleva a cabo mediante las teclas de cursor y las de página arriba y página abajo, dejando la tecla <ESC> para salir del programa. Además se tienen las teclas de <F1> y <F2> para seleccionar y deseleccionar los dispositivos que se van a utilizar. El proceso de selección valida que no se hayan seleccionado más de 15 que representa el número máximo permitido. Una vez hecha la selección se pasa a la etapa de programación, mediante la tecla <F3>, en la que se presenta una pantalla semejante a la de la etapa de selección pero mostrando solamente los dispositivos seleccionados con anterioridad. En el caso de que no se hayan seleccionado ningGn dispositivo, el programa se da por terminado; si el número de dispositivos seleccionados es diferente de cero se hace un llamado al procedimiento Seestatus mediante el cual se procede a la programación o inspección de los datos relativos a un dispositivo en particular. En esta etapa se tienen las opciones de ver el estado de un dispositivo que representa básicamente examinar su dirección dentro del bus, como segunda opción se tiene la posibilidad de alterar esta última información para ajustes del tipo de cuando se tienen dos dispositivos con la misma dirección dentro del bus. En estas opciones se abre una ventana que permite desplegar el nombre del dispositivo y su dirección en los tres formatos mencionados con anterioridad. En la opción de cambio además se permite la modificación de este dato en cualquiera de los tres formatos. La opción restante es la de programar un dispositivo, para lo cual se abre una ventana que despliega la lista de las funciones realizadas por dicho dispositivo y un campo de selección para poder elegir la función a desarrollar por dicho instrumento. Se da la opción de terminar el programa mediante la tecla <F3> para conveniencia del usuario. MITOW SeeSlalua un08 R*nor Pc488c WlnáowLhiinillon InlllolSelUp InImducUon Help I slodddmn TmnJalionr Mdmdoywl { Desimalloüinory BinaylaSwilchea ChongeAddresa DmwDaissNol DmiDsricsNoZ ümw W c a N a 3 Figura N o . 3 . 6 Estructura d e l programa PCP88C. 28 El diagrama de flujo simplificado de la operación del programa se muestra en la siguiente figura. U IntrDductMn o Figura No. 3.7 Diagrama de f l u j o del PC488C. Los procedimientos desarrollados para la ejecución de dicho programa se describen a continuación y dado que algunos procedimientos son idénticos a los utilizados en el P C 4 8 8 A , sólo se presentan los que no han sido explicados con anterioridad. Prooedimientoe u m r o w , Dmrow, =row y mrrow: son procedimientos cuyas funciones son controlar el movimiento del cursor en las tareas de selección de dispositivos dentro de las etapas de conectar/desconectar y programar. 29 Proasdinientos PgUp y PgDn: Son los procedimientos utilizados para navegar entre la lista completa de dispositivos dentro de la etapa de selección. La lista completa de dispositivos está determinada por el número de estos últimos que se encuentren dados de alta y registrados en el archivo índice. Estos procedimientos permiten extraer de dicho archivo 16 instrumentos a la vez y permitir que sean agregados a la lista de seleccionados para su posterior programación. Cuenta con un mecanismo de validación para el caso de que el fin de archivo sea encontrado antes de leer 16 unidades de información referente a 16 instrumentos. Estos procedimientos actualizan también el despliegue en pantalla de la información que está siendo extraída del archivo índice permitiendo la navegación, a razón de 16 dispositivos a la vez, a través de la totalidad del archivo índice. Se auxilian de los procedimientos ResetConnectedDevices y Readselections descritos líneas abajo. Procedimiento InitialSetUp: Utilizado para colocar una pantalla conocida de arranque para la etapa de selección, este procedimiento inicia por colocar los encabezados pertinentes en las ventanas destinadas a ello y %argar8' los primeros 16 dispositivos que representan la selección inicial y a partir de la cual se puede iniciar la navegación a través del archivo índice así como la selección de los dispositivo a utilizar en la sesión de programación. Proasdimiento ReadSelections: Este procedimiento es utilizado para extraer del archivo índice la información relativa de 16 dispositivos. Dicha información es pasada a variables temporales para su uso en la etapa de selección, validando el fin de archivo en caso de que éste se presente antes de que se puedan leer los 16 registros correspondientes a igual número de instrumentos. Proceüimiento Connect: Por medio de este procedimiento, se da al usuario una representación gráfica y lógica de los instrumentos que han sido seleccionados para ser programados en la siguiente etapa de ejecución del PC488C. Se auxilia de las funciones Col y Ren para desplegar en forma gráfica la conexión al GPIB y que dicho dispositivo está siendo habilitado para ser programado. Procedimiento Disconnect: Este procedimiento realiza la función contaria a la del procedimiento anterior, es decir, elimina la representación gráfica y lógica de la conexión de un dispositivo para su programación a través del GPIB. Para actualizar la representación gráfica de la selección se auxilia del procedimiento ResetConnectedDevices. Ounaiones Col y Ren: Son dos funciones utilizadas para el cálculo de los parámetros gráficos que permiten representar la conexión de un dispositivo. También es utilizado para la desconexión del algún dispositivo mediante el procedimiento Disconnect. 30 BosetConnectedDevicee: Este procedimiento es el encargado najustaro*las conexiones gráficas de los dispositivos al momento ser desconectado alguno. Por medio de este procedimiento restablecen las conexiones de los dispositivos seleccionados y limpian las de los dispositivos que han sido deseleccionados. de de se se Proaedimiento Seestatus: Este procedimiento es el que se encarga de preparar la pantalla de despliegue donde se llevarán a cabo las tareas de verificar y/o modificar los datos relativos a la dirección de algtin dispositivo, así como la tarea de seleccionar un dispositivo para programarlo mediante el envlo de sus códigos de operación. Para realizar ésto, se implementa un lazo o ciclo en el cual se verifican las teclas de cursor, utilizadas para la selección, y las teclas <F1> para observar el estado del dispositivo, <F2> para modififcar los datos, <F3> para terminar y <F4> para pasar a la etapa de programación del dispositivo seleccionado. Se auxilia de los procedimientos UArrow, DArrow, LArrow y RArrow para la selección, de ShowAddress y ChangeAddress para la verificación y modificación de los datos de dirección y de ProgramDevices para la etapa de programación. Proaedimiento ShowAddrese: Utilizado para desplegar una ventana que muestre la información relativa a la dirección del dispositivo, se auxilia de los procedimientos AddressLayout y Translations descritos anteriormente. PrOaedbIieBtO ChangeAddrees: Este procedimiento tiene las funciones de habilitar la modificación, en cualquiera de los tres formatos dados, de la dirección asignada a un instrumento en particular. Permite la selección de uno de los formatos y hace un llamado a la rutina que efectúa los cambios en dicho formato. Dichas rutinas se listan a continuación. Procedimiento ChangeDec: Este procedimiento permite modificar la direción de un dispositivo dado en el formato decimal. Permite elegir si el cambio es temporal o permanente, además de validar la entrada de datos. Procedimiento ChaBgeHeX: Con las mismas funciones y atributos que el procedimiento anterior, éste es utilizado para el formato hexadecimal. Procedimiento ChangeSwitches: Este procedimiento es utilizado para modificar la representación gráfica correspondiente a los switches de dirección de manera análoga a la de los dos procedimientos anteriores. Sólo que éste en particular hace uso de un procedimiento adicional que es el BinaryToDecimal. Oroaedimiento BinaryToDecimal: Este procedimiento auxilia al anterior en la conversión de la dirección en formato binario a formato decimal para poder realizar las transferencias a los tres formatos utilizados en el programa. 31 Proaadimiento UpdateIndexFiler Por medio de este procedimiento se logra hacer la modificación de la dirección en forma permanente, es decir, se actualiza el archivo índice con la nueva información de dirección. PrOCOdimientO ProgramDevices: El llamado a este procedimiento, permite al usuario tener, en pantalla, la lista de las funciones que puede realizar el dispositivo seleccionado, elegir una de ellas y mediante un llamado a la rutina de ensamblador de env dat realizar la programación de dicha función en el instrumento en cuestión. Se auxilia del procedimiento ReadFunctions descrito llneas abajo. Proaedimiento ReadFunctions: Este procedimiento localiza el archivo de dispositivo pertinente y lee la lista de funciones, así como sus códigos de operación, para preparar una posible programación remota de dicho instrumento. Valida la lectura del archivo para evitar encontrar el fin de archivo antes de terminar de desplegar la lista completa de funciones. De esta manera han quedado descritas las funciones que llevan a cabo cada uno de los programas desarrollados para implementar el sistema PC488. Han sido desglosados los procedimientos y funciones elaborados para que los programas ralizaran dichas tareas y expuestos a través de diagramas de flujo que delinean la forma de operación de los mismo. En el capítulo siguiente se recopila una sesión de programación con un dispositivo y se describe cada etapa de la sesión mediante la presentación de las pantalla mostradas al usuario y un texto asociado a la misma. Procadimiento Kbdclear: Este procedimiento es una rutina en ensamblador utilizada para limpiar el área de entrada del teclado. Esta área de entrada del teclado es una pequeña memoria que almacena las teclas que el usuario va presionando, y ésta rutina tiene como función eliminar cualquier carácter almacenado en dicha área para los casos en que se sobrepasen l o s limites de caracteres de un campo de captura de datos. 32 Capítulo 4 Sesión de Trabajo con el PC488 4.1 Introducción. En este capítulo se describe una sesión tfpica de trabajo con el sistema PC488. Se describen las actividades que realiza el usuario al utilizar el sistema y, mediante figuras tomadas de la pantalla de despliegue, se muestra el comportamiento de los programas a las acciones del usuario. A l utilizar el sistema por primera vez, se necesita, obviamente, dar de alta al o los dispositivos y por lo tanto se debe hacer ésto mediante el programa PC488A y posteriormente llamar al PC488C para llevar a cabo la programación. En base a ésto se describe primero la sesión de trabajo con el PC408A y luego con el PC488C. 4.2 8esi6n de Trabajo con el PC488A En la figura 4.1 se muestra la pantalla de presentación del programa PC488A, mostrando las opciones de presionar la tecla <F1> para desplegar la ventana de instrucciones o la tecla de <ENTER> para entrar directamente al programa. La ventana de instrucciones mencionada se puede observar en la figura 4.2, donde además se indica la forma en que deben de prepararse los datos para ser introducidos al programa. En la figura 4.3 se tiene una ventana de advertencia que aparece cuando no se tiene el archivo índice de dispositivos, que es el caso de cuando se utiliza por primera vez el programa. 33 En la figura 4.4 se muestra la pantalla inicial de captura de datos relativos al dispositivo. Esta información es la que se almacena en el archivo índice, en la estructura descrita en el Capítulo 3, con el siguiente formato: nombre del dispositivo, para efectaos de identificación del mismo; dirección, para su acceso a través del GPIB; número de funciones, que representa las funciones que puede realizar el dispositivo; código de EOS, que en algunos dispositivos es utilizado para ‘terminar, el comando. Este campo fue agregado en previsión de dichos equipos, ya que si no se envía ese código el comando no es reconocido por el dispositivo. Un caso particular de estos dispositivos es el del Generador de Nivel PS-19 de Wandel & Goltermann con que cuenta el Departamento de Comunicaciones, ya que como ‘terminador’ del comando necesita enviar un carácter I ,I (ASCII 44). En el caso de que el dispositivo que se está dando de alta no requiera tal terminador, se debe teclear un espacio seguido de la tecla de <ENTER>. Al terminar la introducción de estos datos, se despliega una ventana cuya función es validar los datos recién introducidos mediante una interrogación directa al usuario de si los datos estan correctos. En caso negativo se repite el ciclo de captura, limpiando previamente los campos respectivos. Cabe hacer mención que se valida la existencia previa de algún dispositivo, es decir, si se intenta dar de alta un dispositivo con un nombre que ya exista dentro del sistema, el programa desplegará una ventana de advertencia como la mostrada en la figura 4.5 indicando que ya existe un dispositivo identificado con ese nombre. Se indica además, que se puede utilizar un nombre distinto si se desea dar de alta de cualquier manera al dispositivo. Una vez validados los datos anteriores, se muestra al usuario una pantalla, ver figura 4.6, que muestra los datos recién introducidos así como la representación de la dirección en los tres formatos utilizados. Adicionalmente se muestra una segunda ventana para introducir los datos relativos a las funciones del dispositivo y sus respectivos códigos de operación, y un indicador en la parte superior que muestra el número de función, del total del dispositivo, que está siendo capturada. En la ventana de captura se observan los campos destinados a recibir los datos de nombre de la función y código de la función, los cuales estan validados hasta un número límite de caracteres (25 y a respectivamente), este límite está representado por las áreas sombreadas y , en caso de que se exceda, se despliega la ventana de advertencia que se observa en la figura 4.7, para posteriormente limpiar dichas áreas y volver a capturar esos datos. Una vez que los datos han sido introducidos se interroga al usuario a fin de conocer si fueron introducidos correctamente o no, como se puede observar en la figura 4.6. 34 En la figura 4.8 se tiene la pantalla que el PC488A muestra al usuario una vez que se han introducido los datos relativos a las funciones y sus códigos de operación. En el caso del ejemplo se han completado 7 funciones de un total de 7 con que cuenta el dispositivo que está siendo dado de alta. El PC488A, en este punto, proporciona al usuario la posibilidad de dar de alta otro dispositivo. En caso de que as€ se desee se repite el ciclo de captura de datos, figuras 4.4 a la 4.8, y en caso negativo se da al usuario la posibilidad de una entrada inmediata al programa de control o abandonar definitivamente el PC488A, como se observa en la figura 4.9. En caso de que se desee entrar directamente al programa de control el PC488A inicia por indicar al usuario que está cargando la aplicación respectiva, ver figura 4.10, y transfiere el control al PC488C. En caso negativo el PC488A da por terminada la sesión y regresa el control al sistema operativo. En caso de que el usuario desee abortar el programa por cualquier motivo, se ha dado la opción de presionar la tecla < E C O en cualquier momento de la sesión, y el programa responde con una ventana, mostrada en la figura 4.11, en la que se le solicita ai usuario confirmar o negar la salida del PC488A. PROGRAilA DE ALTA DE EQUIPOS PLLSIüIII G I ) P/IIIsIRuccIonls ü ( I H I l R ) PKüWIIWUOR COWIROL D I IWI1RUiiliilDS PROGRlliiOlLEI iilDIIWII: It SUI IEEI-$88 Figura No. 4 . 1 8esi6n de Trabajo con el PC488A. 35 Instruction htcutncq lnpi iudt I I I Units ntrti ~iitntrtz I Figura no. 4 . 1 8eni6n de Trabajo con e l PC488A. (Cont..) Figura No. 4 . 3 8eni6n de Trabajo con e1 PC488A. (Cont..) 36 Figura Ro. 4.4 Sosi& de Trabajo con el PC4üüA. (Coat...) . . . . . 37 Figura lo. 4.6 Seai6n de Trabajo con el PC488A. (Cont..) I I I 30 P i g u r i So. 4.8 Sesi6n de T r a b a j o aom -1 PC48üA. ( a n t . . ) P i g u r i No. 4 . 9 Smsi6n do Trabajo con e l PC48üA. (Cent..) 39 UN HOHEHTO POR FAUDR CAR6ANDO EL ARCHIUD P C W C Figura *o. 4.10 sesi611dm Trabajo con el ~ ~ 4 8 8 (cant..) ~ . 40 4.3 Boeióa do Trabajo con el PC488C. La figura 4.12 se muestra la pantalla de presentación del PC488C, mientas que la figura 4.13 la pantalla inicial de trabajo del PC408C. En esta pantalla se muestran los 16 primeros instrumentos que se encuentren dados de alta en el sistema, y en la ventana de comandos ( parte inferior de la pantalla ) , se muestran las teclas que tienen asignada una función especifica y que son: <F1>, conectar; <F2>, desconectar; <F3>, continuar; PgUp y PgDn, para avanzar a la siguiente o retroceder a la anterior pantalla; las teclas de cursor, para moverse en la pantalla; <F10>, ayuda. La acción de conectar tiene como objetivo hacer una representacion gráfica de la selección de un instrumento a ser sujeto de programación, como se explicó anteriormente en el capítulo 3. La acci6n de desconexión realiza la tarea contraria a la anterior, mientras que la acción de continuar permite pasar a la siguiente etapa dentro del programa PC488C. Por medio de las teclas de PgUp, PgDn y las teclas de cursor se provee al usuario con un mecanismo de navegación que le permite seleccionar, a todo lo largo del archivo índice, los dispositivos que requiera programar o utilizar en una sesión dada. En la figura 4.14 se representa la entrada del usuario seleccionando los dispositivos HP-1, HP-4, HP-6 y HP-7. En este último dispositivo se aprecia el cursor, en forma de un bloque que resalta la posición actual, que permite al usuario verificar su posición dentro de la pantalla. En la figura 4.15 se despliega la ventana de ayuda, misma que muestra la lista de teclas de comando y las acciones que realizan cada una de ellas. La figura 4.16 muestra la segunda etapa del PC488C, en la que sólo se despliegan en pantalla los instrumentos que hayan sido seleccionados en la etapa inicial, en el presente ejemplo: HP-1, HP-4, HP-6 y HP-7. En la ventana de comandos de dicha pantalla se muestran las teclas y las funciones asignadas para esta etapa del programa y son: < F D , para mostrar el estado actual del dispositivo; <F2>, para cambiar dicho estado; <F3>, terminar o salir del programa; <F4>, programar el dispositivo apuntado por el cursor y <F10>, para desplegar la ventana de ayuda. En la figura 4.17 se muestra la ventana que es desplegada cuando el usuario solicita la opción de ayuda, y en dicha ventana se listan las teclas asignadas y sus respectivas funciones dentro del programa dependiendo de que etapa del mismo se esté ejecutando. Esta Gltima parte se refiere al hecho de qué se tiene una ventana de ayuda para cada una de las etapas del programa donde se reasignen las funciones de las teclas. 41 En la siguiente figura, 4.18, se observa la selección del primero de ellos y la ventana que se despliega, a la derecha de la pantalla, cuando se selecciona la opción de mostrar el estado del dispositivo. En dicha ventana se muestra el nombre y la dirección del dispositivo apuntado por el cursor. La opción de cambiar el estado de algún dispositivo se ilustra en la figura 4.19 donde se observa la ventana de estado del dispositivo y una ventana adicional, en la parte inmediata superior, con las indicaciones necesarias para realizar algún cambio. Además en la ventana de estado del dispositivo se aprecia un cursor en forma de flecha que permite al usuario elegir, de entre los 3 formatos de la dirección, cuál es el que desea utilizar para realizar el cambio. Dicho cambio es automáticamente reflejado en los otros formatos restantes. Para el caso de que el usuario eliga realizar el cambio en el formato decimal o hexadecimal, el campo correspondiente es borrado y abierto a la entrada del teclado, con la debida validación de la entrada. Cuando se elige hacer el cambio en el formato de interruptores o switches de configuración de dirección, el PC488C despliega en la ventana de estado un área que representa a los 5 switches de dirección, con las 5 posiciones en blanco y un mensaje en la parte inferior solicitando al usuario el estado lógico de cada uno de los switches. Esto se puede observar en la figura 4.20, donde se representa el cambio de dirección de un dispositivo. Una vez actualizado el valor de la dirección se interroga al usuario si desea que ese cambio sea permanente, es decir, si se elige que sea permanente, el archivo índice es actualizado con el nuevo valor y si no el cambio es temporal y válido sólo durante la sesión de trabajo actual. Finalmente, en la figura 4.21 se tiene la pantalla donde se despliega la lista de funciones del dispositivo apuntado por el cursor. Esta lista es desplegada cuando se selecciona la Opción de programar y permite al usuario el envío de los códigos de programación de la función seleccionada, esto último lo realiza el PC488C de manera transparente. En esta opción, además, se permite al usuario introducir un dato que sería el valor numérico de la función que desea realizar, es decir, si selecciona la opción de frecuencia en un generador, en este campo él introduciría el valor que requiera para su propósito particular. Al terminar de ejecutarse ese comando remoto, el sistema vuelve al estado de la figura 4.16, donde el usuario est6 en posibilidad de seleccionar alg6n otro dispositivo para su programación. 1 A s l , en este capstulo, se ha descrito de manera general una sesión típica de trabajo con el sistema PC488, de lo que se puede observar que es fácil de utilizar y realiza un manejo adecuado tanto del bus como de los instrumentos. Esta facilidad de uso es la principal ventaja del sistema, sin embargo, sólo se pueden implementar sistemas de medición sencillos ya que la estructura del PC488 sólo le permite programar función por función e instrumento por instrumento lo que limita su capacidad operativa. 42 PROGRfiHA DE CONTROL DEL G P I B F i g u r a Yo. 4 . 1 2 Sasi611 de T r a b a j o con e l PCOBBC. 1-1 I C O I f C I Y I t . DfSCühiClRk f3: COIIIIUkR "]."'I PgUp: IILRiüR tfh: llW0 ,'v] t&++ 'NOUiR 118' bVUDR F i g u r a Yo. 4 . 1 3 8esi6n de T r a b a j o con el PC488C. ( a n t . . ) 43 I P.1 I Sigura No. 4.14 sesión dm Trabajo con 01 PC488C. (Cant..) ?igura M. 4.15 Seai6n de Trabajo con 01 PC488C. (Cant..) 44 ?iguri N o . 4 . 1 6 Saaión da Trabajo con el PC488C. ( a n t . . ) 45 B Figura iio. 4.18 Sa8i6n da Trabajo con a1 PC488c. (Cont..) Figura M. 4.19 Saai6n do Trabajo con a1 PC488C. (Cont..) 46 F i g u r a lo. 4.20 sesión de T r a b a j o con el PCOBBC. (con+..) no: nwn I ~~ ~ ~ F i g u r a iio. 4 . 2 1 sesión de T r a b a j o con e1 PC488C. 47 Capítulo 5 Conclusiones 5.1 conclusiones En este trabajo de tesis se planteó el desarrollo de una interfaz de usuario para implementar, de una manera más sencilla, un sistema de instrumentación a través del GPIB y controlado por una PC. Se expuso la estructura de la interfaz, se dio la descripción, tanto general como funcional, de los módulos que la componen, as€ como la descripción de las rutinas constitutivas de cada uno de ellos. Por Gltimo, se describió una sesión de trabajo tipica con el sistema desarrollado con las gráficas capturadas de la pantalla de la PC, lo que permite tener una visión exacta de lo que se verla en la sesión de trabajo real. De las pruebas realizadas se puede concluir que el sistema desarrollado mejora, considerablemente, el uso y el manejo de la tarjeta de interfaz así como la programación remota de los dispositivos interconectados al GPIB, aunque sin llegar al grado máximo de funcionalidad. Lo anterior dado que la rutina de recepción de datos, desde el instrumento a la PC, sólo se limita a desplegar el mensaje recibido sin realizar mayor interpretación del mismo. Esto se debe a que cada dispositivo formatea los datos de una manera particular por lo que se tendrían que desarrollar módulos especiales para cada instrumento, lo que requerir€a que al dar de alta algún instrumento el programador del sistema tuviera que diseflar una rutina espec€fica pasa la interpretación de los datos, de acuerdo al formato utilizado por el instrumento. 48 Desde el punto de vista de programación y control de los equipos conectados al sistema de instrumentación, se observa que con el sistema PC488 se tiene un acceso y una facilidad de programación mucho mayores a las ofrecidas por el sistema inicial (tarjeta de interfaz y programación en ensamblador), ya que éste Gltimo, pannitía el manejo y programación de un dispositivo o equipo de medición mediante un programa en lenguaje ensamblador dedicado. El término dedicado se refiere al hecho de que el programa en ensamblador, bajo dicho esquema, debía contener los códigos de programadon del dispositivo y realizar el manejo del protocolo de la interfaz en la secuencia requerida. Lo que implicaba que el usuario debía tener un amplio conocimiento tanto del hardware como del software asociado al sistema de interfaz PC/iEEE-488 como del equipo que deseara controlar. Con el sistema PC488 el usuario, para fines de control y programación de dispositivos, no necesita conocer el GPIB, ni el hardware de interfaz ni tampoco los códigos de operación del dispositivo; lo Gnico que necesita saber es que funciones de las que puede realizar el dispositivo a usar, son las que desea utilizar. De esta manera el sistema PC488 cumple con su objetivo primordial, de facilitar el uso del sistema de interfaz a los usuarios con conocimientos mínimos acerca de éste. Para fines de evaluación del sistema desarrollado, cabe hacer mención que en la actualidad existen en el mercado un nGmero considerable de productos que involucran hardware y software para la implementación de sistemas de instrumentación, medición y10 monitoreo. Estos sistemas van desde los más básicos, con sistemas adquisitores de datos y una programación muy orientada al hardware de adquisición; pasando por los sistemas que utilizan una interfaz estándar, que en algunos casos es el mismo GPIB, con un software limitado pero eficiente que requiere cierto grado de conocimienFo por parte del usuario, hasta llegar a los grandes sistemas que utilizan una o más interfaces estándares y que cuenta con un software muy avanzado que permite la creación de instrumentos virtuales con las facilidades de manejo que ésto implica. Los instrumentos virtuales son una herramienta de programación que le permite al usuario definir y, de hecho construir, en la pantalla de la PC una réplica de la carátula de control del instrumento que desea utilizar permitiendole asignar perillas, botones, controles que en un momento determinado pueden recibir accidn por parte del usuario, es decir por ejemplo, cambiar una perilla de una posición a otra y que dicha acción sea interpretada por el software y la traduzca a códigos de control que finalmente colocarán al instrumento en los nuevos valores fijados, reflejando las acciones del usuario en el "instrumento" virtual en la pantalla de la PC. I 49 De tal forma, comparando el sistema desarrollado con los sistemas comerciales, el sistema pC488 se situaría a un nivel intermedio. Esto debido a que el PC488 no demanda del usuario una programación directa delhardware, el límite inferior de la escala, pero no llega al nivel de instrumentos virtuales, que son el límite superior en la escala de funcionalidad de estos productos. 5 . 2 Trabajo a futuro Como trabajo a futuro queda el desarrollo de software adicional que le permita al sistema realizar una mejor interpretación de los datos recibidos, quedando como una buena alternativa la creación de librerías de instrumentos que permitan llevar a cabo la interpretación antes mencionada. Por otro lado, otra opción que elevaría el grado de funcionalidad del sistema PC488, sería el desarrollo de software enfocado a la generación de archivos de datos en formatos estándar a fin de poder utilizar la información y los datos recabados en otros paquetes de software tales como graficadores, lo que aumentaría considerablemente los beneficios otorgados por el sistema Pc488. Sólo resta decir que el trabajo a futuro a realizar en este tipo de sistemas, debe encaminarse hacia el desarrollo de instrumentos virtuales, que se perfilan como el medio óptimo de programación y control de sistemas de instrumentación, medición y monitoreo por medio de la computadora personal. 50 Bibliografía 1.2.3.- 4.- ANBIIIEEE STD 488.1-1987 IEEE Standard Digital Interface for Programmable Instrumentation. jbPD7210 General Purpose Interface Manual NEC electronics Designig the User Interface: Strategies for Effective Buman Computer Interaction Ben Shneiderman Addison-Wesley, 1987 80386/80286 Programación en Lenguaje Ensamblador William H. Muuray, Chris H. Pappas McGraw-Hill, 1987 5.- Turbo-Pascal Programmer's Borland International 6.- 7.8.- 9.- Reference Manual Turbo-Graphix ToolBox €or Turbo Pascal Programmer's Reference Manual Borland International Elegant Linkage Richard Halpern PC Tech Journal, Marzo 1987 Mapping PC Addres Space Augie Hansen PC Tech Journal, Marzo 1987 The New Peter Norton Programmer's to the IBM PC ti PSf2 Peter Norton, Richard Wilton Microsoft Press, 1988 51 Guide Apéndice Al A2 A4 A5 A6 A7 UDOulb.Uk A8 A9 A10 A l1 A12 A13 A14 F a I:- O ID n do A15 I A16 A17 VU I :- A18 A19 AZO A2 1 A2 2 A23 A2 4 RIcaupi:-D. Fa /:-I ID I S & A2 6 A2 7 A28 CSEO mooi: Om DX.N DX.AWR.MODE ow nx,a ow DXAL MOV MOV AI..)IH MOV DX.AUXY.MODE :PROGRAMA RKtilSTRO A MOV ALUH ;PROGRAMA r O K T * m R MOV 11-m ow 1,X.A.L ;PROGRAMA RE~~ISTRO MOV AI-OBiH O w D X A :DFSIUBIUTA R f t i W 7 R O PP MOV Al..mH n DX.N MOV DX.AWRF>WI ;F.%RIBE DIRFPCION MAYOR MOV 11.01H OUl OW IIX.AI. YOV AI-OmH ;m.mAnn.mA IIIRHXION om MENOR ,*.AI. MOV nx.mn.oF.sr MOV O m MOV MOV AI..ODH 1IX.N IIX;AllXY-MODE A1,XPOWER ON 1lX.N N..XMAB-LFC :tCR> MARCA FIN DECADENA om MOV om WlAY nx.AL cx.m MOV UMP üFJAY MOV AI3RUT-IFC MOV DX.AUXY.MODE A29 A30 c . CONWADOJ AL BUS FALSE% MOV IN TEST JZ TFSTTA MCU RET ox,mnR.srAi ALDX AI..TFSTBllTA FAIJEl PIDP PROC PllSH Ax m.omii AND ALWI CMP IZ ow Ax FQP ANO AI.OFH Ai.omi Ai..Wll SUB 01m ASCII AWRFS.. AND RkT POP AND R W Ax ALOFll FHDP PSOC CAU MOV CAII. uov 1111. MOV MOV CAU OR . TI1FT.,CO AI..IBP+III ASCII n.wn ALCI. BLAL m.(np+ 1. MCII N..BI. A3 1 0X.DATA-OUI' MOV om CMP IS CAU. ox.& ALJPH T*U<OI wv ALZIH üX.N Ovll Ovl TAUQI: IMP m-m rm.m CAU. wov NAIH m.AL W.TA WI OVTI: CAU. MOV om miAL WP u POP POP POP OX BP SI M POP ADDPFSS me0 IIX.AUXY.MODE ALXOOTO.SBY MOV IC7 m ENW MM M D ADD1 A32 CSEn SEWDI: PVJH Ds wsn JS BP BX Ax BP.SV SEND PUSH PUSH WSH MOV IMV =-DO FAIJEI: moc PUSH U MOV TEÍT =.DO SMD J7. pop REr DX N.DX DX.-STATI ALTECTBrn FUE1 DX MOP moc CAU MOV MOV OVI CAU MOV OW CAU MOV OW CAU MOV OVT CALL MOV OW CALL MOV OVT CALL MOV OW CALL MOV Olrr <:All- MOV om <:u MOV ow CALL MOV A3 3 OUT CAU MOV OUT CAU m.u m.w ALIBP+24I DX.M m-m MOV OUT MOV m.u OUT m.u uov ALIBP+YI DX.AUXY.MOD6 UJIsermi A34 A35 OW CAU CAU MOV MOV OW CAU MOV OUl MOV MOV OVI MOV OUl Po? Po? POP Po? Po? PPI *U~.clROL DX.N Ax Bx BP ss m A36 A3 7 m n POP m.m REC M FNsW m WDP moc CAU MOV MOV OUT m.m 0X.A-MODE ALXTCIR0L.A DX.N mcic CAU CAU m.m MOV DX.DATA.OUT &uNLLíIw Mov OUT DX.N MOV MOV DX.AUXY~MODE m-m CAU &U5l'FN m.AL OUT CAU - MOV MOV OUT COmuE: MOV CAU m - m DX.DATA m DLN MOV AIlm MOV POP POP POP POP u DX.AUXY-MODE &XrnO.SBY DX.N Bx UP s RET WDI M A38 WI: A39