Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Control Proporcional-Integral de caudal con FactoryIO - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
Vamos a realizar un control de caudal. Realmente no va a ser un control proporcional, sino que va a ser un control proporcional integral.
00:00:09
Así que a la acción proporcional que hemos utilizado hasta ahora, vamos a añadirle la acción integral y se la vamos a sumar.
00:00:16
Bien, para ver cómo funciona este tipo de control, vamos a verlo en Factory.
00:00:27
Abrimos una escena, pero voy a coger una escena de las que, por ganar tiempo, voy a coger una escena de las que ya me trae incorporada Factory, la que level control. Un control de nivel. Perfecto. Una vez que la tenemos, vamos a ver qué elementos tenemos.
00:00:33
Bien, lo primero el cuadro. El cuadro que me proporciona es el que voy a utilizar. Voy a tener un pulsador de Start o Marcha, un pulsador de Stop. El pulsador de Reset no es necesario, lo dejo, pero no lo voy a utilizar.
00:00:53
el potenciómetro de setpoint
00:01:09
el potenciómetro de setpoint
00:01:11
y luego voy a tener un display, bueno, antes de nada
00:01:17
lo voy a configurar
00:01:19
entre 0 y 10
00:01:21
el setpoint, voy a tener
00:01:22
dos displays, uno para
00:01:25
visualizar el setpoint y otro para visualizar
00:01:27
la variable de proceso, repito
00:01:29
estamos haciendo un control de caudal, por tanto
00:01:31
la variable de proceso es la señal
00:01:33
de caudal, no de nivel de caudal
00:01:35
los dos
00:01:37
displays los
00:01:39
configuramos en integer perfecto una vez que ya tenemos vamos a ver cómo funciona el control de
00:01:41
caudal vamos a hacer un control de caudal en este caso manual como lo vamos a hacer bien pues para
00:01:49
ello la válvula de llenado no la vamos a regular lo único que vamos a hacer es vamos a dejarla al
00:01:56
100% así que directamente no el sensor no el actuador la válvula de llenado directamente
00:02:02
vamos a provocar el llenado del depósito al 100% esperamos a que se llene bien ya está bastante
00:02:10
lleno así que la válvula de llenado la voy a cerrar para que deje de llenarse a continuación
00:03:28
voy a visualizar la válvula de descarga aquí la tengo y vamos a girarnos ligeramente al
00:03:35
contrario sensor también voy a visualizar el medidor de caudal o medidor de flujo o el sensor
00:03:42
de flujo o el sensor de caudal llamadlo como queráis pero esta pieza de aquí realmente este
00:03:52
componente de aquí es el que me va a medir la cantidad de agua que va a salir y es el que voy
00:03:58
a regular yo voy a regular la cantidad de agua que sale por aquí de que va a depender de la
00:04:03
de la llamada presión hidrostática cuál es la presión hidrostática la altura de este depósito
00:04:09
cuanto mayor altura sea cuanto perdón cuanto mayor altura tenga más presión hidrostática existe y por
00:04:14
tanto más caudal saldrá por aquí el propio peso del agua es el que va a provocar que haya más
00:04:22
salida si el depósito está más vacío la presión hidrostática es inferior y entonces el caudal de
00:04:29
salida aquí será también inferior qué es lo que yo voy a tener que conseguir pues voy a tener que
00:04:37
conseguir un determinado nivel de salida de agua en como en tanto por ciento yo puedo hacer que sea
00:04:41
el 100% el 20% el 10% el 40% el flujo de agua que salga a través de esta tubería y cómo lo voy a
00:04:48
regular mediante la válvula de descarga vamos a hacerlo de modo manual para que se entienda
00:04:58
Imaginaos que yo quiero obtener siempre aquí un nivel del 50%, recordad que lo tenemos regulado en tanto por ciento, pues entonces un 50%, por ejemplo quiero obtener ahí, perdonad este no, la válvula de descarga, eso es, la válvula de descarga, voy a empezar a descargar suficiente, ¿para qué?
00:05:03
Para llegar aquí a un 50% de descarga. Empieza a descargar, empieza a descargar hasta que obtenga un poquito. Es difícil. Bueno, un 4,9, un 49% ahora mismo. Con esta altura, esta válvula tiene que estar al 53% para tener un 47.
00:05:31
voy a como la altura va disminuyendo yo tengo que aumentar el caudal perdón aumentar la apertura de
00:05:52
la válvula para que para provocar obtener siempre el mismo caudal constantemente aquí de un 50%
00:05:59
aproximadamente ahora tengo un 50% de salida de agua porque porque lo estoy midiendo a ya me han
00:06:05
disminuido un 48 porque porque la altura hidrostática es menor perdón con la presión
00:06:13
hidrostática es menor que tengo que hacer pues para aumentarlo tengo que abrir más la válvula
00:06:18
de descarga ahora tengo un 50% ya va disminuyendo por tanto tengo que abrir más todavía ahora tengo
00:06:24
un 52 porque ya tengo abierta al 80% la válvula porque porque la presión hidrostática es menor
00:06:32
la altura es menor 47 tengo que seguir aumentando un poquito más tengo que abrir más ya tengo el
00:06:39
50% bien veis en qué consiste entonces la regulación que tenemos que hacer la regulación
00:06:46
que tenemos que hacer entonces es modificar la apertura de la válvula de descarga para mantener
00:06:52
constante el flujo de salida esté el depósito a la altura que esté entendido perfecto bien pues
00:06:59
sabiendo ya que lo que tenemos que hacer antes de nada fijaos que se ha quedado forzada en las
00:07:08
Os aconsejo siempre que no las dejéis forzadas porque si no, cuando simuléis, van a quedar forzadas y vais a pensar que no funciona correctamente y lo que teníais era forzada las válvulas.
00:07:13
bien entonces me voy al driver lógicamente no tengo ningún driver cargado entonces como no
00:07:23
tengo la máquina física me voy al plc sin y me voy a la configuración yo lo voy a hacer con
00:07:33
1500 y tengo la versión 14 vosotros pues si tenéis la versión 15 tendréis que modificar aquí el tipo
00:07:42
de dato voy a utilizar doble word para poder utilizar reales valores reales y como aconseja
00:07:50
el fabricante las entradas digitales empiecen en el byte 10 las salidas digitales en el 0 las
00:07:58
entradas analógicas en el byte 30 y las salidas analógicas también en el byte 30 voy a poner
00:08:07
cuatro entradas digitales
00:08:13
también voy a poner
00:08:16
cuatro salidas digitales
00:08:17
cuatro
00:08:21
el efecto me pone tres, le voy a poner
00:08:21
cuatro entradas analógicas y cuatro
00:08:25
salidas analógicas
00:08:27
pues el driver ya estaría
00:08:28
configurado y ahora
00:08:31
mi señal de store en el 10.0
00:08:32
la de reset aunque no la voy a utilizar la pongo
00:08:35
en el 10.1, el stoz al 10.2
00:08:37
el medidor de nivel
00:08:39
no lo voy a utilizar en este caso
00:08:40
porque no voy a hacer un control de nivel
00:08:43
entonces y de 30 si voy a utilizar el sensor de caudal que lo pongo en el 34 y el setpoint en el 38
00:08:44
el setpoint recordáis que es el potenciómetro la luz de marcha la del pulsador de marcha la pongo en el Q0.0
00:08:53
la de reset y la de esto la pongo en el 1 y en el 2 aunque no las voy a utilizar
00:09:00
la válvula de llenado la pondré al 100% y la pongo en el Q de 30
00:09:05
la de descarga que es la que voy a regular en el 34 y luego los displays el display donde voy a visualizar el set point de 0 a 100 porque va a estar en porcentaje va a ser un doble entero en el 38 y el display donde voy a visualizar la cantidad de agua que va a salir la cantidad de flujo de agua la cantidad de caudal porque es la variable de proceso la pongo en el QD42
00:09:11
pues ya estaría totalmente configurado lo que sería mi escena de Factory I.O.
00:09:41
Lo siguiente voy a explicar aunque sea brevemente
00:09:56
el modo de funcionamiento a nivel de bloques y a nivel de integral de este circuito.
00:09:58
Bien, básicamente lo que voy a hacer es lo mismo que hacía antes.
00:10:06
Voy a tomar mi señal de caudal real, la escalaré entre 0 y 100
00:10:10
porque voy a trabajar en porcentaje
00:10:15
y lo mismo voy a hacer con mi señal de setpoint del potenciómetro la escalaré entre 0 y 100 porque
00:10:16
también trabajar en potenciómetro las compararé en definitiva la restaré y así obtendré mi señal
00:10:22
de error con ese error por un lado haré el tratamiento proporcional que es semejante a lo
00:10:27
que hacíamos antes o sea multiplicarlo por una constante de proporcionalidad por una cape y el
00:10:32
resultado lo obtendré aquí por otro lado voy a hacer la integral del error de este error que va
00:10:37
a ser un error que no va a ser constante que va a ir modificándose según va llenándose el depósito
00:10:45
o vaciándose el depósito en este caso entonces voy a realizar la integral de este error y le voy
00:10:51
a multiplicar también por una constante de proporcionalidad integral o una a una caí bien
00:10:57
esta caí me va a dar realmente la importancia que voy a dar a este componente si esta caí vale cero
00:11:05
significa que lo único que voy a hacer aquí es un control proporcional semejante a lo que había
00:11:12
hecho en prácticas anteriores pero si este caí es distinto de cero significa que le voy a dar un
00:11:17
peso si este caí es pequeño el peso que tendrá la componente integral pues va a ser pequeño pero
00:11:22
si la caí es grande si está constante de proporcionalidad integral es grande significa
00:11:29
que el peso que voy a dar a la integral a la componente integral va a ser grande y va a
00:11:34
influir bastante en la acción de control al final voy a sumar la acción integral con la acción
00:11:39
proporcional y voy a generar la variable manipulada esa variable manipulada ataca a la válvula de
00:11:44
descarga para que se abra o cierre más y así mantener y así conseguir la señal de caudal que
00:11:50
queremos bien básicamente es esto la dificultad en esta práctica cuál es pues realizar la integral
00:11:57
programando la integral al fin y al cabo que es pues la integral realmente es el es como calcular
00:12:03
un área de una función un tanto extraña porque el error es va a ser una función muy muy aleatoria
00:12:10
entonces bueno aquí como ejemplo me he puesto yo no una señal demasiado aleatoria porque es una
00:12:17
línea recta que varía entre 2 y 4 como se calcularía la integral pues la integral realmente
00:12:22
se calcularía dividiendo esta función en trocitos como en rodajas en este caso la he dividido en
00:12:28
tres rodajas cada una de ellas tiene de base 0,1 0,1 es el tiempo entonces si yo sumo las áreas de
00:12:35
estas tres rodajas obtengo la integral de tal modo que aproximadamente entonces sería la rodaja verde
00:12:45
sería 2 por 0,1 2 es la altura 0,1 es la base como es un rectángulo 2 por 0,1 sería el área de la
00:12:51
zona verde la zona azul del mismo modo sería 3 por 0,1 y la zona morada sería 4 por 0,1 0,2 más 0,3
00:12:59
más 0,4 0,9 sería la integral repito que coincide aproximadamente con el área esto sería bastante
00:13:07
sencillo si lo pudiéramos hacer así pero en nuestro caso el error está modificándose y tengo siempre
00:13:17
un error constante por eso me he creado una pila que es lo que se utiliza en programación para
00:13:22
realizar este tipo de cálculos una pila de tres posiciones cada una de esas posiciones le he puesto
00:13:27
un nombre aquí voy a obtener el error actual la siguiente posición va a ser mi error presente y
00:13:33
la tercera posición va a ser el error pasado de tal modo que cada ciclo de scan del en este caso
00:13:42
del plc voy a ir rotando estos valores lo que tenía en error pasará error presente lo que había
00:13:49
en error presente pasa error pasado en el siguiente ciclo de scan lo mismo el error actual pasa error
00:13:57
lo que había en el en el ciclo anterior en error pasa a error presente y lo que había error presente
00:14:04
pasa error pasado. Así que cada ciclo de scan va a ir rotándose. ¿Cómo calculo la integral? Pues el
00:14:10
mejor método para ver cómo calculo la integral es con un ejemplo. El ejemplo anterior, recordáis,
00:14:17
este ejemplo de aquí. ¿Cómo se haría la integral en un cálculo informático? Pues lo que tengo en el
00:14:22
error actual lo paso a error. En este caso, en el primer ciclo de scan, error igual a 2. Error
00:14:30
presente como no había nada pues cero y error pasado también cero el área del error como la
00:14:35
calculo como error presente más error pasado por 0,1 que es la base partido 2 0 más 0 por 0,1
00:14:41
partido 2 es 0 y luego voy acumulando los errores este integral del error realmente es el error
00:14:48
acumulado lo que tengo aquí que es el área del error más los errores anteriores como acabo de
00:14:55
empezar ahora mismo en los errores anteriores valen 0 0 más 0 es igual a 0 en el segundo ciclo
00:15:01
de scan que es lo que ocurre pues el error lo que tenía en error pasa al error presente lo que tenía
00:15:07
en error presente pasa error pasado y el nuevo error se me carga en la variable error en la
00:15:13
primera posición de tal modo que cuando calculo el área del error ahora tengo 2 más 0 por 0,1 partido
00:15:19
2 el área del error ahora es 0,1 este área del error se suma al error acumulado anterior cuánto
00:15:26
tenía antes 0 pues ahora lo que tengo es el área del error que sería 0,1 más 0 que es la acumulación
00:15:35
de los errores anteriores eso suma 0,1 así que acumulación del error 0,1 en el siguiente ciclo
00:15:41
de scan rotan los distintos valores entre los valores de la pila o sea el error ahora vale 4
00:15:48
el error presente 3 y el error pasado vale 2 realizo este cálculo del área del error y obtengo
00:15:55
0.25 este 0.25 le tengo que sumar la acumulación del error anterior 0.1 pues 0.1 más 0.25 0.35
00:16:00
al siguiente ciclo de scan que es el cuarto ciclo de scan lo que tengo en el error ya el error actual
00:16:09
pasa a valer 0 el error presente 4 y el error pasado vale 3 realizo este cálculo y obtengo un
00:16:16
área de error de 0.35. A 0.35 tengo que sumarle la acumulación del error anterior que también
00:16:22
era 0.35 así que ya llevo un error acumulado de 0.70. Vuelvo al siguiente ciclo de scan en el
00:16:29
quinto ciclo de scan a ir rotando los valores entre las distintas posiciones de la pila. Ahora
00:16:38
error 0, error presente 0 y error pasado 4. Realizo el cálculo del área de error y vale 0.2. Vuelvo a
00:16:44
sumar la integral del error perdón vuelvo a obtener la integral del error que es el error
00:16:51
acumulado y sería el área más la acumulación de errores anteriores y eso sería 0,2 más 0,7 0,9
00:16:56
como veis es exactamente el mismo valor que se obtenía con el cálculo de la suma de áreas por
00:17:03
tanto el resultado es idéntico esto que hemos hecho así matemáticamente es lo que vamos a hacer
00:17:09
a la hora de programar en el plc y es justamente lo que vamos a hacer a continuación entonces nos vamos a ti a portal en ti a portal lo primero la variables las variables la tabla de variables es esta de aquí para que se visualiza entera la sal suelto ahí tenemos todas las variables tengo las variables que tenía en el factory más todas las variables temporales bueno todas las variables intermedias que tengo aquí en forma de marcas
00:17:15
que iremos viendo a la hora de programar vuelvo a dejarlo y empezamos a programar para programar
00:17:47
entonces empiezo bueno he dejado los títulos de los segmentos para no tener para que no se
00:17:54
haga el vídeo eterno bien como siempre habilitación como siempre entonces habilitamos con un ser ese
00:18:02
mi señal de marcha, un normalmente abierto
00:18:08
que va a ser lo que le he llamado Start
00:18:15
mi señal de paro, que como bien sabéis en Factory es un pulsador
00:18:18
normalmente cerrado, por tanto aquí también tiene que ser normalmente cerrado
00:18:24
mi señal de Stop y mi señal de habilitación
00:18:28
es una marca, voy a visualizar también
00:18:32
mediante un pequeño piloto el cuadro
00:18:39
estoy en marcha, bien, tal como comenté anteriormente
00:18:47
vamos a hacer, no, vamos a
00:18:51
meter ahí una variable, cuando tenga habilitado el sistema
00:18:55
cuando haya habilitación voy a hacer
00:18:59
un move, lo que voy a hacer realmente es llenar a tope
00:19:03
llenar a tope el depósito
00:19:08
así que la válvula de llenado, que yo la he llamado
00:19:14
la válvula de llenado
00:19:18
que es la 30
00:19:22
le meto valor a tope
00:19:22
y si el sistema
00:19:25
no está habilitado
00:19:28
si el sistema no está habilitado
00:19:29
lo que voy a hacer es
00:19:37
no se llene el depósito
00:19:39
para no perder tiempo
00:19:49
bien
00:19:54
vamos a hacer a continuación el escalado
00:19:58
del set para hacer un escalado
00:20:01
como bien sabemos ya tenemos que hacer
00:20:02
un normalizado y un escalado
00:20:04
así que un
00:20:07
normalizado
00:20:10
y un escalado
00:20:12
y un escalado
00:20:18
el tipo de entrada va a ser
00:20:19
es el potenciómetro, va a ser un real
00:20:23
la salida
00:20:26
el normalizado será un real
00:20:28
la entrada y el escalado un real
00:20:29
y la salida también va a ser un valor real
00:20:31
porque va a ser después el que voy a utilizar
00:20:34
para restar con la señal
00:20:36
pv
00:20:38
bien, ¿entre qué valores puede variar
00:20:38
la señal de entrada
00:20:42
del potenciómetro, pues entre
00:20:44
como está en valores reales
00:20:46
entre 0 y 10
00:20:48
y aquí sería mi señal
00:20:49
de potenciómetro que le hemos llamado
00:20:52
setpoint, este sería el potenciómetro
00:20:54
recordáis
00:20:59
perdón, recordáis
00:21:00
que el setpoint
00:21:02
que estaba en el 38
00:21:09
lo veis aquí
00:21:11
bien, estos son variables
00:21:13
temporales
00:21:16
así que directamente me las he creado
00:21:16
aquí para no tener problemas
00:21:20
esta es no directamente es el set point vale el normalizado del set point pues directamente me la
00:21:22
traigo bien la copio y será mi señal de entrada y la pego en el escalado entre qué valores os he
00:21:30
He dicho que lo queremos en tanto por ciento, por lo tanto, entre 0 y 100.0.
00:21:41
Perfecto.
00:21:50
Y la salida va a ser mi salida de escalado.
00:21:52
Mi salida de escalado que yo le he llamado SP escalado.
00:21:57
SP escalado, muy bien.
00:22:06
A continuación, este valor también lo tengo que visualizar.
00:22:08
El valor del setpoint entre 0 y 100 también lo tengo que visualizar en un display.
00:22:11
Podría hacerlo como lo he hecho en prácticas anteriores mediante una conversión, pero lo vamos a hacer de otro modo para que veáis otro modo de programarlo. Como casi siempre, todas las cosas se pueden hacer de distintos modos y cada uno las hace como quiere, pero para que veáis los distintos modos de trabajar, yo lo voy a hacer directamente con un, en vez de hacerlo con una conversión, lo voy a hacer con otro escalado.
00:22:15
copio las señales
00:22:36
para ganar tiempo
00:22:43
aquí lo mismo que antes
00:22:45
0.0 pero
00:22:47
ahora sí, ahora la salida va a ser un doble entero
00:22:50
¿por qué?
00:22:53
porque lo que voy a visualizar es el display
00:22:55
voy a visualizar valores
00:22:57
bueno, no, este es un valor
00:23:01
entre 0 y 100, no es necesario que sea
00:23:03
real, y aquí sería
00:23:05
la salida del display
00:23:10
que yo lo he llamado
00:23:11
y lo he llamado
00:23:13
display, como estoy haciendo el
00:23:16
setpoint, perfectamente
00:23:18
bien, ahora
00:23:20
realmente lo que voy a
00:23:22
hacer es el escalado de la
00:23:24
señal de caudal, del sensor de caudal
00:23:26
bien, es
00:23:28
exactamente igual que el anterior
00:23:30
en vez de copiar todo el segmento me voy copiando los
00:23:31
bloques, a ver si no me equivoco
00:23:34
y a continuación
00:23:36
voy a copiar, repito
00:23:40
todos los bloques por ganar un poquito de tiempo
00:23:42
Lo único que voy a cambiar son las señales, las variables. Aquí lo único que varía es que en vez de ser la señal de setPin voy a tener la señal del sensor de caudal. Esta señal, lógicamente, ya no es el normalizado del setPin, sino que tengo otro normalizado aquí que lo he llamado normalizado del PV.
00:23:44
La copio, la pego y también la pego aquí. Y, típicamente, en vez de ser inescalado esta señal, pues será V escalado. Y aquí, pues el display del PV.
00:24:16
El display del PV. Perfecto. Bien, ya tenemos entonces escalado el sensor del potenciómetro y escalado el sensor de la variable de proceso, o sea, el sensor de caudal. Para que nos situemos, estamos aquí.
00:24:43
Hemos hecho ahora mismo el escalado de esta señal y hemos hecho anteriormente el escalado de esta señal. ¿Qué tengo que hacer ahora? Pues la resta para obtener la señal de error. Pues eso es lo que vamos a hacer a continuación, el cálculo del error mediante una resta.
00:25:09
¿Qué tenemos que restar? Pues tenemos que restar, bueno, no me la sé memoria, pero la copio y la pego. ¿Tenemos que restar? No, este no es el setpoint del escalado. Ah, sí, sí, perdón, sí. Este sería copiar y v escalado. La señal que voy a obtener aquí es el error. Perfecto, muy bien.
00:25:25
Ya tenemos entonces mi señal de error. A continuación, ¿qué es lo que vamos a hacer? Calcular justamente la acción integral. O sea, lo que vamos a hacer es esto de aquí, la multiplicación de esta señal de error que ya tengo por el KP para obtener justamente esta variable.
00:26:07
Pues vamos a calcular la acción integral entonces
00:26:23
Para calcular la acción integral no es más que hacer una multiplicación
00:26:27
La multiplicación, esto es lo que hemos hecho cuando hacíamos la ganancia proporcional
00:26:32
¿De qué? Pues de mi señal de error, la KP
00:26:41
Por mi constante de proporcionalidad, constante proporcional
00:26:47
Sería KP, efectivamente
00:26:51
Y la señal que obtengo ahí es lo que yo he llamado regulador proporcional
00:26:53
este regulador proporcional me va a dar un valor muy grande
00:27:02
por tanto voy a hacer un control de saturación
00:27:06
¿cómo? mediante un limit
00:27:09
lo que voy a hacer es limitar realmente el valor
00:27:11
pues hagamos un limit
00:27:14
¿entre qué? pues entre 200 por ejemplo
00:27:16
vamos a decir primero el tipo de variable que es
00:27:20
es un tipo real y aquí le vamos a poner 200.0
00:27:24
y el valor mínimo menos 200.0
00:27:30
porque podría ser negativo también
00:27:35
entonces aquí lo que vamos a hacer es el regulador
00:27:36
o sea esta misma señal la copiamos
00:27:41
la pegamos, perfecto
00:27:44
y la volvemos a pegar aquí
00:27:47
ahora a continuación vamos a crear la pila
00:27:49
realmente la manipulación de la pila no es más que mover variables
00:27:53
como recordáis
00:27:57
Entonces, realmente vamos a hacer un move
00:27:58
¿Un move de qué?
00:28:01
Desde el error presente
00:28:05
Recordáis, el error presente
00:28:06
Lo que hay en el error presente pasará al error pasado
00:28:09
Y a continuación, con otro move
00:28:14
Lo que había en el error pasa al error presente
00:28:21
Perfecto
00:28:30
Esto es la manipulación de la pila
00:28:34
Primero el error presente pasa al error pasado y luego el error pasa al error presente.
00:28:36
Muy bien.
00:28:41
Ahora voy a calcular el área.
00:28:43
Para calcular el área realmente lo que quiero hacer es, repito, es esta expresión.
00:28:44
Calcular esta expresión matemáticamente.
00:28:50
O sea, el error presente más el error pasado por 0,1 dividido 2.
00:28:53
Eso es lo que quiero hacer.
00:28:57
En vez de hacerlo con varios bloques, lo voy a hacer con un único bloque.
00:28:58
Para ello, directamente entonces, un único bloque que se llama Calculate, o Calculate en español.
00:29:01
Voy a poner en juego cuatro variables. Aquí, por defecto, solo me aparecen dos, pues le vamos a poner cuatro.
00:29:13
En la 1, pues va a ser el error presente. Bueno, no, mejor el error pasado, da igual, pero...
00:29:19
en la 2, el error presente, el 3, 2.0, será el valor en el que lo voy a dividir, aquí, 0.1, perdón, 0.1.
00:29:27
A continuación tengo que poner la expresión que quiero utilizar, o bien le dais aquí a la calculadora, o bien aquí.
00:29:45
Doble clic y aquí hay que poner la expresión. Así que voy a ponerla, voy a poner doble paréntesis, aquí sería,
00:29:50
IN1 más IN2, cierro paréntesis, en este caso sería por IN4, cierro paréntesis, uno de los paréntesis, no, lo divido todo entre IN3, es la expresión, repito, que tenemos aquí.
00:29:57
Y la salida que voy a obtener aquí es el área del error, que yo he llamado de error. Muy bien. Tenemos hecho este cálculo. A continuación, ¿qué es lo que tengo que hacer? Pues este otro. Ir acumulando errores, ir acumulando errores.
00:30:25
Bien, para hacer una acumulación de un error realmente lo que tengo que hacer es una suma, pues hago la suma, recordáis es la función, el bloque ad, y qué tipo va a ser los valores con los que voy a trabajar, con reales, ¿qué es lo que voy a sumar? Pues voy a sumar el área del error, pero lo voy a poner aquí, da igual, el área del error más una variable nueva que va a ser donde voy a acumular el error y que yo le llame, si recordáis, error.
00:30:43
El resultado lo voy a copiar y también le voy a hacer un control de saturación. Va a ser real y va a ser esta variable de aquí, la acumulación del error.
00:31:21
¿Entre qué valores puede variar? Pues entre 200.0 y menos 200.0.
00:31:44
El cálculo de la integral del error solo lo voy a hacer realmente cuando, si os fijáis, solamente me va a interesar realizar el cálculo cuando k i sea mayor que 0.
00:32:00
O sea, solamente va a influir cuando KI sea mayor que 0. Si KI es menor que 0, aquí tiene que aparecer un 0. Aquí tiene que haber un 0. ¿Cómo se hace eso? Pues haciendo una comparación previa. ¿De qué? Pues de KI.
00:32:12
Si k y, en mi caso, es distinto en real que 0.0, entonces hago esto. Bueno, perdonad que se me ha olvidado poner aquí la variable de salida que es la misma, la acumulación del error. Así que si k y es distinto que 0, hago esto.
00:32:30
pero si cae no es distinto de 0
00:32:57
o sea, podía hacer otra comparación aquí
00:33:00
para hacer lo que voy a hacer
00:33:02
pero lo voy a hacer de otro modo
00:33:04
repito, es para que aprendáis
00:33:06
distintas estrategias de programación
00:33:07
aquí entonces lo que voy a hacer es
00:33:09
una función distinta que es el not
00:33:11
en operaciones lógicas not
00:33:14
y ahora explico
00:33:16
qué es lo que estoy haciendo
00:33:20
realmente aquí voy a hacer un move
00:33:22
¿un move de qué?
00:33:24
pues de 0.0
00:33:32
¿A qué? A la variable de integral del error, a la variable del error acumulado. ¿Cómo trabaja esto entonces? Si k es distinto de 0, o sea, esto es verdad, esto es cierto, esto es true, pues entonces me vengo por aquí.
00:33:33
Pero si no es verdad, me voy por aquí y entonces hago esto. O sea, pongo cero y entonces pongo cero aquí. Significa que no va a influir. Voy a tener solamente el control proporcional. Eso es si KI es igual a cero. Seguimos y ya nos queda poco.
00:33:53
vamos a calcular la acción integral
00:34:13
entonces a continuación
00:34:15
¿cómo calculamos la acción integral?
00:34:17
pues multiplicando por la constante
00:34:19
KI
00:34:22
o sea, la acumulación del error
00:34:22
o sea, lo que he hecho realmente ha sido
00:34:25
esto, la integral
00:34:27
ahora tengo que multiplicarlo por KI
00:34:29
a ver, por ver el peso
00:34:31
pues nada, me voy y multiplico
00:34:33
multiplico
00:34:36
¿qué? pues
00:34:40
este valor de aquí, bueno, lo voy a poner en real
00:34:42
era la integral del error, multiplico por ahí
00:34:45
el peso que quiero darle, la constante integral
00:34:53
y el resultado que voy a obtener ahí
00:34:57
va a ser realmente el regulador integral
00:35:01
el regulador integral, como siempre hago un control de saturación
00:35:04
para que no se me vaya muy alto y va a variar
00:35:10
200.0 y menos 200
00:35:24
Como siempre. Bien. La salida será mi regulador integral. Bueno, en este caso, aunque se podía dejar así, yo he puesto otra variable. Reintegrar límite. Repito, se podía haber dejado perfectamente el regulador integral sin problema.
00:35:31
Y a continuación, pues, ¿qué tengo que hacer? Sumar las dos. Sumar la acción integral y sumar la acción proporcional. Por tanto, una suma de valores reales. ¿De qué? Pues, mi acción integral, que la acabo de calcular hace un momento.
00:36:02
Y la acción proporcional, que no me acuerdo dónde la tengo, aquí está. La copio y me la traigo para acá. Lo que obtengo aquí sería, ya sería mi regulador pi, al cual nuevamente voy a hacer un control, perdón, control de saturación.
00:36:27
Pero en este caso, a ver si carga, vale. En este caso lo voy a hacer entre 0.0 y 200 porque no quiero que sea negativo en ningún caso. Y aquí tengo ya mi regulador integral.
00:36:53
Por último voy a hacer ya un desescalado para atacar, o sea, lo que voy a hacer ahora es atacar a la válvula de descarga, por tanto tengo que hacer un desescalado, un desescalado de esta señal, de la suma, que es mi variable manipulada realmente.
00:37:20
Para hacer un desescalado, como bien sabéis, se hace con un normalizado y un escalado. Normalizado y escalado. Valores, pues de entrada un real, la salida también será un real, la entrada del escalado real y la salida, como voy a atacar a una válvula, también es un real.
00:37:38
mi señal es
00:38:06
la señal de entrada
00:38:09
¿entre qué valores puede variar?
00:38:12
pues entre 0.0
00:38:13
y 200.0
00:38:15
que son los valores que tengo limitados
00:38:18
aquí
00:38:20
me he creado una variable
00:38:21
la he llamado
00:38:23
respe
00:38:25
vale, vamos a bajar
00:38:26
un poco
00:38:29
para traérmela
00:38:30
perfecto
00:38:32
la copio
00:38:35
la copio
00:38:37
y subo esto para que se vea más pantalla
00:38:44
entre qué valores puede variar
00:38:50
como estoy haciendo un desescalado
00:38:52
hacia la válvula de salida, pues entre 0.0
00:38:54
y
00:38:57
10.0
00:38:58
es la válvula de
00:39:00
descarga, que es la que tengo que regular
00:39:02
la válvula de descarga
00:39:04
ya estaría totalmente hecho
00:39:08
ya estaría totalmente hecho
00:39:10
pues lo único que vamos a hacer es
00:39:12
para ver si tenemos algún error
00:39:15
compilar
00:39:16
Compilamos. Tengo un error en el segmento 8.
00:39:21
Ah, que no le he puesto salida, claro.
00:39:29
Aquí la señal que tengo que ponerle es el área del error.
00:39:32
Bien, ahora sí, vamos a intentar compilar otra vez a ver si tenemos algún error.
00:39:41
Cero errores. Bien, está todo correcto.
00:39:47
Una vez que tenemos, ya sabemos que no hay errores, pues simulamos.
00:39:50
Cargamos y arrancamos.
00:40:11
Vamos a darle a las gafitas.
00:40:17
Esta ventana la minimizo. Bien, vamos entonces al Factory. Dentro del Factory vamos a ver si quiere el driver cargar. Si os ocurre esto, yo os aconsejo que si tarda mucho en arrancar y demás, que lo guardéis, cerréis y lo volváis a abrir.
00:40:27
Bien, una vez que está abierto, vamos a ver si ahora sí carga o no carga. Me voy al driver. Perfecto, ya ha cargado. Tarda un poquito, dependiendo de la máquina que tengáis, pero al final pues termina cargando.
00:41:08
vamos entonces a simularlo
00:42:06
pero para simular
00:42:11
antes de nada, ojo
00:42:12
porque tendréis que forzar el valor de kp
00:42:14
tendréis que forzar
00:42:16
kp y ki
00:42:19
porque por defecto valen 0
00:42:20
si este vale 0 y este vale 0 pues no voy a hacer
00:42:22
ningún tipo de regulación y no va a funcionar
00:42:24
no va a dar error pero no va a
00:42:26
funcionar tampoco, por tanto
00:42:28
antes de nada forzamos un valor en kp
00:42:30
y forzamos un valor en ki
00:42:32
empiezo por kp
00:42:34
forzamos
00:42:36
un valor, pues por ejemplo voy a empezar
00:42:39
por 1.0 en KP
00:42:42
y forcemos también un valor
00:42:46
en KAI, le vamos a poner
00:42:48
también para que empiece a funcionar
00:42:57
1.0, luego ya regularemos
00:42:58
bien, ya tenemos los dos valores
00:43:00
forzados
00:43:02
y vamos a empezar entonces a
00:43:03
funcionar
00:43:06
lo primero que vamos a hacer entonces es
00:43:07
darle marcha, que se llene el depósito
00:43:10
que se vaya llenando, mientras tanto
00:43:14
me voy a acercar, veis se va llenando
00:43:18
pero ahora mismo el setpoint que tengo puesto es cero
00:43:24
el setpoint veis es cero
00:43:27
por tanto ahora mismo la válvula realmente no está funcionando
00:43:32
de hecho si me voy y le veo la válvula de descarga
00:43:35
está cero porque no hay nada que regular
00:43:41
está funcionando, está llenando
00:43:43
quiero que se llene más
00:43:50
para que veamos funcionar correctamente
00:43:51
aunque le he metido KP y KI
00:43:54
pero no está regulando nada porque no tengo nada de setpoint. El setpoint está en cero,
00:43:57
por tanto no regula nada. Empecemos. Vamos a regular. Que se llene un poco más. Yo creo
00:44:03
que así vale ya. Si quiero que deje de llenarse pulsador de paro y deja de llenarse. Vamos a
00:44:16
conseguir una regulación, pues por ejemplo giramos el setpoint para obtener una regulación por
00:44:24
ejemplo de un 29% veis empieza a regular empieza a regular un 30 un 29 28 está funcionando veis
00:44:30
bueno no se ve la válvula de descarga veis ahora mismo está al 34% al 35 para que para mantener
00:44:42
constante ahora ya está regulando y está regulando perfectamente está manteniendo fijaos el set point
00:44:52
que es este de aquí
00:44:58
el setpoint que es este de aquí, 29
00:44:59
y el pv, 29
00:45:03
y estoy obteniendo
00:45:05
la válvula de descarga está al 37%
00:45:07
al 38, ¿por qué?
00:45:10
porque la altura va disminuyendo, vamos a aumentar un poquito
00:45:11
ligeramente el setpoint
00:45:13
al 37, ¿regula?
00:45:15
sí, sí regula
00:45:22
37, ¿veis? ahora mismo lo tenemos
00:45:23
al 37, la válvula lógicamente
00:45:26
se ha abierto más, al 52
00:45:28
53, va cayendo
00:45:30
veis que va vaciando y lo conseguimos
00:45:31
vamos a modificar
00:45:35
vamos a modificar algún valor, vamos a modificar por ejemplo el valor
00:45:38
de la KP, la vamos a forzar y la vamos a poner
00:45:45
por ejemplo a 5, si lo ponemos a 5 vamos a ver como se modifica
00:45:50
vamos a llenar un poco
00:45:57
llenamos, se está llenando y vaciando al mismo tiempo
00:45:59
lógicamente, veis, se va cerrando la válvula
00:46:10
¿por qué? pues porque el nivel del agua va subiendo
00:46:16
la presión hidrostática va aumentando
00:46:20
por tanto, la válvula se va cerrando
00:46:24
y se cerrará mucho más si yo disminuyo más todavía
00:46:26
por ejemplo, a un 15%
00:46:36
se mantiene perfecto, está regulando
00:46:38
De hecho, si le doy al pulsador de paro, la descarga es muy lenta, porque es un 15%, entonces tardaría mucho en verlo.
00:46:44
Lo que voy a hacer es aumentar la descarga bastante.
00:46:57
Veis que tiene un pequeño sobreimpulso.
00:47:03
No es inmediato, tiene un pequeño sobreimpulso.
00:47:10
Veis, aumenta un poquito y luego disminuye.
00:47:14
Disminuye, ¿veis?
00:47:19
Ese sobreimpulso se lo da también la acción integral, pero al final regula y se queda perfecto.
00:47:20
Bien, pues esto es todo. Espero que hayáis entendido. Un saludo para todos.
00:47:37
- Materias:
- Electricidad, Electrónica
- Niveles educativos:
- ▼ Mostrar / ocultar niveles
- Formación Profesional
- Ciclo formativo de grado superior
- Primer Curso
- Segundo Curso
- Autor/es:
- Ángel García
- Subido por:
- Ángel G.
- Licencia:
- Reconocimiento - No comercial - Compartir igual
- Visualizaciones:
- 145
- Fecha:
- 18 de mayo de 2020 - 18:03
- Visibilidad:
- Público
- Centro:
- IES ANTONIO MACHADO
- Duración:
- 47′ 47″
- Relación de aspecto:
- 16:9 Es el estándar usado por la televisión de alta definición y en varias pantallas, es ancho y normalmente se le suele llamar panorámico o widescreen, aunque todas las relaciones (a excepción de la 1:1) son widescreen. El ángulo de la diagonal es de 29,36°.
- Resolución:
- 1024x578 píxeles
- Tamaño:
- 84.73 MBytes