0% encontró este documento útil (0 votos)
4 vistas112 páginas

Programación de Sistemas de Control

Cargado por

gertrude2023
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
4 vistas112 páginas

Programación de Sistemas de Control

Cargado por

gertrude2023
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Control por Computador

Ignacio Alvarez García


Octubre - 2018
Indice
 Introducción al control de procesos por computador

 Conceptos básicos para programación de control

 Interfaz del computador con el exterior

 Las matemáticas del control

 Programación del lazo de control

 Programación en lenguaje C

 Implantación del control en el computador

 El control secuencial
2
Indice
 Introducción al control de procesos por computador

 Conceptos básicos para programación de control

 Interfaz del computador con el exterior

 Las matemáticas del control

 Programación del lazo de control

 Programación en lenguaje C

 Implantación del control en el computador

 El control secuencial
3
El Control de Procesos por Computador
 Proceso o sistema
 Conjunto de elementos físicos que cumplen un cometido común
 Salidas del sistema: valores medibles cuya variación en el tiempo se desea controlar
 Entradas al sistema: acciones que se pueden realizar para modificar los valores de las
salidas

Ent Sistema Sal

Ejemplo 1: sistema térmico Ejemplo 2: sistema mecánico


(calentador de fluido por gas) (motor CC + guía lineal)
Velocidad
(salida)
Desplazamiento
(salida)

Tensión +
aplicada
al motor -
(entrada) 4
El Control de Procesos por Computador
 Control de un proceso o sistema
 Variables principales involucradas:
Referencia o consigna: valor deseado para la salida en cada momento
Error: Valor referencia – Valor salida
Acción de control: valor a aplicar en la entrada para conseguir (idealmente) error cero
 Todas las variables evolucionan en el tiempo

 Control de proceso por computador


 Un Computador lee las Salidas del sistema, realiza cálculos de control, y modifica las
Entradas del sistema de acuerdo con estos cálculos
 Operación en Tiempo Real: es importante que la acción de control sea correcta y
realizada en tiempo
Fuentes Energía

Computador

Programa Sal Ent Sistema Sal

Accionadores
Sensores
Datos
Ent

5
El Control de Procesos por Computador
 Elementos de un equipo  Computador:
El “cerebro” del control
de control Programa y datos alojados en memoria
 Sensores:
Interfaz Comunica- Almacena- Dan al computador información del estado de
operador ciones miento los sistemas, midiendo sus salidas.
 Accionadores:
Permiten al computador generar cambios
sobre los sistemas, modulando la energía
Computador entregada por fuentes externas

A S1  Interfaz operador:
s Panel(es) que permite(n) al humano intervenir
en el control, generando órdenes y recibiendo
informaciones
A S2  Comunicaciones:
Programa Datos s Interconexión con otros computadores para
intercambio de informaciones y comandos

A S3  Almacenamiento:
s De configuraciones y resultados
 Control manual:
Control Reemplaza las salidas del computador en
caso de error o alarma
manual 6
Ejemplos de sistemas

Control de temperatura en
horno-túnel Robot de encolado automático

Teléfono móvil

Control de vuelo de un avión Línea de fabricación de botes 7


Computadores para control
 El computador es capaz de:
 Aceptar información digital procedente del exterior a través
de sus entradas.
 Almacenar la información (datos) en su memoria (variables).
 Procesar los datos de acuerdo a un programa (secuencia de
instrucciones sencillas) instalado en su memoria.
 Generar comandos hacia el exterior a través de sus salidas.

Computador

Programa Sal acciones hacia el mundo real

Datos
Ent datos del mundo real

8
Computadores para control
 Microcontrolador

 Procesador Digital de Señal (DSP)

 Dispositivos Electrónicos Programables (FPGA, PLD)

 Computador embebido

 Ordenador Industrial

 Autómata Programable (PLC)_______


9
Sensores
 Convierten magnitudes físicas en valores de pequeña
tensión/corriente.
 Clasificaciones:
 Según la magnitud medida:  Según el formato del
De posición (lineal/angular) valor entregado:
De velocidad (lineal/angular) Analógicos
De temperatura Digitales todo/nada
De presión De tren de pulsos
De presencia Numéricos

 Para obtener el valor medido:
 Adaptar señal del sensor (electrónica)
 ValorLeido = LeerDispositivoDeEntrada() ;
 MagnitudFísica = Cálculo (ValorLeido) ;
10
Accionadores
 Permiten el comando del sistema mediante la energía
procedente de una fuente externa, modulada por un
valor de pequeña tensión/ corriente.
 Clasificaciones:
 Según la energía:  Según la acción:  Según la
Eléctricos Desplazamiento modulación:
Neumáticos Giro Analógicos
Hidráulicos Calentamiento Digitales todo/nada
… Compresión PWM
… Numéricos

 Para entregar la energía deseada:


 ValorAEscribir = Cálculo (ValorDeseadoEnergía) ;
 EscribirSalida (ValorAEscribir) ;
 Adaptar/amplificar salida (electrónica)
11
Interfaz con el operador

Interfaz tipo SCADA Pupitre / botonera

 Dispositivos salida interfaz  Dispositivos entrada interfaz


humana: humana:
Indicador luminoso (LED) Botón / pulsador
Display (7 segmentos, LCD,…) Selector rotativo
Pantalla (texto/gráficos) Teclado
Impresora Ratón / Puntero / Joystick
Display gráfico personal … …
12
Comunicaciones
 Punto a punto:
 Serie (RS-232,USB)
 Paralelo
 Inalámbrica (Bluetooth)

 Multipunto:
 Serie (I2C, CAN, RS-485)
 Red (Ethernet)
 Inalámbrica (Wifi)

13
Niveles de control
 Control secuencial:
 Genera la secuencia de acontecimientos deseada
 Determina los valores deseados (consignas) de las variables
a controlar
 Diagrama de estados / transiciones
 Cambio de estados por:
Tiempo máximo
Combinación de valores de entradas
Acciones del operador o de otros computadores

 Lazo de control:
 Asegura que las variables a controlar alcancen el valor de
sus consignas con precisión y velocidad
 Compara la variable a controlar con la consigna, y
modifica la acción de control para que se igualen 14
Ejemplo de sistema de control
 Control del posición de una carretilla
24VDC Panel mando
Amplif. Indicadores
DO luminosos
Computador
ON
DI Adap. Botones
OFF
señales
D/A A/D

Adap.
24VDC Amplif. señal
Móvil Sensor
Cilindro neumático ultrasónico

Aire a
presión Electro-válvula
neumática

Final de carrera
Pos carga Pos descarga
mecánico 15
Niveles de control
 Ejemplo: Control secuencial
 Cuando se pulsa el botón ON, la
carretilla debe repetir el ciclo
siguiente:
Moverse a la posición de carga
Permanecer 5 seg
Moverse a la posición de
descarga
Permanecer 2 seg
 Si se alcanza el final de carrera
mecánico, activar alarma y
detener ciclo
 Si el operador pulsa el botón
OFF, terminar último ciclo y no
repetir
16
Niveles de control
 Ejemplo: Lazo de control
 Cuando ordena el movimiento
de la carretilla a una posición,
se debe alcanzar la misma con
la precisión y velocidad
requeridas
 Repetir hasta llegar al destino:
Leer posición actual del sensor
ultrasónico
Calcular aire a inyectar para
moverse hacia posición destino
Abrir electro-válvula para
inyectar el aire deseado

17
Indice
 Introducción al control de procesos por computador

 Conceptos básicos para programación de control

 Interfaz del computador con el exterior

 Las matemáticas del control

 Programación del lazo de control

 Programación en lenguaje C

 Implantación del control en el computador

 El control secuencial
