• No se han encontrado resultados

Sistema de digitalización de señales eléctricas basado en la tarjeta AX5411

N/A
N/A
Protected

Academic year: 2020

Share "Sistema de digitalización de señales eléctricas basado en la tarjeta AX5411"

Copied!
101
0
0

Texto completo

(1)Facultad de Ingeniería Eléctrica. Departamento de Electroenergética.. Tesis de Grado. Título: Sistema de Digitalización de Señales Eléctricas Basado en la Tarjeta AX5411. Autor: José Alejandro López Sarmiento. E – mail: Jalopezsarmiento@yahoo.es. Tutores: M.Sc. Ing. Alejandro García Rodríguez. Ing. Juan Antonio Gutiérrez Fernández.. Consultante: Ing. Yoany Guerra Contino. Curso: 2003 – 2004..

(2) Hago constar que el presente trabajo ha sido realizado en la Universidad Central ‘‘ Marta Abreu ´´ de Las Villas como parte de la culminación de estudios de la carrera de Ingeniería Eléctrica y autorizo que sea utilizado por la Universidad para los fines que considere convenientes. La Universidad tendrá derecho a publicarlo de forma parcial o total. Este trabajo no podrá ser utilizado, publicado o presentado en eventos de ningún tipo sin la autorización de la Universidad.. ___________________________________ José Alejandro López Sarmiento. Autor.. Los abajo firmantes certificamos que el presente trabajo ha sido realizado según acuerdo de la dirección de nuestro centro y el mismo cumple con los requisitos que debe tener un trabajo de esta envergadura referido a la temática señalada.. _________________________ José Alejandro López Sarmiento. Autor.. _____________________________ Luis Alberto Hernández Lugones. Jefe del Departamento de Electroenergética de la Facultad de Ingeniería Eléctrica de la UCLV..

(3) Dios no nos hubiera dado la posibilidad de soñar, si no nos hubiera dado la oportunidad de hacer realidad nuestros sueños.. Rabindranath Tagore..

(4) Dedicatoria: U. • A mis padres, por su dedicación y su apoyo incondicional. • A mi tío Armando Sarmiento Rojas por su preocupación y su ayuda. • A toda mi familia, por su ayuda en todo momento. • A mis compañeros de estudios, por su amistad..

(5) Agradecimientos: U. • A mi tutor, M.Sc. Alejandro García Rodríguez por su ayuda y su apoyo. • Al Ing. Yoany Guerra Contino, porque sin su orientación no me hubiera sido posible hacer este trabajo. • Al Dr. Roberto Ballesteros por su valiosa ayuda. • Al Dr. Julián Luciano Cárdenas porque su ayuda también ha sido invalorable. • A mis profesores, por la formación que me dieron..

(6) TAREA TÉCNICA.. Este trabajo consiste en poner a punto la tarjeta de adquisición de datos AX5411. Esta tarjeta es una tarjeta fabricada en el año 1994 pero es compatible con una PC moderna. El principal inconveniente es que los drivers con que se compraron están hechos para el sistema operativo MS-DOS y por tanto no corren en Windows. Nuestro objetivo principal es programar los drivers adecuados para Windows 2000, XP. Además nos proponemos proponer varias aplicaciones que pueden tener tarjetas de adquisición de datos similares. Los abajo firmantes somos los responsables por este trabajo.. ___________________________ ____________________________ José Alejandro López Sarmiento. M.Sc. Alejandro García Rodríguez. Diplomante. Tutor.

(7) RESUMEN.. Con el surgimiento de la computación comenzó un proceso de automatización que ha penetrado, incluso, en nuestros hogares. Tareas que antes se hacían manualmente ahora se hacen de forma automática. Los sistemas SCADA (System of Control and Data Adquisition) son un ejemplo de ello, algunos de estos se basan en PC. Y ese es, precisamente nuestro caso. En el Centro de Investigaciones de Soldadura ha surgido la necesidad de hacer este sistema para analizar la señal del arco eléctrico de la soldadura. Pero no es solo en el CIS donde hay esta necesidad, en la Facultad de Ingeniería Mecánica también es necesaria para medir desviaciones etc, ya que usando un transductor se puede convertir la desviación en una señal de voltaje proporcional. La tarjeta es capaz de convertir esa señal analógica de voltaje es una palabra digital que luego es leída por la CPU de la PC y mostrada en un gráfico en la pantalla. La dificultad es, como ya se mencionó en la TAREA TÉCNICA que los drivers que se adquirieron junto con la tarjeta no corren en Windows, por lo que uno de nuestros objetivos es hacer los drivers correctos para Windows 2000. En el trabajo se explica cómo funciona el sistema operativo Windows 2000 y el hardware de la tarjeta para que el lector pueda lograr una buena comprensión del problema al que nos enfrentamos y de las herramientas para resolverlo. Tarjetas de adquisición de datos como la AX5411 tienen un campo de aplicación muy amplio en la industria, la investigación y la docencia..

(8) Índice: Introducción ..................................................................................................3 Capítulo 1 : Análisis bibliográfico .................................................................. 5 1.1 Estado del Arte .......................................................................................5 1.2 Trabajos previos .....................................................................................9 Capítulo 2 : Características de la tarjeta AX5411. Criterios para su programación................................................................................................12 2.1 Características generales de la AX5411 ....................................................12 2.2 Características del subsistema de conversión analógico – digital. Fundamentos de la medición digital ........................................................................................13 2.3 Programación de la AX5411 ..................................................................15 Capítulo 3 : Interacción entre el sistema operativo y la tarjeta AX5411 ...........27 3.1 Modo Kernel vs modo usuario ................................................................27 3.2 Componentes de Windows 2000 .............................................................29 3.2.1 La API Win32 .....................................................................................29 3.2.2 Servicios, funciones y rutinas ...............................................................30 3.2.3 Procesos, hilos y trabajos .....................................................................31 3.2.4 Memoria virtual ..................................................................................34 3.2.5 Objetos y handles ................................................................................35 3.2.6 El registro ...........................................................................................36 3.2.7 Vista, a grandes rasgos, de la arquitectura del sistema operativo Windows 2000 ...................................................................................................................37 3.3 Componentes del subsistema de entrada / salida ......................................40 3.4 El Administrador de Entrada / Salida (I/O Manager) ...............................42 3.5 Los Device Drivers ...............................................................................43 3.6 Estructura de un driver ..........................................................................44 3.7 El Administrador de Plug and Play ( PnP Manager ) ...............................47 3.8 El Administrador de Energía (Power Manager) .......................................50 3.9 Estructura de los datos de entrada / salida ...............................................53 3.9.1 Los ficheros objeto (file objects ) ........................................................53 3.9.2 Driver objects y device objects ............................................................56 3.9.3 Los Paquetes de Solicitud de Entrada / Salida (I/O Request Packets) .....59.

(9) 3.10 Procesamiento de la I/O .......................................................................61 3.10.1 Tipos de I/O. Sincrónica y Asincrónica .............................................61 3.10.2 Solicitud de Entrada / Salida en un driver simple (sin capas) ..............62 3.10.3 Atendiendo la interrupción ...............................................................63 3.10.4 Solicitud de I/O en drivers en capas ..................................................6 3.11 Sincronización ....................................................................................70 3.12 Conclusiones sobre el subsistema de I/O de Windows 2000 ..................72 3.13 Especificidades del sistema. Herramientas para hacer el driver ..............73 Capítulo 4 : Conceptos finales y resultados de las pruebas ............................77 4.1 Pruebas al hardware (tarjeta) .................................................................77 4.2. Comunicación. entre. el. driver. (Driax5411.sys). y. la. aplicación. (CALLAX5411.exe) .................................................................................................................78 4.3 Prueba de funcionamiento al sistema ....................................................80 Conclusiones ............................................................................................84 Recomendaciones .....................................................................................85 Referencias Bibliográficas ..........................................................................86 Bibliografía ...............................................................................................87 Anexos .....................................................................................................88.

(10) Introducción: Los sistemas SCADA han entrado en la industria cubana aún tímidamente. Sin embargo, gozan de la aceptación de los especialistas que interactúan con ellos. Sin embargo, se ha apostado demasiado por comprar estos sistemas SCADA hechos y los servicios de técnicos extranjeros para instalarlos, lo cual cuesta. Por tanto es apremiante que nuestros ingenieros y técnicos entren más en contacto con esta tecnología a fin de que sean capaces de implementar, en la medida de lo posible, estos sistemas sin recurrir a la ayuda extranjera. Nuestro trabajo pretende dar solución a una necesidad del Centro de Investigaciones de Soldadura, de la Universidad Central `` Marta Abreu ´´ de Las Villas donde es necesario medir el arco eléctrico de la soldadura en tiempo real, y analizar esta forma de onda. Para lograr esto se ha utilizado la tarjeta de adquisición de datos AX5411 conectada a una PC. Tarjetas como ésta se usan prácticamente en la totalidad del mundo. Las aplicaciones industriales van desde la medición del consumo energético hasta mediciones relacionadas con el proceso tecnológico propiamente dicho. A lo largo de este trabajo se va a describir el funcionamiento de la tarjeta y los algoritmos para su programación. También se describirá con detenimiento el sistema de entrada / salida del sistema operativo Windows 2000, puesto que es imprescindible conocerlo para poder acceder a la tarjeta conectada a la PC. Y al final se describirán las pruebas a que se sometió el sistema..

