Control, automatización, robotización.
El PC como Sistema de Control

 

Introducción. Procesos para la mejora y el control de la producción

El ciudadano industrializado que vive a caballo entre el siglo XX y el XXI se ha visto en la necesidad de asumir, en escasos 25 años, el significado de un buen número de nuevos términos marcados por su alto contenido tecnológico. De ellos sin duda el más relevante ha sido el ordenador. Éste está introducido hoy en día en su versión personal en multitud de hogares, y el ciudadano medio va conociendo en creciente proporción, además de su existencia, su modo de uso y buena parte de sus posibilidades.

Pero dejando de lado esta verdadera revolución social, existen otros conceptos procedentes del desarrollo tecnológico que han superado las barreras impuestas por las industrias y centros de investigación, incorporándose en cierta medida al lenguaje coloquial. Es llamativo como entre éstas destaca el concepto de robot. Pero el robot industrial, que se conoce y emplea en nuestros días, no surge como consecuencia de la tendencia o afición de reproducir a imagen y semejanza a los seres vivientes, sino de la necesidad. Fue la necesidad la que dio origen a la agricultura, el pastoreo, la caza, la pesca, etc. Más adelante, la necesidad provoca la primera revolución industrial con el descubrimiento de la máquina de vapor de Watt y, actualmente, la necesidad ha cubierto de ordenadores la faz de la tierra. Inmersos en la era de la informatización, la imperiosa necesidad de aumentar la productividad y mejorar la calidad de los productos, ha hecho insuficiente la automatización industrial rígida, dominante en las primeras décadas del siglo XX.

Se llama mecanización a la incorporación de máquinas en la realización de determinadas tareas. Así, se habla de la mecanización del campo, cuando a las tareas agrícolas se han incorporado máquinas por todos conocidas como el tractor, el arado o la cosechadora. También se habla del mecanizado de piezas en un taller, cuando para su fabricación se utilizan máquinas como tornos o fresadoras, es decir, cuando se abandona la fabricación manual y se sustituye por procesos mecanizados que permiten mejores acabados y mayor rapidez en la confección de elementos.

Un paso más allá es la automatización, considerada como la supresión parcial o total de la intervención de las personas en la realización de tareas productivas, como las tareas agrícolas, industriales o administrativas. Los autómatas son un caso muy conocido de control, ya tradicional, que se ha venido aplicando a aquella clase de máquinas en las que una fuente de energía acciona un mecanismo, que permite imitar los movimientos de los seres animados. Se conocen autómatas que fueron construidos por los griegos en el templo de Dédalo; sin embargo, uno de los casos más difundidos es el del Pato de Vaucanson (Grenoble 1709-París 1782) construido en 1738, que era un pato artificial capaz de batir las alas, zambullirse, nadar, tragar grano e incluso expeler una sustancia parecida al excremento. Otro caso de autómatas célebres aunque más próximo a nuestro tiempo es el del jugador de ajedrez de Torres Quevedo, construido en 1912, capaz de jugar finales de partida (rey contra rey y torre). Pero debe ponerse de manifiesto que los autómatas siempre repiten el mismo modelo de actuación, no son reprogramables y tampoco son capaces de variar sus acciones en función del entorno o la situación.

El control numérico es la supervisión y regulación de determinadas tareas mecánicas de precisión, realizadas por una máquina herramienta. El control de estas tareas se realiza de forma automática para evitar, de este modo, que el control se lleve a cabo por un operario que, en ocasiones, podría verse sometido a ciertos riesgos en un proceso donde es imposible erradicar los errores humanos. De esta forma, se ajusta al máximo la precisión en la confección de piezas estandarizadas y se libera al operario de su control, mejorando la calidad y la cantidad del trabajo realizado. Un ejemplo de control automático es el control de la velocidad de giro de un taladro o la velocidad y control de avance de un torno o fresadora.

Otro sistema de control automático es el servocontrol. Consiste en controlar de forma automática las acciones de una máquina en función de unos parámetros definidos y sus variaciones. Por ejemplo, el servocontrol se puede utilizar para controlar la velocidad de giro de un torno, de forma que se mantenga fija dentro de unos límites. Otro ejemplo de servocontrol podría ser el del freno de algunos vehículos en los que la fuerza transmitida a las ruedas es proporcional a la fuerza aplicada por el conductor sobre el pedal del freno; de esta función se encarga un mecanismo servocontrolado que se llama servofreno.

La robotización es también una automatización de procesos sin la intervención humana, pero en este caso se da un paso más; hay desplazamiento de cargas, manipulación de objetos y un fuerte componente de realimentación. Es decir, este tipo de automatización permite la manipulación automática y programable de acciones y objetos.

La realimentación es un proceso imprescindible en la robotización, ya que dota a un proceso de capacidad para captar información que, una vez procesada por la máquina, permite modificar su comportamiento (sus acciones). Una máquina que posea la capacidad de realimentación es capaz de modificar sus respuestas en función de las variaciones de su entorno.