18
Variables continuas y discretas
 En el mundo real, las variables son continuas y analógicas.
 En el computador, las variables son discretas y digitales.
 Se representa una señal analógica como x(t)
 Se representa una secuencia de valores discretos como {xk}
 En el computador sólo se dispone de valores discretos,
obtenidos en instantes separados Tm (periodo de muestreo).

Instante actual
x(t)
x xk-1 xk
Funcionamiento hasta t∞
No se pueden guardar ∞ valores
x0 x1
Tm de xk

t
t = K . Tm
0 1 2 3 4 5 k-2 k-1 k k
19
Variables temporales discretas
 En el mundo real, el tiempo avanza…
x(t)
x xk-1 xk

x1 Tm t
x0
k
t = K . Tm
0 1 2 3 4 5 k-2 k-1 k t

 Un instante Tm después: xk+1


El nuevo valor de este
x(t) instante es xk+1
x xk-1 xk
Los valores anteriores
se mantienen
x1 Tm t
x0

0 1 2 3 4 5 k-2 k-1 k k+1

20
Variables temporales discretas
 Desde el punto de vista del programa de control, consideramos
siempre el momento actual como el instante k, el tiempo pasa
bajo él… x x(t)
xk-1 xk
xk-2
Tm tant

k-2 k-1 k

x x(t)
El nuevo valor de este
instante es ahora xk
 Un instante Tm después: xk-1 xk
El anterior xk ahora es
xk-2 xk-1 (se ha retrasado 1
xk-3 Tm respecto al instante
actual)
Tm tant
El anterior xk-1 ahora
es xk-2
...
k-3 k-2 k-1 k
21
Programa básico de control
 Un programa básico de control tendrá el aspecto
siguiente:
#include ...

int main()
{
// Declaración de variables necesarias, al menos:
float ref_k; // Valor de la consigna actual (instante k)
float y_k; // Valor de la salida actual
float u_k; // Valor de la acción de control a aplicar

// Inicializaciones necesarias
...

// Bucle de control
while (1)
{
ref_k=ValorDeLaReferencia(); // De operador, cálculo, medida, etc.
y_k=ValorDeLaSalida(); // Medida mediante sensor
u_k=CalculoAccionDeControl(y_k,ref_k); // Según algoritmo deseado
AplicarAccionDeControl(uk); // Enviar a accionador
Sleep(Tm); // No ejecutar código hasta el siguiente Tm
}
}

22
Programa básico de control
 Si el programa necesita manejar valores actuales y
anteriores de una señal (ejemplo, acción de control
depende de crecimiento de yk : necesita yk e yk-1)
#include ...

int main()
{
float ref_k;
float y_k,y_k_menos_1; // Valor de la salida actual y la anterior
float u_k;

// Inicializaciones necesarias
. . .
// Bucle de control
while (1)
{
y_k_menos_1=yk; // La última yk (del instante anterior) es ahora yk-1
ref_k=ValorDeLaReferencia();
y_k=ValorDeLaSalida();
u_k=CalculoAccionDeControl(y_k,y_k_menos_1,ref_k);
AplicarAccionDeControl(uk);
Sleep(Tm);
}
} 23
Programa básico de control
 Generalizando: el programa necesita el valor actual y
‘m’ anteriores de la señal v (vk,vk-1,…,vk-m)
v
#include ... Instante actual
#define M 6
v(t)
int main() vk-1 vk
{
float v_k[M+1]; // Desde 0 a m incluido

// Inicializaciones Tm
...
// Bucle de control
while (1) k-2 k-1 k k
{
v_k[M]=v_k[M-1]; Mundo
Computador
v_k[M-1]=v_k[M-2]; real
... Mejor función: v_k v_k[0] vk
v_k[2]=v_k[1]; Desplaza(v_k,M+1);
v_k[1]=v_k[0]; v_k[1] vk-1
v_k[0]=nuevo_valor();
v_k[2] vk-2
// Usar tabla v_k con la interpretación
...
Sleep(Tm);
} v_k[M] vk-M
} 24
Indice
 Introducción al control de procesos por computador

 Conceptos básicos para programación de control

 Interfaz del computador con el exterior

 Las matemáticas del control

 Programación del lazo de control

 Programación en lenguaje C

 Implantación del control en el computador

 El control secuencial
25
Interfaz del computador con el exterior
 El programa del computador maneja datos que son variables
alojadas en su memoria
 Los datos manejados por el programa de control proceden o
tienen como destino el mundo “real”
 Los computadores disponen de subsistemas electrónicos llamados
de Entrada y Salida (E/S ó I/O) para hacer el intercambio de
información entre mundo exterior y variables internas.
 El interfaz se realiza mediante
pequeñas tensiones y Computador
corrientes (potencia de mW)
Programa Sal

Señales
Mundo

mW
“real”
Datos
Ent

26
Interfaz con el “mundo real”
 Entradas del computador: convierten valores
continuos y analógicos (exterior) en valores discretos y
digitales (computador) que se almacenan en variables:
 Conversores A/D
 Entradas digitales (todo/nada).
 Contadores de pulsos
 Entradas numéricas
 Salidas del computador: convierten valores discretos
y digitales almacenados en variables (computador) en
señales continuas y analógicas (exterior):
 Conversores D/A
 Salidas digitales (todo/nada)
 Generadores PWM
 Salidas numéricas
27
Interfaz con el “mundo real”
 Entradas del computador: diversos dispositivos
electrónicos en función de la naturaleza del sensor y la
información a extraer de él:
 Conversor A/D (ADC) :
Para sensores que generan una tensión analógica
Proporcionan al programa una variable de tipo entero proporcional a la
tensión a su entrada
 Entrada digital (DI):
Para sensores que generan una tensión con únicamente 2 estados (0/1)
Proporcionan al programa un bit de una variable de tipo entero
 Contador de pulsos (counter):
Para sensores que generan una tensión con únicamente 2 estados (0/1),
de la que no interesa el estado 0 ó 1, sino el número de transiciones 0→1
y/o 1→0
Proporcionan al programa una variable de tipo entero con el valor de la
cuenta

28
Obtención de valores analógicos
 Obtención de valores analógicos: conversores A/D
 Sensor: genera una pequeña tensión o corriente
directamente relacionada con una magnitud física
Mundo Magnitud Pequeña
real física Sensor UóI

 Ejemplo: potenciómetro para medida de desplazamiento


R1 usens R2
+Vcc
R
x
L

29
Obtención de valores analógicos
 Obtención de valores analógicos: conversor A/D
 Conversor A/D: genera un valor numérico (variable de tipo
entero) relacionada con la tensión a su entrada
 Características: umin, umax, n_bits

Mundo real Computador


variable
U Valor Valor entero
(umin a umax) ADC numérico (0 a 2n_bits-1)

vble Aprox vble Real


2n_bits-1 2n_bits-1

ad ad
2
1
0 u (V) 0
umin u umax u (V)
umin u umax 30
Obtención de valores analógicos
 Conversor A/D
 Funcionamiento del conversor A/D de n bits:
Divide un rango de tensión de entrada en 2n intervalos, asociando a cada
uno de ellos un valor numérico (0…2n-1).
Se realiza con electrónica mediante comparaciones sucesivas
El resultado de la conversión es un valor entero utilizable por el programa.
 Valores típicos de n: 8, 10, 12, 16, 20, 24, 32.
 Tipos: flash, aproximaciones sucesivas, etc