(11) Capítulo 1.. Análisis Bibliográfico..

(12) Capítulo 1: Análisis Bibliográfico. Introducción. El Centro de Estudios de Soldadura de la Facultad de Ingeniería Mecánica de la Universidad Central de Las Villas, a tono con las principales prioridades de la soldadura a nivel mundial, comienza estudios sobre la estabilidad de onda del arco eléctrico de. la soldadura que hasta ahora se han visto en un nivel práctico. insuficiente por falta de tecnologías adecuadas de sensado y digitalización del voltaje y la corriente del arco eléctrico. Este tema constituye una necesidad tanto para la docencia como para la investigación, lo cual ha sido referido en modernas publicaciones del campo de la soldadura. Nuestro análisis lo hemos dirigido en tres direcciones fundamentales: SCADA (System of control and data adquisition)(Sistema de control y adquisición de datos) Investigación sobre el sistema operativo Windows 2000 para poder hacer el driver necesario para la tarjeta AX5411. Estudio de las posibles aplicaciones de tarjetas similares. También hemos hecho una revisión de los trabajos anteriores. En los siguientes epígrafes vamos a abordar el estado del arte.. 1.1. Estado del Arte.. En el mundo hay muchas empresas que se dedican a hacer y comercializar tarjetas como la AX5411. El mercado es inmenso porque, como ya he dicho anteriormente, esta tecnología está presente en casi la totalidad del mundo por su importancia para la industria y la investigación. Una de las empresas punteras en esto es AXIOM Tecnologies Co , cuyos productos están presentes en buena parte del mundo. Basta con visitar su sitio1 para darse cuenta de la variedad de productos que oferta. AXIOM vende tarjetas de adquisición de datos para distintos buses de una PC (PCI, ISA, USB etc). Cada tarjeta es vendida con su driver para Windows 98, Millenium, 2000, XP, 2003 Server etc, y una DLL que es la que llama al driver (más adelante veremos cómo se hace eso), de modo que cuando se compra una sólo hay que hacer una aplicación en cualquier superlenguaje (Delphi, C++, Visual Basic etc) que llame a las funciones de. 1. www.axiomtec.com.

(13) esa DLL. Es sencillo trabajar con ellas. También se vende junto con la tarjeta un manual de usuario que describe el hardware de la tarjeta en cuestión y las funciones que hay que usar para controlarla.[3] Si usted visita el sitio de esta empresa verá que es muy variada su oferta. Normalmente estas tarjetas tienen varios bloques, conversión analógico – digital, digital – analógico, varias entradas y salidas digitales de distintos tamaños (en bits), temporización etc. A veces es posible generar formas de onda con ellas etc. Alguna de estas tarjetas tienen una CPU independiente (autónoma respecto a la de la motherboard de la PC) que realiza funciones de control que el usuario no puede cambiar. De aquí el lector puede ver que también se pueden usar estas tarjetas para el control de procesos. Otra forma es usar autómatas programables los cuales AXIOM también oferta. La firma AXIOM no es la única, como ya se ha dicho, hay muchas empresas en el mundo que se dedican a este campo. Para tener una idea más completa de la magnitud de el uso y las aplicaciones de los sistemas de medición digitales lo más indicado es ver algunas patentes de sistemas análogos; ya que el sistema que proponemos es, a fin de cuentas, un sistema de medición digital. La Oficina de Patentes de los Estados Unidos tiene un sitio en Internet donde se pueden ver las patentes desde el siglo XVIII hasta nuestros días: visitándolo podemos encontrar muchos ejemplos de patentes de sistemas de medición digital de información (o sea de señales de distinta naturaleza). A continuación de estas líneas usted podrá ver algunos ejemplos: Patente: US 5,404,317 Fecha: 4 de abril de 1995. Título : Dispositivo de medición digital. Inventor: Song; Jang – Shii y Tsai, David. Se trata de un dispositivo de digital para medir señales eléctricas conectado a una PC. Tiene 4 canales para medir que se multiplexan. Una tarjeta en la que hay una CPU independiente controla el proceso de multiplexado, conversión y trasmisión a la CPU de la computadora personal. [1] Patente: US 5,657,237 Fecha: 12 de agosto de 1997. Título: Instrumento y método de medición de señales eléctricas periódicas. Inventor: Mazzoni, Herminio. Asignada a: Electrex S.r.l.

(14) El método involucra el uso de un instrumento con, al menos, un amplificador operacional para sensar el valor del voltaje analógico, y luego la corriente relativa ; introduciendo un retardo conocido y aplicando un voltaje de referencia a la entrada del amplificador operacional para lograr que las señales de entrada sean positivas (semiperíodo positivo). Entonces los valores analógicos son convertidos en digitales y los valores de corriente son corregidos restándoles el voltaje de desplazamiento del operacional. El instrumento incluye un convertidor analógico – digital como parte de una unidad de procesamiento de datos, un sample and hold, memoria, con un registro de desplazamiento, y una unidad programable de control. El dispositivo es capaz de medir tanto potencia activa como potencia reactiva.[1] Patente: US 5,736,848 Fecha: 7 de abril de 1998. Título: Sistema de medición analógico – digital y calibración para energía eléctrica. Inventor: De Vries; Jacob , Peter; Jan, Cermeno; Raul , Hodel; Peter. Asignada a: Landis & Gyr Tecnology Innovation AG. El sistema mide la energía de salida de una o varias fuentes eléctricas, haciendo primero una medición analógica de potencia y luego convirtiendo en resultado a una palabra digital. El convertidor A – D incluye un modulador sigma – delta en serie con un filtro digital. La palabra digital resultante luego es introducida a un cuantificador digital a través de una interfase serie. Un valor programable de calibración es introducido al cuantificador desde una computadora. [1] Patente: US 6,243,652 Fecha: 5 de junio de 2001. Título: Sistema para la medición digital del voltaje pico y RMS en un sistema de alto voltaje. Inventor: Fawcett; Timothy J. (Runcorn, UK) , Fore; Neil S. (Hale, UK) Asignada: Hubbell Incorporated. El sistema de medición de voltaje emplea un detector de valor máximo para la medición del voltaje pico. También cuenta con memoria en la cual se almacenan las muestras de voltaje tomadas a intervalos predeterminados. Estos valores almacenados en la memoria son usados luego para calcular el voltaje RMS.[1] Patente US 6,195,617 Fecha: 27 de febrero de 2001.

(15) Título: Osciloscopio para mediciones simultáneas y muestra en un eje de tiempo común. Inventor: Miller; Martín T. (Geneva, CH) Asignada: LeCroy S.A. (CH) Un método para presentar información que primariamente es leída y luego almacenada en memoria para ser mostrada en pantalla luego. Las señales son mostradas como funciones del tiempo en un eje de tiempo común. [1,2]. El cliente. Como ya es conocido los sistemas SCADA están implementados en la mayoría de las industrias y centros docentes y de investigación, así como en la vida cotidiana. Cualquier industria que se respete necesita sistemas SCADA para múltiples cosas, por ejemplo: en una industria química muchas veces es necesario conocer, en tiempo real, la temperatura, concentración, presión, etc, dentro de tanques en los que ocurre un proceso dado. Todas estas variables se miden convirtiéndolas primero en voltaje que es leído por un sistema de digitalización de señales. El sistema de digitalización de señales puede ser la tarjeta AX5411 o una similar. En el C.A.I‘‘ Uruguay ’’. 2. podemos constatar el funcionamiento de un sistema SCADA que se usa para controlar y medir los parámetros necesarios (potencia activa y reactiva y la dirección de su flujo, voltaje, fase, frecuencia tanto en el SEN3 como en la planta del Central) en la planta. Este sistema consta de un autómata que está conectado a una PC en el despacho de carga de la planta. Hay uno similar para controlar las calderas. En los dos casos el autómata usa una tarjeta de adquisición de datos para medir las variables necesarias. Pueden medirse variables de naturaleza mecánica como desplazamientos, torsiones etc. En general pueden medirse variables de cualquier naturaleza siempre y cuando se cuente con transductores que conviertan la señal a medir en señales de voltaje proporcionales. La tarjeta AX5411 también tiene entradas y salidas digitales, que pueden ser de 8 o de 16 bits. De la misma forma, cualquier sistema de control las tiene ya que es la forma de adquirir datos que han sido convertidos por otro sistema, o para. 2. El CAI ‘‘ Uruguay ’’ está en el municipio de Jatibonico, provincia Sancti Spíritus, Cuba. Está considerado un coloso de la industria azucarera cubana. 3 Sistema Electroenergético Nacional..

