tativo Predictivo baseado en modelo inverso . . . 148 10.3 Script para os exemplos de simulaci ´on co regulador PID . . . 154 10.4 Axuste emp´ırico de regulador PID. M ´etodo Relay Feedback . . . 155 10.5 Regulador PID Gain Scheduling . . . 157 10.5.1 Base de datos . . . 160 10.6 Regulador PID autoaxustable . . . 161 10.6.1 Algoritmo RLS . . . 164 10.7 Controlador adaptativo preditivo baseado en modelo inverso . . . 165 10.7.1 Funci ´ons necesarias para o funcionamento do preditor neuronal . . . 170 10.7.1.1 CalculosTrain.m . . . 170 10.7.1.2 d1logsig m.m . . . 171 10.7.1.3 d1purelin m.m . . . 171 10.7.1.4 dlogsig m.m . . . 172 10.7.1.5 dpurelin m.m . . . 172 10.7.1.6 ErrorChecking.m . . . 173 10.7.1.7 ilogsig m.m . . . 177 10.7.1.8 ipurelin m.m . . . 177 10.7.1.9 kfoldcross.m . . . 178 10.7.1.10 logsig m.m . . . 179 10.7.1.11 MiniBatches.m . . . 180 10.7.1.12 netinit.m . . . 180 10.7.1.13 nnopt2b.m . . . 182 10.7.1.14 nnsimul.m . . . 185 10.7.1.15 purelin m.m . . . 186 10.7.1.16 sbllm OnLINE.m . . . 187 10.7.1.17 Sensitivities2.m . . . 197 10.7.1.18 setfunctions.m . . . 198
10.7.1.19 setsbllmdefaults.m . . . 199 10.8 Script que engloba as tres t ´ecnicas de control . . . 201
Cap´ıtulo 9
Documentaci ´on de partida
ASIGNACIÓN DE TRABAJO FIN DE GRADO
En virtud de la solicitud efectuada por: En virtud da solicitude efectuada por:
APELLIDOS, NOMBRE: Romero Montero,Alejandro
APELIDOS E NOME:
DNI: Fecha de Solicitud: FEB2015
DNI: Fecha de Solicitude:
Alumno de esta escuela en la titulación de Grado en Ingeniería en Electrónica Industrial y Automática, se le comunica que la Comisión de Proyectos ha decidido asignarle el siguiente Trabajo Fin de Grado:
O alumno de esta escola na titulación de Grado en Enxeñería en Electrónica Industrial e Automática, comunícaselle que a Comisión de Proxectos ha decidido asignarlle o seguinte Traballo Fin de Grado:
Título T.F.G:Análisis comparativo de técnicas de control sobre planta de laboratorio de control de
nivel
Número TFG: 770G01A96
TUTOR:(Titor) Fontenla Romero,Oscar
COTUTOR/CODIRECTOR: Vicente Suárez Peñaranda
La descripción y objetivos del Trabajo son los que figuran en el reverso de este documento:
A descrición e obxectivos do proxecto son os que figuran no reverso deste documento.
Ferrol a Miercoles, 17 de Junio del 2015
Retirei o meu Traballo Fin de Grado o dia _____ de ______ do ano ___________
Alcance:
- Estudio de las diferentes técnicas de control que se emplearán en el análisis comparativo, contemplando al menos las siguientes:
* PID ? Gain Scheduling * PID Adaptativo
* Control adaptativo basado en modelo inverso
- NOTA: Se proporcionará el material para la implementación.
- Simulación de las diferentes técnicas sobre funciones de transferencia significativas, con el objetivo de verificar su comportamiento.
- Implementación de los controles sobre la planta real.
- Pruebas y validación de la propuesta sobre la planta de laboratorio.
- Estudio comparativo del rendimiento de las diferentes alternativas contempladas. - Análisis de resultados y extracción de conclusiones.
9.2.
Software para o control da tarxeta NI USB-6008 con Matlab
Util´ızanse basicamente 4 funci ´ons para o control da tarxeta, as cales serven para configu- rar, ler, escribir e desconfigurar. Pres ´entanse a continuaci ´on as funci ´ons mencionadas.9.2.1. DAQ Start.m
Esta funci ´on serve para configurar a tarxeta, desta forma dispo ˜nerase dunha canle de en- trada (AI0) e d ´uas de sa´ıda (AO0 e AO1). Todas as canles se configuran da mesma forma porque, malia que a tarxeta s ´o pode xerar sinais de 0 a 5 V, disp ´on dun circu´ıto acondicionador para amplificar o sinal de 0 a 10 V. Desta forma, a tarxeta traballar ´a con sinais,tanto de entrada como de sa´ıda, de 0 a 10 V e o programa recibir ´a e enviar ´a sinais do 0 ao 100 %.
function []=DAQ Start()
% This function configures the DAQ input and output
global AI
global AO
Device=daqhwinfo('nidaq'); % Find the desired device
ID=Device.InstalledBoardIds{1}; % Select the correct device from a list
AI=analoginput('nidaq',ID); % Inicialized of the input channel
AO=analogoutput('nidaq',ID); % Inicialized of the output channel
Input channel=addchannel(AI,0); % Configure input channel (AI−0)
Input channel.InputRange=[−10 10]; % Voltage input range
Input channel.UnitsRange=[−100 100]; % Internal input range
Input channel.Units=' %'; % Internal units for input
Output channel=addchannel(AO,[0 1]); % Configure output channel [AO−0 AO−1]
Output channel.OutputRange=[0 5]; % Voltage output range
Output channel.UnitsRange=[0 100]; % Internal output range
Output channel.Units=' %'; % Internal units for output
end
9.2.2. DAQ Read.m
Con esta funci ´on pode lerse o dato presente na canle de entrada, estando este sempre no rango de 0 a 100 %.O emprego da mesma ser´ıa da forma: “Input 0 = DAQ Read ()”.
function [Input data]=DAQ Read()
global AI
Input data=getsample(AI);
end
9.2.3. DAQ Write.m
Esta funci ´on serve para o env´ıo dos datos ´a tarxeta de adquisici ´on. Estes datos deber ´an estar sempre no rango de 0 a 100 % e o emprego da funci ´on ser´ıa da forma que segue: “DAQ Write (Output 0, Output 1)”.
function []=DAQ Write(Output data 0,Output data 1)
% This function write de desired value in the configured DAQ output
global AO
% Ensure that the value is inside the operation range
if Output data 0>100 Output data 0=100;
elseif Output data 0<0 Output data 0=0;
end
if Output data 1>100 Output data 1=100;
elseif Output data 1<0 Output data 1=0;
end
putsample(AO,[Output data 0 Output data 1]);
end
9.2.4. DAQ Stop.m
Coa derradeira das funci ´ons o que se fai ´e liberar as canles de entrada e sa´ıda da DAQ, as´ı como o reseteo dos sinais xerados a 0 V.
function [] = DAQ Stop()
% This function is used to finaliced the uses of the DAQ
global AI
global AO
stop(AI); delete(AI);
% Clear the output channel
putsample(AO,[0 0]); % Ensure the output channel is resetted
stop(AO); delete(AO);
Cap´ıtulo 10
C ´odigo fonte Matlab
No presente anexo rec ´ollense os diferentes scripts utilizados para realizar este traballo. Incl ´uense tanto os c ´odigos finais correspondentes a cada unha das t ´ecnicas de control estu- dadas, como os scripts utilizados para a toma de contacto coa planta (reguladores P e PI), os exemplos de simulaci ´on ou o empregado para o axuste emp´ırico do regulador PID.
Nas figuras 10.0.4.1 e 10.0.4.2 pres ´entanse uns diagramas de fluxo que permiten ver de forma clara o esquema xeral de funcionamento de cada un dos controladores dese ˜nados.
Figura 10.0.4.2 –Detalle do bloque ‘CONTROLADOR’
10.1.
Reguladores Proporcional (P) e Proporcional-Integral (PI)
No seguinte c ´odigo at ´opanse recollidos os reguladores proporcional e proporcional-integral feitos nun primeiro momento durante a fase de toma de contacto coa planta.%% Reguladores Proporcional e Proporcional−Integral %% INICIALIZACI´ON E CONFIGURACI´ON
% Inicializar DAQ
DAQ Start; n=180;
% Consigna e constante proporcional regulador
SP=70; k=1;
% Inicializaci´on dos valores de sa´ıda
Output 0=0; % Control Bomba
Output 1=0; % V´alvula
% Inicializaci´on dos vectores para gardar datos
OUTPUT 0=zeros(1,n); INPUT=zeros(1,n); EP=zeros(1,n);
pause on % Habilitar as pausas
figure
for i=1:n
%% LECTURA
%% CONTROL ep=(SP−Input) % S´o proporcional % Output 0=ep*k % Proporcional−Integral if i==1 Output 0=ep*k; else
Output 0=ep−EP(i−1)*0.97+OUTPUT 0(i−1);
end
%% ESCRITURA
DAQ Write(Output 0,Output 1) % Xerar as sa´ıdas %% OUTROS
OUTPUT 0(i)=Output 0; INPUT(i)=Input; EP(i)=ep;
% Tempo de mostaxe de aproximadamente 1 segundo
pause(1)
% Visualizaci´on de datos
plot(1:n,INPUT,'k',1:n,EP,'r',1:n,SP,'b:')
legend('NIVEL PLANTA','ERRO','Consigna','Location','BestOutside') xlabel('Tempo(s)');
ylabel('Nivel ( %)');
% Paro a trav´es de teclado
key=get(gcf,'currentcharacter') if key=='q' break end end; %% DESCONFIGURACI´ON
pause off % Desactivar pausas