([Link]

n=1 n=2 n=3


umax 111 ≡7
11
1
110 ≡6
uad ad 101
10
A/D 100
n bits 011
01
010
0
001
00
umin 000 ≡0
31
Obtención de valores analógicos
 Si el rango de tensiones generado por el sensor no
concuerda con el rango de tensiones del conversor:
 Se precisa una electrónica de adaptación intermedia
(Amplificadores Operacionales)
Mundo real Computador
Mundo
Magnitud Adap ADC
real Sensor usens uad ad valor
física

 El programa del computador sólo puede leer el valor


del conversor, que está relacionado (pero no es) con
la magnitud medida
 El programa debe calcular la magnitud a partir de las
especificaciones de la cadena de medida (sensor, adap, ADC)
32
Obtención de valores analógicos
 Ejemplo: adquisición de Tª medida por termopar con
conversor A/D de 10 bits y límites de tensión 0-5V

¡¡ Usar #define para


todas las constantes !!

Programa:
int adk;
float Vad_k,Vhc_k,Th_k;
float s=43e-6f; // V/ºC
float Tc=0;

adk=LeerAD();
s=43 μV/ºC (termopar tipo T) Vad_k=adk*5.0f/1023;
Vhc_k=Vad_k/500.0f;
Th_k=Vhc_k/s-Tc;

33
Entradas digitales
 Algunos sensores generan información en forma de
todo/nada (true/false , 1/0), que serán capturadas
mediante entradas digitales (DI) del computador
 Ejemplo: interruptor (switch)

+Vcc
Mundo real Computador
variable
Usens Valor Valor entero
(0 ó Vcc) DI numérico 0ó1
SW

 El hardware electrónico es de la máxima sencillez


34
Entradas digitales
 Es habitual que varias entradas digitales se agrupen
en bits diferentes de una sola variable
 Ejemplo: interruptor (switch)

Mundo real Computador


U7 (0 ó Vcc)

U6 (0 ó Vcc) variable entera


Valor
... DI numérico b7 b6 … b1 b0

U1 (0 ó Vcc)
bi ≡ estado Ui
U0 (0 ó Vcc)

¿Cómo manejar bi:


Ver tema “Operaciones con valores binarios”
de Lenguaje C ?
35
Entradas tipo contador
 Algunos sensores generan información en forma de
todo/nada (true/false , 1/0), de la que no interesa el
estado (1/0) sino la cuenta de transiciones (1→0 y/o
0 →1)
 Estos sensores serán capturados mediante entradas
tipo contador
 Ejemplo: encoder para medida de desplazamiento
d
+Vcc si la escobilla
+Vcc toca conductor
usens =
0 si la escobilla
x usens no toca conductor

x=d*(cuenta transiciones 0 →Vcc)

36
Entradas tipo contador
 Entrada contador:
 Incrementa un contador (entero de n bits) cada vez que se
produce un pulso (de subida, de bajada, ambos) en la señal de
entrada (todo/nada).
 El valor del contador es un valor entero utilizable por el
programa.
 Se puede reiniciar el contador a 0 por programa.
 Se necesita una entrada digital auxiliar para definir el 0 absoluto.
 ¡¡ Ojo con desbordamientos del contador !!

Mundo real Computador


variable
Usens Valor Valor entero
(0 ó Vcc) Counter numérico (cuenta transiciones)

37
Entradas tipo contador
 Ejemplo: entrada de pulsos de un encóder óptico:
Computador

Contador

Contador de
Tensión

pulsos
(0 a 5V)

Programa:
int count_k;
float pos_k; // grados de giro
int pulsos_rev=512;

ResetContador();
...
count_k=LeerContador();
pos_k=count_k*360.0f/pulsos_rev;

38
Entradas tipo contador
 Entrada de pulsos: algunas consideraciones
 Necesidad de referencia “home” para medidas absolutas
El sensor sólo mide variación respecto a la posición original. Se necesita
una referencia absoluta (mediante entrada digital), y mover posición a esa
referencia al comienzo
 Señal en cuadratura para detección de sentido A
Con una sola señal no se puede distinguir
el sentido del movimiento
Con dos señales en cuadratura se puede
distinguir (habitualmente se integra en
el hardware del contador)
B
Sentido - Sentido +

A Contador
Hardware Contador
detecta orden: Sumar
B 00,10,11,01,00,…

A Contador
Hardware Contador
detecta orden: Restar
B 00,01,11,10,00,…
39
Interfaz con el “mundo real”
 Salidas del computador: diversos dispositivos
electrónicos en función de la naturaleza de la acción a
generar:
 Conversor D/A (DAC) :
Generan una tensión analógica proporcional a un valor entero
proporcionado por el programa
 Salida digital (DO):
Generan una tensión con únicamente 2 estados (0/1 ≡ umin/umax) a partir de
un bit de una variable de tipo entero proporcionado por el programa
 Salida modulada en ancho de pulso (PWM):
Generan una tensión en forma de tren de pulsos 0/1 cuyo valor promedio
proporcional a un valor entero proporcionado por el programa

 Para todos ellos, la salida es de poca potencia (mW):


 Es necesario un accionador que obtenga la energía de una
fuente externa al computador
 El accionador es modulado por la salida del computador
40
Generación de valores analógicos
 Generación de valores analógicos: conversor D/A (DAC)
 Conversor D/A: genera una tensión a su salida relacionada con
el valor numérico (variable de tipo entero) que se aplica a su
entrada
 Características: umin, umax, n_bits

Computador Mundo real


variable
Valor entero Valor U
(0 a 2n_bits-1) numérico DAC (umin a umax)

u (V) u (V)
Aprox Real
umax umax

u u
umin umin
0 da vble vble
2n_bits-1 0 da 2n_bits-1 41
Generación de valores analógicos
 Conversor D/A
 Funcionamiento del conversor D/A de n bits:
Genera una tensión de salida en función de un valor numérico (0…2n-1)
generado por el programa.
Se realiza con electrónica mediante adiciones sucesivas

 Valores típicos de n: 8, 10, 12, 16, 20, 24, 32.


 Tipos: oversampling, ladder, …
([Link]

n=1 n=2 n=3


umax
1 11 111
110
10 101 da uda
100 D/A
011 n bits
01 010
001
0 00 000 umin
42
Generación de valores analógicos
 Conversor D/A
 La salida es una pequeña tensión con baja potencia (mW) que
puede servir para modular energía externa de un accionador
analógico

 Ejemplo: accionamiento de una electroválvula


proporcional de 24VDC, mediante conversor DA de 8 bits
y límites de tensión 0-5V
Computador +24VDC
Vservo Programa:
float pct_k;
dak float Vservo_k,Vda_k;
Conversor
D/A 8 bit

Vda int dak;


Ampli
x5

pct_k=apertura deseada(%);
Vservo_k=pct_k/100.0f*24.0f;
Vda_k=Vservo_k/5.0f;
dak=Vda_k/5.0f*255;
GND EscribirDA(dak);
Salidas digitales
 Algunos accionadores sólo tienen dos acciones
posibles: todo/nada (true/false , 1/0)
 Para ellos se utilizan salidas digitales (DO)
 Ejemplo: lámpara LED (mW)

Computador Mundo real


variable
Valor entero Valor U
0ó1 numérico DO (0 ó Vcc)

44
Salidas digitales
 Si es necesaria mayor potencia, lo usual es utilizar
un relé (relay):
 Electromagnético (bobina+interruptor)
 De estado sólido (amplificador electrónico)

Computador Mundo real


variable Power
Valor entero Valor U
0ó1 numérico DO (0 ó Vcc)

Load
Coil
Relay

Circuito bobina: baja potencia


Circuito potencia: según necesidades

45
Salidas digitales
 Es habitual que varias salidas digitales se agrupen
en bits diferentes de una sola variable

Computador Mundo real


U7 (0 ó Vcc)
variable entera
U6 (0 ó Vcc)
Valor
b7 b6 … b1 b0
numérico DO ...
U1 (0 ó Vcc) estado Ui ≡ bi
U0 (0 ó Vcc)

¿Cómo manejar bi:


Ver tema “Operaciones con valores binarios”
de Lenguaje C ?
46
Salidas PWM
 PWM: Pulse Width Modulated
 Funcionamiento del generador PWM:
 Genera una onda tensión de salida alternativamente ON/OFF,
siendo programable el tiempo de onda (TPWM) y la duración de
encendido (TON).
 La relación TON / TPWM se conoce como ciclo duty.
 El resultado, una vez filtrado, es un valor analógico constante
proporcional al valor del ciclo duty.
 En muchas ocasiones actúa como filtro ‘natural’ la propia
dinámica del sistema sobre el que se aplica la onda
 TPWM suele ser fijo y función del filtro utilizado.
umax TPWM umax
TON
TON PWM
PWM Filtrado umed=umax*duty
TPWM
0 0
47
Salidas PWM

 Ejemplo: accionamiento de un motor DC de 12V mediante


un generador PWM de 5V y un amplificador.

Computador +12VDC
Programa:
Ton float V_k,Vpwm_k;
float duty_k,Tpwm,Ton_k;
Salida PWM

VPWM
Ampli

filtro
+

Tpwm V Tpwm=valor constante;


InicializarPWM(Tpwm);

V_k=tensión deseada (Volt);
GND
Vpwm_k=(V_k+12.0f)/24.0f*5.0f;
-12VDC duty_k=Vpwm_k/5.0f;
Ton_k=(int) (duty_k*Tpwm);
EscribirPWM(Ton_k);

48
Programación de E/S digital
 El interfaz con muchos dispositivos se realiza en
formato todo/nada (1/0).
 Con estos dispositivos, se utilizan E/S digitales.
 Las E/S digitales están formadas por valores enteros,
de los cuales cada bit está conectado a un
dispositivo externo.
+Vcc
Salida Digital Entrada Digital
0 1 0 0 1 1 0 1 0 1 0 0 1 1 0 1

49
Operaciones con variables
 Operaciones con el bit de peso P de la variable
entera X:
 En la mayoría de ocasiones, de debe operar con un solo bit
(E ó S) sin alterar el resto.
int x,p;
int mascara;
…Dar valores a p y x…
mascara=1<<p;
 ¿Está activo el bit de peso P de la variable X?
if (x & mascara)

 Poner a 1 el bit de peso P de la variable X:
x=x | mascara;
 Poner a 0 el bit de peso P de la variable X:
x=x & ~mascara;
 Cambiar el valor del bit de peso P de la variable X:
x=x ^ mascara;

50
Indice
 Introducción control de procesos por computador

 Conceptos básicos para programación de control

 Interfaz del computador con el exterior

 Las matemáticas del control

 Programación del lazo de control

 Programación en lenguaje C

 Implantación del control en el computador

 El control secuencial
51
El lazo de control
 Esquema típico del lazo de control por
computador (1 ent, 1 sal):

Computador p(t)
rk Fuente Energía

us(t) ua(t) u(t) y(t)


Programa uk Cálculo usk Sal Sistema
Control usk
Adaptación Accionador
señal
Sensor

Cálculo
yk adk Ent
yk
ya(t) ym(t)
Adaptación
señal

52
Las matemáticas del control
 El cálculo óptimo de uk=Fn(yk,rk) es crucial para
satisfacer las necesidades del control:
 Precisión: la salida debe seguir fielmente a la referencia.
 Velocidad: la salida debe seguir rápidamente las variaciones
de la referencia.
 Robustez: las perturbaciones, ruidos, o variaciones del
sistema no deben modificar el comportamiento.

53
Las matemáticas del control
 En las asignaturas de control se estudia la acción de
control a aplicar de forma matemática mediante
tranformadas de Laplace :
Regulador Sistema
C(s) E(s) U(s) Y(s)
+ R(s) G(s)
-
Ym(s)

H(s)

Sensor

 Pero en el control por computador:


 Sólo pueden realizar cálculos cada Tm (sistema discreto), por lo que
no es aplicable la transformada de Laplace (requiere sistema continuo)
 En el sistema real aparecen muchos más elementos que en el lazo de
control “matemático”
54
El lazo de control
 Una aproximación intuitiva a los reguladores
programados:
 Mediante ejemplos se verán las diferentes acciones
P-I-D y la forma de programarlas en el computador
 Se llega a un formato general de cálculo para
cualquier tipo de regulador
 Por último, se relacionan los conocimientos previos
de teoría de control analógica con el cálculo a
realizar

55
Las matemáticas del control
 Ejemplo 1: control de temperatura de un fluido
mediante una llama de gas.
 Referencia: temperatura deseada del fluido (ºC)
 Salida del sistema: temperatura medida del fluido (ºC)
 Acción de control: apertura de la válvula de gas (0%-100%)
 Perturbaciones: temperatura exterior (ºC), cantidad de fluido
(Kg), calor específico del fluido (J/Kg.ºK)

Tª y(t)

Apertura válvula u(t)

56
Las matemáticas del control
 Ejemplo 2: control de posición de un móvil mediante
un motor DC.
 Referencia: posición deseada del móvil (mm).
 Salida del sistema: posición medida del móvil (mm).
 Acción de control: tensión aplicada al motor (V).
 Perturbaciones: peso del móvil (Kg), dirección del
movimiento (º respecto a la horizontal), …

y(t)

+
u(t)
-
57
Las matemáticas del control
 Ejemplo 3: control de velocidad de un móvil mediante
un motor DC.
 Referencia: velocidad deseada del móvil (mm/s).
 Salida del sistema: velocidad medida del móvil (mm/s).
 Acción de control: tensión aplicada al motor (V).
 Perturbaciones: peso del móvil (Kg), dirección del
movimiento (º respecto a la horizontal), …

y(t)

+
u(t)
-
58
Las matemáticas del control
 Un cálculo sencillo: control todo/nada
Si yk < rk  uk = cte1
Si yk > rk  uk = cte2
Si yk = rk  no modificar uk
 Se acciona el sistema con un valor constante, que depende
del signo del error.
 Cálculo excesivamente simple: la acción de control no
depende del valor absoluto del error.

Ejemplo 1:
- Se abre la válvula de gas (100%) si
la Tª es menor que la referencia.
- Se cierra la válvula (0%) si la Tª
es mayor o igual que la referencia.
- La apertura es la misma para
error=0.1ºC ó error=100ºC
- Excesivas conmutaciones cuando
yk  rk (se suele usar histéresis)59
Las matemáticas del control
 Un cálculo sencillo: control proporcional
ek = rk - yk
uk = cte . ek
 Cuando el error es 0, la acción de control es 0.
 La acción de control es mayor (en valor absoluto) cuanto más
grande sea el error (en valor absoluto), y tiene el mismo signo
que el error.
 El cálculo es muy simple

Ejemplo 1:
- Se abre más la válvula de gas cuanto
mayor sea el error.
- Se cierra la válvula (0%) si la Tª
iguala a la referencia.
- No se tiene en cuenta si la Tª estaba
subiendo o bajando previamente.

60
Las matemáticas del control
Control Todo/Nada Control P
rk (ºC) rk (ºC)

Tªamb Tªamb

t t
uk (%) uk (%)

t t
yk (ºC) yk (ºC)

Tªamb Tªamb
61
Las matemáticas del control
 Un cálculo sencillo: control proporcional
ek = rk - yk
uk = cte . ek
 Cuando el error es 0, la salida es 0.
 La salida es mayor (en valor absoluto) cuanto más grande sea
el error (en valor absoluto), y tiene el mismo signo que el error.
 El cálculo es muy simple: no tiene en cuenta la evolución que
llevaba el sistema anteriormente.

Ejemplo 2:
- Se da más tensión al motor cuanto
mayor sea la distancia al destino.
- Se para el motor (tensión 0) cuando
alcanza el destino (error 0).
- No se tiene en cuenta si el móvil se
está acercando o alejando del
destino.
62
Las matemáticas del control
 Un cálculo sencillo: control proporcional
ek = rk - yk
uk = cte . ek
 Cuando el error es 0, la acción de control es 0.
 La acción de control es mayor (en valor absoluto) cuanto más
grande sea el error (en valor absoluto), y tiene el mismo signo
que el error.
 En ciertos sistemas, no se puede llegar a error 0.

Ejemplo 3:
- Se aumenta la tensión del motor si
la velocidad es menor que la deseada.
- Si la velocidad fuese igual a la
deseada, la tensión aplicada sería 0V,
por tanto el motor tendería a pararse.
- Es necesario mantener un error para
que el sistema se estabilice.
63
Las matemáticas del control
 Un cálculo sencillo: control proporcional-integral
ek = rk - yk
uk = uk_anterior + cte . ek
 Cuando el error es 0, la acción de control se mantiene.
 La acción de control se incrementa (en valor absoluto) tanto
más cuanto más grande sea el error (en valor absoluto), y el
incremento tiene el mismo signo que el error.
 El cálculo necesita recordar un valor anterior de uk.

Ejemplo 3:
- Se aumenta la tensión del motor si
la velocidad es menor que la deseada.
- Si la velocidad es igual a la
deseada, se mantiene la tensión
aplicada.
- El error llega a 0.

64
Las matemáticas del control
rk (mm/s) Control P rk (mm/s) Control PI
rfinal rfinal

rinicial rinicial

t t
uk (V) uk (V)

yk (mm/s) t y (mm/s) t
k
rfinal rfinal

yincial yinicial
65
Las matemáticas del control
Control PI:
rk
 En t=t1 y t=t2, la acción
de control es la misma
(mismo ek), aunque las
situaciones son
distintas: t
uk
- En t=t1 el error está
disminuyendo
- En t=t2 el error está
aumentando t1 t2
t
yk

 Solución: Añadir acción


dependiente de la
derivada del error 66
Las matemáticas del control
 Un cálculo sencillo: control proporc.-integral-diferencial
ek = rk - yk
uk = uk_anterior + cte1 . ek + cte2 . (ek-ek_anterior)/Tm
 Cuando el error se mantiene en 0, la salida se mantiene.
 La acción de control se incrementa tanto más cuanto mayor
sea el error, y cuanto el error vaya más en sentido contrario al
deseado.
 El cálculo necesita recordar un valor anterior de uk y ek.

Ejemplo 3:
- Se aumenta la tensión del motor si
la velocidad es menor que la deseada.
- Si la velocidad es igual a la
deseada, se mantiene la tensión
aplicada.
- El error llega a 0 más rápidamente,
al tenerse en cuenta su derivada.
67
Las matemáticas del control
Control PI Control PID
rk
rk

t t
uk
uk

t t
yk
yk

68
Las matemáticas del control
 Cálculo general:
ek = r k - y k
uk= Fn(ek,ek-1,ek-2,…,ek-m,uk-1,uk-2,…,uk-n)
 La función realiza un cálculo con los valores actual y
anteriores (hasta retraso m) del error, y los valores anteriores
(hasta retraso n) de la acción de control calculada.
 Se pueden diseñar múltiples funciones, pero es adecuado
disponer de una teoría unificada para calcularlas.
 La teoría unificada es más sencilla si se usan funciones
lineales, ya que se puede aplicar el principio de superposición:
uk= [Link]+[Link]-1+…+[Link]-2-…-[Link]-n

– Control proporcional:
» m=0, n=0, b0=cte
– Control proporcional-integral:
» m=0, n=1, b0=cte, a1=-1
– Control proporcional-integral-diferencial:
» m=1, n=1, b0=cte1-cte2, b1=cte2, a1=-1
69
Las matemáticas del control
 Simplificación del lazo de control para
los cálculos (sistema híbrido con parte
p(t)
continua y discreta):
Bloqueador
{ck} {ek} {uk} u(t) y(t)
+ Regu- Sistema
- lador

{yk}
Tm

Muestreador
 La teoría más sencilla se obtiene
(sistemas lineales):
 Calculando la Transformada de Laplace t
X(s)  L[ x(t )]   x( ).e sτ .dτ
de las señales continuas τ 0

k
 Calculando la Transformada en Z de las X(z)  Z[xk ]   x k -i .z i
i 0
señales discretas
70
Las matemáticas del control
 Simplificación del lazo de control para los
cálculos:
Equivale a un bloqueador con ganancia 1
Computador p(t)
rk Fuente Energía

us(t) ua(t) u(t) y(t)


Programa uk Cálculo usk Sal Sistema
Control usk
Adaptación Accionador
señal
Sensor

Cálculo
yk adk Ent
yk
ya(t) ym(t)
Adaptación
señal
Equivale a un muestreador con ganancia 1
La representación matemática de los valores
de las variables discretas a lo largo del tiempo
es una secuencia: {yk}

71
Las matemáticas del control
 Transformada de Laplace, relación entre
transformada y señales temporales:
x(t) y(t)
Sist

X(s) Y(s)
G(s)

Y ( s ) bo .s m  b1.s m1  ...  bm1.s  bm


G( s)   n , n  m
X ( s) s  a1.s n 1  ...  an 1.s  an

...( n ...( m ... ( m1 .  ...( n 1 . 


y (t )  bo . x (t )  b1. x (t )  ...  bm 1. x (t )  bm . x (t )  a1. y (t )  ...  an 1. y (t )  an . y (t ) 

 
 
 Ecuación diferencial del sistema
72
Las matemáticas del control
 Transformada de Laplace, interpretación básica:
X(s) Y(s)
G(s)

 G(s)=Y(s)/X(s) para sistemas lineales dinámicos continuos.


 G(s) es un cociente de polinomios, grado den ≥ grado num
Y ( s ) bo .s m  b1.s m1  ...  bm1.s  bm
G( s)   n , n  m
X ( s) s  a1.s n 1  ...  an 1.s  an
 Las raíces de los polinomios denominador (polos) y numerador
(ceros) definen el comportamiento básico del sistema.
 Sistema estable: todos los polos con parte real negativa. En este
caso:
Régimen permanente: G(0)=ganancia estática (con unidades).
Respuesta dinámica (transitorio) dependiente de la posición de
polos y ceros.
73
Las matemáticas del control
 Transformada de Laplace, interpretación:
X(s) Y(s)
G(s)

Y ( s ) bo .s m  b1.s m1  ...  bm1.s  bm


G( s)   n n 1
, n  m
X ( s) s  a1.s  ...  an 1.s  an

Plano s
Im

o
x
x Re

x
o
74
Las matemáticas del control
 Transformada de en Z, relación entre
transformada y señales temporales:
{xk} {yk}
Sist

X(z) Y(z)
G(z)

Y ( z ) bo  b1. z 1  ...  bm1. z  ( m1)  bm . z  m


G( z)  
X ( z) 1  a1. z 1  ...  an 1. z ( n 1)  an . z n

yk  b0 . xk  b1. xk 1  ...  bm1. xk ( m1)  bm . xk m  (a1. yk 1  ...  an1. yk ( n1)  an . yk n )


 Ecuación en diferencias del sistema
75
Las matemáticas del control
 Transformada en Z, interpretación básica:
X(z) Y(z)
G(z)

 G(z)=Y(z)/X(z) para sistemas lineales dinámicos discretos.


 G(z) es un cociente de polinomios, grado den ≥ grado num.
Y ( z ) bo . z m  b1. z m1  ...  bm1. z  bm
G( z)   n n 1
, n  m
X ( z) z  a1. z  ...  an 1. z  an
 Es habitual presentar G(z) dividiendo entre zn:
Y ( z ) bo  b1. z 1  ...  bm1. z  ( m1)  bm . z  m
G( z)  
X ( z) 1  a1. z 1  ...  an 1. z ( n 1)  an . z n
 Las raíces de los polinomios denominador (polos) y numerador
(ceros) definen el comportamiento básico del sistema.
 Sistema estable: todos los polos con módulo < 1. En este caso:
Régimen permanente: G(1)=ganancia estática (con unidades).
Respuesta dinámica (transitorio) según posición de polos y ceros. 76
Las matemáticas del control
 Transformada en Z, interpretación:
X(z) Y(z)
G(z)

Y ( z ) bo . z m  b1. z m1  ...  bm1. z  bm


G( z)   n , n  m
X ( z) z  a1. z n 1  ...  an 1. z  an

Plano z
Im

o
x
Re
-1 x 1
x
o
77
Las matemáticas del control
 Sistema continuo vs sistema discreto:
 El semiplano de estabilidad Re(s)<0 se convierte en el interior de
la circunferencia de radio unidad |z| < 1
 s=0 ≡ z=1
 s=∞ ≡ z=0

Plano s Plano z Im
Im

o o
x x
Re
x Re
-1
x 1
x x
o o
78
Las matemáticas del control
 El lazo de control híbrido en forma matemática:
P(s)

C(z) E(z) U(z) U(s) Y(s)


+ R(z) G(s)
-
Y(z)
Tm

 En el lado continuo:
 G(s)=Y(s)/U(s) G(s) : función de transferencia del sistema continuo

 En la parte discreta:
 E(z)=C(z)-Y(z)
 R(z)=U(z)/E(z) R(z) : función de transferencia del sistema discreto

 Elección de Tm:
 Suficientemente pequeño para que en el sistema realimentado se
puedan ‘seguir’ las variaciones: < 0.1 * Ԏsistema_realimentado 79
Las matemáticas del control
 Dos aproximaciones:
 Suponer sistema completo continuo, calcular regulador continuo
R(s) y discretizar:
C(s) E(s) U(s) Y(s)
+ R(s) G(s)
-
Y(s)

 Suponer sistema completo discreto y calcular directamente


regulador discreto 80
Las matemáticas del control
 Dos aproximaciones:
 Suponer sistema completo continuo, calcular regulador continuo
R(s) y discretizar.

 Suponer sistema completo discreto y calcular directamente


regulador discreto
C(z) E(z) U(z) Y(z)
+ R(z) BG(z)
-
Y(z)

BG(z) = discretización del conjunto bloqueador + sistema

(En Matlab)
>> gs=tf([coefs numerador gs], [coefs denominador gs])
>> bgz=c2d(gs,Tm,'zoh')

R(z) = cálculo utilizando teoría de sistemas discretos

81
Las matemáticas del control
 ¡¡¡¡ ATENCION !!!! Las
rk
matemáticas “admiten todo”,
la realidad no. Ejemplo :
 En un sistema con un solo polo,
se puede realimentar con Kp
grande y conseguir una t
respuesta mucho más rápida Cadena abierta
que en cadena abierta. yk
Im
Plano s

Cadena cerrada t
yk
x Re

82
Las matemáticas del control
 ¡¡¡¡ ATENCION !!!! Las matemáticas “admiten todo”,
la realidad no:
 Para conseguir mayor velocidad, el controlador calcula
acciones de control muy grandes al inicio, que son
imposibles de generar en el sistema físico real

uk uk
Cadena abierta Cadena cerrada

t
83
Las matemáticas del control
 Si se desea simular el comportamiento real, hay que
añadir una saturación en el modelo que refleje los
límites del accionador (comportamiento no-lineal)

C(s) E(s) U(s) Y(s)


+ R(s) G(s)
-
Y(s)

C(s) E(s) U(s) Y(s)


+ R(s) G(s)
-
Y(s)

84
Indice
 Introducción control de procesos por computador

 Conceptos básicos para programación de control

 Interfaz del computador con el exterior

 Las matemáticas del control

 Programación del lazo de control

 Programación en lenguaje C

 Implantación del control en el computador

 El control secuencial
85
Programación del lazo de control
 Programación del lazo de control:

Computador
rk

Programa uk Cálculo usk Sal


Control usk

Cálculo
yk adk Ent
yk

86
Programación del lazo de control
 Programación del lazo de control:
 Cada Tm (periodo de muestreo) se debe repetir el
mismo algoritmo.
 El algoritmo debe poder ejecutarse hasta un tiempo
indefinido.
 Ejecución de un paso del lazo de control:
 Actualización de tablas temporales
 Adquisición de datos
 Cálculo de valores adquiridos en sus unidades
 Cálculo de la acción de control (regulador)
 Cálculo de los valores de salida
 Escritura de los dispositivos de salida
 Espera al siguiente Tm 87
Programación del lazo de control
 Variables para almacenar
secuencias temporales: Instante actual
v(t)
 No es posible almacenar v vk-1 vk

todos los valores desde el


inicio del tiempo. Tm

 Son necesarios el valor 0 k-2 k-1 k k


actual y algunos retrasados 0 tact t
(nº finito) para los cálculos.
 Solución. Tabla de los N vk vk
vk[0]
valores más recientes: vk[1] vk-1
float vk[N]; vk[2] vk-2
// En cada instante: ...
vk[N-1] vk-N+1
// vk[i]  vk-i
88
Programación del lazo de control
 Aspecto general de un programa de control
...

main()
{
float c_k,y_k,u_k[N_MAX+1],e_k[M_MAX+1];
otras variables necesarias (ej: m,n, tablas b[i],a[i])

inicializaciones: m,n,b[i],a[i],e_k[i]=0,u_k[i]=0, etc.

while (1)
{
Desplazar Tablas de variables temporales (al menos u_k, e_k)
c_k=Nuevo valor consigna
y_k=Valor leído de sensor
e_k[0]=c_k-y_k;
u_k[0]=CalculoAccionRegulador(e_k,u_k,...);
AplicarAccionDeControl(u_k[0]);
Otras operaciones auxiliares (comu operador, [Link]., etc.)
Sleep(Tm);
}
}
89
Programación del lazo de control
 Aspecto general de un programa de control
... Variables temporales (secuencias):
- Variable ‘normal’ si sólo es necesario
main() valor actual
{ - Array si son necesarios valores anteriores
float c_k,y_k,u_k[N_MAX+1],e_k[M_MAX+1];
otras variables necesarias (ej: m,n, tablas b[i],a[i]) Variables
atemporales
inicializaciones: m,n,b[i],a[i],e_k[i]=0,u_k[i]=0, etc.

while (1)
{
Desplazar Tablas de variables temporales (al menos u_k, e_k)
c_k=Nuevo valor consigna
y_k=Valor leído de sensor
e_k[0]=c_k-y_k;
u_k[0]=CalculoAccionRegulador(e_k,u_k,...);
AplicarAccionDeControl(u_k[0]);
Otras operaciones auxiliares (comu operador, [Link]., etc.)
Sleep(Tm);
}
}
90
Programación del lazo de control
 Aspecto general de un programa de control
... Dar valores iniciales a todas las
variables antes de iniciar el bucle
main()
(para secuencias, típicamente 0)
{
float c_k,y_k,u_k[N_MAX+1],e_k[M_MAX+1];
otras variables necesarias (ej: m,n, tablas b[i],a[i])

inicializaciones: m,n,b[i],a[i],e_k[i]=0,u_k[i]=0, etc.

while (1)
{
Desplazar Tablas de variables temporales (al menos u_k, e_k)
c_k=Nuevo valor consigna
y_k=Valor leído de sensor
e_k[0]=c_k-y_k;
u_k[0]=CalculoAccionRegulador(e_k,u_k,...);
AplicarAccionDeControl(u_k[0]);
Otras operaciones auxiliares (comu operador, [Link]., etc.)
Sleep(Tm);
}
}
91
Programación del lazo de control
 Aspecto general de un programa de control
... Se ejecuta una pasada del bucle
cada Tm: cada ejecución del
main()
bucle corresponde a un nuevo instante
{
float c_k,y_k,u_k[N_MAX+1],e_k[M_MAX+1];
otras variables necesarias (ej: m,n, tablas b[i],a[i])

inicializaciones: m,n,b[i],a[i],e_k[i]=0,u_k[i]=0, etc.

while (1)
{
Desplazar Tablas de variables temporales (al menos u_k, e_k)
c_k=Nuevo valor consigna
y_k=Valor leído de sensor
e_k[0]=c_k-y_k;
u_k[0]=CalculoAccionRegulador(e_k,u_k,...);
AplicarAccionDeControl(u_k[0]);
Otras operaciones auxiliares (comu operador, [Link]., etc.)
Sleep(Tm);
}
}
92
Programación del lazo de control
 Aspecto general de un programa de control
... Si cada ejecución del bucle
corresponde a un nuevo instante,
main() los valores de las señales temporales
{ están ahora retrasados 1 Tm: actualizar
float c_k,y_k,u_k[N_MAX+1],e_k[M_MAX+1];
otras variables necesarias (ej: m,n, tablas b[i],a[i])

inicializaciones: m,n,b[i],a[i],e_k[i]=0,u_k[i]=0, etc.

while (1)
{
Desplazar Tablas de variables temporales (al menos u_k, e_k)
c_k=Nuevo valor consigna
y_k=Valor leído de sensor
e_k[0]=c_k-y_k;
u_k[0]=CalculoAccionRegulador(e_k,u_k,...);
AplicarAccionDeControl(u_k[0]);
Otras operaciones auxiliares (comu operador, [Link]., etc.)
Sleep(Tm);
}
}
93
Programación del lazo de control
 Aspecto general de un programa de control
... Obtener los valores actuales
(del nuevo instante) de las
main() diferentes señales
{
float c_k,y_k,u_k[N_MAX+1],e_k[M_MAX+1];
otras variables necesarias (ej: m,n, tablas b[i],a[i])

inicializaciones: m,n,b[i],a[i],e_k[i]=0,u_k[i]=0, etc.

while (1)
{
Desplazar Tablas de variables temporales (al menos u_k, e_k)
c_k=Nuevo valor consigna
y_k=Valor leído de sensor
e_k[0]=c_k-y_k;
u_k[0]=CalculoAccionRegulador(e_k,u_k,...);
AplicarAccionDeControl(u_k[0]);
Otras operaciones auxiliares (comu operador, [Link]., etc.)
Sleep(Tm);
}
}
94
Programación del lazo de control
 Aspecto general de un programa de control
...
Con los valores actualizados,
main() calcular la nueva acción de
{ control, y aplicarla al exterior
float c_k,y_k,u_k[N_MAX+1],e_k[M_MAX+1];
otras variables necesarias (ej: m,n, tablas b[i],a[i])

inicializaciones: m,n,b[i],a[i],e_k[i]=0,u_k[i]=0, etc.

while (1)
{
Desplazar Tablas de variables temporales (al menos u_k, e_k)
c_k=Nuevo valor consigna
y_k=Valor leído de sensor
e_k[0]=c_k-y_k;
u_k[0]=CalculoAccionRegulador(e_k,u_k,...);
AplicarAccionDeControl(u_k[0]);
Otras operaciones auxiliares (comu operador, [Link]., etc.)
Sleep(Tm);
}
}
95
Programación del lazo de control
 Aspecto general de un programa de control
... Ahora puede haber tiempo
para ‘ocuparse’ de tareas ‘menos
main()
importantes’
{
float c_k,y_k,u_k[N_MAX+1],e_k[M_MAX+1];
otras variables necesarias (ej: m,n, tablas b[i],a[i])

inicializaciones: m,n,b[i],a[i],e_k[i]=0,u_k[i]=0, etc.

while (1)
{
Desplazar Tablas de variables temporales (al menos u_k, e_k)
c_k=Nuevo valor consigna
y_k=Valor leído de sensor
e_k[0]=c_k-y_k;
u_k[0]=CalculoAccionRegulador(e_k,u_k,...);
AplicarAccionDeControl(u_k[0]);
Otras operaciones auxiliares (comu operador, [Link]., etc.)
Sleep(Tm);
}
}
96
Indice
 Introducción control de procesos por computador

 Conceptos básicos para programación de control

 Interfaz del computador con el exterior

 Las matemáticas del control

 Programación del lazo de control

 Programación en lenguaje C

 Implantación del control en el computador

 El control secuencial
97
Programación en lenguaje C
 Ver presentación específica de lenguaje C

98
Indice
 Introducción control de procesos por computador

 Conceptos básicos para programación de control

 Interfaz del computador con el exterior

 Las matemáticas del control

 Programación del lazo de control

 Programación en lenguaje C

 Implantación del control en el computador

 El control secuencial
99
Computadores para control
 Microcontrolador

 Procesador Digital de Señal (DSP)

 Dispositivos Electrónicos Programables (FPGA, PLD)

 Computador embebido

 Ordenador Industrial

 Autómata Programable (PLC)_______


100
Implantación del control
 Variables: almacenan valores actuales y anteriores de entradas,
salidas, estados y parámetros.
 Funciones: realizan cálculos habituales (media, rz, gráfico, …).
 Funcionamiento temporal: los valores evolucionan en el tiempo.
 Acceso a E/S: es necesario intercambiar datos con el mundo real.
 Tiempo-real: importan el valor de la respuesta y su plazo.
 Multi-tarea: varias cosas que hacer ‘a la vez’.
 Programación orientada a eventos: Interrupciones:
Señales binarias externas al
la secuencia de acontecimientos es computador que, cuando se
desconocida a priori activan, provocan que la CPU deje
temporalmente de ejecutar el
 Ejemplos de eventos: programa en curso, para ejecutar
 Vencimiento temporización el código de tratamiento de la
interrupción (ISR).
 Cambio de estado de entrada(s) Una vez terminado el código de la
 Entrada de datos por teclado Interrupciones ISR, la CPU sigue ejecutando el
 … programa.

 Prioridades: algunos eventos son más importantes que otros 101


Implantación del control
 Programación de E/S:
 El intercambio de datos con el mundo exterior se realiza escribiendo
y leyendo puertos de E/S: direcciones “especiales” cuyo contenido
provoca cambios o es modificado por los dispositivos de E/S.
 Los puertos están organizados en direcciones.
 Es necesario conocer las direcciones de E/S de cada dispositivo, y
el significado de cada bit de los puertos.

102
Programación de E/S
 Servicio de eventos:
 Los dispositivos de E/S envían una interrupción a la CPU
cuando necesitan ser atendidos.
 La interrupción provoca que la CPU abandone temporalmente
el programa que estaba ejecutando, pase a ejecutar el código
de la ISR, retornando al programa cuando ésta termina.
 Ejemplo animado disponible en:
[Link]
IRQ

103
Implantación del control
 Sistemas ‘pequeños’:
 Sin soporte de Sistema Operativo
 El programador accede directamente al hardware
Programación de puertos de E/S
Funciones para servicio de interrupciones
 El programador debe realizar la planificación de la
ejecución temporal de las diferentes tareas:
Round-robin: chequeo ordenado de las tareas a realizar
en cada momento, sin uso de interrupciones.
Round-robin con interrupción: las tareas más prioritarias
o puntuales son lanzadas por interrupciones hardware y
servidas en Rutinas de Servicio de Interrupción (ISR).
Function-queue-scheduling: las ISR encolan las tareas a
realizar con sus prioridades. Un planificador round-robin
comprueba la cola y va sirviendo por orden de prioridad
104
Implantación del control
 Sistemas ‘grandes’:
 Una tarea especial Sistema Operativo (S.O.) se encarga de
dar servicio a:
 Acceso al hardware (modo síncrono y asíncrono):
Nivel de S.O.
Nivel de driver
 Planificación de tareas:
Cada vez que sucede un ‘evento’, el S.O. toma el control,
actualiza estado de tareas, y pasa a ejecutar la más prioritaria.
 Gestión de memoria
 El programador debe realizar llamadas a funciones del S.O.
para todos los servicios
 El S.O. puede llamar a funciones del programador (callback)
para rutinas de servicio asíncrono

105
Implantación del control
 Sistemas “pequeños” vs sistemas “grandes”:
 La tarea S.O. requiere recursos (memoria y tiempo
de ejecución), que pueden no estar disponibles en
sistemas pequeños.
 La tarea S.O. requiere ejecutarse en modo
privilegiado: la CPU debe disponer de 2 modos de
funcionamiento (usuario y privilegiado).
 La tarea S.O. facilita operaciones que pueden ser
requeridas en sistemas grandes:
La programación de E/S (no hay que conocer todos los
puertos e interrupciones)
La gestión de tareas (prioridades, sincronización, memoria)
Las protecciones de seguridad basadas en privilegios y
claves.
Las comunicaciones 106
Sistemas “pequeños”
ISR_A() ISR_B()
 Organización del
programa: Servicio evento A Servicio evento B
 Un bucle principal con
la(s) tarea(s) de fondo.
 Funciones de Servicio de main() Variables
Interrupción (ISR) para el globales
servicio de eventos. Inicializaciones
 Las ISR detienen a la
tarea de fondo o a otras INT_A Establecer ISR
ISR: ejecución rápida y sin
esperas.
Tarea Fondo 1
 Gestión de prioridades de
las ISR.
 Las variables compartidas Tarea Fondo 2
por el programa y las ISR
deben ser globales.
107
Sistemas “pequeños”
 Variables globales:
 Se declaran al principio del programa, fuera de todas
las funciones.
 Existen durante todo el programa, y son accesibles
por todas las funciones (incluidas las ISR).
 Por ello, permiten el intercambio de datos entre
funciones que no se llaman directamente (código
principal e ISR).
 ¡¡¡ ATENCION !!!
Es recomendable usar un nombre adecuado para distinguir
las variables globales: comenzando por _ ( ej: int _v1; )
No abusar de las variables globales: utilizarlas sólo cuando
sea estrictamente necesario.
El acceso “concurrente” a variables globales puede dar
lugar a problemas de sincronización. 108
Sistemas “pequeños”
 Ejemplo con interrupciones:
 Realización de un control todo/nada temporizado,
con entrada de consigna por teclado.
#define TM_MS 100
... main()
float _ck; // La consigna es global para que {
// sea accesible por main() y la ISR ...
// Programa el dispositivo de E/S
void ISR_Control() // temporizador para generar una interrupción
// Se ejecuta por interrupción cada TM_ms: // cada TM_ms, y establece que la
// (1) Debe ejecutarse rápido y sin esperas // función de tratamiento será ISR_Control
// (2) Sus variables locales se crean y EstablecerISRTemporiz(TM_ms,ISR_Control);
// destruyen en cada llamada
// (3) Se comunica con main() mediante while (1)
// la variable global _ck {
{ // Este código será interrumpido cada
int adk; // TM_ms para hacer un paso del control,
float yk; // retornando después al mismo código.
printf("Introduzca consigna:");
adk=LeerCanalAD(...); scanf("%d",&_ck);
yk=ConvertirValor(adk,...); }
if (_ck – yk > 0) }
ActivarSalidaControl(...);
else
DesactivarSalidaControl(...);
}
109
Sistemas “pequeños”
 Ejemplo con interrupciones:
 Realización de un control R(z) con entrada de
consigna por teclado.
#define TM_MS 100
#define M 2 main()
#define N 3 {
... ...
float _ck; InicializacionVariables(...);
float _a[N+1],_b[M+1],_uk[N+1],_ek[M+1]; EstablecerISRTemporiz(TM_ms,ISR_Control);

void ISR_Control() while (1)


{ {
int adk,dak; printf("Introduzca consigna:");
float yk; scanf("%d",&_ck);
}
DesplazaTabla(_uk,N+1); }
DesplazaTabla(_ek,M+1);
adk=LeerCanalAD(...); Son globales porque necesitan mantener su
yk=ConvertirValor(adk,...);
_ek[0]=_ck – yk; valor entre una llamada y otra de la función
_uk[0]= ProdEsc(_b,_ek,M+1)- (además, normalmente será main quien les dé
ProdEsc(_a+1,_uk+1,N); los valores iniciales)
dak=ConvertirValor(_uk[0],...);
ActivarSalidaAnalogica(dak,...);
}
Son locales porque NO necesitan mantener su
valor entre una llamada y otra de la función
110
Sistemas “grandes”
 El programador organiza su código en tareas, que se ejecutan
“en paralelo” o, más exactamente, “en concurrencia”.
 Las tareas no siempre quieren ejecutar su código, están en
muchas ocasiones en estado de espera (por teclado, por
temporización, por aviso de otra tarea, …)
 Una tarea especial, el Sistema Operativo, se encarga de:
 Gestión de puertos E/S mediante pequeños programas (drivers)
 Gestión de eventos y temporizaciones
Tarea 1 Tarea 2 Tarea 3 S.O.
 Planificación de tareas
 Gestión de memoria
Ante cualquier evento:
- El [Link] el control (la CPU pasa
a ejecutar su código). Evento Evento Evento Evento
Uso de CPU

- El evento puede provocar el cambio de


estado de alguna tarea.
- El S.O. revisa las tareas pendientes y cede el
control a la más prioritaria que necesite

ejecutarse, hasta el siguiente evento. 111
tiempo
Sistemas “grandes”
 Variedad de Sistemas Operativos:
 Windows, Unix, Linux, Mac OS, Android, VX-Works, …
 Tipos de Sistemas Operativos:
 De tiempo compartido:
El retardo en ejecutar una tarea no es importante.
El S.O. distribuye tiempos de ejecución entre todas las tareas.
 De tiempo real:
El retardo en ejecutar una tarea puede ser muy importante.
El S.O. ejecuta siempre la tarea más prioritaria.
 POSIX: Portable Operating System Interface:
 Basado en Unix
 Mismo interfaz con las tareas (system calls) para diferentes
Sistemas Operativos.

112

También podría gustarte