(16) comunicarse con otros sistemas inteligentes. En el mundo se puede observar la tendencia a que las industrias estén automatizadas ‘‘por partes’’; o sea, que cada parte del proceso productivo tenga su controlador, que puede ser un PLC4, o una computadora que a su vez le envía datos y recibe órdenes de un controlador central. De ahí la importancia de estas entradas y salidas digitales. En general los sistemas SCADA han inundado la vida cotidiana: están en casi todas partes aunque las personas no los vean. Quizás algunas personas piensen que esta es una tecnología exclusiva del primer mundo, pero están equivocadas, no es un lujo sino una imperiosa necesidad incluso en industrias de países del tercer mundo. Dada la tendencia mundial y las necesidades de nuestra industria, Cuba debe seguir el camino que ha iniciado para que nuestros productos sean competitivos en el mercado mundial.. 1.2. Trabajos y aplicaciones previas.. No se pueden dejar de mencionar los trabajos previos, que son una cantidad importante, ya que el campo de aplicación es inmenso. Por razones de tiempo y espacio no se pueden enumerar todos por lo que se han escogido algunos de los más representativos. La tarjeta AX5411, como ya se ha dicho, es relativamente antigua y, sin embargo, navegando en Internet se descubre que aún se usa. Existe un trabajo titulado ‘‘ Estudio y Diseño de Desarrollo de una Aplicación de Tiempo Real y de un Simulador para su Comprobación: Péndulo Invertido ’’ realizado por el señor Rubén Migueles García en el cual su autor propone un sistema análogo al nuestro, desde el punto de vista de que usa la misma tarjeta conectada a una PC, pero con la diferencia de que él no desarrolla los drivers para Windows 2000 sino para Linux y la señal a medir no es de naturaleza eléctrica sino mecánica: se trata de medir posición. En este trabajo el autor explica (en los primeros capítulos y sin muchos detalles, lo cual es lógico ya que ello requeriría todo un libro) las características de sistemas operativos más adecuados para tiempo real como MaRTE O.S. En este trabajo el autor tropezó con la misma dificultad que en este: los drivers no le fueron útiles.. 4. Progamable Logic Controller ..

(17) También en la Universidad de Camagüey se hizo una aplicación con la tarjeta AX5411. En este caso se trata de un sistema aplicable a la industria azucarera ya que se usa la tarjeta para realizar mediciones propias del proceso tecnológico. Este trabajo se titula: ‘‘ Instalación Experimental Versátil para la Gasificación y Pirólisis del Bagazo de Caña en lechos fluidizados con fines energéticos’’. La tarjeta AX5411 ha encontrado usos también en investigaciones científicas. En Australia se realizó una investigación en la que se utilizó la AX5411 para digitalizar las señales de la presión arterial, la frecuencia cardiaca y otros parámetros del funcionamiento del sistema cardiovascular de varios pacientes y voluntarios. Aunque solo han sido mencionados trabajos en los que se utiliza la tarjeta AX5411 sería un error pensar que solo ésta se usa. En la actualidad existen tarjetas más modernas, con drivers hechos para Windows 2000, XP etc que son usadas ampliamente..

(18) 5. Capitulo 2:. Características de la Tarjeta AX5411. Criterios para su programación..

(19) Capítulo 2: Características de la Tarjeta AX5411. Criterios para su programación. Introducción: El sistema SCADA que proponemos se basa en la tarjeta AX5411. Esta es una tarjeta de adquisición de datos que, a pesar de ser relativamente antigua puede ser muy útil en la industria, la investigación y la docencia. No se debe perder de vista que en la actualidad existen otras tarjetas más modernas y más adaptadas a las PCs modernas en cuanto a hardware y a los sistemas operativos Windows. No quiere decir esto que hay que desecharla, no, se le puede sacar provecho. En los siguientes capítulos se describirá con más detalle como usarla en las condiciones actuales.. 2.1 Características generales de la tarjeta AX5411.. La tarjeta Ax5411 es una tarjeta de adquisición de datos diseñada para conectarse al bus ISA de una PC. Esta es una de sus características que limitan su uso ya que las PCs más modernas, por lo general, no tienen bus ISA. Los drivers que se adquirieron junto con la tarjeta no funcionan en Windows, por lo que ha sido necesario hacer el driver que es capaz de manejar la tarjeta en el sistema operativo Windows 2000. En este caso no había más opción que montarse en el sistema operativo, ya que este es amo y señor de la PC. Pero en este capítulo vamos a postergar adentrarnos en Windows 2000 y vamos a concentrarnos en el hardware que tenemos que controlar sin perder de vista con qué fin nos proponemos hacer esto. Lo primero que hay que conocer es dónde conectar la tarjeta. Bueno eso es lo más simple: la tarjeta AX5411 es compatible con el bus ISA y es ahí justamente donde hay que conectarla. La tarjeta ocupará 16 direcciones de I/O consecutivas en el espacio de direcciones de la PC. La tarjeta tiene un switch que le permite al usuario seleccionar la dirección base (desde x200 hasta x3F0), de esta manera se puede evitar posibles conflictos con otros dispositivos periféricos. La tarjeta consta de tres subsistemas, el subsistema de conversión analógico – digital, el de entrada y salida digital y el de conversión digital – analógico..

(20) 2.2 Características del subsistema de conversión analógico – digital y fundamentos de la medición digital.. El subsistema de conversión A/D merece un epígrafe aparte ya que esta es la aplicación más fuerte de la tarjeta. Para comenzar se dará una idea general de los fundamentos de la medición digital de información. Ante todo es necesario aclarar que lo que se mide es voltaje. Para medir corriente, temperatura, presión u otra señal de cualquier otra naturaleza primero hay que convertirla en una señal de voltaje proporcional.. Figura2.1 Estructura básica de un sistema de medición digital, basado en una PC.. Cualquier sistema de medición digital tiene tres componentes que no pueden faltar: el convertidor analógico – digital, el sample and hold, y el multiplexor. El multiplexor puede ser digital o analógico, o sea, multiplexar señales analógicas o palabras digitales. En el caso de la AX5411 lo que se multiplexa son las señales de entrada analógicas. También los sistemas de medición digitales pueden tener otro elemento: un amplificador para acomodar la señal de entrada cuando es muy pequeña. La AX5411 tiene uno de ganancia programable, lo que permite seleccionar el rengo de medición por la fórmula: Rango =. Máxima escala Ganancia. [3].

(21) donde la ganancia puede ser 1, 2, 4, 8 ó 16. La ganancia se selecciona por programación. 6. Figura 2.2. Subsistema de conversión analógico – digital de la tarjeta AX5411.. El convertidor A / D es el corazón de este sistema, es que nos permite convertir una señal analógica en una palabra digital proporcional. El convertidor A / D divide el rango de la señal analógica de entrada en tantos escalones como combinaciones pueda tener la palabra digital de salida. Por ejemplo, el de la tarjeta es de 12 bits por tanto hay 4096 escalones entonces, si el voltaje máximo de entrada es 5V, 5V es 111111111111 en binario (4095 en decimal), 000000000001 es 0.001221V por tanto si obtiene una lectura de 4095 no es que el sistema no es fiable sino que usted tiene que hacer una regla de tres para obtener el valor real. El sample and hold es el circuito de muestreo y retención que retiene el valor de la señal analógica de entrada mientras el convertidor A / D la convierte. Esto nos. 6. Cuando se ha seleccionado +/- 5V los rangos disponibles son: +/- 5V, +/- 2.5 V, +/- 1.25 V, +/- 0.625 V y +/- 0.3125 V. Y cuando se ha seleccionado +/- 10V los rangos son: +/- 10V, +/- 5V, +/- 2.5V, +/- 1.25 V y +/- 0.625V..

(22) permite muestrear una señal de voltaje alterno y así poder representar la señal en un gráfico. Es muy importante señalar que la frecuencia de muestreo siempre tiene que ser mayor que la de la señal que se está midiendo.. 2.3 Programación de la AX5411.. La tarjeta tiene 16 registros (para la motherboard son direcciones de I/O consecutivas) que si los programamos podemos controlar la tarjeta y realizar la tarea que nos proponemos. Vamos a ver cómo son esos registros y qué hacen. A partir de aquí no voy a poner la dirección de los registros, sólo el desplazamiento con respecto a la dirección base, por ejemplo, y asumiendo que la dirección base sea 300h, cuando digo : +1 me refiero al registro 301h. +0 : D3. D2. D1. D0. C3. C2. C1. C0. Bits 0 – 3 : C0 – C3 . Se usan para especificar uno de los canales de conversión A – D como el canal de entrada para una conversión. Bits 4 – 7 : D0 – D3 . Estos bits son la parte menos significativa del dato.. +1: D11. D10. D9. 7. 6. 5. D8 4. D7. D6 3. D5. D4. 2. 1. LC2. LC1. 0. Este registro es la parte más significativa del dato.. +2 : UC3. UC2. 7. 6. UC1 5. UC0. LC3. 4. 3. bits 7 – 4 : UC3 – UC0 . Canal final. bits 3 – 0 : LC3 – LC0 . Canal de inicio.. 2. 1. LC0 0.

