Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
1
Diseño e implementación de un framework para
desarrollos controladores PID, medición de parámetros
de estimación e identificación bajo plataforma Rockwell
y plataformas de procesos
Brayan Eduardo Camacho Pacheco
Trabajo de grado de ingeniería en control en la modalidad monografía
Director:
Ing. Andrés Escobar
Universidad Distrital “Francisco José De Caldas”
Facultad Tecnológica
Programa de Ingeniería en Control
2
Dedicatoria
Este proyecto está dedicado cada persona
Que de forma directa en indirecta
Pudieron contribuir con el proyecto
A mi abuela por su infinito apoyo
Y darme la oportunidad de llevar un proceso Académico
3
Agradecimiento
A mi familia por su apoyo incondicional
Siempre resultará difícil agradecer a todos aquellos que
De una u otra manera nos han acompañado y apoyado
En nuestra estadía en la Universidad.
A nuestras familias por su apoyo incondicional
A nuestro tutor por su disposición y ayuda
En el desarrollo este proyecto.
4
RESUMEN
Se realizó un Framework que permita estimular sistemas con las señales: paso,
cuadrada y seudoaleatoria, los datos obtenidos son utilizados para
identificación de la dinámica de la planta con el fin de obtener un controlador
de topología PID que mejor se adapte a la misma, medición de parámetros en
tiempo real e identificación en tiempo real, los objetivos del proyecto son
exponer el procedimiento paso a paso y que sea una guía para el diseño y la
implementación de controladores por medio de autómatas programables,
optimizar la programación para el momento de generar cambios y hacer que el
las modificaciones y el mantenimiento al código se realice de una forma más
fácil.
Para ello el Framework y las librerías son hechas para RSlogix 5000, y la
simulación de los sistemas son desarrolladas en Matlab (Matrix Laboratory), se
dotan de unas prácticas que ayudaran al estudiante en aspectos básicos como
el manejo de las librerías, una introducción al RSlogix 5000, comunicación OPC
(Open Platform Communications) básica, manejo de identificación(Toolbox
Ident y el realizado), parámetros de diseño y generación de controladores
(PD(siglas), PI (siglas), PID (siglas)) ,ajuste y medición de parámetros.
5
Abstract
a framework which can stimulate systems signals was performed: step, square
or pseudo-random, the data obtained is used to identify the dynamics of the
plant in order to obtain a PID controller topology best suited to it, the objectives
are expose step and is a guide for the design and implementation of controllers
through process automation systems, optimize programming time to create
change and make the changes and maintaining the code carried out in an
easier way.
For this, the Framework and libraries are made to RSLogix 5000, and
simulation systems are developed in Matlab (Matrix Laboratory), they are
provided with an internship to assist the student in basic issues such as the
management of libraries, an introduction to RSLogix 5000 communication OPC
(Open Platform communications) network, handling identification (Ident Toolbox
and realized), design parameters and generation of controllers (PD (acronym),
PI (short), PID (acronym)), adjustment and measurement parameter.
6
Contenido Introducción ................................................................................................................................ 11
1.1 Descripción ........................................................................................................................ 11
1.2 Planteamiento del problema ............................................................................................ 12
Objetivos ..................................................................................................................................... 13
2.1 Objetivo General ............................................................................................................... 13
2.2 Objetivos Específicos ......................................................................................................... 13
Antecedentes .............................................................................................................................. 14
3.1 Proyectos académicos en otros países.............................................................................. 14
3.2 Proyectos de grado en la Universidad Distrital ................................................................ 15
Modelos de identificación ........................................................................................................... 16
4.1 Ecuaciones en diferencias ................................................................................................. 16
4.2 Modelos lineales ............................................................................................................... 18
4.3 Estimación de parámetros en tiempo real ........................................................................ 20
4.4 Modelo de regresión por mínimos cuadrados .................................................................. 20
CONTROLADOR PID DIGITAL ....................................................................................................... 21
5.1 Controlador ....................................................................................................................... 21
5.2 Especificaciones de diseño ................................................................................................ 22
5.3 Acciones básicas de control ............................................................................................. 24
5.3.1 Acción proporcional (P) .............................................................................................. 24
5.3.2 Acción Integral (I) ...................................................................................................... 25
5.3.3 Acción Proporcional Integral (PI) ............................................................................... 26
5.3.4 Acción Proporcional Derivativo (PD) ......................................................................... 29
5.4 Métodos de discretización ................................................................................................ 31
Señales básicas de estimulo ........................................................................................................ 32
6.1 Ejemplo de un sistema de primer orden ........................................................................... 32
6.2 Llevar el sistema a un estado estable ............................................................................... 35
6.3 Experimento realizado con una señal paso ....................................................................... 39
6.4 Experimento realizado con una señal cuadrada ............................................................... 45
6.5 Experimento realizado con una señal seudoaletoria ........................................................ 51
Acciones básicas de control Rockwell ......................................................................................... 58
7.1 Muestreo en PLCs de Rockwell ......................................................................................... 58
7
7.2 Controlador proporcional ................................................................................................. 61
7.3 Controlador integral .......................................................................................................... 64
7.4 Acción derivativa. .............................................................................................................. 69
Controlador PID de Rockwell ...................................................................................................... 76
8.1 Controlador PID para Rockwell ......................................................................................... 76
8.2 Análisis de PID y polos ....................................................................................................... 81
8.3 Generar bloque que analice parámetros de desempeño en Rockwell ............................. 84
Framework para el manejo de bloques de rockwell ................................................................... 91
CONCLUSION ............................................................................................................................. 100
Bibliografia ................................................................................................................................ 101
ANEXOS ..................................................................................................................................... 104
8
Lista de figuras
Figura 1 : Modelo ARX ................................................................................................................. 18
Figura 2: Modelo ARMAX ............................................................................................................ 18
Figura 3: Modelo OE .................................................................................................................... 19
Figura 4:Modelo BJ ...................................................................................................................... 19
Figura 5: Análisis de un proceso .................................................................................................. 21
Figura 6: Especificaciones de diseño controlador ....................................................................... 22
Figura 7:Esquema general de proceso con controlador ............................................................. 23
Figura 8: Esquema general de proceso para hallar el error ........................................................ 23
Figura 9: Diagrama de bloques de controlador proporcional ..................................................... 24
Figura 10: Respuesta a distintas ganancias ................................................................................. 25
Figura 11: Diagrama de bloques de controlador PID .................................................................. 26
Figura 12: Respuesta a distintas ganancias integrales ................................................................ 26
Figura 13: Respuesta de controlador PI a distintas ganancias Kp ............................................... 27
Figura 14: Respuesta de controlador PI a distintas ganancias Ki ................................................ 28
Figura 15: Respuesta de controlador PI a distintas ganancias Ki y Kp ........................................ 28
Figura 16: Respuesta de Controlador PD a distintas ganancias Kp y Kd ..................................... 29
Figura 17: Respuesta de controlador PID .................................................................................... 31
Figura 18: Planta de nivel de cilindro acostado .......................................................................... 32
Figura 19: Funcion de transeferencia generada en simulink ...................................................... 34
Figura 20: Esquema de señal Step............................................................................................... 35
Figura 21: Diagrama de clases del Step ....................................................................................... 36
Figura 22 Diagrama de flujo de Step ........................................................................................... 37
Figura 23: Archivo de propiedades de Step generado en Rockwell ............................................ 38
Figura 24: Bloque de funcion Step .............................................................................................. 38
Figura 25: Ladder de la función Step ........................................................................................... 39
Figura 26: Esquema de señal pasó .............................................................................................. 39
Figura 27: Diagrama de clases de la señal paso .......................................................................... 41
Figura 28: Diagrama de flujo de la señal paso ............................................................................ 42
Figura 29: Archivo de propiedades de paso generado en Rockwell ........................................... 43
Figura 30: Bloque de la señal paso .............................................................................................. 43
Figura 31: Ladder de la función paso .......................................................................................... 44
Figura 32: Esquema de estímulo del sistema .............................................................................. 44
Figura 33: Análisis de muestreo para sistema de primer orden ................................................. 44
Figura 34: Identificacion con señal paso ..................................................................................... 45
Figura 35: Esquema de la señal cuadrada ................................................................................... 46
Figura 36: Diagrama de clases de la señal cuadrada ................................................................... 47
Figura 37: Diagrama de flujo de la señal cuadrada ..................................................................... 48
Figura 38: Archivo de propiedades generado por Rockwell ....................................................... 49
Figura 39: Bloque de la señal cuadrada ...................................................................................... 49
Figura 40: Ladder de la señal cuadrada ....................................................................................... 50
9
Figura 42: Identificación estimulada con señal cuadrada ........................................................... 50
Figura 43: Esquema de la señal seudoaleatoria .......................................................................... 51
Figura 44: Diagrama de clases de la señal seudoaleatoria .......................................................... 53
Figura 45: Diagrama de flujo de la señal seudoaleatoria ............................................................ 54
Figura 47: Archivo de propiedades de seudoaleatoria generado por Rockwell ........................ 55
Figura 48: Bloque de seudoaleatoria .......................................................................................... 55
Figura 49: Ladder de seudoaleatoria ........................................................................................... 56
Figura 50: Identificación al estímulo con seudoaleatoria ........................................................... 56
Figura 51: Esquema de controlador generado por autómata..................................................... 58
Figura 52: Generar nueva rutina en Rockwell ............................................................................. 59
Figura 53: Seleccionar el periodo de muestreo en Rockwell ...................................................... 59
Figura 54: Análisis de un retraso ................................................................................................. 60
Figura 55: Diagrama de flujo de retardo ..................................................................................... 60
Figura 56: Esquema general de controlador proporcional ......................................................... 61
Figura 57: Archivo de propiedades de controlador proporcional generado por ROCKWELL ..... 63
Figura 58: Bloque de Ganancia.................................................................................................... 63
Figura 59: Ladder de ganancia .................................................................................................... 64
Figura 60: Diagrama de bloques de integrador........................................................................... 65
Figura 61: Diagrama de flujo de integrador ................................................................................ 65
Figura 62: Diagrama general de integrador ................................................................................ 66
Figura 63: Archivo de propiedades de Integral generado por Rockwell ..................................... 68
Figura 64: Bloque de integral ...................................................................................................... 68
Figura 65: Ladder de integral ...................................................................................................... 69
Figura 66: Diagrama de bloques de derivador ............................................................................ 70
Figura 67: Diagrama de flujo de derivador.................................................................................. 71
Figura 68: Diagrama general de derivador .................................................................................. 72
Figura 69: Archivo de propiedades derivador generado por Rockwell ....................................... 74
Figura 70: Bloque derivador ........................................................................................................ 74
Figura 71: Ladder de derivador ................................................................................................... 75
Figura 72: Diagrama de bloques de PID ...................................................................................... 76
Figura 73: Diagrama de bloque Pid con multiples entradas ....................................................... 77
Figura 74: Diagrama de clases de controlador PID ..................................................................... 78
Figura 75: Diagrama general de entrada del bloque PID ............................................................ 79
Figura 76: Diagrama general de salida del bloque PID................................................................ 80
Figura 77: Diagrama de bloques PID ........................................................................................... 82
Figura 78: Parámetros de desempeño ........................................................................................ 84
Figura 79: Máximo sobre impulso ascendente ........................................................................... 85
Figura 80: Máximo sobre impulso descendente ......................................................................... 86
Figura 81: Diagrama de flujo de Maximo sobre impulso ............................................................ 87
Figura 82: Análisis de tiempo de estabilización .......................................................................... 88
Figura 83: Diagrama de flujo de tiempo de estabilización .......................................................... 89
Figura 84: Bloque de parámetros ................................................................................................ 90
Figura 85: Ladder de parametros ................................................................................................ 90
Figura 86: Diagrama de OPC........................................................................................................ 91
Figura 87: OPC matlab ................................................................................................................. 92
10
Figura 88: OPC RSlinx .................................................................................................................. 93
Figura 89: Comunicación por RSlinx ............................................................................................ 94
Figura 90: Template ganancia proporcional ............................................................................... 94
Figura 91: Template de la ganacia integral ................................................................................. 95
Figura 92: Template de Ganancia Derivativa ............................................................................. 95
Figura 93: Template con propiedades de controlador................................................................ 96
Figura 94: Template para parametros de diseño ........................................................................ 96
Figura 95: Template con propiedades de la señal pasó .............................................................. 97
Figura 96: Template con propiedades de la señal cuadrada ...................................................... 97
Figura 97: Template con propiedades de la señal seudoaleatoria ............................................. 98
Figura 98: Template visualizar señal de estimulo ....................................................................... 98
Figura 99: Template de identificación ......................................................................................... 99
11
Introducción
1.1 Descripción
La implementación de controladores PID es una de las más usadas a nivel
industrial en el control de proceso, los primeros PID se hacían de forma
análoga con circuitos integrados, resistencias variables, condensadores, etc…
los cuales dependiendo del entorno podrían generar complicaciones a la hora
de aplicarse ya que los montajes pueden volverse robustos, ruido
electromagnético, un complejo ajuste y dificultades para aplicarse en ciertos
sistemas por una infinidad de motivos. A medida que la electrónica digital ha
empezado a evolucionar por medio de sistema programables se han remplazar
los PID análogos a PID digitales ya que suelen ser mucho más factibles y más
versátiles a la hora de su realización y su implementación, también los
montajes se reducen bastante.
Se realiza un Framework que permita estimular sistemas con las señales
(paso, cuadrada y seudoaleatoria) correspondiente se identificación para por
ultimo con estos datos aplicar un controlador de topología PID que mejor se
adecue , la idea de este proyecto es hacer las pautas y que sea el camino para
la realización de controladores por medio de autómatas programables , como
se debe realizar la programación de la mejor manera para el momento de
generar cambios y hacer mantenimiento al código se haga de una forma más
fácil
Para esto el Framework y las librerías son hechas para rslogix 5000, y la
simulación de los sistemas son hechas en Matlab, también se dotan de unas
prácticas que ayudaran al estudiante en aspectos básicos, el manejo de las
librerías, una introducción RSlogix 5000, comunicación OPC básica, manejo de
identificación, parámetros de diseño y generación de controladores (PD, PI,
PID) y medición de parámetros.
12
1.2 Planteamiento del problema
La implementación de controladores PID se tienden a realizar e implementar
con unas prácticas de diseño deficientes y con una mala optimización, la idea
es hacer una herramienta fácil de aplicar, con mantenimiento simple, que
pueda ser ajustada caliente si el sistema lo permite, enfocada a que los
estudiantes puedan aplicar sistemas de control digital de la forma más
adecuada para cualquier tipo de proceso
13
Objetivos
2.1 Objetivo General
Diseñar e implementar controladores PID digitales por medio de herramientas
de desarrollo de PLCs para múltiples lazos de control.
2.2 Objetivos Específicos
Generar las señales básicas de estimulación de sistemas SISO las cuales
son (señal paso, señal cuadrada y señal seudoaleatoria).
Generar modelos estimados de primer y segundo orden por medio de un
PLC.
Generar acciones básicas de control, ganancia proporcional, ganancia
integral y ganancia derivativa.
Crear un bloque PID con las siguientes características (Funcione en
paralelo o serie PID simple optimizado, medición de parámetros de
desempeño: tiempo de estabilización, máximo sobre impulso y error de
estado estacionario.
Framework para la implementación de los bloques del PLC
14
Antecedentes
3.1 Proyectos académicos en otros países
Título: “Auto-tuning of PID Parameters with Programmable Logic
Controller ”, Autoajuste de parámetros de PID con controlador lógico
programable “.[1]
Autor: Dilsad Engin ,Department of Control and Automation
Technology Ege University ,and Mustafa Engin , ,Department
of Control and Automation Technology Ege University
Año 2013
Descripción : Diseño de PID que se ajusta automáticamente
por Ziegles –Nichols por medio de la herramienta Simulink de
Matlab para ayudar a los programadores en la programación
de PLCs
Título : “Study of PID Control System For Ant Colony Algorithm”
Estudio de sistemas de control PID para un algoritmo de colonia de
hormigas [2]
Autor : Hong He ,Tianjin University of Technology ,Fang Liu ,
Tianjin University of Technology, Li Li , Tianjin University of
Technology , Yi Wu , Tianjin University of Technology , Jin-
Rong Yang , Tianjin Key Laboratory For Control Theory and
Application in Complicated System ,Lei Su, and Tianjin Key
Laboratory For Control Theory and Application in
Complicated System.
Año : 2009
Descripción: Propone soluciones de sistemas de control PID
basado en el algoritmo de colonia de hormigas, ya que los
parámetros de PID no tienen forma de auto adaptarse.
15
3.2 Proyectos de grado en la Universidad Distrital
Título : “Implementación de PID Discreta ”[3]
Autor: Eder Leandro Cuesta Calderón, Universidad Distrital
Francisco José de Caldas.
Año : 2010
Descripción: Adaptar Bloques de PID y toolbox IDENT para
mejorar aplicaciones y que se adapten a las dinámicas de los
estudiante
16
Modelos de identificación
4.1 Ecuaciones en diferencias
Una ecuación en diferencias se encuentra definida por el modelo del siguiente
tipo [4][5][6][7]
. ( ) ( ) ( )/ ( ) ( ))
(1.1)
Donde
( )
( )
(1.2)
Y ( ) Es un vector de valores arbitrarios para una función no lineal.
Otra forma de escribir una ecuación diferencial para un sistema de primer
orden es introduciendo un numero de variables internas .La expresión para
este tipo de variables internas se da de la siguiente forma.
( ) ( ) (1.3)
E introducimos en un vector
( )
(
( )
( ))
(1.4)
La ecuación en diferencias escrita para un sistema de primer orden es
( ) ( ( ) ( )) (1.5)
Donde ( ) es una función vectorial con n componentes
( )
(
( )
( ))
(1.6)
Puede hacerse de la siguiente expresión
17
( ) ( ( ) ( ) ( ) ( ))
( ) ( ( ) ( ) ( ) ( ))
.
.
. ( ) ( ( ) ( ) ( ) ( ))
(1.7)
Las salidas del modelo se calculan a partir de las variables internas ( ) y las
entradas ( ):
( ) ( ( ) ( )) (1.8)
Puede hacerse de la siguiente expresión
( ) ( ( ) ( ) ( ) ( ))
( ) ( ( ) ( ) ( ) ( ))
.
.
. ( ) ( ( ) ( ) ( ) ( ))
(1.9)
Al final los modelos del (1.6) y los modelos del (1.9) corresponden a las
siguientes ecuaciones en tiempo discreto.
( ) ( ( ) ( )) (1.10a)
( ) ( ( ) ( )) (1.10b)
18
4.2 Modelos lineales
Existen sistemas y subsistemas que no pueden ser modelados en base a
percepciones físicas. La razón puede ser que la función que representa el
sistema no puede ser identificada por variables físicas o no se pueden
relacionar. Es entonces posible utilizar modelos estándar que por experiencia
son capaces de manejar una amplia gama de sistemas dinámicos. Los
sistemas lineales constituyen la clase más común de modelos estándar.
Estos modelos nos dicen su tamaño (orden del sistema) y pueden ser
ajustados con valores del sistema (datos)[8]
El modelo ARX es de la forma
( ) ( ) ( ) (2.1)
Que puede ser representado
B ∑ 1/A Y(t)U(t)
e(t)
Figura 1 : Modelo ARX
El modelo ARMAX está representado de la forma
( ) ( ) ( ) (2.2)
Que puede ser representado
B ∑ 1/A Y(t)U(t)
e(t)
C
Figura 2: Modelo ARMAX
19
El modelo OE está representado de la forma
( )
( ) ( )
(2.3)
Que puede ser representado
B/F ∑ Y(t)U(t)
e(t)
Figura 3: Modelo OE
EL modelo BJ está representado de la forma
( )
( )
( )
(2.4)
Que puede ser representado
B/F ∑ Y(t)U(t)
e(t)
C/D
Figura 4:Modelo BJ
20
4.3 Estimación de parámetros en tiempo real
Uno de los modelos más utilizados a la hora de realizar una identificación son
los modelos de regresión por mínimos cuadrados y llevarlo a uno de los
modelos lineales que se representan de la siguiente forma[9]
( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) (5.1)
Donde es la variable observada que en términos de control es el valor de
salida de un proceso en un instante donde son los parámetros del
modelo para ser determinados y son funciones conocidas que
quizás depende de otras funciones conocidas.
Definiendo los parámetros de modelo en el vector
( ) , - (5.2)
Definiendo las funciones de salida en el vector
( ) , - (5.3)
El modelo es utilizado en unas variables de muestras que en este caso son ( ) ,
es el instante en el que se toma el dato. La variable ( ) son llamadas
variables de regresión las variables * ( ) ( ) + son obtenidas en un
experimento.
4.4 Modelo de regresión por mínimos cuadrados
Para hallar un resultado apropiado para ecuación (5.1) nos guiamos por la
solución de mínimos cuadrados
( )
∑( ( ) ( ) )
(5.4)
Donde las soluciones del sistema están dadas por.
( ) , ( ) ( ) ( )- (5.5)
El error estimado de las muestras está dado por.
( ) , ( ) ( ) ( )- (5.6)
El vector que define la ecuación en diferencias está dada.
21
[ ( )
( )]
(5.7)
Donde la representación del sistema está dada
( ( ))
(∑
( ) ( ))
(5.8)
Donde el error residual está dado por
( ) ( ) ( ) (5.9)
La ecuación de mínimos cuadrados está representada del siguiente
modo.
( ) (5.10)
Donde los parámetros del modelo vienen especificados del siguiente
modo
( ) (5.11)
CONTROLADOR PID DIGITAL
5.1 Controlador
El objetivo de los controladores en un sistema es el siguiente.[10]
PROCESO CONTROLADO
y(n)
Figura 5: Análisis de un proceso
Determine que debe hacer el sistema y cómo hacerlo (especificaciones
de diseño)
22
Determine la configuración del compensador o controlador relativa a
como está conectado el proceso del controlador.
Determine los valores de los parámetros del controlador para alcanzar
los objetivos de diseño.
5.2 Especificaciones de diseño
Figura 6: Especificaciones de diseño controlador
Donde los criterios de desempeño están datos por los siguientes parámetros
[11][12][13]
Máximo sobre impulso está dado por:
(6.1)
Donde el tiempo de estabilización está dado por el tiempo en que le toma a la
señal llegar a la región de estabilidad.
Donde el error de estado estacionario está dado por
0 5 10 15 20 25 30 35 40 45 50
-0.2
0
0.2
0.4
0.6
0.8
1
1.2
1.4
Dominio del tiempo (s)
Valo
r (V
)
Especificaciones de diseño
Maximo sobreimpulso
Region de establidad
Region de establidad
Tiempo de estabilizacion
VP
VI
DS
VF
23
CONTROLADOR PROCESO
-
+<e> <sc> <y><r>
Figura 7:Esquema general de proceso con controlador
Donde el error se define.
( ( ) ( )) (6.2)
Donde
( ) ( ) ( ) (6.3)
( ) ( ) ( ) (6.4)
( ) ( ) ( ) ( ) (6.5)
Ahora podemos representar el sistema de la siguiente manera.
T
-
+<e> <y><r>
C*P
Figura 8: Esquema general de proceso para hallar el error
Ahora la salida queda de la siguiente manera
( ) ( ) ( ) (6.6)
Definimos el error
24
( ) ( ) ( ) ( ) (6.7)
Al final la definición que de la siguiente manera
( ) ( )
( )
(6.8)
El error queda del siguiente modo.
( )
( )
( )
(6.9)
5.3 Acciones básicas de control
En los sistemas de control la acción básica es un amplificador simple con
ganancia constante K, ese tipo de acción se le conoce formalmente como
control proporcional, ya que la señal de control a la salida está relacionada
con la entrada del controlador mediante una constante proporcional.
Pero para poder alcanzar otros parámetros de diseño se debe integrar y derivar
el sistema para generar el comportamiento deseado [14][2][6][15]
5.3.1 Acción proporcional (P)
La acción proporcional está dado por
P
-
+<e> <y><r>
KpKp.<e>
Figura 9: Diagrama de bloques de controlador proporcional
Donde la respuesta del sistema se puede analizar de la siguiente
manera.
25
Figura 10: Respuesta a distintas ganancias
Ventajas
Fácil Aplicación
Puede controlar cualquier planta estable
Desventajas
Error de estado de estacionario
La falta de inmunidad al ruido
5.3.2 Acción Integral (I)
La acción integral está dada por una proporcional al error acumulado.
( ) ∫ ( ) ( )
(7.1)
0 5 10 15 20 25 30 35 40 45 50
0
0.2
0.4
0.6
0.8
1
Tiempo (s)
Valo
r (V
)
Respuesta a distintas ganancias
referencia
Valores con ganancia de 1
Valores con ganancia de 10
Valores con ganancia de 100
26
P
-
+<e> <y><r>
Ki/sKi/s.<e>
Figura 11: Diagrama de bloques de controlador PID
Donde la respuesta del sistema se puede dar
Figura 12: Respuesta a distintas ganancias integrales
Ventajas
Error de estado estacionario es 0
Desventajas
Genera sobre impulso en el sistema
Genera oscilaciones sobre la referencia
5.3.3 Acción Proporcional Integral (PI)
0 5 10 15 20 25 30 35 40 45 50
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
Tiempo (s)
Valo
r (V
)
Respuesta de integrador a distintas ganancias
referencia
Valores con ganancia de 1
Valores con ganancia de 10
Valores con ganancia de 100
27
Se puede clasificar de dos formas dependiente e independiente
La dependiente esta descrita por
( ) ( )
∫ ( ) ( ) (
)
(7.2)
Donde Ti se demonima tiempo integral y es quien ajusta la acción integral
O la independiente
( ) ( ) ∫ ( ) ( )
(7.3)
Donde cada parte tiene ganancias independientes
Respuesta del PI independiente para distintos valores de Kp.
Figura 13: Respuesta de controlador PI a distintas ganancias Kp
Respuesta del PI independiente para distintos valores de Ki
0 5 10 15 20 25 30 35 40 45 50
0
0.5
1
1.5
Tiempo (s)
Valo
r(V
)
Respuesta del PI a distintas ganancias Kp
referencia
Kp = 1 , Ki =1
Kp = 10 , Ki = 1
Kp = 100 , Ki =1
28
Figura 14: Respuesta de controlador PI a distintas ganancias Ki
Respuesta del PI independiente para distintos valores de Ki y Kp
Figura 15: Respuesta de controlador PI a distintas ganancias Ki y Kp
Con el control proporcional es necesario que exista error para tener una acción
de control distinta cero. Con acción integral, un error pequeño positivo siempre
nos dará una acción de control creciente y si fuera negativa la señal de control
será decreciente. Este razonamiento sencillo nos muestra que el error en
régimen permanente siempre será cero
0 5 10 15 20 25 30 35 40 45 50
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
Tiempo (s)
Valo
r (V
)
Respuesta PI a distintas ganancias Ki = 100
referencia
Kp = 1 , Ki =1
Kp = 1 , Ki = 10
Kp = 1 , Ki =100
0 5 10 15 20 25 30 35 40 45 50
0
0.2
0.4
0.6
0.8
1
1.2
Tiempo (s)
Valo
r (V
)
Respuesta de PI a varias ganancias Kp y Ki
referencia
Kp = 1 , Ki =1
Kp = 10 , Ki = 10
Kp = 100 , Ki =100
29
Genera oscilaciones sobre la referencia
5.3.4 Acción Proporcional Derivativo (PD)
Se puede clasificar de dos formas dependiente e independiente
La dependiente esta descrita por
( ) ( ) ( )
( ) ( )
(7.4)
Donde Td se denomina tiempo Derivativo y es quien ajusta la acción derivativo
O la independiente
( ) ( ) ( )
( )
(7.5)
Donde cada parte tiene ganancias independientes
Figura 16: Respuesta de Controlador PD a distintas ganancias Kp y Kd
Ventajas
La acción derivativa es anticipada , es decir adelanta la acción de control
frente a la aparición de una tendencia de error ,eso tiende a estabilizar el
sistema puesto que los retardos en el controlador lo tienden a
inestabilizar.
0 10 20 30 40 50 60 70 80 90 100
0
0.2
0.4
0.6
0.8
1
1.2
Tiempo(s)
Valo
r (V
)
Respuesta de PD a distintos ganacias Kp y Kd
referencia
Kp = 1 , Kd =1
Kp = 10 , Kd = 10
30
Desventajas
La acción derivativa es prácticamente inaplicable a la presencia de ruido
este hace que la variable tome valores contra puestos, cuando la
dependiente de ruido entra en señal de error.
Aplicando el filtro de orden uno pasa bajos las ecuaciones quedan de la
siguiente manera
La dependiente esta descrita por
( ) (
)
(7.6)
Donde Td se denomina tiempo Derivativo y es quien ajusta la acción derivativo
O la independiente
( )
(7.7)
Acción de control Proporcional –Integral –derivativo (PID)
Esta acción combinada reúne las ventajas de las tres acciones de control
individuales. La ecuación de un controlador con esta acción combinada se
obtiene mediante.
( ) ( )
∫ ( )
( )
( ) (
)
(7.4)
O la independiente
( ) ( ) ∫ ( ) ( )
( ) (
)
(7.4)
31
Figura 17: Respuesta de controlador PID
5.4 Métodos de discretización
El esquema de PID analógico ha sido usado de manera exitosa en muchos
sistemas de control industrial por más de medio siglo
El esquema básico de un diseño de control digital está dado por.
Tenemos la función de transferencia con propósito de filtrado y control está
dada por:
( )
( )
(7.4)
Donde a y b son para mucho controladores digitales coeficientes reales (alguno
de estos pueden ser cero) podemos representar
0 20 40 60 80 100 120 140
0
0.2
0.4
0.6
0.8
1
1.2
Tiempo(s)
Valo
r(V
)PID
referencia
Proporcional Integral Derivativo (PID)
32
Señales básicas de estimulo Para generar una identificación se deben buscar las señales de perturbación
del sistema de la forma más indicada, La construcción de un modelo para
señales de perturbación depende en cierta media de si se trata por separado y
si es medible.
La respuestas más apropiadas para hallar la respuesta del sistema se debe
llevar a un valor estable y su comportamiento al cambio, y ver cómo se
comporta en un nivel de energía, luego si el sistema durante su proceso tiene
cambios significativos se debe llevar a cabo un estímulo aleatorio con periodo
de estabilización del sistema para esto el proceso se deben hallar los siguiente
experimentos.[16]
Experimento realizado con una señal paso.
Experimento llevado con una señal cuadrada.
Experimento con una señal seudoaleatoria.
6.1 Ejemplo de un sistema de primer orden
Para dar una explicación de cómo implementar una identificación apropiada
nos basaremos en el modelo de una planta nivel de un cilidro acostado como
se muestra en la figura.[17][18][19]
Primero las pruebas las hacemos sobre la simulación de una planta de nivel de
un cilindro acostado.
Figura 18: Planta de nivel de cilindro acostado
Donde
33
= Es el caudal del líquido,
Altura del fluido en el tanque
= Longitud del tanque
Radio de tanque
(8.1)
= La resistencia del flujo de líquido que está definida como el cambio
necesario en la diferencia de nivel líquido para producir un cambio de unidad
en la velocidad de flujo.
, -
√ ( )
(8.2)
El cambio en la altura del sistema está representado por la ecuación diferencial
a partir de la suposición de que el sistema es lineal
( )
(8.3)
Donde C equivale a la capacitancia del tanque
(8.4)
√ ( ) (8.4)
Donde el cambio de nivel de fluido respecto al tiempo se puede representar por
( )
(8.5)
√ ( ) (
)
(8.6)
34
Luego hacemos la ecuación en diferencias en Simulink la cual queda de la
siguiente manera.
Figura 19: Funcion de transeferencia generada en simulink
Donde los parámetros L, RH y r son configurables dependiendo de el tipo de
modelo del sistema que se quiere.
L : Longitud del tanque
r Radio del tanque
Rh Resistencia hidráulica del sistema
Para el caso de lo que queremos hacer los valore de L = 15 , r = 5 , Rh un valor
de 1.
35
6.2 Llevar el sistema a un estado estable
El primer paso es llevar el sistema a un estado estable para esto generamos un
señal con las siguientes características
Figura 20: Esquema de señal Step
En este caso usaremos Rslogix 5000 con el que se genera una señal con esas
características, antes de ponernos a trabajar en el código debemos definir los
datos de entrada y de salida de salida del sistema.[20][21][22]
Los datos de entrada son los que debemos ingresar para saber qué debemos
ingresar sobre la rutina que vamos a hacer en este caso son las siguientes.
Habilitar: Esta variable define si está habilitado funcione y reinicia el
programa permite un mayor asequibilidad para aplicaciones.
Propiedades_step : El cual es un tipo de variable que contiene los datos
que queremos modificar del sistema
Los datos de propiedades son relacionados de la siguiente manera
Valor inicial : Es el valor en el que se inicia la señal de estímulo ,en
muchos casos se inicia en cero como lo es para este ejercicio ,pero hay
sistemas que solo pueden iniciar en ciertos límites para eso se usa esta
entrada
Tiempo inicial: Es un ciclo en el que tarda en pasar del valor inicial al
valor de paso este se debe usar dependiendo de las condiciones del
sistema.
tiempo inicial
valor
inicial
valor
paso
36
Valor Paso: Es el valor al cual se desea estimular para llevar a un modo
estable.
Los datos de salida son los datos que queremos obtener de la rutina.
Salida: La señal de estímulo que queremos representar.
Bandera Timmer : No sirve para generar banderas para utilizar como
herencia en los otros procesos
La lógica de programación que usamos para este tipo de desarrollo es la
lógica orientada objetos si realizamos un diagrama de clases nos quedaría del
siguiente modo, como en Rslogix las librerías no permiten realizar varios
métodos por cada uno se diría que el procedimiento queda comprendido del
siguiente modo.
+ valor inicio ; real+ valor paso ;real
+ Tiempo paso ;Dint
+ Salida ; Real+ Bandera timmer ; Boolean
STEP
Figura 21: Diagrama de clases del Step
Donde el diagrama de flujo de la función la podemos definir de la siguiente
manera.
37
Habilitar
Esta habilitado
contado la cantidad de veces que debe estar en el
tiempo inicial
si
Contador > Tiempo inicial Salida = Valor_Iniciono
Salida = valor_paso
si
Reiniciar Contador y variables
no
Bandera_timmer = True
Figura 22 Diagrama de flujo de Step
38
Donde el archivo de propiedades en Rslogix se genera de la siguiente manera
Figura 23: Archivo de propiedades de Step generado en Rockwell
Ahora generamos el bloque sobre la descripción del diagrama de flujo el cual
que da la siguiente manera.
Para realizar sobre programación por función de bloques
Figura 24: Bloque de funcion Step
39
Para realizar programación por Ladder
Figura 25: Ladder de la función Step
O para realizar programación por texto estructurado
STEP(STEP,Habilitar,Salida,propiedades,bandera_timmer);
Ahora utilizamos el bloque al sistema explicado anteriormente podemos
visualizar lo siguiente.
6.3 Experimento realizado con una señal paso
Ahora ya conociendo un punto mínimo de referencia ahora si vemos la
respuesta del sistema a un estímulo, para esto generamos una señal paso real
la cual tiene la siguiente característica.
Figura 26: Esquema de señal pasó
40
Definimos los datos de entrada y de salida de salida del sistema.
Habilitar: Esta variable define si está habilitado funcione y reinicia el
programa permite un mayor asequibilidad para aplicaciones.
Propiedades_paso : El cual es un tipo de variable que contiene los datos
que queremos modificar del sistema
Los datos de propiedades son relacionados de la siguiente manera
Valor inicial : Es el valor en el que se inicia la señal de estímulo ,en
muchos casos se inicia en cero como lo es para este ejercicio ,pero hay
sistemas que solo pueden iniciar en ciertos límites para eso se usa esta
entrada
Tiempo inicial: Es un ciclo en el que tarda en pasar del valor inicial al
valor de paso este se debe usar dependiendo de las condiciones del
sistema.
Valor Paso: Es el valor al cual se desea estimular para llevar a un modo
estable.
Tiempo Paso: Es un ciclo en el que tarda en pasar del valor paso al valor
final este se debe usar dependiendo de las condiciones del sistema.
Valor Final: Es el valor que generamos para estimular el sistema y poder
realizar identificación
Los datos de salida son los datos que queremos obtener de la rutina.
Salida: La señal de estímulo que queremos representar.
Donde el diagrama de clases que implementamos esta de la siguiente manera
41
+ valor inicio ; real+ valor paso ;real
+ Tiempo inicio ;Dint
+ Salida ; Real+ Bandera timmer ; Boolean
STEP
+ valor final ; real+ Tiempo paso ;Dint
+ Salida ; Real
PASO
Figura 27: Diagrama de clases de la señal paso
Ahora realizamos un diagrama de flujo del proceso.
42
Habilitar
Esta habilitado
contado la cantidad de veces que debe estar en el
tiempo inicial
si
Contador > Tiempo inicial Salida = Valor_Iniciono
Salida = valor_paso
si
Reiniciar Contador y variables
no
contado la cantidad de veces que debe estar en el
tiempo inicial
Contador > Tiempo inicial Salida = Valor_Iniciono
Salida = valor_paso
si
contado la cantidad de veces que debe estar en el
tiempo inicial
Contador2 > Tiempo paso Salida = Valor_pasono
Salida = valor_final
si
Figura 28: Diagrama de flujo de la señal paso
43
Donde el archivo de propiedades en Rslogix se genera de la siguiente manera
Figura 29: Archivo de propiedades de paso generado en Rockwell
Ahora generamos el bloque sobre la descripción del diagrama de flujo el cual
que da la siguiente manera.
Para realizar sobre programación por función de bloques
Figura 30: Bloque de la señal paso
Para realizar programación por Ladder
44
Figura 31: Ladder de la función paso
O para realizar programación por texto estructurado
PASO(PASO,Habilitar,Salida,propiedades);
Ahora procedemos a estimular el sistema para posteriormente realizar
identificación
Señal estimulo Planta
Figura 32: Esquema de estímulo del sistema
Figura 33: Análisis de muestreo para sistema de primer orden
0 5 10 15 20 25 30 35 40 45 50-0.2
0
0.2
0.4
0.6
0.8
1
1.2
Tiempo (s)
Valo
r (V
)
Analisis de respuesta a señal paso
Referencia
Planta estimulada
5T4T3TT 2T
45
Ahora podemos a estimular el proceso el cual hemos calculado anteriormente
la cual nos da un respuesta del siguiente tipo.
Figura 34: Identificacion con señal paso
El cual por medio del toolbox de Matlab no entrega una función de
transferencia del siguiente modo.
(9.1)
Por el método de identificación para un móldelo de primer orden el cual
podemos evidenciar.
6.4 Experimento realizado con una señal cuadrada
Ya que el periodo en que el sistema llega a su estado más alto ahora podemos
evidenciar la respuesta a un aumento en nivel y una disminución del nivel para
evidenciar cómo se comporta tanto las subidas de energía como de las bajadas
para esto generamos una señal de la siguiente forma.
46
Figura 35: Esquema de la señal cuadrada
Definimos los datos de entrada y de salida de salida del sistema.
Habilitar: Esta variable define si está habilitado funcione y reinicia el
programa permite un mayor asequibilidad para aplicaciones.
Propiedades_cuadrada : El cual es un tipo de variable que contiene los
datos que queremos modificar del sistema
Los datos de propiedades son relacionados de la siguiente manera
Valor inicial : Es el valor en el que se inicia la señal de estímulo ,en
muchos casos se inicia en cero como lo es para este ejercicio ,pero hay
sistemas que solo pueden iniciar en ciertos límites para eso se usa esta
entrada
Tiempo inicial: Es un ciclo en el que tarda en pasar del valor inicial al
valor de paso este se debe usar dependiendo de las condiciones del
sistema.
Valor Paso: Es el valor al cual se desea estimular para llevar a un modo
estable.
Tiempo Paso: Es un ciclo en el que tarda en pasar del valor paso al valor
final este se debe usar dependiendo de las condiciones del sistema.
Valor Cuadrada: Es el valor que generamos para decir que tanto sube y
baja con respecto a la referencia.
tiempo inicial
valor
inicial
valor
paso
tiempo paso
tiempo cuadrada
valor
cuadrada
valor
cuadrada
47
Tiempo Cuadrada: Valor en el que toma un valor mayor o menor a la
referencia.
Los datos de salida son los datos que queremos obtener de la rutina.
Salida: La señal de estímulo que queremos representar.
Donde el diagrama de clases que implementamos esta de la siguiente manera
+ valor inicio ; real+ valor paso ;real
+ Tiempo inicio ;Dint
+ Salida ; Real+ Bandera timmer ; Boolean
STEP
+ valor Cuadrada ; real+ Tiempo paso ;Dint
+ Tiempo_cuadrada ; Dint
+ Salida ; Real
CUADRADA
Figura 36: Diagrama de clases de la señal cuadrada
48
Ahora realizamos un diagrama de flujo del proceso
Habilitar
Esta habilitadoReiniciar Contador y
variablesno
STEP1 con las siguentes
propiedades
Si
Valor_inicial = valor inicialValor_paso = valor paso
Tiempo_inicial = tiempo_inicial
Bandera_timmer1
No
STEP2 con las siguentes
propiedades
Si
Bandera_timmer2
No
Valor_inicial = valor pasoValor_paso = valor cuadrada + valor paso
Tiempo_inicial = tiempo_paso
STEP3 con las siguentes
propiedades
Si
Valor_inicial = Valor_paso + valor cuadradaTiempo_inicial = tiempo_cuadrada
Bandera_timmer3
Valor_cuadrada =(valor cuadrado* -1) Bandera_timmer3 = False
Figura 37: Diagrama de flujo de la señal cuadrada
49
Donde el archivo de propiedades en Rslogix se genera de la siguiente manera
Figura 38: Archivo de propiedades generado por Rockwell
Ahora generamos el bloque sobre la descripción del diagrama de flujo el cual
que da la siguiente manera.
Para realizar sobre programación por función de bloques
Figura 39: Bloque de la señal cuadrada
50
Para realizar programación por Ladder
Figura 40: Ladder de la señal cuadrada
O para realizar programación por texto estructurado
CUADRADA(CUADRADA,habilitar,salida,propiedades,setpoint);
Ahora procedemos a estimular el sistema para posteriormente realizar
identificación
Señal estimulo Planta
Figura 41: Esquema de estímulo con señal cuadrada
Ahora podemos a estimular el proceso el cual hemos calculado anteriormente
la cual nos da un respuesta del siguiente tipo.
Figura 42: Identificación estimulada con señal cuadrada
51
El cual por medio del toolbox de Matlab no entrega una función de
transferencia del siguiente modo.
(9.2)
Por el método de identificación para un móldelo de primer orden el cual
podemos evidenciar.
6.5 Experimento realizado con una señal seudoaletoria
Este estimulo se genera para probar todas las respuestas estables del sistema
y hacer una identificación en un rango de acción indicado, teniendo en cuenta
el teorema de muestreo y de estabilidad.
Figura 43: Esquema de la señal seudoaleatoria
Definimos los datos de entrada y de salida de salida del sistema.
Habilitar: Esta variable define si está habilitado funcione y reinicia el
programa permite un mayor asequibilidad para aplicaciones.
Propiedades_cuadrada : El cual es un tipo de variable que contiene los
datos que queremos modificar del sistema
tiempo inicial
valor
inicial
valor
paso
tiempo paso
tiempo Histeresis
valor
Histeresis
valor
Histeresis
52
Los datos de propiedades son relacionados de la siguiente manera
Valor inicial : Es el valor en el que se inicia la señal de estímulo ,en
muchos casos se inicia en cero como lo es para este ejercicio ,pero hay
sistemas que solo pueden iniciar en ciertos límites para eso se usa esta
entrada
Tiempo inicial: Es un ciclo en el que tarda en pasar del valor inicial al
valor de paso este se debe usar dependiendo de las condiciones del
sistema.
Valor Paso: Es el valor al cual se desea estimular para llevar a un modo
estable.
Tiempo Paso: Es un ciclo en el que tarda en pasar del valor paso al valor
final este se debe usar dependiendo de las condiciones del sistema.
Valor Histéresis: Es el valor que generamos para decir que tanto sube y
baja con respecto a la referencia de forma aleatoria entre esos rangos.
Tiempo Histéresis minimo: Valor en el que toma un valor menor a la
referencia de forma aleatoria entre esos rangos.
Tiempo Histéresis Maximo: Valor en el que toma un valor maximo a la
referencia de forma aleatoria entre esos rangos.
Los datos de salida son los datos que queremos obtener de la rutina.
Salida: La señal de estímulo que queremos representar.
Donde el diagrama de clases que implementamos esta de la siguiente manera
53
+valor inicial ; Real+ valor paso ; Real
+ valor Cuadrada ; Real+ Tiempo inicial ; Dint+ Tiempo paso ;Dint
+ Tiempo cuadrada ; Dint
+ Salida ; Real
CUADRADA
+ fRndxxxxx ; Real
CUADRADA RANDOM
+Tiempo histeresis ; Real+ Valor histeresis ; Dint
SEUDOALETORIA
Figura 44: Diagrama de clases de la señal seudoaleatoria
Ahora realizamos un diagrama de flujo del proceso
54
Habilitar
Esta habilitadoReiniciar Contador y
variablesno
Generamos numero aleatorio para el
valor
Generar numero aleatorio para el tiempo entre valores mínimos y valores máximos
Se generan numeros
Generar señal cudrada con las siguiente propiedades
cuadrada.tiempo_inicial:=.tiempo_inicial;cuadrada.tiempo_paso:=tiempo_paso;cuadrada.tiempo_cuadrada:=propiedades.tiempo_histeresis_inicial +((.tiempo_histeresis_final -.tiempo_histeresis_inicial)*aleatorio tiempo);cuadrada.valor_inicial:=.valor_inicial;cuadrada.valor_paso:=propiedades.valor_paso;cuadrada.valor_cuadrada:=.valor_histeresis*aleatorio;cuadrada.paso_automatico:=.paso_automatico;
Figura 45: Diagrama de flujo de la señal seudoaleatoria
Ahora procedemos a estimular el sistema para posteriormente realizar
identificación
Señal estimulo Planta
Figura 46: Diagrama Estimulo con señal seudoaleatoria
Ahora podemos a estimular el proceso el cual hemos calculado anteriormente
la cual nos da un respuesta del siguiente tipo.
55
Donde el archivo de propiedades en Rslogix se genera de la siguiente manera
Figura 47: Archivo de propiedades de seudoaleatoria generado por Rockwell
Ahora generamos el bloque sobre la descripción del diagrama de flujo el cual
que da la siguiente manera.
Para realizar sobre programación por función de bloques
Figura 48: Bloque de seudoaleatoria
56
Para realizar programación por Ladder
Figura 49: Ladder de seudoaleatoria
O para realizar programación por texto estructurado
SEUDOALEATORIA(SEUDOALEATORIA,habilitar,salida,propiedades,
setpoint);
Ahora podemos a estimular el proceso el cual hemos calculado anteriormente
la cual nos da un respuesta del siguiente tipo.
Figura 50: Identificación al estímulo con seudoaleatoria
57
El cual por medio del toolbox de Matlab no entrega una función de
transferencia del siguiente modo
(9.3)
Por el método de identificación para un móldelo de primer orden el cual
podemos evidenciar.
58
Acciones básicas de control Rockwell Para este capítulo, la idea es dar una noción de cómo se trabaja una ecuación
en diferencia por medio de autómatas programables, con se trabaja una
función en transferencia y lo que se debe tener en cuenta a la hora de
muestrear un sensor, como generar un retardo[23].
Las acciones básicas de control son
Controlador Proporcional
Controlador Integral
Controlador Derivativo
7.1 Muestreo en PLCs de Rockwell
Un controlador está dado por el siguiente esquema
A/D CONTROL PROCESO D/A
CONVERSOR ANALOGO -DIGITAL
CONVERSOR DIGITAL -ANALOGO
Figura 51: Esquema de controlador generado por autómata
Como se ha explicado en capítulos anteriores se sabe que conversor análogo-
digital trabaja dependiendo del periodo de muestreo, por medio de la
identificación realizada anteriormente se puede conocer el periodo de muestreo
más indicado dependiendo del proceso.[24]
En el caso de Rockwell se debe generar una tarea que se ejecute en definición
con el periodo de muestreo
59
Figura 52: Generar nueva rutina en Rockwell
Seleccionamos la mejor forma de que el sistema se adapte
Figura 53: Seleccionar el periodo de muestreo en Rockwell
60
Ahora para el caso de generar los retrasos el sistema funciona de una forma
diferente, a continuación se explica una forma de cómo generar retrasos en un
PLC.
ZBuffer
[0 1 2 3 4] ... [ 0 0 1 2 3 4] ...
Figura 54: Análisis de un retraso
Con este diagrama de flujo se explica de una forma sencilla.
TOMAR DATO
GUARDAR EN MERIA
ENVIAR VALOR DE SALIDA Y GENERAR RETARDO
RETARDO > CONTADOR
No
SALIDA = DATO DE ENTRADA
SI
Figura 55: Diagrama de flujo de retardo
61
7.2 Controlador proporcional
El esquema general de un controlador proporcional
Figura 56: Esquema general de controlador proporcional
62
Con esto podemos ver las entrada y salidas del sistema
Habilitar: Esta variable define si está habilitado funcione y reinicia el
programa permite un mayor asequibilidad para aplicaciones.
Entrada: Señal o estímulo a generar ganancia, por lo general es el error
o la salida de proceso.
Propiedades_proporcional : El cual es un tipo de variable que contiene
los datos que queremos modificar del sistema
Los datos de propiedades son relacionados de la siguiente manera
Ganancia proporcional: Valor de la ganancia Kp.
Valor máximo entrada: Limitar la entrada del controlador por motivos de
aplicación dependiendo del hadware del PLC tiene unos límites de
funcionamiento.
Valor mínimo Entradas: Limitar la entrada del controlador por motivos de
aplicación dependiendo del hadware del PLC tiene unos límites de
funcionamiento.
Valor máximo salida : Limitar la salida del controlador por motivos de
aplicación dependiendo del hadware del PLC tiene unos límites de
funcionamiento del actuador del proceso
Valor minimo salida : Limitar la salida del controlador por motivos de
aplicación dependiendo del hadware del PLC tiene unos límites de
funcionamiento del actuador del proceso
Los datos de salida son los datos que queremos obtener de la rutina.
Salida: La señal de estímulo que queremos representar.
.
Donde el archivo de propiedades en Rslogix se genera de la siguiente manera
63
Figura 57: Archivo de propiedades de controlador proporcional generado por ROCKWELL
Ahora generamos el bloque sobre la descripción del diagrama de flujo el cual
que da la siguiente manera.
Para realizar sobre programación por función de bloques
Figura 58: Bloque de Ganancia
64
Para realizar programación por Ladder
Figura 59: Ladder de ganancia
O para realizar programación por texto estructurado
GANANCIA(GANANCIA,habilitar,entrada,salida,propiedades);
7.3 Controlador integral
La entrada integral está dada por
( ) ∫ ( ) ( )
(10.1)
El método de discretización que vamos a utilizar es el método bilineal de Tustin
de esta forma tenemos la siguiente relación
(10.2)
Donde Ts es el periodo de muestreo.
Entonces podemos representar el integrador de la siguiente forma
(10.3)
Ahora procedemos a resolver la ecuación en diferencias
( )
( )
(10.4)
65
( )( ) ( )
( )
(10.5)
Aplicamos transformada inversa
( ) ( )
, ( ) ( )-
(10.6)
( )
, ( ) ( )- ( )
(10.7)
Ahora generamos el diagrama de bloques
Entrada
Ki.Ts/2
Z +
+
+
+
Figura 60: Diagrama de bloques de integrador
Ahora generamos el diagrama de flujo
Habilitar
Esta habilitadoReiniciar Contador y
variablesno
Suma = (Entrada + retraso entrada) * (Ki.TS/2)Salida =suma + salida Generar retraso dependiendo de Ts
Figura 61: Diagrama de flujo de integrador
66
Ya teniendo el diagrama del controlador ahora podemos generar el diagrama
general de funcionamiento.
Figura 62: Diagrama general de integrador
67
Con esto podemos ver las entrada y salidas del sistema
Habilitar: Esta variable define si está habilitado funcione y reinicia el
programa permite un mayor asequibilidad para aplicaciones.
Entrada: Señal o estímulo a generar ganancia, por lo general es el error
o la salida de proceso.
Propiedades_proporcional : El cual es un tipo de variable que contiene
los datos que queremos modificar del sistema
Los datos de propiedades son relacionados de la siguiente manera
Ganancia integral: Valor de la ganacia Ki
Periodo de muestreo: Define el periodo de muestreo , la ganancia
general y retardo en la función de transferencia.
.
Valor máximo entrada: Limitar la entrada del controlador por motivos de
aplicación dependiendo del hadware del PLC tiene unos límites de
funcionamiento.
Valor minimo Entradas: Limitar la entrada del controlador por motivos de
aplicación dependiendo del hadware del PLC tiene unos límites de
funcionamiento.
Valor máximo salida : Limitar la salida del controlador por motivos de
aplicación dependiendo del hadware del PLC tiene unos límites de
funcionamiento del actuador del proceso
Valor minimo salida : Limitar la salida del controlador por motivos de
aplicación dependiendo del hadware del PLC tiene unos límites de
funcionamiento del actuador del proceso
Los datos de salida son los datos que queremos obtener de la rutina.
Salida: La señal de estímulo que queremos representar.
Donde el archivo de propiedades en Rslogix se genera de la siguiente manera
68
Figura 63: Archivo de propiedades de Integral generado por Rockwell
Ahora generamos el bloque sobre la descripción del diagrama de flujo el cual
que da la siguiente manera.
Para realizar sobre programación por función de bloques
Figura 64: Bloque de integral
Para realizar programación por Ladder
69
Figura 65: Ladder de integral
O para realizar programación por texto estructurado
INTEGRAL(INTEGRAL,habilitar,entrada,salida,propiedades);
7.4 Acción derivativa.
La entrada derivativa está dada por
( )
(11.1)
El método de discretizacion que vamos a utilizar es el método bilineal de Tustin
de esta forma tenemos la siguiente relación
(11.2)
Donde Ts es el periodo de muestreo.
Primero definimos la transformada del filtro el cual se establece del siguiente
modo.
.
/
( )
( ) ( )
(11.3)
Ahora con esto definimos el derivador completo
( )
( ) ( )
(11.4)
Si reducimos la ecuación tenemos
70
( )
. /
(11.5)
Ahora procedemos a resolver la ecuación en diferencias
( )
( )
( )
. /
(11.6)
Despejamos los términos
( ) [ (
) ] ( )
( )
(11.7)
Aplicamos transformada z inversa
( )
, ( ) ( )- [(
) ( )]
(11.8)
Ahora generamos el diagrama de bloques
Entrada
2.K
d/(2
.N +
Ts)
Z +
-
+
-
Ts
-2.N
/T
s +
2.N
Figura 66: Diagrama de bloques de derivador
Ahora generamos el diagrama de flujo
71
Habilitar
Esta habilitadoReiniciar Contador y
variablesno
Suma = (Entrada - retraso entrada) * (Kd.2/(2.N+Ts))Salida =suma – (salida * (Ts -2.N /Ts +2N) Generar retraso dependiendo de Ts
Figura 67: Diagrama de flujo de derivador
Ya teniendo el diagrama del controlador ahora podemos generar el diagrama
general de funcionamiento.
73
Con esto podemos ver las entrada y salidas del sistema
Habilitar: Esta variable define si está habilitado funcione y reinicia el
programa permite un mayor asequibilidad para aplicaciones.
Entrada: Señal o estímulo a generar ganancia, por lo general es el error
o la salida de proceso.
Propiedades_proporcional : El cual es un tipo de variable que contiene
los datos que queremos modificar del sistema
Los datos de propiedades son relacionados de la siguiente manera
Ganancia integral: Valor de la ganacia Kd
Polo del filtro : El valor del polo del filtró N que está comprendido entre
1<N<33
Periodo de muestreo: Define el periodo de muestreo, la ganancia
general y retardo en la función de transferencia.
.
Valor máximo entrada: Limitar la entrada del controlador por motivos de
aplicación dependiendo del hadware del PLC tiene unos límites de
funcionamiento.
Valor minimo Entradas: Limitar la entrada del controlador por motivos de
aplicación dependiendo del hadware del PLC tiene unos límites de
funcionamiento.
Valor máximo salida : Limitar la salida del controlador por motivos de
aplicación dependiendo del hadware del PLC tiene unos límites de
funcionamiento del actuador del proceso
Valor minimo salida : Limitar la salida del controlador por motivos de
aplicación dependiendo del hadware del PLC tiene unos límites de
funcionamiento del actuador del proceso
Los datos de salida son los datos que queremos obtener de la rutina.
Salida: La señal de estímulo que queremos representar.
74
Donde el archivo de propiedades en Rslogix se genera de la siguiente manera
Figura 69: Archivo de propiedades derivador generado por Rockwell
Para realizar sobre programación por función de bloques
Figura 70: Bloque derivador
Para realizar programación por Ladder
75
Figura 71: Ladder de derivador
O para realizar programación por texto estructurado
DERIVADOR(DERIVADOR,habilitar,entrada,salida,propiedades);
76
Controlador PID de Rockwell Con el concepto de las acciones básicas de control ya podemos generar un
controlador PID en paralelo para plataforma de Rslogix , se debe tener en
cuenta de que el formato de este controlador es sobre el método de Tustin
Bilineal ,pero esto puede servir de base para la creación otros modelos de
controladores PID con entradas dependientes e independientes ,otros modelos
de discretización y filtros de un orden superior que pueden ser realizados con la
metodología de programación.[25][26][27]
8.1 Controlador PID para Rockwell
El esquema básico de un proceso que se quiera controlar con PID es de la
siguiente forma.
Proporcional
Integrador
Derivador
Proceso
U(n) e(n)CV PV
Figura 72: Diagrama de bloques de PID
Pero podemos realizar la siguiente modificación para que sea aún más
genérico
77
Proporcional
Integrador
Derivador
Proceso
U(n) e(n)CV PV
Entrada proporcional
Entrada Derivativa
Figura 73: Diagrama de bloque Pid con multiples entradas
Donde la entrada proporcional está dada de ocho formas
1. u(n) – PV o e(n)
2. PV –u(n) o –e(n)
3. u(n)
4. CV
5. PV
6. u(n) – CV
7. CV –u(n)
8. PV – CV
9. CV –PV
Donde la entrada derivativa está dada por
1. u(n) – PV o e(n)
2. PV –u(n) o –e(n)
3. u(n)
4. CV
5. PV
6. u(n) – CV
7. CV –u(n)
8. PV – CV
9. CV –PV
78
Ahora generamos el diagrama de clases.
+ HABILITAR : BOOLEAN+GANANCIA PROPORCIONAL ; REAL+MINIMA ENTRADA ; REAL+MAXIMA ENTRADA ;REAL+MINIMA SALIDA ; REAL+MAXIMA SALIDA ;REAL+ ENTRADA ; REAL+SALIDA;REAL
+ HABILITAR : BOOLEAN+GANANCIA INTEGRAL ; REAL+MINIMA ENTRADA ; REAL+MAXIMA ENTRADA ;REAL+MINIMA SALIDA ; REAL+MAXIMA SALIDA ;REAL+PERIODO MUESTREO :DINT+ ENTRADA ; REAL+SALIDA;REAL
+ HABILITAR : BOOLEAN+GANANCIA INTEGRAL ; REAL+MINIMA ENTRADA ; REAL+MAXIMA ENTRADA ;REAL+MINIMA SALIDA ; REAL+MAXIMA SALIDA ;REAL+PERIODO MUESTREO :DINT+POLO FILTRO ; REAL+ ENTRADA ; REAL+SALIDA;REAL
+ HABILITAR : BOOLEAN+ ENTRADA PROPORCIONAL+ENTRADA DERIVATIVA+MINIMA ENTRADA ; REAL+MAXIMA ENTRADA ;REAL+MINIMA REFERENCIA ; REAL+MAXIMA REFERENCIA ;REAL+MINIMA SALIDA ; REAL+MAXIMA SALIDA ;REAL+ ENTRADA ; REAL+SALIDA;REAL
PROPORCIONAL INTERGAL DERRIVADOR
PID
Figura 74: Diagrama de clases de controlador PID
79
Con estos datos podemos hacer un esquema general de proceso
ENTRADAENTRADA >
MAXIMO
ENTRADA < MINIMO
ENTRADA = MAXIMO
Reiniciar Contador y variables
ENTRADA = MINIMO
HABILITAR HABILITO?
REFERENCIAREFERENCIA >
MAXIMO
REFERENCIA < MINIMO
REFERENCIA = MAXIMO
REFERENCIA = MINIMO
ERROR
Figura 75: Diagrama general de entrada del bloque PID
80
SALIDA > MAXIMO
SALIDA < MINIMO
SALIDA = MAXIMO
SALIDA = MINIMO
ERROR
PROPORCIONAL
INTEGRAL
DERIVADOR
ENTRADA PROPORCIONAL
ENTRADA DERIVATIVA
Figura 76: Diagrama general de salida del bloque PID
Con esto podemos ver las entrada y salidas del sistema
Habilitar: Esta variable define si está habilitado funcione y reinicia el
programa permite un mayor asequibilidad para aplicaciones.
Entrada: Señal o estímulo a generar ganancia, por lo general es el error
o la salida de proceso.
Propiedades_PID : El cual es un tipo de variable que contiene los datos
que queremos modificar del sistema
Los datos de propiedades son relacionados de la siguiente manera
Ganancia proporcional: Valor de la ganacia Kp.
Ganancia integral: Valor de la ganacia Ki.
Ganancia Derivativa: Valor de la ganacia Kd.
81
Valor máximo entrada: Limitar la entrada del controlador por motivos de
aplicación dependiendo del hadware del PLC tiene unos límites de
funcionamiento.
Valor minimo Entradas: Limitar la entrada del controlador por motivos de
aplicación dependiendo del hadware del PLC tiene unos límites de
funcionamiento.
Valor máximo salida : Limitar la salida del controlador por motivos de
aplicación dependiendo del hadware del PLC tiene unos límites de
funcionamiento del actuador del proceso
Valor minimo salida : Limitar la salida del controlador por motivos de
aplicación dependiendo del hadware del PLC tiene unos límites de
funcionamiento del actuador del proceso
Los datos de salida son los datos que queremos obtener de la rutina.
Salida: La señal de estímulo que queremos representar.
. Polo del filtro : El valor del polo del fltro N que está comprendido entre
1<N<33
Periodo de muestreo: Define el periodo de muestreo, la ganancia
general y retardo en la función de transferencia
8.2 Análisis de PID y polos
Si analizamos el siguiente diagrama, con el PID planteado en el fascículo 8.1
podemos hallar el valor de los polos.
82
Proporcional
Integrador
Derivador
Proceso
U(n) e(n)CV PV
Figura 77: Diagrama de bloques PID
Para facilitar la resolución renombramos las constantes de la siguiente manera
(12.1)
Y aplicamos dizcretizacion al PID del siguiente modo
( )
( ) (
) (
( )
. /
)
(12.2)
Si sustituimos la ecuación (12.1) en la ecuación (12.2) tenemos
( )
( ) (
) (
( )
)
(12.3)
Se puede ver que un sistema con estas características está dado por
( )
( )
(12.4)
Donde los polos del sistema están representados por
( )( ) ( ) (12.5)
83
Y los ceros del sistema están dados por la ecuación cuadrática
√
(12.6)
Remplazamos la ecuación (12.3) para que quede de la forma que está en el
(12.4)
( )
( )
, - , ( ) , - - 0
( )
1
( )( )
(12.7)
Entonces podemos evidenciar lo siguiente
(12.8)
( ) , - (12.9)
( ) ) (12.10)
(12.11)
84
8.3 Generar bloque que analice parámetros de desempeño en Rockwell
Figura 78: Parámetros de desempeño
Esto se puede basar en un análisis del comportamiento del en el tiempo real de
la señal basando en el comportamiento de un sistema de segundo orden,
analizando el cambio de pendiente de la señal y midiendo el tiempo que le
toma a la señal en realizar esos cambios.[28][21]
Para esto hacemos un análisis de cómo podemos llegar a una solución en
tiempo real de los parámetros de diseño a implementar.
Error de estado estacionario
Máximo sobre impulso
Tiempo de estabilización
Primero definimos los parámetros de entrada y salida que el sistema necesita
Los parámetros de entrada serian
Entrada: Se puede definir como la variable de proceso (PV) es la señal a
cual se le va hacer el análisis de parámetros
Referencia: Es el parámetros sobre el cual se quiere estimar como es el
comportamiento del diseño del sistema.
0 5 10 15 20 25 30 35 40 45 50
-0.2
0
0.2
0.4
0.6
0.8
1
1.2
1.4
Dominio del tiempo (s)
Valo
r (V
)Especificaciones de diseño
Maximo sobreimpulso
Region de establidad
Region de establidad
Tiempo de estabilizacion
VP
VI
DS
VF
85
Periodo de muestreo: Es nos ayuda a adaptar el tiempo al modo que se
muestrea la entrada.
Los parámetros de salida están dados por las respuestas del diseño
explicadas anteriormente.
Error de estado estacionario
Para llegar a su análisis se puede ver de la siguiente forma
| | (13.1)
El error porcentual está dado por
(| | ) (13.2)
El máximo sobre impulso tiene dos formas de analizar
Don el sobre impulso se da en una señal en ascenso como se puede visualizar
en la siguiente gráfica.
Figura 79: Máximo sobre impulso ascendente
Donde el análisis principal es el momento en que la señal cambia de subir a bajar
que si analizamos nuevamente la gráfica del ejemplo podemos ver que esto sucede
en dos momentos, para evitar este problema también se debe analizar si el cambio
se hace después de haber pasado la referencia y la primera vez que lo hace.
0 5 10 15 20 25 30 35 40 45 50-0.2
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
Tiempo (s)
Valo
r (V
)
Analisis de sobreImpulso
Referencia
Planta estimulada
86
Luego tomamos el valor anterior al punto donde la señal cambia de subir a bajar y
tomamos ese valor evaluador con esto el máximo sobre impulso está dado por.
(| | ) (13.2)
Para el caso contrario donde la referencia es decreciente
Figura 80: Máximo sobre impulso descendente
En este tipo de análisis se debe es revisar el momento en que pasa de
descender a ascender, también tomar en cuenta cuando la señal es menor a la
referencia .con estos datos podremos hacer el diagrama de flujo para analizar
el máximo sobre impulso.
(| | ) (13.3)
0 5 10 15 20 25 30 35 40 45 50-1.6
-1.4
-1.2
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
Tiempo(s)
Valo
r (V
)
Maximo sobre impulso para una señal decreciente
Referencia
Planta estimulada
87
MEDIR REFERENCIA
REFERENCIA ES >= 0
LEER ENTRADA
ENTRADA > REFERENCIA
ANALIZAR PENDIENTE DE LA SEÑAL
ENTRADA > EVALUADOR
REFERENCIA ES <= 0
LEER ENTRADA
ENTRADA < REFERENCIA
ANALIZAR PENDIENTE DE LA SEÑAL
ENTRADA < EVALUADOR
MAXIMO SOBRE IMPULSO
RETRASO SEGÚN PERIODO DE MUESTREO
EVALUADOR = ENTRADA
SI SI
SISI
SI SI
NO NO
NO
Figura 81: Diagrama de flujo de Maximo sobre impulso
Ya tenemos cubierto dos parámetros ahora nos hace falta encontrar el tiempo
de estabilización, para este caso solo se ha podido resolver para sistemas de
segundo orden donde se utiliza un análisis del valor de cada vez que la señal
cambia de pendiente según la referencia.
88
Figura 82: Análisis de tiempo de estabilización
También procedemos a tomar el valor en que está por debajo del error
sugerido para el caso de este usamos un error de estado estacionario menor al
5%, entonces la idea es guardar todos los cambios de pendiente el cual se
llamara cota y el dato en que cambia el error de ser mayor a lo definido al que
es menor, ya con esto podemos hacer un diagrama de flujo del proceso.
0 5 10 15 20 25 30 35 40 45 50
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
Tiempo(s)
Valo
r(V
)
Analisis para hallar el tiempo de estabilizacion
Referencia
Planta estimulada
Momento
de error
menor al
umbral
Tiempo de estabilizacion
89
MEDIR REFERENCIA
REFERENCIA ES >= 0
LEER ENTRADA
ENTRADA > REFERENCIA
ANALIZAR PENDIENTE DE LA SEÑAL Y TOMAR DATO
EN QUE ENTRA AL 5%
ENTRADA > EVALUADOR
REFERENCIA ES <= 0
LEER ENTRADA
ENTRADA < REFERENCIA
ANALIZAR PENDIENTE DE LA SEÑAL Y TOMAR DATO
EN QUE ENTRA AL 5%
ENTRADA < EVALUADOR
RETRASO SEGÚN PERIODO DE MUESTREO
EVALUADOR = ENTRADA
SI SI
SISI
NO NO
NO
EVALUAR COTA
COTA < 5% DE LA SEÑAL DE REFERNCIA
EVALUAR COTA
COTA < 5% DE LA SEÑAL DE REFERNCIA
TIEMPO DE ESTABLIZACION
Figura 83: Diagrama de flujo de tiempo de estabilización
90
Ahora generamos el bloque sobre la descripción del diagrama de flujo el cual
que da la siguiente manera.
Para realizar sobre programación por función de bloques
Figura 84: Bloque de parámetros
Para realizar programación por Ladder
Figura 85: Ladder de parametros
O para realizar programación por texto estructurado
parametros(parametros,habilitar,referencia,entrada,error_estacionario,
Maximo_sobreimpulso,Tiempo_estabilizacion,periodo_de_muestreo,contador
);
91
Framework para el manejo de bloques de
rockwell Para el manejo de todas estas librerías se encuentran unas guías de desarrollo
y conexión por medio de Scada por medio de template que ayudan a facilitar el
diseño para hacerlo de una forma más dinámica y concisa dependiendo para
utilizarla la librería para una cantidad de proceso, el cual nos ayudara a realizar
de una forma más práctica para que los usuarios puedan utilizar estos bloques
y sus facultados de una forma dinámica.[5][25][29]
9.1 Comunicación OPC –Rslogix –Matlab
Para el caso de la guía se hace una explicación completa de cómo realizar
una comunicación Matlab y rslogix ,pero esto puede ser implementarle en
cualquier sistema de simulación que cuente con un protocolo OPC , desde
desarrollo de software en lenguajes de desarrollo de aplicaciones , como
Java ,.net ,PHP y otras herramientas , también simuladores de proceso ,
con Unisim , Electric Disainer ,Fluid sim y Scada como Ignition, Codesys
entre otros .
Software de aplicaciones
Simuladores de proceso
Scada
RSLinxopc
Figura 86: Diagrama de OPC
Hay que tener en cuenta que en la mayoría de procesos OPC se usan puertos
Socket y para servicios externos en sistemas operativos Windows DCOM .lo
cual siempre se debe tener disponible en el equipo módulos de comunicación
IP la comunicación OPC también sirve para comunicar Autómatas de distintas
referencias.
92
En el caso de este proyecto se realizó una comunicación OPC para
comunicarlo con un simulador de proceso para este caso es Matlab Primero se
hará un breve resumen de la comunicación OPC realizada con Matlab para
esto nos basamos en el Toolbox OPCTool que nos permite ver qué servicios
tanto locales como remotos tenemos de OPC.[30][31]
Figura 87: OPC matlab
Por medio de Rslogix se utiliza él se servidor de Rslinx que nos ofrece
Rockwell el cual es el siguiente.
93
d
Figura 88: OPC RSlinx
9.2 HMI De proceso echo por directamente por dispositivos de
Rockwell
Para la comunicación entre dispositivos de Rockwell también se
depende de una tarjeta de red, pero el puerto Socket y el modelo de
comunicación son completamente distintos lo cual hace de esto una red
totalmente independiente, el cual nos permite comunicarnos a todo tipo
de producto de Rslogix.
94
RSLinx
FACTORY TALK
RSLOGIX
SOFTLOGIX
PLCs
HMI
MODULOS
Figura 89: Comunicación por RSlinx
En este caso se usa el factoy Talk View para realizar los template de cada uno
de los procesos los cuales están diseñados del siguiente modo.
Template Controlador Proporcional
Figura 90: Template ganancia proporcional
95
Tiene todos los valores del tag propiedades de la ganancia proporcional
Template Controlador Integral
Figura 91: Template de la ganacia integral
Tiene todos los valores del tag propiedades de la ganancia integral
Template Ganancia derivativa
Figura 92: Template de Ganancia Derivativa
96
Template generico
Figura 93: Template con propiedades de controlador
Con tiene todos los parámetros generales del bloque PID donde nos permite
insertar los tags, modificar la entrada, por medio de un pantalla replegable, y la
cual puede ser pegado para realizar una gran cantidad de procesos.
Figura 94: Template para parametros de diseño
97
También para proceso de generación de las señales de estímulo se generan
template para repetir el proceso todas las veces que un usuario necesite las
cuales están definidas del siguiente modo podemos definir lo siguiente
Podemos usar este template para la respuesta paso
Figura 95: Template con propiedades de la señal pasó
El cual esta enlazado con el bloque de Rslogix para generar la señal pasó.
Figura 96: Template con propiedades de la señal cuadrada
Tenemos todas las propiedades usada por la señal cuadrada podemos generar
cualquier bloque de tipo Cuadrada y enlazar las propiedades a este template
98
Figura 97: Template con propiedades de la señal seudoaleatoria
También tiene una pantalla para poder ver como se relaciona y maneja la señal
de estímulo del sistema.
Figura 98: Template visualizar señal de estimulo
99
Podemos visualizar la señal de estímulo y la señal de respuesta del sistema.
También tenemos un template para la identificación en tiempo real, el cual nos
permite hacer esto para múltiples procesos.
Figura 99: Template de identificación
El cual permite acoplar con las propiedades del bloque de identificación
Hay que tener en cuenta que esto no es un programa , se debe ver como una
herramienta ,la cual nos permite realizar los procesos indicados para realizar
control de procesos digital..
100
CONCLUSION Este trabajo tenía como objetivo mejorar las condiciones en que se analizan
problemas a la hora de analizar cómo se debe generar un algoritmo sobre
autómatas, y como se puede llegar aplicar los conceptos de identificación y
controladores PID de una forma eficiente, lo cual podemos convertir una simple
rutina y enlazarla a otras de una forma más dinámica y eficiente.
Primero al generar las señales básicas para estimular un sistema y poder tener
parámetros para poder saber cuál es el modelo que mejor puede que mejor se
puede comportar ,lo cual facilita a la hora de llevar a cabo controladores, el
problema es que a la hora de llevar a cabo la identificación por medio de ellos
directamente es las limitaciones en el manejo de registros y operaciones
matemáticos ya que a pesar de lo robusto que puede llegar a ser la plataforma
de Rockwell ,existe a nivel general una muy poca cantidad de librerías y
todavía hay que generar un mayor grado de rutinas y herencias ,las cuales
torna volver el desarrollo muy lento .
Para las acciones básicas se genera sobre un método de dizcretizacion, pero
existe la posibilidad de cambiar la ecuación e diferencias, para realizar pruebas
sobre otros métodos dizcretizacion y cuál puede ser más conveniente en
distintos casos ya para el controlador PID en general genera una cantidad muy
grande de posibilidades para implementar, pero el problema sobre los PLCs es
que no permiten trabajar sistemas con respuesta muy rápida ya que el
conversor análogo digital de los PLCs tiende a tener respuesta muy lentas
Un inconveniente es la poca jerarquía entre funciones, ya que en Rockwell solo
se permiten usar 16 funciones sobre un proceso, y no permite anidar procesos
mayores a 34, también la implementación de OPC tiene muchos problemas en
sistemas operativos de 64 bits, si mencionar que hay que deshabilitar varias
protecciones del equipo para generar comunicación OPC remota lo cual puede
volver muy vulnerable la red. Pero para términos practicas el proyecto instruye
un modelo de programación ya que facilita bastante la implementación, también
son muy fáciles de modificar y hacer mantenimiento.
101
Bibliografia [1] D. Engin and M. Engin, “Auto-tuning of PID parameters with
programmable logic controller,” 2013 IEEE Int. Conf. Mechatronics Autom., pp. 1469–1474, Aug. 2013.
[2] H. He, F. Liu, L. Li, J.-R. Yang, L. Su, and Y. Wu, “Study of PID Control System for Ant Colony Algorithm,” 2009 WRI Glob. Congr. Intell. Syst., pp. 204–207, 2009.
[3] L. E. N. Caliente, “Manual DE.” .
[4] L. Ljung and T. Glad, Modeling of dynamic systems. 1994.
[5] L. Li and J. Yang, “The application of fuzzy-PID and multi-neuron adaptive PID control algorithm in the control of warp tension,” 2010 2nd Int. Conf. Comput. Eng. Technol., pp. V7–678–V7–681, 2010.
[6] M. Li, Y. Sun, M. Qin, and H. Zhang, “GFHM-PID Controller Analysis and Design (II),” 2006 6th World Congr. Intell. Control Autom., no. Ii, pp. 4016–4020, 2006.
[7] A. A. Ghandakly, M. E. Shields, and A. M. Farhoud, “Enhancement of Exiting PLC ’ s with an Adaptive Control Technique. Industry Applications Conference 1995. Thirtieth IAS Annual Meeting, IAS’95.,” Conf. Rec. 1995 IEEE, pp. 1634–1640, 1995.
[8] M. D. Lineales, “Modelos discretos –,” p. 2.
[9] R. Bott, “No Title No Title,” Igarss 2014, no. 1, pp. 1–5, 2014.
[10] B. Kuo, “Sistemas de Control Automatico.pdf.” p. 931, 1996.
[11] I. Na, R. De Keyser, S. Folea, and T. Buzdugan, “Development and Evaluation of a PID Auto-Tuning Controller,” pp. 0–5, 2006.
[12] E. T. Services and A. B. Unit, “Application of Neural Networks in Process Control : Automatic / Online Tuning ofPID Controller Gains for,” no. 978, pp. 348–352, 2012.
[13] T. Choi, K. Seo, J. S. Ü, and J. Lee, “The Hybrid SOF-PID Controller for a MIMO Nonlinear System,” pp. 24–28, 2005.
[14] M. Soheilirad, K. Karami, M. L. Othman, P. Farzan, and S. N. Fallah, “PID controller adjustment for MA-LFC by using a hybrid Genetic-Tabu Search Algorithm,” 2013 IEEE 3rd Int. Conf. Syst. Eng. Technol., pp. 197–202, Aug. 2013.
[15] X. Hao, Y. Wei, Z. Wendong, D. Xiaomin, and Y. Haiyang, “The Application of Dual-PID Regulation Based on Sliding Mode Control in a Tank Artillery Stabilizer,” 2011 Fourth Int. Conf. Intell. Comput. Technol. Autom., pp. 731–733, Mar. 2011.
[16] D. M. Auslander, C. Pawlowski, and J. Ridgely, “Reconciling
102
programmable logic controllers (PLCs) with mechatronics control software,” Proceeding 1996 IEEE Int. Conf. Control Appl. IEEE Int. Conf. Control Appl. held together with IEEE Int. Symp. Intell. Control IEEE Int. Symp. Comput. Contro, pp. 415–420, 1996.
[17] A. Rubaai, M. J. Castro-Sitiriche, and A. Ofoli, “DSP-Based Implementation of Fuzzy-PID Controller Using Genetic Optimization for High Performance Motor Drives,” 2007 IEEE Ind. Appl. Annu. Meet., pp. 1649–1656, Sep. 2007.
[18] N. H. Shariati, A. Maleki, A. Fallah, D. A. Visan, I. B. Cioe, J. Kurzak, S. Tomov, J. Dongarra, L. Fellow, M. Xiong, L. Wang, W. Yu, S. S. Member, J. Rosen, W. Zhang, M. Yang, V. Michal, C. Premont, G. Pillonet, N. Abouchi, C. Basicos, S. Chen, J. Y. J. Lee, S. S. Member, M. Jin, P. H. Chang, C. Dey, R. K. Mudi, T. T. Lee, Z. Yachen, H. Yueming, E. T. Services, A. B. Unit, H. He, F. Liu, L. L. Li, J. J.-R. Yang, L. Su, Y. Wu, R. De Keyser, A. Dutta, A. Hernandez, C. M. Ionescu, Y. Baba, M. Yukitomo, C. Huang, Y. Bai, X. Li, X. Hao, Y. Wei, Z. Wendong, D. Xiaomin, Y. Haiyang, Q. Fu, L. Zhao, M. Cai, M. Cheng, X. Sun, A. Rubaai, M. J. Castro-Sitiriche, A. Ofoli, R. Arulmozhiyal, H. Xiao, L. Feng, Y. Zhi, Q. Guo, D. Jiang, T. Aratani, D. Nangru, D. K. Bairwa, K. Singh, S. Nema, P. K. Padhy, M. Soheilirad, K. Karami, M. L. Othman, P. Farzan, S. N. Fallah, J. Xu, D. Huang, M. Li, Y. Sun, M. Qin, H. Zhang, I. Na, R. De Keyser, S. Folea, T. Buzdugan, Y. Yoshimura, K. Tanaka, Y. Wakasa, T. Akashi, N. Kobayashi, Y. Osa, G. E. A. Lexandra, N. A. M. Olano, U. Disturbances, T. Hagiwara, Y. Ando, I. Murakami, S. Aoyama, S. Matsuura, D. A. R. Wati, R. Hidayat, L. Hassaine, S. S. Das, I. Pan, K. Halder, S. S. Das, A. Gupta, K. Sinthipsomboon, I. Hunsacharoonroj, J. Khedari, W. Pongaen, P. Pratumsuwan, X. Bo-yang, Y. U. Li-ye, Z. Zhong-kai, J. Park, S. W. Jeon, K. S. Nam, L. Liu, J. Sun, C. H. Kim, I. May, Y. Joglekar, D. A. Ratna Wati, L. L. Li, J. J.-R. Yang, S. Izumi, J. Byeon, J. Kim, D. Chun, S. W. Sung, J. Y. J. Lee, Z. Shen, N. Yan, H. Min, T. Wei, W. Zhongfeng, Z. Jinguo, W. Mengxiao, A. Leva, S. Levy, S. Korotkin, K. Hadad, a. Ellenbogen, M. Arad, Y. Kadmon, S. Vrána, B. Šulc, Z. Zhu, K. Liu, Y. He, J. Qi, and J. Han, “A specifications based PID autotuner,” 2012 Int. Conf. Control Eng. Commun. Technol., vol. 2, no. 2, pp. 1–6, Dec. 2012.
[19] Z. Shen, N. Yan, and H. Min, “A multimode digitally controlled boost converter with PID autotuning and constant frequency/constant off-time hybrid PWM control,” IEEE Trans. Power Electron., vol. 26, no. 9, pp. 2588–2598, 2011.
[20] K. Sinthipsomboon, I. Hunsacharoonroj, J. Khedari, W. Pongaen, and P. Pratumsuwan, “A hybrid of fuzzy and fuzzy self-tuning PID controller for servo electro-hydraulic system,” 2011 6th IEEE Conf. Ind. Electron. Appl., pp. 220–225, Jun. 2011.
[21] M. Xiong and L. Wang, “Intelligent fuzzy- PID temperature controller design of drying system,” 2012 Int. Conf. Inf. Manag. Innov. Manag. Ind. Eng., no. 2, pp. 54–57, Oct. 2012.
103
[22] Z. Yachen and H. Yueming, “On PID controllers based on simulated annealing algorithm,” 2008 27th Chinese Control Conf., no. 4, pp. 225–228, Jul. 2008.
[23] R. Arulmozhiyal, “Design and Implementation of Fuzzy PID controller for BLDC motor using FPGA,” 2012 IEEE Int. Conf. Power Electron. Drives Energy Syst., pp. 1–6, Dec. 2012.
[24] Y. J. Reddy, A. Ramsesh, K. P. Raju, and Y. V. P. Kumar, “A novel approach for modeling and simulation of hybrid power systems using PLCs and SCADA for hardware in the loop test,” Int. Conf. Sustain. Energy Intell. Syst. (SEISCON 2011), no. Seiscon, pp. 545–553, 2011.
[25] D. A. Ratna Wati, “Performance evaluation of swarm intelligence on model-based PID tuning,” 2013 IEEE Int. Conf. Comput. Intell. Cybern.,
vol. 1, no. 2, pp. 40–44, Dec. 2013.
[26] D. A. R. Wati and R. Hidayat, “Genetic algorithm-based PID parameters optimization for air heater temperature control,” 2013 Int. Conf. Robot. Biomimetics, Intell. Comput. Syst., no. 1, pp. 30–34, Nov. 2013.
[27] Z. Zhu, K. Liu, Y. He, J. Qi, and J. Han, “Model free analysis and tuning of PID controller,” 2013 9th Asian Control Conf., pp. 1–7, 2013.
[28] C. Huang, Y. Bai, and X. Li, “Simulation for a class of networked cascade control systems by PID control,” 2010 Int. Conf. Networking, Sens. Control, pp. 458–463, Apr. 2010.
[29] Q. Fu, L. Zhao, M. Cai, M. Cheng, and X. Sun, “Complex Surface Based on PID Control,” pp. 2072–2075, 2012.
[30] Y. Baba and M. Yukitomo, “Model-Driven PID Control System,” pp. 187–190, 2003.
[31] A. Leva and L. Piroddi, “Model-based PID autotuning enhanced by neural structural identification,” pp. 2427–2432, 2004.
104
ANEXOS
Código de Step
if Habilitar then TONR_01.PRE := propiedades.tiempo_inicial; TONR_01.TimerEnable := Habilitar; if NOT bandera_TONR_01 then TONR_01.Reset := 1; TONR(TONR_01); bandera_TONR_01 :=1; TONR_01.Reset := 0; TONR(TONR_01); Salida := propiedades.valor_inicial; end_if; TONR_01.Reset := 0; TONR(TONR_01); if TONR_01.DN then Salida := propiedades.valor_paso; end_if; else bandera_TONR_01 :=0; Salida := propiedades.valor_inicial; end_if; bandera_timmer:=TONR_01.DN;
105
Código de Paso
if Habilitar then TONR_01.PRE := propiedades.tiempo_inicial; TONR_01.TimerEnable := Habilitar; if NOT bandera_TONR_01 then TONR_01.Reset := 1; TONR(TONR_01); bandera_TONR_01 :=1; TONR_01.Reset := 0; TONR(TONR_01);
Salida := propiedades.valor_inicial; end_if; TONR_01.Reset := 0; TONR(TONR_01); if TONR_01.DN then Salida := propiedades.valor_paso; TONR_02.PRE := propiedades.tiempo_paso; TONR_02.TimerEnable := Habilitar; if NOT bandera_TONR_02 then TONR_02.Reset := 1; TONR(TONR_02); bandera_TONR_02 :=1; TONR_02.Reset := 0; TONR(TONR_02); Salida := propiedades.valor_final; end_if; TONR_01.Reset := 0; TONR(TONR_01); end_if; else bandera_TONR_01 :=0; bandera_TONR_02 :=0; Salida := propiedades.valor_inicial; end_if;
106
Código de cuadrada
propiedades_inicio.tiempo_inicial:=propiedades.tiempo_inicial; propiedades_inicio.valor_inicial:=propiedades.valor_inicial; propiedades_inicio.valor_paso:=propiedades.valor_paso; if habilitar then; if NOT propiedades.paso_automatico then if timmer2 then; if NOT bandera_timmer2 then; propiedades_cuadrada.tiempo_inicial:=propiedades.tiempo_cuadrada; propiedades_cuadrada.valor_inicial:= propiedades_cuadrada.valor_paso; propiedades_cuadrada.valor_paso:=propiedades.valor_paso+(propiedades.valor_cuadrada*-1); STEP(STEP3,habilitar,salida,propiedades_cuadrada,timmer3); if timmer3 then; STEP(STEP3,0,nsalida,propiedades_cuadrada,timmer3); bandera_timmer2:=1; end_if; elsif bandera_timmer2 then; propiedades_cuadrada.tiempo_inicial:=propiedades.tiempo_cuadrada; propiedades_cuadrada.valor_inicial:=propiedades_cuadrada.valor_paso; propiedades_cuadrada.valor_paso:=propiedades.valor_paso+propiedades.valor_cuadrada; STEP(STEP3,habilitar,salida,propiedades_cuadrada,timmer3); if timmer3 then; STEP(STEP3,0,nsalida,propiedades_cuadrada,timmer3); bandera_timmer2:=0; end_if; end_if; end_if; (****************** ************************************) if NOT timmer1 then; STEP(STEP1,habilitar,salida,propiedades_inicio,timmer1); elsif timmer1 then; if NOT timmer2 then; propiedades_paso.tiempo_inicial:=propiedades.tiempo_paso; propiedades_paso.valor_inicial:=propiedades.valor_paso; propiedades_paso.valor_paso:=propiedades.valor_paso+propiedades.valor_cuadrada; STEP(STEP2,habilitar,salida,propiedades_paso,timmer2); propiedades_cuadrada.valor_paso:=propiedades_paso.valor_paso; end_if; end_if; (******************************) elsif propiedades.paso_automatico then if bandera_paso then
107
if NOT propiedades.cuadrada_automatica then propiedades_cuadrada.tiempo_inicial:=propiedades.tiempo_cuadrada; propiedades_cuadrada.valor_inicial:= propiedades_cuadrada.valor_paso; propiedades_cuadrada.valor_paso:=propiedades.valor_paso+(propiedades.valor_cuadrada*n); STEP(STEP2,habilitar,salida,propiedades_cuadrada,timmer2); if timmer2 then STEP(STEP2,0,nsalida,propiedades_cuadrada,timmer2); n:=(n*-1); end_if; elsif propiedades.cuadrada_automatica then if NOT bandera_timmer2 then; salida:=propiedades.valor_paso-propiedades.valor_cuadrada; if setpoint <=salida then; salida:=propiedades.valor_paso+propiedades.valor_cuadrada; bandera_timmer2:=1; end_if; elsif bandera_timmer2 then; salida:=propiedades.valor_paso+propiedades.valor_cuadrada; if setpoint >=salida then; salida:=propiedades.valor_paso-propiedades.valor_cuadrada; bandera_timmer2:=0; end_if; end_if; end_if; end_if; if NOT timmer1 then; STEP(STEP1,habilitar,salida,propiedades_inicio,timmer1); elsif timmer1 then; if setpoint>=salida then if NOT bandera_paso then salida:=propiedades.valor_paso+propiedades.valor_cuadrada; propiedades_cuadrada.valor_paso:=propiedades.valor_paso+propiedades.valor_cuadrada; bandera_paso:=1; n:=-1; end_if; end_if; end_if; (******************************) end_if; else salida:=propiedades.valor_inicial; timmer1:=0;timmer2:=0;timmer3:=0;cambio:=0;bandera_timmer2:=0;bandera_paso:=0; STEP(STEP1,habilitar,nsalida,propiedades_inicio,nt1); STEP(STEP2,habilitar,nsalida,propiedades_paso,nt2); STEP(STEP3,habilitar,nsalida,propiedades_cuadrada,nt3); end_if;
108
Código de Seudoaleatoria RANDOM(RANDOM1,aleatorio); RANDOM(RANDOM2,Taleatorio); propiedades_cuadrada.tiempo_inicial:=propiedades.tiempo_inicial; propiedades_cuadrada.tiempo_paso:=propiedades.tiempo_paso; propiedades_cuadrada.tiempo_cuadrada:=propiedades.tiempo_histeresis_inicial + ((propiedades.tiempo_histeresis_final - propiedades.tiempo_histeresis_inicial)*Taleatorio); propiedades_cuadrada.valor_inicial:=propiedades.valor_inicial; propiedades_cuadrada.valor_paso:=propiedades.valor_paso; propiedades_cuadrada.valor_cuadrada:=propiedades.valor_histeresis*aleatorio; propiedades_cuadrada.paso_automatico:=propiedades.paso_automatico; propiedades_cuadrada.cuadrada_automatica:=0; CUADRADA(CUADRADA1,habilitar,salida,propiedades_cuadrada,setpoint);
109
Código de Ganancia entrada_proporcional:=entrada; (*****************************************************minimo y maximo valor de entrada*************************) if entrada<=propiedades.mimima_entrada then entrada_proporcional:=propiedades.mimima_entrada; end_if; if entrada>=propiedades.maxima_entrada then entrada_proporcional:=propiedades.maxima_entrada; end_if; (*****************************************************procedimiento***********************************************) if habilitar then gananca_salida:=entrada_proporcional*propiedades.ganancia_proporcional; (*****************************************************minimo y maximo valor de salida*************************) if gananca_salida<=propiedades.minima_salida then gananca_salida:=propiedades.minima_salida; end_if; if gananca_salida>=propiedades.maxima_salida then gananca_salida:=propiedades.maxima_salida; end_if; (*****************************************************procedimiento***********************************************) salida:= gananca_salida; else entrada_proporcional:=0; gananca_salida:=0; salida:=0; end_if;
110
Código de integrador (*****************************************************ganancia integral****************************************) ganancia_integral:=(propiedades.periodo_muestreo*propiedades.ganancia_integral)/2000; entrada_integral:=entrada; (*****************************************************minimo y maximo valor de entrada*************************) if entrada<=propiedades.minima_entrada then entrada_integral:=propiedades.minima_entrada; end_if; if entrada>=propiedades.maxima_entrada then entrada_integral:=propiedades.maxima_entrada; end_if; (*****************************************************procedimiento***********************************************) if habilitar then TONR_01.PRE :=propiedades.periodo_muestreo/10; TONR_01.Reset := 0; TONR_01.TimerEnable:= 1; TONR(TONR_01); IF TONR_01.DN THEN suma_entrada:=(entrada_integral+retraso_entrada)*(ganancia_integral); suma_salida:=suma_entrada+suma_salida; (*****************************************************minimo y maximo valor de salida*************************) if suma_salida<=propiedades.minima_salida then suma_salida:=propiedades.minima_salida; end_if; if suma_salida>=propiedades.maxima_salida then suma_salida:=propiedades.maxima_salida; end_if; (*****************************************************procedimiento***********************************************) retraso_entrada:=entrada_integral; salida:= suma_salida; TONR_01.Reset := 1; TONR(TONR_01); end_if; else entrada_integral:=0;
112
Código de derivador (*****************************************************ganancia derivativa****************************************) ganancia_derivativa:=(2* propiedades.ganancia_derivativa)/((2*propiedades.polo_filtro)+(propiedades.periodo_muestreo/1000)); (***************************************************** ganancia del filtro***************************************) ganancia_filtro:=((propiedades.periodo_muestreo/1000)-(2*propiedades.polo_filtro))/((propiedades.periodo_muestreo/1000)+(2*propiedades.polo_filtro)); (*****************************************************procedimiento***********************************************) if habilitar then TONR_01.PRE :=propiedades.periodo_muestreo/10; TONR_01.Reset := 0; TONR_01.TimerEnable:= 1; TONR(TONR_01); IF TONR_01.DN THEN entrada_derivativa:=entrada; (*****************************************************minimo y maximo valor de entrada*************************) if entrada<=propiedades.minima_entrada then entrada_derivativa:=propiedades.minima_entrada; end_if; if entrada>=propiedades.maxima_entrada then entrada_derivativa:=propiedades.maxima_entrada; end_if; suma_entrada:=(entrada_derivativa * ganancia_derivativa)-(retraso_entrada * ganancia_derivativa); suma_salida:=suma_entrada - (suma_salida* ganancia_filtro); (*****************************************************minimo y maximo valor de salida*************************) if suma_salida<=propiedades.minima_salida then
113
suma_salida:=propiedades.minima_salida; end_if; if suma_salida>=propiedades.maxima_salida then suma_salida:=propiedades.maxima_salida; end_if; (*****************************************************procedimiento***********************************************) retraso_entrada:=entrada_derivativa; salida:= suma_salida; TONR_01.Reset := 1; TONR(TONR_01); end_if; else entrada_derivativa:=0; retraso_entrada:=0; suma_entrada:=0; suma_salida:=0; salida:=0; end_if;
114
Código de PID *****tiempo de muestreo**********************************************) propiedades_integral.periodo_muestreo:=propiedades.periodo_muestreo; propiedades_derivativa.periodo_muestreo:=propiedades.periodo_muestreo; (*********minima entrada**********************************************) propiedades_ganancia.mimima_entrada:=propiedades.mimima_entrada; propiedades_integral.minima_entrada:=propiedades.mimima_entrada; propiedades_derivativa.minima_entrada:=propiedades.mimima_entrada; (*********maxima entrada**********************************************) propiedades_ganancia.maxima_entrada:=propiedades.maxima_entrada; propiedades_integral.maxima_entrada:=propiedades.maxima_entrada; propiedades_derivativa.maxima_entrada:=propiedades.maxima_entrada; (*********minima salida**********************************************) propiedades_ganancia.minima_salida:=propiedades.minima_salida; propiedades_integral.minima_salida:=propiedades.minima_salida; propiedades_derivativa.minima_salida:=propiedades.minima_salida; (*********maxima salida**********************************************) propiedades_ganancia.maxima_salida:=propiedades.maxima_salida; propiedades_integral.maxima_salida:=propiedades.maxima_salida; propiedades_derivativa.maxima_salida:=propiedades.maxima_salida; (********ganancia proporcional********************************************) propiedades_ganancia.ganancia_proporcional:=propiedades.ganancia_proporcional; (********ganancia integral********************************************) propiedades_integral.ganancia_integral:=propiedades.ganancia_integral; (********ganancia derivativa ********************************************) propiedades_derivativa.ganancia_derivativa:=propiedades.ganancia_derivativa; (********filtro del polo ********************************************) propiedades_derivativa.polo_filtro:=propiedades.polo_filtro; (********filtro del polo ********************************************) (*********desarrollo*********) (*************************************************************************) if Habilitar then (*****************************proteccion de entrada********************************) if (entrada<=propiedades.mimima_entrada) then entrada:=propiedades.mimima_entrada; end_if; if (entrada>=propiedades.maxima_entrada) then entrada:=propiedades.maxima_entrada;
115
end_if; (*****************************proteccion de referencia********************************) if (referencia<=propiedades.mimima_referencia) then referencia:=propiedades.mimima_referencia; end_if; if (referencia>=propiedades.maxima_referencia) then referencia:=propiedades.maxima_referencia; end_if; (*******************ENTRADA PARTE INTERAL*************************) entrada_integral:=referencia-entrada; (*******************ENTRADA PARTE PROPORCIONAL*************************) if (propiedades.modo_entrada_proporcional=0) then // entrada proporcional igual al error entrada_proporcional:=entrada_integral; elsif (propiedades.modo_entrada_proporcional=1) then // entrada proporcional igual al error negativo entrada_proporcional:=-entrada_integral; elsif (propiedades.modo_entrada_proporcional=2) then // entrada proporcional igual a la referncia entrada_proporcional:=referencia; elsif (propiedades.modo_entrada_proporcional=3) then // entrada proporcional igual a la entrada entrada_proporcional:=entrada; elsif (propiedades.modo_entrada_proporcional=4) then // entrada proporcional igual a la salida entrada_proporcional:=salida; elsif (propiedades.modo_entrada_proporcional=5) then // entrada proporcional igual a la referencia -salida entrada_proporcional:=referencia-salida; elsif (propiedades.modo_entrada_proporcional=6) then // entrada proporcional igual a la salida - referencia entrada_proporcional:=salida-referencia; elsif (propiedades.modo_entrada_proporcional=7) then // entrada proporcional igual a la entrada- salida entrada_proporcional:=entrada-salida; elsif (propiedades.modo_entrada_proporcional=8) then // entrada proporcional igual a la salida - entrada entrada_proporcional:=salida-entrada;
116
end_if ; (*******************ENTRADA PARTE DERIVATIVA*************************) if (propiedades.modo_entrada_derivativa=0) then // entrada derivativa igual al error entrada_derivativa:=entrada_integral; elsif (propiedades.modo_entrada_derivativa=1) then // entrada derivativa igual al error negativo entrada_derivativa:=-entrada_integral; elsif (propiedades.modo_entrada_derivativa=2) then // entrada derivativa igual a la referncia entrada_derivativa:=referencia; elsif (propiedades.modo_entrada_derivativa=3) then // entrada derivativa igual a la entrada entrada_derivativa:=entrada; elsif (propiedades.modo_entrada_derivativa=4) then // entrada derivativa igual a la salida entrada_derivativa:=salida; elsif (propiedades.modo_entrada_derivativa=5) then // entrada derivativa igual a la referencia -salida entrada_derivativa:=referencia-salida; elsif (propiedades.modo_entrada_derivativa=6) then // entrada derivativa igual a la salida - referencia entrada_derivativa:=salida-referencia; elsif (propiedades.modo_entrada_derivativa=7) then // entrada derivativa igual a la entrada- salida entrada_derivativa:=entrada-salida; elsif (propiedades.modo_entrada_derivativa=8) then // entrada derivativa igual a la salida - entrada entrada_derivativa:=salida-entrada; end_if ; GANANCIA(GANANCIA,Habilitar,entrada_proporcional,salida_ganancia,propiedades_ganancia); INTEGRAL(INTEGRAL,Habilitar,entrada_integral,salida_integral,propiedades_integral); DERIVADOR(DERIVADOR,Habilitar,entrada_derivativa,salida_derivativa,propiedades_derivativa); salida:=salida_ganancia+salida_integral+salida_derivativa; (**************control salida*************************) if (salida<=propiedades.minima_salida) then salida:=propiedades.minima_salida; end_if;
117
if (salida>=propiedades.maxima_salida) then salida:=propiedades.maxima_salida; end_if; (**********************************) else referencia:=0; entrada:=0; salida:=0; entrada_proporcional:=0; salida_ganancia:=0; entrada_integral:=0; salida_integral:=0; entrada_derivativa:=0; salida_derivativa:=0; end_if;
118
Código de Parámetros (********************** error de estado estado estaionario*****************************) error:=(ABS((referencia-entrada)/referencia))*100; error_estacionario:=error; (**************************Comprobacion de dato****************************) // evaluador : memoria de entrada a comparar con la nueva entrada para saber si es mayor o menor // bandera_pendiente permite definir si la señal es mayor que la anterior o menor si es 1 es menor si es 2 es mayor // bandera_referencia : reinicia todo si la referencia cambia if habilitar then if bandera_referencia<>referencia then //evaluador:=0; bandera_pendiente:=0; contador:=0; bandera_cota:=0; bandera_sobreimpulso:=0; cota:=0; bandera_referencia:=referencia; Tiempo_estabilizacion:=0; Maximo_sobreimpulso:=0; else if evaluador<>entrada then if evaluador < entrada then bandera_pendiente:=1; end_if; if evaluador > entrada then bandera_pendiente:=2; end_if; evaluador:=entrada; else evaluador:=entrada; end_if; (**************************Analisis****************************)
119
if evaluador=entrada then // Calculo del tiempo de estabilizacion //contador :cuenta las veces que el error con la cota es mayor al 5% if (abs((cota-referencia)/referencia)*100) > 5 then Tiempo_estabilizacion:=(contador/1000)*periodo_de_muestreo; if error < 5 then if not bool_error then aux_tiempo:= Tiempo_estabilizacion; bool_error := 1; contador :=0; end_if; else bool_error := 0; end_if; else Tiempo_estabilizacion := aux_tiempo; end_if; // Calculo del maximo sobre impulso // bandera_cota:define donde hay arista si es 1 hay una arista encima de la referncia si es 2 es viseversa // bandera_sobreimpulso : Para avisar que ya hallo el maximo sobre impulso y siga esca // cota :medida tomada en la arista sirve para hallar el tiempo de estabilizacion if bandera_pendiente=1 then if bandera_cota=2 then if not bandera_sobreimpulso then bandera_sobreimpulso:=1 ; Maximo_sobreimpulso:=abs((evaluador-referencia)/referencia)*100; end_if; cota:=abs(evaluador); end_if; bandera_cota:=1; end_if; if bandera_pendiente=2 then if bandera_cota=1 then if not bandera_sobreimpulso then bandera_sobreimpulso:=1 ; Maximo_sobreimpulso:=abs((evaluador-referencia)/referencia)*100; end_if; cota:=abs(evaluador); end_if; bandera_cota:=2; end_if;