Ejemplo de PID con Factory IO

He querido invitar a Eugenio Argaiz para que nos muestre cómo se puede simular perfectamente un ejemplo de PID con Factory IO. La verdad es que es muy esclarecedor.

Espero que os guste. Os dejo con él…

Un poco de mi.

Hola que tal, buenas tardes…., en esta ocasión les voy a comentar lo que he realizado en este nuevo video….

Así más o menos comienzan los videos que realizo sobre programas para PLCs Siemens.

Me presento: soy Eugenio Argaiz Ruiz,  en la actualidad soy profesor de Simulación de Sistemas Mecatrónicos en el Instituto Inventor Cosme García de Logroño.

Hace tiempo descubrí este canal realizado por Iñigo, y  me puse a seguir lo que hacía. Aprendí mucho más que lo que se puede aprender por los métodos tradicionales.

Esta mañana Iñigo me transmitió la posibilidad de comentar algún programa de los que realizo… y ¡cómo no!

Mi duda era qué programa comentaros… ¡son tantos los programas que realizo últimamente!

Tengo que admitir,  que los últimos son de los que más satisfecho estoy. Cuanto más sabe uno, más sabe lo poco que sabe, y más quiere saber. Igual que un montañero que siente pasión por subir cumbres, cuando sube una… ya bajando va pensando en subir una más alta.

Bueno, no les voy a trasladar como subir la cumbre más alta, porque si no se está acostumbrado, se puede sucumbir en el intento.

Ejemplo de PID con Factory IO

Aprovechando la nueva versión de Factory I/O os voy a comentar un programa que he realizado hace un par de días, el tema es el regulador PID, y lo aplico al control de una variable de nivel, (cm), y como señal modificadora del mismo una válvula proporcional (0..10V). Podéis ver la realización en los siguientes vídeos:

Siempre que realizo un programa lo hago en base  a funciones, es decir, primero pienso en las funciones que se necesitan, que datos entran…, que  resultados deben ofrecer…, que estructura de llamadas debe existir, etc.

Es lo que en ajedrez llamamos la estrategia, y después dejo pasar un par de días por si se me ocurre otra estrategia mejor (una vez que se marca la estrategia todo va condicionado a la misma, un error en la estrategia equivale a perder la partida o lo que es lo mismo a “un churro de programa”).

Vista la estrategia me centro en la táctica, es decir, en realizar cada una de las funciones, normalmente prefiero programar en SCL (es más potente, me cuesta menos hacer un programa y permite logros imposibles desde los otros entornos de programación). Bien es cierto que programo así por mi  formación, (normalmente los alumnos suelen preferir cualquier otro lenguaje, KOP; FUP; GRAPH; por economía).

Ejemplo de PID con Factory IO-pic1En este caso  es sencillo, necesitamos un control manual del depósito,  y un control PID, (en realidad ambos controles son automáticos).

Una vez estructurado el programa, pienso en las entradas y salidas necesarias. En este caso Factory I/O es genial, la tenemos  la tabla conforme hacemos la máquina.  Como podéis observar renombro las variables con el mismo nombre que recibirán en la tabla de variables del programa.

Realizar la máquina no es costoso si se tiene un poco de experiencia.

Ejemplo de PID con Factory IO-pic2

La tabla de variables la tenemos aquí:

Ejemplo de PID con Factory IO-pic3

Seguidamente, empezamos con la táctica… ¡la programación de funciones¡¡

Ssi se tienen buenas librerías, no cuesta mucho hacer programas, pero tener buenas librerías implica un trabajo previo.

Desde el Main, llamo a las funciones necesarias. Como veis no he programado el estado de emergencia. Esto se queda como tarea vuestra.

Ejemplo de PID con Factory IO-pic4

Para manual, hacemos una función (insisto, no es manual, es un control comparativo):

Ejemplo de PID con Factory IO-pic5

Y para automático hago lo propio… otra función:

Ejemplo de PID con Factory IO-pic6

El PID lo llamo desde un OB de interrupción cíclica:

Ejemplo de PID con Factory IO-pic7

Después configuramos el PID y lo ajustamos:

Ejemplo de PID con Factory IO-pic8

Y ya está.

Después de ajustar el PID, toca probar cómo funciona nuestro “invento”. Os puedo asegurar que en este momento disfruto, ver que funciona conforme lo he pensado  es muy satisfactorio.

Hay veces que un regulador PI es más que suficiente, (la mayor parte de las veces), y la labor teórica como es la configuración con el autotuning suele ser suficiente, si no es suficiente, lo que suelo hacer es calcular los parámetros para diferentes “setpoints”.

Posteriormente con un Case,  ajusto los parámetros adecuados.  Mi experiencia me dice que un PID funciona bien solo para el entorno próximo  al SETPOINT, pero… podemos establecer diferentes ajustes para distintos tramos,…

El reto que planteo  a los lectores del blog es realizar sobre esa misma máquina dos PIDs de nivel con las válvulas de llenado y vaciado…, (se complica bastante).

Bueno, pues nada más…   espero que disfruten de la programación, espero que os haya motivado en el desarrollo, se esfuercen para conseguir logros, y levantemos a este bonito país que es España de esta crisis económica y en muchos casos de valores, en la que estamos inmersos.

Saludos, Eugenio Argaiz Ruiz

Está bien esto del

Está bien esto del ejemplo de PID con Factory IO ¿eh?

Ya estoy de vuelta.

En primer lugar, agradecer a Eugenio su participación en el blog. Siempre está bien tener visiones diferentes, y soluciones diferentes que compartir.

Hemos visto con esta entrada, la versatilidad de programar en SCL, y una pequeña parte de lo que nos puede ofrecer Factory IO

Acerca de Iñigo Gútiez

Ingeniero industrial por la Escuela de Ingenieros Superiores de Bilbao. Trabajo como ingeniero de proyectos y automatización en Guardian Industries

Te puede interesar

Entrevista a Juan Carlos Martín (REEA)

En esta ocasión traigo al blog algo muy especial. Más bien a alguien especial. La …

2 Comentarios

  1. La verdad que lo sigo a Eugenio desde hace tiempo, y me parecen muy buenos todos los vídeos que sube, se aprende mucho con él ya que no son los típicos vídeos que puedes encontrar por internet.

    saludos