(23) Este es un registro de lectura / escritura que controla los canales de inicio y final por donde se va a leer las señales analógicas. El nibble alto define el canal final y el bajo el canal de inicio. Aproximadamente 4 µs después de que el convertidor analógico – digital comienza la conversión, mientras el sample and hold está sosteniendo el canal anterior,. el canal activo del multiplexor se incrementa y se prepara para la. conversión del próximo canal. Cuando se termina la conversión del último canal el ciclo comienza de nuevo con el canal de inicio. Para realizar conversiones en un solo canal se pone en el canal de inicio y el final el mismo número, correspondiente al canal deseado.. +3 : IP7. IP6. 7. IP5. 6. 5. IP4. IP3 4. 3. IP2. IP1. 2. IP0 1. 0. Entrada digital (sólo lectura).. +8 : EOC 7. X. X 6. INTP 5. 4. NC3 3. NC2. NC1. 2. NC0. 1. 0. Registro de estado. Bits 0 – 3 : NC0 – NC3 : Este es el número del canal en el que se va a hacer la próxima conversión si EOC = 0. El canal cambia poco tiempo después de que EOC pasa a nivel alto y cuando EOC = 1 es indeterminado. Esto es muy útil porque brinda información sobre la próxima conversión. Bit 4. INTP. Este bit se refiere a la señal de interrupción. Cuando la interrupción está deshabilitada INTP = 0. Después de la generación de una interrupción INTP = 1 y permanece ahí hasta un reset o hasta que se escriba en el registro +8 limpiando así la interrupción. Por eso la subrutina de atención a la interrupción debe tener esto en cuanta, limpiando la interrupción para que después pueda producirse de nuevo. Bits 5 – 6 . X significa no importa. Bit 7 EOC. Indica el fin de una conversión. EOC = 0 significa que la conversión ha terminado y EOC = 1 que la conversión aún está en proceso y no hay un dato válido en el buffer. El comienzo de una conversión pondrá EOC a 1..

(24) +9 : INTE. I2. I1. I0. TRG. DMA. E. E. T1. T0. Bits 0 – 1 T1 y T0. Estos bits controlan la fuente de inicio de los pulsos de arrancada para el convertidor analógico – digital.. T1. T0. Acción. 0. X. Arrancada. sólo. por. software. 1. 0. Arrancada. por. pulso. externo (EXTRG). 1. 1. Arrancada por pulso del temporizador de la tarjeta (8254).. Tabla 2.1 Modos de arranque del sistema de conversión A – D de la tarjeta AX5411. Bit 2 DMAE. Habilita el acceso directo a memoria (DMA). Cuando DMAE = 1 está habilitado y cuando DMAE = 0 está deshabilitado. Con este registro solamente se habilita en la tarjeta, es responsabilidad del usuario programar el acceso directo a memoria como tal. Bit 3 TRGE. Pulso externo (EXTRG) y TRGE están ligados.. TRGE. EXTRG. Temporizador. 0. 0. Habilitado.. 0. 1. Habilitado.. 1. 0. Deshabilitado.. 1. 1. Habilitado.. Tabla 2.2 Relacion entre el bit TRGE y la entrada EXTRG y su efecto en el temporizador interno de la tarjeta AX5411..

(25) Bits 4 – 6 . I0 – I2. Seleccionan el nivel de interrupción deseado para procesar la interrupción. I2. I1. I0. Nivel. de. interrupción. 0. 0. 0. Inválido.. 0. 0. 1. Inválido.. 0. 1. 0. Nivel 2.. 0. 1. 1. Nivel 3.. 1. 0. 0. Nivel 4.. 1. 0. 1. Nivel 5.. 1. 1. 0. Nivel 6.. 1. 1. 1. Nivel 7.. Tabla 2.3 Niveles de interrupción. Bit 7. INTE. Este bit habilita o deshabilita la interrupción. Cuando INTE = 0, está deshabilitada, cuando INTE = 1 está habilitada. Si INTE = 1 y DMAE = 0 se genera una interrupción al terminar una conversión A / D y hay un dato válido en el buffer. Si DMAE = 1 y INTE = 1 la interrupción se genera cuando ha terminado una transferencia de DMA.. +10: DI7. DI6. DI5. DI4. DI3. 7. 6. 5. 4. 3. DI2. DI1. DI0. 2. 1. 0. DI10. DI9. DI8. 1. 0. Byte bajo de la entrada digital (sólo lectura).. +11: DI15 7. DI14 6. DI13 5. DI12 4. DI11 3. Byte alto de la entrada digital (sólo lectura).. 2.

(26) +1:. X. X. X. 7. 6. X. R3. 5. 4. R2 3. R1 2. R0. 1. 0. Bits 7 – 4 : No importa. Bits 0 – 3 : Ganancia del amplificador. R3. R2. R1. R0. Ganancia. 0. 0. 0. 0. 1. 0. 0. 0. 1. 2. 0. 0. 1. 0. 4. 0. 0. 1. 1. 8. 0. 1. 0. 0. 16. Cualquier otro valor es inválido. Tabla 2.4 Ganancias programables del amplificador de la tarjeta AX5411.. +3: OP7. OP6. OP5. 7. 6. 5. OP4. OP3. 4. OP2. 3. OP1. OP0. 1. 0. 2. Salida digital (sólo escritura).. +4: B3. B2 7. B1. 6. BO 5. X. X. 4. 3. X. X. 2. 1. 0. B6. B5. B4. Byte menos significativo.. +5: B11 7. B10 6. B9 5. B8 4. B7 3. +4 y +5 son registros del canal de conversión D / A 0. 2. 1. 0.

(27) +6: B3. B2 7. B1. BO. 6. 5. X. X. 4. 3. X. X. 2. 1. 0. B6. B5. B4. Byte menos significativo. +7: B11 7. B10 6. B9. B8. 5. B7. 4. 3. 2. 1. 0. Byte más significativo. +6 y +7 son los registros del canal de conversión D / A 1 Los registros de los canales de conversión digital – analógico son de sólo escritura, primero debe programarse el registro del byte menos significativo y luego el más significativo. Hasta que no se ha escrito en el byte más significativo no se inicia la conversión.. +8: Escribiendo en +8 se limpia la interrupción INTP y así se puede asegurar que vuelva a producirse después. +10: DO7. DO6. 7. 6. DO5 5. DO4. DO3. 4. DO2. 3. 2. DO11. DO10. DO1 1. DO0 0. Salida digital (byte menos significativo). +11: DO15. DO14. DO13. DO12. 7. 6. 5. 4. 3. 2. DO9. DO8. 1. 0. Salida digital (byte más significativo). Los registros +10 y +11 son los registros de la salida digital. Como el lector seguramente se habrá dado cuenta hay salidas y entradas digitales de 16 y de 8 bits. La tarjeta AX5411 puede contar tiempo también. Por otra parte había dicho que una de las formas de mandar a convertir al convertidor A / D es por el temporizador interno de la tarjeta, Pues para esto se utiliza el contador – temporizador 8254 de Intel. El 8254 consta de tres contadores, un registro de canal de datos, una lógica de control y un registro de palabra de control. Los contadores 1 y 2 están conectados en cascada y son los que operan como fuente de pulso para iniciar la conversión. La.

(28) ventaja que nos ofrece esta conexión en cascada es que de esa forma se puede variar la frecuencia de muestreo del sistema de conversión A – D variando las palabras de cuenta convenientemente. La fuente de reloj del contador 1 es una señal de frecuencia seleccionable (1MHz ó 10MHz). El contador 0 puede usarlo el usuario para aplicaciones especiales, por ejemplo para contar el tiempo. Antes de comenzar a programar el 8254 hay que poner a 1 los bits 1 y 0 del registro +9. Estos bits significan los siguiente: TRGE. Cuando está a 1 habilita el temporizador, en 0 lo deshabilita.. CLKE. Cuando es 1 conecta el contador 0 a una fuente interna de 100kHz, si es 0 lo conecta a una fuente externa.. Tabla 2.5 Funcion de lis bits TRGE y CLKE en la programación del contador – temporizador 8254 en la tarjeta AX5411. Hay cuatro registros que hay que programar para usar el 8254 de la tarjeta, tres registros de los contadores y uno de control. La siguiente tabla muestra las direcciones de los registros que hay que programar:. Dirección. Registro. Función. +12. Contador 0. lectura / escritura. +13. Contador 1. lectura / escritura. +14. Contador 2. lectura / escritura. +15. Registro de palabra de control. Tabla 2.6 Direcciones de los contadores del 8254 en la tarjeta AX5411. Los registros de lectura / escritura se usan para escribir la cuenta de cada contador y el de la palabra de control para colocar la palabra de control antes de programar la cuenta de cada contador individual. El siguiente registro es el de la palabra de control. +15: SC1. SC0. 7. 6. RW1 5. RW0 4. M2 3. M1. M0 2. BCD 1. 0.