Centrando el análisis en las diferencias que existen entre automatización y robotización, puede decirse que una máquina automatizada (autómata) responde siempre de igual manera ante sucesos de idéntica naturaleza. Mientras que por el contrario un robot, es decir, una máquina robotizada, se caracteriza porque puede manejar objetos y, lo más interesante, es un dispositivo multifuncional y reprogramable. Una máquina robotizada es capaz de hacer trabajos totalmente diferentes y adaptarse al medio, ya que puede tomar decisiones en función de las condiciones exteriores.

La totalidad de los procesos de mejora y control de la producción pueden sintetizarse en tres fundamentales: Procesos de mecanización, procesos de automatización y procesos de robotización. Las principales características de cada uno de estos tres grupos se exponen en el cuadro adjunto:    

PROCESO CARACTERÍSTICAS
MECANIZACIÓN
  • Incorporación de máquinas:
    • Realizan procesos repetitivos
    • Sustituyen el esfuerzo humano
    • Manejadas por operador humano
AUTOMATIZACIÓN
  • Sustitución parcial o total de intervención humana
  • Sistemas capaces de autorregulación
ROBOTIZACIÓN
  • Reprogramación informática
  • Coordinación de automatismos
  • Adaptabilidad a diversas tareas (polivalencia)

Volver al principio de página

 

El PC como sistema de control

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:

La respuesta a las tres cuestiones es afirmativa:

viñeta

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:

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.

 

viñeta

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.
 

viñeta

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 subproblemas. 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).

Volver al principio de página

 

Una forma de realizar control programado con el PC

Hemos indicado antes que disponemos de una considerable variedad de canales de interacción del PC con el exterior. Para desarrollar los contenidos del presente curso tomaremos el puerto paralelo como vía directa de control. La elección está justificada por los siguientes términos:

Por otra parte, como lenguaje de programación se ha elegido el lenguaje C. Algunas de las razones:

Dado que existen en uso variadas versiones de este lenguaje, se elegirá TurboC++ versión 3.0 de Borland (Inprise) para entornos DOS. Esta presentación del C, que data de principios de los 90 (versión 1.0), fue adelantada a su tiempo, con un entorno de programación (IDE) con ayuda hipertexto excelente incluso bajo entornos DOS.

La elección está justificada por el hecho de no ser un sistema tan "monstruoso" para un principiante como los C visuales que se utilizan a nivel profesional hoy día bajo entornos Windows. Por otra parte, en muchas instalaciones y laboratorios el control se realiza realmente con máquinas que consideramos sumamente obsoletas, 286 o 386 con sólo un sistema operativo DOS. Es interesante aprovechar también esta posibilidad para el aula-taller habida cuenta que se pueden reciclar máquinas que de otra manera estarían perdidas. No se utilizarán las posibilidades de C++ y nos quedaremos en el uso de un C prácticamente estándar.

Como ejemplo, si utilizamos el lenguaje TurboC para realizar el programa fuente correspondiente al ordinograma de la sección anterior tendremos:

/* CUADRADO.C
   Ejemplo básico de programación en lenguaje C
*/
#include <stdio.h>

main()				/* comienzan las órdenes */
{
	int n, i, c;		/* declara n, i y c como números enteros */

	scanf("%i", &n);	/* lee desde el teclado el valor de n */

	i = 0;
	while ( i<n ) {		/* repite mientras i sea menor que n */
		i = i+1;	/* pasa al siguiente número */
		c = i*i;	/* eleva al cuadrado */
		printf("%i, %i\n", i, c);
				/* imprime el número y su cuadrado */ 
	}			/* cierra el bucle repetitivo */

	return 0;		/* finalizan las órdenes */
}

y tras el proceso de compilación, la ejecución mostraría en pantalla los siguientes resultados (cuando se introduce por teclado el número 5):

5
1, 1
2, 4
3, 9
4, 16
5, 25

Como se indicaba anteriormente, C puede ser un lenguaje delicado de cara a su utilización en el aula, aunque es posible. Siempre está a nuestro alcance acudir a un lenguaje BASIC, muy simple de utilización. Veamos cómo quedaría el código fuente del programa anterior en QBasic 1.1 de Microsoft:

' CUADRADO.BAS
' Ejemplo básico de programación en lenguaje BASIC
INPUT n			' lee desde el teclado el valor de n

WHILE i < n		' repite mientras i sea menor que n
	i = i + 1	' pasa al siguiente número
	c = i * i	' eleva al cuadrado
	PRINT i, c	' imprime el número y su cuadrado
WEND			' cierra el bucle repetitivo

Como se intuye al leer este código y compararlo con su equivalente en C, éste resulta más sencillo. Ni siquiera es preciso utilizar sentencias de principio y fin de programa, las órdenes no necesitan un terminador y no resulta imprescindible declarar el tipo de las variables ni asignarles un valor inicial (si éste es cero). Este Basic es interpretado, de modo que tampoco precisa compilación. Las posibilidades de realizar control mediante el puerto paralelo son similares, aunque C es mucho más rápido, potente y versátil.

Volver al principio de página

volver a Inicio