El PC como Sistema de Control
Apartados:
|
El PC como Sistema de Control
|
Actuadores, sensores y programación
La aparición del computador en la década de los 40 acelera vertiginosamente el desarrollo de autómatas y robots. La cuestión es: ¿podemos hacer servir el PC como un autómata o un robot?. Para poder responder es preciso verificar si se cumplen las siguientes condiciones:
- ¿Podemos conectarle sensores?
- ¿Podemos conectarle actuadores?
- ¿Podemos programarlo (y reprogramarlo) para que tome decisiones en función de los sensores y de instrucciones previas para que los actuadores operen en consecuencia?
La respuesta a las tres cuestiones es afirmativa:
- El PC cuenta para comunicarse con sus periféricos, incluso en su versión más básica, con diversos dispositivos de entrada: puertos paralelo y serie, USB, joystick, micrófono, ... Además, es posible agregarle tarjetas especializadas que añaden otras muy diversas clases de entradas.
- También cuenta con varios dispositivos de salida: puertos paralelo y serie, USB, sonido, video, ... Asimismo, se pueden añadir tarjetas especializadas que expanden el número y tipo de salidas.
- Por otras parte, son muchos los lenguajes de programación utilizables en el PC que permiten leer las entradas y modificar las salidas: BASIC, LOGO, Pascal, C, Ensamblador, etc.
Conocimiento del entorno: sensores |
Por medio de ellos el autómata o el robot conoce la situación del mundo exterior. ¿Cómo recopila esta información?. Supongamos que hablamos por teléfono con un amigo de otra localidad y le preguntamos qué tiempo hace allí. Nos puede contestar de dos maneras posibles:
- Hace sol. Hace calor. El aire es seco.
- La insolación diaria es de 10 h. La temperatura es 26.5 ºC. La humedad es del 12%.
Las primeras respuestas son de tipo digital: si o no; sol o nubes; calor o frío; sequedad o humedad.
Las últimas son de tipo analógico: 10, 9, 5, 2 son posibles valores de las horas de insolación. La temperatura puede oscilar entre -10 ºC y 35 ºC y, con un termómetro doméstico, se pueden apreciar décimas de ºC. La humedad puede variar entre 0 y 100%.
Las señales digitales se interpretan en el PC utilizando voltajes de 0 V o de +5 V. A una entrada digital se le puede adaptar un elemento de mando del estilo del interruptor de la figura para establecer su valor. Cualquier dispositivo que se comporte de forma similar a éste es útil para el control de entradas digitales.
Muchas señales analógicas se pueden tratar como digitales con circuitos muy sencillos, teniendo en cuenta el cambio que experimenta el sensor utilizado. Véase, por ejemplo, el circuito de la figura. La LDR puede variar de una resistencia del orden de 1 MW en oscuridad hasta 100 W a plena luz.
Puesto que la mayoría de los puertos del PC son digitales, otras señales analógicas requerirán, sin embargo, la utilización de circuitos de conversión analógico-digital.
Modificación del entorno: actuadores |
Cuando queremos cambiar el entorno podemos hacerlo dando órdenes que pueden ser también de dos tipos: digitales y analógicas. Podemos encender la calefacción, subir una persiana o apagar la luz (digitales), o bien podemos aumentar el volumen de un televisor o regular el termostato de una estufa (analógicas).
Los puertos digitales del PC nos permiten dar órdenes digitales de forma directa o podemos codificar estas señales digitales mediante un conversor analógico-digital para obtener una salida analógica.
Las salidas digitales no proporcionan mucha potencia; como mucho permiten iluminar un LED. Pero se pueden utilizar para excitar un relé o un transistor que controlen el actuador.
En robótica es típico el uso de motores como actuadores. En concreto, por su controlabilidad, los servomotores y los motores paso a paso.
Dar las instrucciones: programación |
En general, las máquinas operan a lo largo del tiempo, de modo que el concepto de máquina lleva asociado el de un proceso de funcionamiento en el cual diferentes operaciones se van realizando sucesiva o simultáneamente. Desde el punto de vista del control de su funcionamiento tenemos máquinas no automáticas, o de control manual y máquinas automáticas, que actúan sin necesidad de operador, aunque pueden responder a estímulos externos.
El funcionamiento de una máquina puede depender únicamente de los elementos que la componen y de sus interconexiones, de modo que ante determinados estímulos siempre responde de manera fija. Pero en otras máquinas automáticas su comportamiento no es siempre el mismo. Estas son las máquinas programables y se pueden concebir como una máquina base de comportamiento fijo, que se completa con una parte modificable que describe el funcionamiento de la máquina base. Esta parte modificable se denomina programa. Dependiendo de cuál sea el programa que gobierne su funcionamiento, una máquina programable responderá a estímulos externos de una forma u otra. Así se puede comportar como diferentes máquinas particulares en función del programa utilizado. Cuando una máquina opera bajo el control de un programa determinado, se dice que el programa se ejecuta en dicha máquina. Un programa es, por tanto, una descripción en forma codificada del comportamiento deseado de una máquina.
La máquina programable por excelencia es el ordenador. Éste se define como una máquina programable para tratamiento de la información. Los ordenadores actuales corresponden a un tipo particular de máquina programables que se denominan máquinas de programa almacenado. La estructura general del ordenador es la representada en la figura superior. Como se observa, poseen una memoria donde se pueden almacenar tanto la representación codificada del programa como los datos con los que opera.
La labor de desarrollar programas se denomina, en general, programación y los lenguajes de programación sirven precisamente para representar programas de manera simbólica, en forma de un texto que puede ser leído con relativa facilidad por una persona (programa fuente). Además estos lenguajes son prácticamente independientes de la máquina en la que se van a usar. Pero un programa escrito en un lenguaje de programación simbólico debe ser transformado en el lenguaje particular de cada máquina (código de máquina). Los programas en código de máquina son extraordinariamente difíciles de leer por una persona. Normalmente contienen códigos numéricos, sin ningún sentido nemotécnico, y compuestos por millares e incluso millones de operaciones elementales muy sencillas que en conjunto pueden realizar los tratamientos muy complejos que vemos a diario.
Los mecanismos que permiten ejecutar un programa escrito en un lenguaje de programación simbólico son proporcionados por otros programas denominados procesadores de lenguajes: compiladores e intérpretes. Un compilador traduce programas de un lenguaje de programación simbólico a código de máquina. La compilación del programa ha de hacerse sólo una vez, quedando el programa en código de máquina disponible para ser ejecutado en forma inmediata tantas veces como se desee. Un intérprete es un programa que analiza directamente la descripción simbólica del programa fuente y ejecuta "sobre la marcha" las operaciones oportunas. El proceso mediante intérprete es más sencillo pero también de ejecución más lenta, ya que hay que ir haciendo el análisis y la interpretación de las operaciones descritas en el programa fuente cada vez que se solicita la ejecución.
El modelo de programación imperativa responde a la estructura interna habitual de un computador, que se denomina arquitectura Von Neumann. Un programa en lenguaje máquina aparece como lista de instrucciones u órdenes elementales que han de ejecutarse una tras otra, en el orden en que aparecen en el programa. Un programa imperativo se plantea como el cálculo o modificación de sucesivos valores intermedios hasta obtener el resultado final. La mayoría de lenguajes de programación actualmente en uso siguen el modelo de programación imperativa.
La estructura de los programas imperativos se representa tradicionalmente mediante diagramas de flujo u ordinogramas (flow-chart). Estos contienen dos elementos básicos, correspondientes a acciones y condiciones. Existen también otros símbolos convenidos en la representación de ordinogramas, como son:
Utilizando esta representación, podemos esquematizar, por ejemplo, un sencillo programa que imprime una lista de los n primeros números naturales (i = 1, 2, ...., n) y de sus cuadrados (c = i2). La figura siguiente representa el ordinograma de una estructura secuencial en la que el flujo de control durante la ejecución del programa se refleja mediante líneas o vías que van de un elemento a otro. Las acciones tiene una sola vía de entrada y una de salida mientras que las condiciones tiene una vía de entrada y dos de salida. En este diagrama se produce la repetición de ciertas acciones (contar, elevar al cuadrado, imprimir) mientras se cumple una determinada condición (mientras i es menor o igual que n). A esto se le denomina iteración.
Podríamos también haber agrupado las acciones "contar, elevar al cuadrado e imprimir" en un bloque de código designado por un nombre simbólico. A este bloque se le denomina subprograma y está el el centro de lo que se llama programación estructurada (o modular), que no consiste más que en subdividir un problema principal en sub-problemas. Esto resulta ventajoso, no en el sencillo ejemplo descrito, pero sí especialmente en programas que codifican procesos complejos (para reducir la dificultad de la visión global), y en situaciones en las que se repiten operaciones análogas (lo que reduce substancialmente el tamaño y legibilidad del código fuente).