(29) Los bits 7 – 6 : SC1 y SC0 se usan para seleccionar a qué contador se le envía la palabra de control o para enviar un comando read – back. La tabla muestra el significado de esos bits. SC1. SC0. Contador. 0. 0. Selecciona el contador 0. 0. 1. Selecciona el contador 1. 1. 0. Selecciona el contador 2. 1. 1. Comando read – back.. Tabla 2.7 Selección de los contadores en la palabra de control. Los bits RW1 y RW0 seleccionan el tipo de operación: RW1. RW0. Tipo. 0. 0. Comando counter – match. 0. 1. Leer. /. escribir. solo. byte. menos. significativo. 1. 0. Leer / escribir sólo byte más significativo.. 1. 1. Comando read – back.. Tabla 2.8 Selección del tipo de operación. Bits M2, M1 y M0: se usan para elegir el modo de trabajo de cada contador. M2. M1. M0. Modo. 0. 0. 0. Modo 0. 0. 0. 1. Modo 1. X. 1. 0. Modo 2. X. 1. 1. Modo 3. 1. 0. 0. Modo 4. 1. 0. 1. Modo 5. Tabla 2.9 Selección del modo de trabajo del contador. Bit 0: BCD: cuando está a 0 los contadores cuentan en binario (16 bits), si es 1 cuentan en BCD. El comando counter – latch , al igual que la palabra de control se escribe en la palabra de control, también los bits SC0 y SC1 seleccionan uno de los tres contadores, pero los bits 4 y 5 se diferencian de los de la palabra de control. Cuando se envía un comando counter – latch a un contador el latch del contador se carga con el valor de la cuenta en el momento en que se recibe. Esto permite leer el contenido.

(30) de los contadores `` al vuelo ´´ sin afectar el progreso de la cuenta. Si un contador es puesto en latch, y antes de ser leído se le envía un nuevo comando el último es ignorado hasta que sea leído. Con cualquier método, la cuenta debe leerse de acuerso al formato programado específicamente, para cada contador, esto es, si el contador está programado para cuentas de dos bytes, deben realizarse dos operaciones de lectura. El comando read – back permite comprobar el valor de cuenta, el modo programado y los estados de la señal OUT y la bandera de cuenta cero del contador seleccionado. Al igual que una palabra de control o el comando counter – latch, se escribe en el registro de control. Se distingue de los otros comandos por los bits 6 y 7 que deben ponerse a 1. Para leer la cuenta pueden seleccionarse uno, dos, o los tres contadores poniendo sus bits correspondientes a 1. De esa forma, el comando puede usarse para poner el latch los registros de los múltiples contadores deseados. Así pues, un solo comando es equivalente a varios comandos counter – latch. La cuenta de cada uno de esos contadores puestos en latch se mantiene hasta que es leída. Un contador es sacado de latch automáticamente cuando es leído por la CPU, pero el resto permanecen en latch hasta que son leídos. El formato del comando read – back. 1. 1. 7. 6. COU. STAT. NT. US. 5. 4. CNT2. 3. CNT1. 2. CNT0. 1. 0. 0. COUNT: Ver conteo del contador seleccionado. STATUS: Ver estado del contador seleccionado. CNT2: Selecciona el contador 2. CNT1: Selecciona el contador 1. CNT0: Selecciona el contador 0. Hasta ahora sólo ha mencionado los modos de trabajo de los contadores del 8254. Pero es imprescindible conocerlos para poder programar el 8254 y por tanto a la tarjeta. 1.. Modo 0: en este modo se puede utilizar al contador seleccionado como contador de eventos. Después de escribir la palabra de control, la señal de salida (OUT) se pone a 0 y permanece así hasta que el contador llegue a 0. Entonces sube a 1 y permanece alto hasta que se escriba una nueva cuenta o un nuevo modo 0 en el contador. Si la entrada GATE se pone a 0 se deshabilita la cuenta..

(31) 2.. Modo 1: en este modo la señal de salida OUT pasa a nivel alto despés de escribir la palabra de control, pasando a nivel bajo en el pulso de reloj siguiente a un trigger. La señal OUT permanece baja hasta que el contador llegue a cero, entonces subirá a 1 y permanecerá añta hasta que se produzca un nuevo disparo.. 3.. Modo 2: este modo funciona como un contador divisor por N. La salida OUT pasará a nivel alto después de de escribir la palabra de control. Cuando la cuenta inicial se ha decrementado hasta 1, OUT pasa a nivel 0 durante un pulso de reloj. Después OUT vuelve a nivel 1 de nuevo, el contador recarga la cuenta inicial y se repite el proceso. Este modo es periódico; es decir, se repite la misma secuencia indefinidamente. Para una cuenta inicial de N, la secuencia se repite cada N ciclos de reloj.. 4.. Modo 3: modo de onda cuadrada. Es usado típicamente para generar ondas cuadradas. Es similar al modo 2 excepto que el ciclo está dividido en dos partes iguales, una a nivel 0 y la otra a nivel 1. La salida OUT pasa a nivel alto después de escribir la palabra de control. Cuando termina la mitad de la cuenta inicial, OUT baja durante lo que queda de cuenta. Este modo es periódico, se repite indefinidamente. Una cuenta inicial de N da como resultado una onda cuadrada con un período de N ciclos CLK. Si la cuenta inicial es par, la salida OUT estará N/2 pulsos 0 y N/2 pulsos en 1. Para cuentas impares, OUT sube a 1 durante (N + 1)/2 cuentas y es cero durante (N – 1)/2. El proceso se repite indefinidamente.. 5.. Modo 4: En este modo la salida OUT pasará a nivel alto después de escribir la palabra de control. Cuando el valor de la cuenta inicial termina, OUT pasará a nivel 0 durante un pulso de CLK, después del cual volverá a nivel 1. La secuencia de cuentas disparada por la escritura de la cuenta inicial.. 6.. Modo 5: la salida OUT pasará a nivel alto después de escribir la palabra de control. La cuenta es disparada por flanco de subida de la señal de entrada GATE. Cuando la cuenta inicial ha terminado, OUT pasa a nivel 0 durante un pulso de CLK y después vuelve a 1. Después de escribir una palabra de control y un valor de cuenta inicial, el contador no se cargará hasta que se produzca el primer pulso de CLK. Este primer pulso de CLK no decrementa el valor de la cuenta inicial..

(32) La secuencia de programación es sencilla. Primero se escribe la palabra de control para cada contador y después la cuenta inicial. Sea cual sea la operación que se vaya a realizar debe hacerse de acuerdo a un algoritmo específico. Si se van a realizar lecturas de una señal analógica hay que seleccionar programar primero la ganancia y los canales, luego la fuente de arrancada del convertidor A / D; si se va a arrancar por software hay que dar la orden `` manualmente ´´ si es por pulso del temporizador hay que programar al 8254 y si es por pulso externo no se hace nada, sólo dejar que el hardware haga su trabajo. En este capítulo sólo se ha tratado la programación de la tarjeta, el algoritmo siempre es el mismo sea cual sea la PC que se va a utilizar o el sistema operativo que tenga instalado. Lo que varía es la manera de llegar hasta ella, que está en dependencia del sistema operativo. En nuestro caso se trata de Microsoft Windows 2000; todo lo relativo a la manera de acceder a la tarjeta en este sistema será tratado en el capítulo siguiente..

(33) Capítulo 3.. Interacción entre el sistema operativo y la tarjeta AX5411..

