Documentos de Académico
Documentos de Profesional
Documentos de Cultura
TUXTLA GUTIERREZ.
CATEDRÁTICO:
ING. ILDEBERTO DE LOS SANTOS RUIZ
INTRODUCCION:
Un sistema de control está definido como un conjunto de componentes que pueden regular su
propia conducta o la de otro sistema con el fin de lograr un funcionamiento predeterminado, de
modo que se reduzcan las probabilidades de fallos y se obtengan los resultados buscados. Hoy en
día los procesos de control son síntomas del proceso industrial que estamos viviendo. Estos
sistemas se usan típicamente en sustituir un trabajador pasivo que controla una determinado
sistema (ya sea eléctrico, mecánico, etc.) con una posibilidad nula o casi nula de error, y un grado
de eficiencia mucho más grande que el de un trabajador. Los sistemas de control más modernos
en ingeniería automatizan procesos en base a muchos parámetros
En el presente reporte se dan a conocer los pasos y partes de un sistema de control PID de
temperatura, que le da al usuario la opción de cambiar las ganancias y punto de referencia de
forma local o de forma remota. La visualización de los datos también puede ser de manera local
con un LCD o a distancia por medio de una interfaz grafica (en este proyecto se utilizo MATLAB). La
comunicación entre el sistema físico de control con PIC y la interfaz grafica amigable para un
usuario u operador se hizo utilizando el circuito SN75176, que es un tranceiver bidireccional muy
usado para la comunicación en la industria.
MARCO TEÓRICO:
RS485
RS-485 o también conocido como EIA-485, que lleva el nombre del comité que lo convirtió en
estándar en 1983. Es un estándar de comunicaciones en bus de la capa física del Modelo OSI.
Está definido como un sistema en bus de transmisión multipunto diferencial, es ideal para
transmitir a altas velocidades sobre largas distancias (35 Mbps hasta 10 metros y 100 Kbps en
1.200 metros) y a través de canales ruidosos, ya que reduce los ruidos que aparecen en los voltajes
producidos en la línea de transmisión. El medio físico de transmisión es un par entrelazado que
admite hasta 32 estaciones en 1 solo hilo, con una longitud máxima de 1.200 metros operando
entre 300 y 19.200 bps y la comunicación half-duplex (semiduplex). Soporta 32 transmisiones y 32
receptores. La transmisión diferencial permite múltiples drivers dando la posibilidad de una
configuración multipunto. Al tratarse de un estándar bastante abierto permite muchas y muy
diferentes configuraciones y utilizaciones.
Especificaciones:
Interfaz diferencial
Conexión multipunto
Alimentación única de +5V
Hasta 32 estaciones (ya existen interfaces que permiten conectar 256 estaciones)
Velocidad máxima de 10 Mbps (a 12 metros)
Longitud máxima de alcance de 1.200 metros (a 100 Kbps)
Rango de bus de -7V a +12V
Aplicaciones:
MODELADO
Para la obtención de las temperaturas se uso el Kit de pruebas de Texas Instruments NI ELVIS2.
Con las medidas obtenidas se realizaron los siguientes pasos en MATLAB.
>> t=[0:5:300];
>>T=[26.83,27.46,28.02,28.49,28.92,29.24,29.63,29.88,30.10,30.43,30.65,30.87,31.02,
31.25,31.41,31.51,31.65,31.82,31.85,32.02,32.05,32.16,32.29,32.32,32.38,32.48,32.51
,32.54,32.56,32.59,32.76,32.89,32.92,32.95,32.96,33.05,33.09,33.11,33.17,33.21,33.2
7,33.30,33.32,33.39,33.44,33.49,33.52,33.57,33.57,33.59,33.60,33.62,33.66,33.72,33.
74,33.75,33.78,33.81,33.81,33.84,33.85];
>>v=[11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11
,11,11,11,11,11,11,11];
A continuación, para fines de visualización de la curva que se obtuvo con los datos, se muestra la
siguiente grafica:
2. A continuación se utilizo el comando “ident” para encontrar la función de
transferencia de nuestro sistema de acuerdo a los datos reales medidos en el
paso anterior.
>>ident
>>sisotool
>> H = tf([1.5422,0.35867],[1,0])
Transfer function:
1.542 s + 0.3587
----------------
s
>> hd=c2d(H,1,'Tustin')
Transfer function:
1.722 z - 1.363
---------------
z–1
El objetivo es tener una ecuación en tiempo discreto, para ello se realizó lo siguiente.
………………….1
……………….. 2
DIAGRAMAS ESQUEMÁTICOS:
Diagrama esquematico del control del horno
Diagrama esquemático de circuito para envió de datos por cable par trenzado
CODIGO EN MATLAB
function control
s = serial('COM2');
set(s,'BaudRate',9600);
fopen(s);
f = figure('Units','pixels','Position',[1,1,600,500],...
'MenuBar','none','Name','Controlador PI',...
'NumberTitle','off');
movegui(f,'center')
o0= uicontrol('Style','Text','String','Tem',...
'pos',[300 265 20 30],'visible','off');
o1= uicontrol('Style','Text','String','Ref',...
'pos',[350 265 20 30],'visible','off');
o2= uicontrol('Style','Text','String','KP',...
'pos',[400 265 20 30],'visible','off');
o3= uicontrol('Style','Text','String','KI',...
'pos',[450 265 20 30],'visible','off');
a0 = axes('visible','off','Units','pixels','Position', [300,300,20,160]);
a1 = axes('visible','off','Units','pixels','Position',[350,300,20,160]);
a2 = axes('visible','off','Units','pixels','Position',[400,300,20,160]);
a3 = axes('visible','off','Units','pixels','Position',[450,300,20,160]);
ma = uimenu('Label','Archivo');
mag = uimenu(ma,'Label','Guardar','Callback',@Guardar,...
'Accelerator','G');
quiere_guardar = false;
nombre_completo = 'noname.mat';
temperatura=[];
mam = uimenu(ma,'Label','Modificar','Callback',@Modificar,...
'Accelerator','M');
mas = uimenu(ma,'Label','Salir','Callback',@salir,...
'Accelerator','S');
ml = uimenu('Label','Leer');
mlt = uimenu(ml,'Label','Temperatura','Callback',@Lectura,...
'Accelerator','T');
mlr = uimenu(ml,'Label','Referencia','Callback',@R,...
'Accelerator','R');
mlkp = uimenu(ml,'Label','KP','Callback',@KP,...
'Accelerator','P');
mlki = uimenu(ml,'Label','KI','Callback',@KI,...
'Accelerator','I');
h = uibuttongroup('Title','Modificar','visible','off','Position',[0 .5 .4
1]);
u0 = uicontrol('Style','Radio','String','Referencia',...
'pos',[10 200 100 30],'parent',h,'HandleVisibility','off');
ut0= uicontrol('Style','Edit',...
'pos',[100 200 50 30],'parent',h,'HandleVisibility','off');
u1 = uicontrol('Style','Radio','String','KP',...
'pos',[10 150 100 30],'parent',h,'HandleVisibility','off');
ut1= uicontrol('Style','Edit',...
'pos',[100 150 50 30],'parent',h,'HandleVisibility','off');
u2 = uicontrol('Style','Radio','String','KI',...
'pos',[10 100 100 30],'parent',h,'HandleVisibility','off');
ut2= uicontrol('Style','Edit',...
'pos',[100 100 50 30],'parent',h,'HandleVisibility','off');
b5 = uicontrol('Style','pushbutton',...
'Units','pixels','Position',[180 200 50 30],...
'parent',h,'HandleVisibility','off','String','OK','FontName','Courier
New',...
'Callback',@ok1);
b6 = uicontrol('Style','pushbutton',...
'Units','pixels','Position',[180 150 50 30],...
'parent',h,'HandleVisibility','off','String','OK','FontName','Courier
New',...
'Callback',@ok2);
b7 = uicontrol('Style','pushbutton',...
'Units','pixels','Position',[180 100 50 30],...
'parent',h,'HandleVisibility','off','String','OK','FontName','Courier
New',...
'Callback',@ok3);
function ok1(source,evento)
res1=get(ut0,'String');
F=str2num(res1);
fwrite(s,'E');
fwrite(s,F);
axes(a1)
bar(0,F)
res2=['Se envio REF = ',res1];
msgbox(res2,'Mensaje')
end
function ok2(source,evento)
res3=get(ut1,'String');
H=str2num(res3);
fwrite(s,'G');
fwrite(s,H);
axes(a2)
bar(0,H)
res4=['Se envio KP = ',res3];
msgbox(res4,'Mensaje')
end
function ok3(source,evento)
res5=get(ut2,'String');
J=str2num(res5);
fwrite(s,'I');
fwrite(s,J);
axes(a3)
bar(0,J)
res6=['Se envio KI = ',res5];
msgbox(res6,'Mensaje')
end
set(h,'SelectionChangeFcn');
set(h,'Visible','off');
function Lectura(objeto,evento)
t = timer('ExecutionMode','fixedRate','Period',10,...
'TasksToExecute',inf,'TimerFcn',@timer1s);
start(t)
end
function timer1s(objeto,evento)
fwrite(s,'T');
while (s.BytesAvailable < 1)
end
l1 = fread(s,1);
t1 = l1/2.56;
j=num2str(t1);
c=datestr(now);
v=' ';
temperatura=[j,v,c]
axes(a0)
bar(0,t1)
set(o0,'visible','on');
title(c)
end
function Tutorial(objeto,evento)
open('C:\Documents and Settings\LEO\Escritorio\ejercicios de la
unidad 4.pdf')
end
function Autor(objeto,evento)
open('C:\Documents and Settings\LEO\Escritorio\Prueva\Autor.pdf')
end
function Modificar(objeto,evento)
set(h,'visible','on');
end
function R(objeto,evento)
fwrite(s,'U');
while (s.BytesAvailable < 1)
end
l1 = fread(s,1);
axes(a1)
bar(0,l1)
set(o1,'visible','on');
end
function KP(objeto,evento)
fwrite(s,'V');
while (s.BytesAvailable < 1)
end
l1 = fread(s,1);
axes(a2)
bar(0,l1)
set(o2,'visible','on');
end
function KI(objeto,evento)
fwrite(s,'W');
while (s.BytesAvailable < 1)
end
l1 = fread(s,1);
axes(a3)
bar(0,l1)
set(o3,'visible','on');
end
function Guardar(objeto,evento)
[nombre, ruta] = uiputfile('*.txt', 'Guardar datos');
nombre_completo = [ruta,nombre];
quiere_guardar = true;
end
function salir(objeto,evento)
if quiere_guardar
save(nombre_completo,'temperatura','-ascii')
end
delete(s)
delete(gcf)
end
end
#int_RDA
void recibe()
{
set_adc_channel(0);
delay_us(25);
t1=read_adc();
int8 dato = getc();
switch(dato) {
case 'T':
putc((int8)(t1 >> 2));
case 'U':
putc((int8)ref);