Diseño e implementación de un framework para desarrollos ...

120
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

Transcript of Diseño e implementación de un framework para desarrollos ...

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.

72

Figura 68: Diagrama general de derivador

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;

111

retraso_entrada:=0; suma_entrada:=0; suma_salida:=0; salida:=0; end_if;

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;

120

end_if; end_if; else evaluador:=0; bandera_pendiente:=0; contador:=0; bandera_cota:=0; bandera_sobreimpulso:=0; cota:=0; bandera_referencia:=0; referencia:=0; //Tiempo_estabilizacion:=0; //Maximo_sobreimpulso:=0; entrada:=0; habilitar := 1; end_if;