(34) Capitulo 3: Interacción entre el sistema operativo y la tarjeta AX5411. Los periféricos que se conectan a la motherboard de una PC son vistos por ella como direcciones de entrada / salida o como direcciones de memoria. Las tarjetas como la AX5411 y las tarjetas de red, video etc. son ejemplos de esto. Los sistemas operativos atienden a los distintos periféricos de distintas maneras, en el caso que nos ocupa, Windows 2000, tiene todo un subsistema de entrada / salida, que va a ser descrito en este capitulo. A diferencia de lo que popularmente se cree los sistemas operativos no son programas monolíticos sino que están compuestos de varios subsistemas (cada uno de ellos formados, a su vez, de todo un conjunto de programas, subrutinas, DLLs, drives, etc.), entre ellos el de I/O que es el que tenemos que conocer mejor para la tarea especifica que nos ocupa. El subsistema de I/O esta compuesto de varios componentes que no pueden ignorarse para lograr lo que nos proponemos sino que hay que aprender a usarlos y entrar en la cadena insertando en ella el eslabón que Windows 2000 nos permite programar. En este capitulo se van a definir los conceptos fundamentales que hay que conocer del sistema operativo y se van a explicar la tarea especifica de cada uno de los componentes del subsistema de I/O y del sistema operativo en general, finalmente se va a describir como funciona todo el subsistema para que el lector pueda formarse una idea completa de la manera de confeccionar los programas para controlar el hardware que se conecta en los distintos puertos o buses de una PC.. 3.1 Modo Kernel vs. Modo Usuario.. ¿Qué es esto de modo Kernel y modo Usuario? ¿Qué tiene que ver esto con este asunto? Estas son preguntas que, seguramente, están surgiendo ahora en las mentes del lector. La mejor manera de responderlas es hacerlo con un ejemplo. Abra el menú inicio en su barra de tareas y mire en su submenú Programas y vera los programas que usted ha instalado en su PC. También mire a la derecha de la barra de tarea y verá. unos pequeños iconos que representan el control de volumen, quizás al. Winamp etc. Todos ellos son aplicaciones, el Microsoft Word, Power Point, Excel etc. Las aplicaciones corren en modo usuario. Ahora escriba algo en el Word, unas pocas letras solamente y salve el documento. Se le ha abierto el cuadro de salvar,.

(35) indíquele cualquier dirección y oprima el botón Salvar, ha salvado su documento y si va a la dirección que le ha indicado vera el icono del Word con el nombre con que usted lo salvó. Salvar significa que su documento ha sido guardado en el disco duro de su PC, o en un disco de 3 ½. ¿Alguna vez se ha preguntado como lo hizo? Pues simplemente el Word ha llamado un driver que se ha encargado de salvar su documento, los drivers corren en modo Kernel. Y… ¿por qué no puede en Word hacerlo directamente? Porque Word no puede salvar nada directamente, ni ninguna otra aplicación. Todas tienen que llamar al driver correspondiente. Las aplicaciones corren en el llamado anillo 3 de Windows, que es el de menos privilegio; desde el anillo 3 no se puede acceder a los puertos de la PC, no se puede acceder al hardware en general, de modo que haciendo una aplicación en cualquier lenguaje de programación (Delphi, C++, cualquiera) no podemos mandarle una instrucción de salida o de entrada a los puertos porque el producto final será una aplicación y desde ahí el sistema operativo no nos va a permitir esa operación. En cambio los device drivers o manipuladores de dispositivos corren en el llamado anillo 0 de Windows, que es el de mayor nivel de privilegio y desde el cual sí se puede tener acceso al hardware. Incluso, para que el lector tenga una idea de hasta donde llega esto le diré que más o menos la mitad de la RAM de su PC la usa en sistema para guardar los datos que necesita y a ella las aplicaciones no pueden acceder, es una porción de la RAM de modo Kernel, lo que usted escribe en el Word antes de salvar no se almacena allí. Ahora bien, se había dicho que todas las aplicaciones tienen que llamar al driver correspondiente pero esa llamada no es directa, o sea la aplicación no puede llamar directamente al driver sino que la llamada tiene que pasar a través de todo el subsistema de I/O, dentro del subsistema hay un programa llamado Administrador de I/O (I/O manager) que es el encargado de recibir la llamada, determinar a que driver se esta llamando y enviarle la llamada en forma de IRP. ¿Qué es una IRP? IRP son las siglas en ingles de Paquete de Petición de Entrada/Salida (I/O Request Packet) y es un tipo de dato que crea el I/O manager. El lector podrá encontrar más detalles en las páginas siguientes..

(36) 3.2 Componentes de Windows 2000.. Es de vital importancia entender los conceptos que se van a manejar a continuación para todo aquel que desee adentrarse en el mundo de la programación de drivers. Ya se explicó que es modo Kernel y qué modo usuario, ese era el primer paso ahora vamos a seguir con mostrar a grandes rasgos la estructura del sistema operativo Windows 2000, para una vez vista poder hablar del subsistema de entrada / salida, que es en definitiva lo más importante ahora. Es importante familiarizarse con los conceptos que se van a explicar, de modo que si en su momento no entendió algo vuelva a repasarlo pero no pase a las páginas siguientes sin haber entendido, aunque sea más o menos ninguno de los conceptos que se explicarán.. 3.2.1 La API Win32.. API significa Application Programming Interface. y es la interfase primaria de programación en la familia de sistemas operativos Microsoft Windows, incluyendo a Windows 2000, Windows 95, Windows 98, Windows Millenium Edition y Windows CE. Para ir al grano: las funciones API se usan para llamar desde las aplicaciones los diferentes servicios del sistema operativo, ya que las aplicaciones no pueden hacerlo directamente. La API Win32 no va ser descrita completamente en este trabajo, o sea no voy a explicar el comportamiento interno y la implementación de las funciones API Win32. Si quiere profundizar sobre este tema le recomiendo que lea el libro Programming Applications for Microsoft Windows, de Jeffrey Richter (cuarta edición, Microsoft Press, 1999). Cada sistema operativo implementa un subconjunto diferente de Win32. Windows 2000 es un superconjunto de todas las implementaciones de Win32. Si desea conocer las especificidades de qué servicios son implementados y en qué plataformas le invito. a. que. consulte. la. documentación. disponible. en. el. sitio. 7. www.msdn.microsoft.com Para el propósito de este trabajo API Win32 se refiere al conjunto base que cubre áreas como procesos, servicios, hilos, administración de memoria, seguridad, entrada / salida etc.. 7. La información de esta documentación está detallada en el fichero \Program Files\Microsoft Platform SDK\Lib\Win32api.csv instalado como parte de de la plataforma SDK, la cual viene con el MSDN Profesional o puede bajarse gratis de www.msdn.microsoft.com.

(37) Aunque Windows 2000 fue diseñado para soportar múltiples interfases de programación la API Win32 es la primaria, la preferida. La Win32 tiene esta posición porque, de los tres ambientes de subsistemas (Win32, POSIX y OS/2), es la que brinda el mayor acceso a los servicios de Windows 2000. Las API se usan para llamar estos servicios porque ninguna aplicación puede llamarlos directamente. La API Win32, originalmente no iba a ser la interfase de programación original de Windows NT. Como el proyecto de Windows NT comenzó como para sustituir la API OS/2, la interfase primaria de Windows NT iba a ser la API OS/2 Presentation Manager. Pero luego de un año de trabajo, Windows 3.0 entró al mercado y tuvo éxito. Como resultado, Microsoft cambió la dirección e hizo de Windows NT el futuro reemplazo para la familia de productos . Fue en esta coyuntura que se hizo patente la necesidad de especificar la API Win32, antes de esto ésta sólo existía en una versión de 16 bits.[4] La API Win32 introdujo muchas funciones que no estaban disponibles en Windows 3.1, Microsoft decidió hacer una nueva API compatible con los nombres de las funciones de 16 bits.. 3.2.2. Servicios, Funciones y Rutinas.. Son varios los términos que en las documentaciones para programación y usuarios de Windows 2000 tienen distintos significados en distintos contextos. Por ejemplo, la palabra servicio puede referirse a una rutina llamable del sistema operativo, a un driver, o a un proceso del servidor. Para evitar confusiones, la siguiente lista muestra lo que significan distintos términos que se van a usar a lo largo de este trabajo. •. Funciones API Win32. Son subrutinas llamables y documentadas en la API Win32. Por ejemplo CreateProcess, CreateFile y GetMessage .. •. Servicios del sistema (o servicios ejecutivos del sistema). Son funciones nativas en el sistema operativo Windows 2000 que se pueden llamar desde modo usuario. Por ejemplo, NtCreateProcess, que es la función del ejecutivo del sistema que llama la función API CreateProcess para crear un nuevo proceso..

(38) •. Funciones del Kernel. Subrutinas de la parte de modo Kernel de Windows 2000. Por ejemplo, ExAllocatePool que es la rutina que los drivers llaman par asignar memoria.. •. Servicios Win32. Procesos iniciados por el Administrador de Servicios de Windows 2000. Por ejemplo el servicio Task Scheduler es un proceso de modo usuario que soporta el comando at (el cual es similar a los comandos at o cron de UNÍX).. •. DLL (Dynamic Link Library). Un conjunto de subrutinas enlazadas entre ellas como un fichero binario que puede cargarse dinámicamente por aplicaciones que usen esas subrutinas. Por ejemplo, Msvcrt.dll y Kernel32.dll (una de las del subsistema Win32). Las aplicaciones y componentes de modo usuario de Windows 2000 usan continuamente DLL. La ventaja de usar DLL es que las aplicaciones pueden compartir las DLL, o sea, cuando dos aplicaciones llaman a la misma DLL a la misma vez no tiene que reservarse la misma cantidad de memoria dos veces, lo cual es un desperdicio.. 3.2.3. Procesos, Hilos y Trabajos.. Aunque programas y procesos parecen lo mismo vistos desde la superficie, son fundamentalmente diferentes. Un programa es una secuencia estática de instrucciones, mientras que un proceso es un contenedor de un conjunto de recursos usados por los hilos que ejecutan la instancia del programa. En el mayor nivel de abstracción: un proceso de Windows 2000 contiene lo siguiente: 1. Un espacio virtual de direcciones privado, lo cual es un conjunto de direcciones de memoria que el proceso puede usar.. 2. Un programa ejecutable, el cual define el código inicial y datos que son mapeados al espacio virtual de direcciones del proceso.. 3. Una lista de handles abiertos a varios recursos del sistema, como semáforos, puertos de comunicación, y ficheros, que son accesibles a todos los hilos en el proceso.. 4. Un contexto de seguridad llamado un access token que identifica al usuario, grupos de seguridad y privilegios asociados al proceso..

(39) 5. Un identificador único llamado el ID del proceso.. 6. Y, al menos un hilo en ejecución.. Un hilo es una entidad en un proceso que Windows 2000 . Sin ellos, el proceso del programa no puede ejecutarse. Un hilo incluye los siguientes componentes esenciales: 7. El contenido de los registros de la CPU que representan el estado del procesador.. 8. Dos pilas, una para mientras el hilo se ejecuta en modo Kernel y otra para cuando se ejecuta en modo usuario.. 9. Un área de almacenamiento privada llamada TLS (thread – local storage) para el uso por subsistemas, bibliotecas de tiempo de corrida y DLL.. 10 Un identificador único llamado ID del hilo. 11 Los hilos, a veces, tienen su propio contexto de seguridad que es a menudo usado por aplicaciones multihilo. Los registros, las pilas y las áreas de almacenamiento privadas se conocen como el contexto del hilo. Ya que esta información es distinta en cada arquitectura de máquina en que Windows 2000 corre, esta estructura es específica para cada arquitectura. De hecho, la estructura del contexto devuelta por la función API Win32 GetThreadContext es la única estructura de datos en la API Win32 que es específica de cada arquitectura. Aunque los hilos tienen su propio contexto de ejecución, cada hilo en un proceso comparte el espacio virtual de direcciones del proceso, lo cual significa que los hilos de un mismo proceso pueden leer o escribir en la memoria de unos y otros. Los hilos no pueden referirse al espacio de memoria de los hilos de otro proceso, a menos que los otros procesos hagan disponible su espacio de direcciones compartiéndolo. Además de un espacio de direcciones privado y uno o varios hilos los procesos tienen una identificación de seguridad y una lista de handles8 abiertos a objectos tales como ficheros, espacios de memoria compartida, uno o más objetos de sincronización como mutexes, eventos, o semáforos como se ilustra en la figura:. 8. Los handles se explicarán más adelante..

(40) Figura 3.1. Cada proceso tiene su propio contexto de seguridad, que es almacenado en un objeto llamado access token , que contiene la identificación y credenciales del proceso. El descriptor de direcciones virtuales (VAD) son estructuras de datos que el administrador de memoria usa para mantener la huella de las direcciones virtuales que el proceso está usando. Windows 2000 introduce una extensión del modelo de procesos llamado trabajos. La función principal de un trabajo es permitir que un grupo de procesos sea administrado y manipulado como una unidad. También guarda información básica para todos los procesos asociados con un trabajo y para todos los procesos que estuvieron asociados al trabajo, pero que ya terminaron.. 3.2.4. Memoria Virtual.. Windows 2000 implementa un sistema de memoria virtual basado en direcciones de 32 bits, lo cual se traduce en 4 GB de memoria virtual. En la mayoría de los sistemas de Windows 2000 la mitad inferior de este espacio (desde x00000000 hasta x7FFFFFFF) para el usuario, y la mitad superior (desde x80000000 hasta xFFFFFFFF) para el sistema. La figura siguiente muestra lo dicho:.

(41) Figura 3.2 Espacios de memoria implementados por Windows 2000. Otras versiones de Windows 2000 como Windows 2000 Advanced Server y Windows 2000 Datacenter Server tienen una opción que le brinda a los procesos del modo usuario 3 GB de memoria. Sin embargo, 3 GB aún no es suficiente para cuando se va trabajar con bases de datos muy grandes. Windows 2000 tiene un nuevo mecanismo conocido como AWE9, el cual permite a una aplicación de 32 bits asignar más de 64 GB de memoria virtual y luego mapear vistas, o ventanas en su espacio de memoria de 2 GB. Aunque el AWE da una solución al problema de la memoria el lector seguramente se habrá dado cuenta de que con el tiempo las aplicaciones tienen a ocupar más espacio en el disco duro y la almacenar más datos en la memoria, por lo tanto la solución a largo (o mediano) plazo es el espacio de direcciones de 64 bits.[4] Recordemos que el espacio de memoria virtual de los procesos es un espacio de direcciones disponibles para los hilos de los procesos. La memoria virtual brinda una vista lógica de la memoria, que puede no corresponder con la realidad física. En tiempo de corrida el administrador de la memoria, junto con el hardware, traduce o mapea las direcciones virtuales en direcciones físicas, donde los datos son almacenados realmente. Controlando los mapeos y protegiendo su espacio de. 9. Address Windowing Extensions..

(42) direcciones el sistema operativo se asegura de que los espacios virtuales de direcciones de los procesos individuales no se solapen y no sobrescriban el espacio del sistema. La figura ilustra el mapeo de tras espacios de direcciones virtuales contiguos a direcciones físicas.. 3.2.5. Objetos y Handles.. En Windows 2000 un objeto es una instancia de tiempo de corrida a un tipo de objeto definido estáticamente. Un tipo objeto comprende un tipo de dato definido por el sistema, que tiene funciones que operan en las instancias del objeto, y un conjunto de atributos. Si usted a hecho aplicaciones de Win32, usted habrá encontrado procesos, hilos, ficheros y eventos, todos estos son objetos, por poner un ejemplo. Estos objetos se basan en objetos de bajo nivel que Windows 2000 crea y administra. En Windows 2000 un proceso cualquiera es una instancia del objeto proceso, un hilo, una instancia del objeto hilo y así todos los componentes del sistema.. Un atributo de un atributo de un objeto es un campo de datos que define parcialmente el estado del objeto. Por ejemplo, en un objeto proceso un atributo es el ID del proceso. Los métodos del objeto son, son los medios para manipular al objeto, que usualmente es cambiar los valores de sus atributos. Por ejemplo, el método open en un proceso podría aceptar un identificador para el proceso como entrada y devolver un puntero al objeto..

(43) Figura 3.3 Mapeo de memoria virtud a memoria f’isica en Windows 2000. La diferencia fundamental entre un objeto y cualquier otro tipo de estructura de dato es que la estructura interna de un objeto está oculta, para obtener datos del objeto o entrarlos en él hay que llamar un servicio del objeto. No se puede leer o cambiar los datos que hay dentro del objeto. Pero, a pesar de el lector pueda, quizás, pensar que los objetos son muy complicados por gusto, los objetos brindan los medios más convenientes de lograr las tres importantes tareas del sistema operativo, que son: 4. Brindar nombres entendibles para la persona de los recursos del sistema.. 5. Compartir recursos y datos entre los procesos.. 6. Proteger los recursos de entradas no autorizadas.. No todos los datos en Windows 2000 son objetos, sólo aquellos que necesitan ser compartidos, protegidos, nombrados o hacer visibles para los programas de modo usuario.. 3.2.6. El Registro.. Si usted ha trabajado bastante en Windows 2000 seguramente ha oído hablar del registro. No se puede hablar mucho de las interioridades de Windows 2000 sin hablar del registro. Él es la base de datos del sistema, donde se almacena la información necesaria para arrancar y configurar el sistema, configuraciones de software, información de la seguridad y la información de la configuración de cada usuario..

(44) Aunque la mayoría de los administradores y usuarios de Windows 2000 nunca necesitan ver dentro del registro, de todas maneras es una poderosa fuente de información sobre las interioridades de Windows 2000 porque contiene muchas configuraciones que afectan el desempeño del sistema. Así que, si se decide a cambiar directamente las configuraciones del registro tenga extrema cautela porque si se equivoca puede tener consecuencias fatales. Para más información sobre las claves del registro le recomiendo el libro Inside Windows 2000, capítulo 5.. 3.2.7. Vista, a grandes rasgos de la Arquitectura del Sistema Operativo Windows 2000.. Ahora, es importante dar una idea de la arquitectura del sistema operativo, es más fácil con una figura. Tenga en cuenta que este diagrama es muy básico, no lo muestra todo. En la figura, primero observe la línea que divide los modos usuario y Kernel. Los cuadros de arriba representan los procesos de modo usuario y los de abajo servicios de modo Kernel. Los cuatro tipos básicos de procesos de modo usuario son: 1. System support proceses. Son, por ejemplo loguearse, etc, pero estos aún no son servicios de Windows 2000.. 2. Aplicaciones. Las cuales pueden ser de cinco tipos: Win32, Windows3.1, MSDOS, POSIX o OS/2 1.2.. 3. Subsistema de ambientes (Environment Subsystem), que expone los servicios nativos de Windows 2000 a las aplicaciones de modo usuario a través de funciones.. 4. Servicios a procesos,.

(45) Figura 3.4 Vista previa de la arquitectura de Windows 2000.. Vea que en la figura hay un recuadro que dice ``Subsystem DLLs´´ debajo de ``Service proceses`` y de ``User Applications`` y es que en Windows 2000 las aplicaciones no llaman directamente a los servicios nativos del sistema, la petición tiene que ir a través de una o varias DLLs de subsistema. El papel que juegan estas DLLs es traducir una función documentada en una llamada a un servicio de Windows 2000, esta traducción puede o no involucrar enviar un mensaje al proceso del subsistema que está sirviendo la aplicación. Los componentes de modo Kernel en Windows 2000 incluyen los siguientes: 1. El Ejecutivo de Windows 2000 contiene los servicios básicos del sistema operativo, tales como administración de memoria, seguridad, administración de hilos y procesos, I/O, y comunicación interprocesos.. 2. El Kernel de Windows 2000 consiste de funciones del sistema operativo de bajo nivel, tales como despacho de interrupciones y excepciones, sincronización multiprocesos. También brinda un grupo de rutinas y objetos básicos que los demás componentes ejecutivos usan para implementar constructores de más alto nivel.. 3. Los manipuladores de dispositivos (device drivers), que incluye los drivers para manipular hardware y los que traducen las llamadas a funciones de I/O del usuario en dispositivos de hardware específicos..

(46) 4. La Hardware Abstraction Layer (HAL). 10. , que es una capa de código que. ayuda al sistema a aislar al Kernel, Device Drivers,y al resto de los componentes ejecutivos de Windows 2000 de las diferencias entre las diferentes plataformas de hardware en que puede correr el sistema (diferencias entre las motherboards). 5. El Sistema de Ventanas y Gráficos (Windowing and Graphics System) que implementa la interfase gráfica del usuario (GUI11).. La siguiente tabla muestra los ficheros del núcleo del sistema operativo Windows 2000.. Nombre. Componentes. Ntoskrnl.exe. Ejecutivo y Kernel. Ntkmlpa.exe. Ejecutivo y Kernel con soporte para Physical Address Extensión PAE, el cual permite direccionar más de 64 GB de memoria física.. Hal.dll. Hardware Abstaction Layer.. Win32k.sys. Parte de modo Kernel del subsistema Win32.. Ntdll.dll Kernel32.dll, User32.dll, Gdi32.dll. Funciones del soporte interno. Advapi32.dll,. DLLs del núcleo del subsistema Win32.. Tabla 3.1: Ficheros de los componentes del núcleo de Windows 2000.. Antes de continuar le recomiendo al lector que observe con detenimiento la figura siguiente. En ella se muestra en detalle la arquitectura de Windows 2000. En ella usted podrá ver los componentes que se van a tratar a continuación, los del subsistema de entrada / salida. En este trabajo no se va explicar todo el sistema porque ello nos alejaría del tema principal, pero el subsistema de I/O sí será tratado con detenimiento en este mismo capítulo.. 10 11. A lo largo de todo el trabajo me referiré a la Hardware Abstraction Layer como HAL. Graphical User Interface..

(47) Figura 3.5 Arquitectura de Windows 2000.. 3.3 Componentes del Subsistema de Entrada / Salida.. Bueno, por fin vamos a entrar en algo más interesante, ¿está listo? Yo creo que sí. Pues bien, el subsistema de I/O de Windows 2000 consiste de varios componentes ejecutivos como, por ejemplo los device drivers, los cuales se muestran en la figura siguiente..

(48) Figura 3.6 Componentes del subsistema de entrada / salida de Windows 2000. 1. El Administrador de I/O (I/O manager) conecta las aplicaciones y los componentes del sistema a los dispositivos físicos, virtuales y lógicos, y define la infraestructura que soporta los dispositivos.. 2. Un device driver típicamente provee una interfase para un tipo particular de dispositivo. Los drivers reciben comandos enlutados a él por el I/O manager para los dispositivos que maneja, e informa al I/O manager cuando se han cumplido esos comandos u ordenes. Los device drivers también usan al I/O manager para enviar comandos a otros device drivers cuando la atención al hardware necesita varios drivers. Un ejemplo de esto se vera mas tarde.. 3. El Administrador de PnP trabaja en cooperación con el I/O manager y con un tipo de drivers llamados bus drivers para guiar la localización de recursos de hardware así como para detectar y responder por la llegada o remoción de los recursos de hardware. El Administrador de PnP y los bus drivers son responsables de cargar un device driver cuando un dispositivo de hardware es detectado..

(49) 4. El Administrador de energía (Power Manager) también trabaja en cooperación con el I/O manager para guiar al sistema así como a los dispositivos individuales a trabes de las transiciones entre estados de encendido.. 5. El registro sirve como una base de datos que almacena la descripción de los dispositivos de hardware conectados al sistema, así como la inicialización de los drivers y la configuración de ellos.. 6. Los ficheros INF, que son llamados con la extensión .inf son los ficheros de la instalación de los drivers. Los archivos .inf son vínculos entre un dispositivo de hardware particular y un driver que asume el control del dispositivo. Ellos son hechos con instrucciones que describen al dispositivo al cual corresponden, las localizaciones fuente y. 7. La Capa de Abstracción de Hardware (Hardware Abstraction Layer o HAL) aísla los drivers de las especificidades del procesador y del controlador de interrupciones proveyendo funciones API que ´´ esconden ´´ las diferencias entre las distintas plataformas.. La mayoría de las operaciones no involucran a todos estos componentes. En las páginas siguientes vamos a explicar la función de estos componentes con más detalle.. 3.4 El Administrador de Entrada / Salida (I/O Manager).. El Administrador de I/O define un modelo dentro del cual las peticiones de I/O se cumplen. Es un componente de modo Kernel, o sea, que funciona en modo Kernel, para el usuario es inaccesible. Veamos que hace este componente. Había dicho que cuando una aplicación llama a un driver lo hace a través del administrador de I/O y que este crea una IRP y la envía al driver correspondiente. Pues eso precisamente lo que hace. El I/O manager crea una IRP, la cual representa una operación de entrada / salida (porque todas no son iguales), pasándole un apuntador a la IRP del driver correspondiente y recibiendo a la IRP cuando la solicitud ha sido procesada por el driver. El driver, a su vez recibe a la IRP y puede procesarla inmediatamente, pero también puede colocarla un una cola hasta que este libre. Además de crear IRPs, el administrador de I/O provee códigos que son comunes a diferentes drivers y que el driver llama para procesar las IRPs. De esa forma los.

Figure

Figura 2.2. Subsistema de conversión analógico – digital de la tarjeta AX5411.
Tabla 2.1 Modos de arranque del sistema de conversión A – D de la tarjeta  AX5411.
Tabla 2.3 Niveles de interrupción.
Tabla 2.4 Ganancias programables del amplificador de la tarjeta AX5411.
+7

Referencias

Documento similar

La Normativa de evaluación del rendimiento académico de los estudiantes y de revisión de calificaciones de la Universidad de Santiago de Compostela, aprobada por el Pleno or-

• En la ventana Preferencias de impresión, abra la carpeta que incluye las impresoras instaladas, haga clic con el botón derecho en el icono de impresora que desee y

En tales circunstancias, una forma de proceder posible sería iniciar una fase preconstitucional de diálogo nacional, como sucedió en Sudáfrica, para reunir a

Gastos derivados de la recaudación de los derechos económicos de la entidad local o de sus organis- mos autónomos cuando aquélla se efectúe por otras enti- dades locales o

1. LAS GARANTÍAS CONSTITUCIONALES.—2. C) La reforma constitucional de 1994. D) Las tres etapas del amparo argentino. F) Las vías previas al amparo. H) La acción es judicial en

A Carlos Eduardo, Oscar y Gilma, mis colegas de doctorado que ya se graduaron y que fueron mi ejemplo y grupo de apoyo. Por supuesto a todos los Emes, amigos

Volviendo a la jurisprudencia del Tribunal de Justicia, conviene recor- dar que, con el tiempo, este órgano se vio en la necesidad de determinar si los actos de los Estados

Este parón o bloqueo de las ventas españolas al resto de la Comunidad contrasta sin em- bargo con la evolución interior de ese mismo mercado en cuan- to a la demanda de hortalizas.