Simulación de procesos con controladores lógico-programables (PLC’s) M. García, M. Llorca, J. Oro, D. Solà y E. Barberà* IQS School of Engineering, Universitat Ramon Llull Via Augusta 390, 08017-Barcelona, Spain Process simulation with Programmable Logic Controllers (PLC’ s) Simulació de processos amb controladors lògics programables (PLC) Recibido: 2 de enero de 2014; revisado: 12 de mayo de 2014; aceptado: 13 de mayo de 2014 RESUMEN RESUM La realización de prácticas en el laboratorio de control de procesos presenta como mayor dificultad el coste asociado al funcionamiento del proceso, debido al consumo de reactivos, de energía o a la generación de residuos. Por tanto se propone trabajar con un proceso simulado en un controlador lógico- programable o PLC, con lo que se realiza una práctica de bajo coste y más cercana a la realidad que la pura simulación numérica. Les pràctiques de control de processos presenten un elevat cost associat amb l’operació del procés, a causa del consum de reactius, energia o per la generació de residus. Per tant, la simulació híbrida pot ser una opció molt atractiva. En aquest treball es proposa la simulació de processos amb controladors lògics programables o PLC com pràctica de baix cost i mès propera a la realitat que la pura simulació numèrica. Palabras clave: Control de procesos, simulación, controladores lógico programables Paraules clau: Control de processos, simulació, controladors lògics programables SUMMARY The laboratory of process control can be very expensive, the high cost is associated to the process operation, reagents, energy or waste generation. Therefore, hybrid simulation can be a very atractive option. In this work, process simulation with PLC is proposed as a low cost alternative closer to reality than pure numerical simulation. Key words: Process control, simulation, PLC AFINIDAD LXXI, 566, Abril - Junio 2014 95 1.- INTRODUCCIÓN Siemens®: CPU compacta 314C-2DP con entradas y salidas analógicas de 12 bits. Step 7® Professional 2006 (3). Schneider Electric®: PLC Modicon Premium TSXPSY2600 (fuente de alimentación), TSXP572634 (CPU), TSXAEY414 (entradas analógicas de 16 bits) y TSXASY410 (salidas analógicas de 11 bits + signo). UnityPro® v2.2 (3). Tanto la entrada (variable manipulada) como la salida (variable controlada) se han considerado diferencias de potencial (voltios). El dominio de las técnicas de control de procesos requiere la realización de prácticas que permitan al operador adquirir la habilidad suficiente. Dado el elevado coste de las plantas experimentales se tiende a la ejecución de prácticas por simulación por ordenador, siendo Simulink® de Matlab® uno de los programas más populares. Aunque las prácticas de control de procesos realizadas por simulación son muy útiles, adolecen del defecto de la no manipulación de los elementos reales de control ni de las diferentes señales que intervienen. Tampoco permiten 3.- PLC S-300 SIEMENS® probar el comportamiento de nuevos controladores. Estos inconvenientes se pueden resolver mediante la si3.1.- Primer orden mulación del proceso mediante sistemas electrónicos (1 Un proceso de primer orden viene caracterizado por la Un proceso de primer orden viene caracterizado por la siguiente función de y 2) construido con amplificadores operacionales, lo que siguiente función de transferencia en s normalizada a gatransferencia en s normalizada a ganancia unidad: permite disponer de procesos con la función de transfenancia unidad: Un proceso de primer orden viene caracterizado por la siguiente función de rencia del orden deseado que deben ser conectados al 1 𝐶𝐶(𝑠𝑠) transferencia en s normalizada a ganancia Un proceso de primer orden viene caracterizado controlador mediante las señales eléctricas correspon= unidad: por la siguiente función de 𝜏𝜏𝜏𝜏 +1 𝑉𝑉𝑉𝑉(𝑠𝑠) transferencia en s normalizada a ganancia unidad: dientes a la variable controlada (salida del proceso) y a la Ecuación 11 𝐶𝐶(𝑠𝑠) señal reguladora (entrada al proceso). Ecuación 1 𝐶𝐶(𝑠𝑠) = 𝜏𝜏𝜏𝜏1+ 1 Únicamente existe la imposibilidad de construir un pro𝑉𝑉𝑉𝑉(𝑠𝑠) = 1 controlada donde C(s) ydonde VM(s) son las variables (salida) y manipulada Ecuación ceso de tiempo muerto mediante elementos electrónicos C(s) y VM(s) son las variables 𝑉𝑉𝑉𝑉(𝑠𝑠) 𝜏𝜏𝜏𝜏 + 1 controlada (salida) y (entrada) respectivamente y τ , la constante de tiempo. analógicos, lo que impide la modelización de muchos promanipulada (entrada) respectivamente y τ, la constante de Ecuación 1 Esta ecuación puede en la correspondiente función (en donde C(s) ytiempo. VM(s) transformarse son las variables controlada (salida) y discreta manipulada cesos de control reales. z) mediante el conocido procedimiento de Tustin, obteniendo: La simulación de un proceso de tiempo muerto mediante Esta ecuación puede transformarse en la correspondiente donde C(s) y VM(s) sony τlas variables de controlada (entrada) respectivamente , la constante tiempo. (salida) y manipulada técnicas digitales no tiene una gran dificultad, basta función mediante el procedimienEstageecuación puedediscreta transformarse en la correspondiente función discreta (en (entrada) respectivamente y τ(en , laz)constante deconocido tiempo. −1 𝐶𝐶(𝑧𝑧) 𝑇𝑇 + 𝑇𝑇𝑧𝑧 nerar una cola de espera en la que la entrada actual se to de Tustin, obteniendo: z) mediante el conocido procedimiento de Tustin, obteniendo: Esta ecuación puede transformarse en la correspondiente función discreta (en = −1 almacena durante un tiempo igual al tiempo muerto. 𝑉𝑉𝑉𝑉(𝑧𝑧) 𝑇𝑇 + 2𝜏𝜏 (𝑇𝑇 − 2𝜏𝜏)𝑧𝑧 z) mediante el conocido procedimiento de+Tustin, obteniendo: En el presente trabajo se propone la utilización de un con−1 Ecuación 2 𝐶𝐶(𝑧𝑧) 𝑇𝑇 + 𝑇𝑇𝑧𝑧 mediante señales eléctricas correspondientes la variable controlada troladorlas lógico-programable o PLC para aimplementar la si−1 (salida del proceso) y a la señal reguladora (entrada al proceso). 𝐶𝐶(𝑧𝑧) = 𝑇𝑇 + 2𝜏𝜏𝑇𝑇++(𝑇𝑇 𝑇𝑇𝑧𝑧− 𝑉𝑉𝑉𝑉(𝑧𝑧) 2𝜏𝜏)𝑧𝑧 −1 mulación existe del proceso. Éstadeseconstruir realizará mediante bloques Únicamente la imposibilidad un proceso de tiempo muerto = Ecuación 2 donde T es el periodo de simulación. −1 𝑉𝑉𝑉𝑉(𝑧𝑧) 𝑇𝑇 + 2𝜏𝜏 + (𝑇𝑇 − 2𝜏𝜏)𝑧𝑧 mediante elementos lo que impide la modelización de primer o deelectrónicos segundoanalógicos, orden subamortiguado y uno ode Ecuación 2 muchos procesos de control reales. Ecuación 2 más bloques deproceso tiempo La mediante simulación seSu deberá La simulación de un de muerto. tiempo muerto técnicas digitales implementación recursiva es: donde Tnoes el periodo de simulación. tiene una gran dificultad, basta generar de espera en la que la entrada ejecutar periódicamente con una un cola tiempo de ejecución sudonde T es el periodo de simulación. actual se almacena durante un tiempo igual al tiempo muerto. donde T es el periodo de simulación. ficientemente pequeño paralaque el comportamiento 𝑇𝑇 · [𝑣𝑣𝑣𝑣(𝑘𝑘) + 𝑣𝑣𝑣𝑣(𝑘𝑘 − 1)] − (𝑇𝑇 − 2𝜏𝜏) · 𝑐𝑐(𝑘𝑘 − 1) En el presente trabajo se propone utilización de un controlador sea lógicoSu Ésta implementación 𝑐𝑐(𝑘𝑘) =recursiva es:recursiva es: programable PLC para implementar la simulación del al proceso. se correcto, oaproximándose suficientemente funcionaSu implementación 𝑇𝑇 + 2𝜏𝜏 realizará mediante bloques de primer o de segundo orden subamortiguado y Su implementación recursiva es: miento delbloques proceso continuo simulado. Ecuación 3 uno o más de tiempo muerto. La simulación se deberá ejecutar 𝑇𝑇 · [𝑣𝑣𝑣𝑣(𝑘𝑘) + 𝑣𝑣𝑣𝑣(𝑘𝑘 − 1)] − (𝑇𝑇 − 2𝜏𝜏) · 𝑐𝑐(𝑘𝑘 − 1) periódicamente con un tiempoque de ejecución suficientemente pequeño para que La señal reguladora, viene del controlador, se intro𝑐𝑐(𝑘𝑘) = 𝑇𝑇 · [𝑣𝑣𝑣𝑣(𝑘𝑘) + 𝑣𝑣𝑣𝑣(𝑘𝑘 − 1)] − (𝑇𝑇 − 2𝜏𝜏) · 𝑐𝑐(𝑘𝑘 − 1) el comportamiento sea correcto, aproximándose suficientemente al 𝑇𝑇 + 2𝜏𝜏 ducirá al PLC simulador mediante una entrada analógica donde k indica el instante actual Ecuación 𝑐𝑐(𝑘𝑘) = funcionamiento del proceso continuo simulado. 𝑇𝑇 +32𝜏𝜏 y la variable controlada se controlador, sacará del a través una La señal reguladora, que viene del se PLC introducirá al PLCde simulador Ecuación 3 mediante una entrada (Figura analógica1). y la variable controlada se sacará del PLC a salida analógica El programa, realizado en lenguajeEcuación de lista3 de instrucciones (AWL) de Step7® donde k indica el instante actual (3), sekestructura en un bloque de función para poder disponer de un bloque de donde indicadonde el instante actual indica elsu instante actualrepetida, para poder simular procesos datos asociado que kpermita utilización El programa, realizado en lenguaje de lista de instrucciones (AWL) de Step7® ® de orden superior. (3),programa, se estructura en un en bloque de función disponer de unde bloque El realizado lenguaje listapara dedepoder instrucciones (AWL) Step7de El programa, realizado endelenguaje lista de instruccioLa tabla de variables asociada a este bloque de función es: datos que permita su de utilización para poder procesos (3), seasociado estructura en un bloque para poder disponer de de ® función repetida, (3), se estructura en un bloque simular de un bloque nes (AWL) de Step7 Figura. 1.- Diagrama de bloques Tipo identificador Comentario de orden superior. datos asociado que permita su utilización repetida, para poder simular procesos función para poder disponer de un bloque de datos asoINdeorden r real entrada, vm(k) La tabla variables asociada bloque de función El controlador seráFigura. exterior al simuladorde y podrá ser otro PLC igual ode de superior. ciado que permita asueste utilización repetida, paraes: poder si1.-PLC Diagrama bloques diferente modelo y fabricante, un ordenador actuando como controlador y la periodo asociada real periodo de simulación, T en s Tipo identificador Comentario La tabla de variables a este bloque de función es: mular procesos de orden superior. interfase adecuada o bien un equipo controlador, ya sea digital o analógico. realasociada constante de tiempo, τ en s En el será objetivo de este trabajo es simulador la programación de INun PLC rtauLa tabla de variables real entrada, vm(k) Tipo Comentario a este bloque de función El consecuencia, controlador exterior al PLC y podrá serS- identificador ® ® 300 de Siemens o de un PLC Premium de Schneider Electric para que se OUT c real salida, c(k) periodo real periodo de simulación, T en s IN r real entrada, vm(k) es: otro PLC de igual o diferente modelo y fabricante, un ordecomporten como procesos con una función de transferencia compuesta por unidades de primer o segundo orden subamortiguado y de tiempo muerto. STAT cp real salida anterior, tau real periodo real periodo de de simulación, Tτc(k-1) en ss nador actuando como controlador y la interfase adecuada constante tiempo, en Tipo identificador Comentario real entrada anterior, vm(k-1) o Materiales bien un equipo controlador, ya sea digital o analógico. tau real constante de tiempo, τ c(k) en s 2.y métodos OUT crp real salida, En consecuencia, el objetivo de este trabajo es laOUT prograSTAT real salida anterior, vm(k) c(k-1) ccp real salida, c(k) r real entrada, El hardware y software utilizado es el siguiente: ® mación o de un PLC Pre® de un PLC S-300 de Siemens FB1 de 12 Siemens : CPU compacta 314C-2DP con entradas y salidas analógicas rp real entrada anterior, vm(k-1) STAT cp real salida anterior, c(k-1) bits. Stepde 7® Schneider Professional 2006 (3). ® para que se comporten como mium Electric real periodo de simulación, • segmento rp IN1 periodo real entrada anterior, T en s vm(k-1) Schneider Electric®: PLC Modicon Premium TSXPSY2600 (fuente de procesos con una función de transferencia compuesta por L #r // entrada del proceso, vm(k) alimentación), TSXP572634 (CPU), TSXAEY414 (entradas analógicas de 16 FB1 tau real // entrada constante anterior, de tiempo, vm(k-1) τ en s unidades de primer o segundo subamortiguado yL bits) y TSXASY410 (salidas analógicas de 11orden bits + signo). UnityPro® v2.2 (3). #rp 1 FB1• segmento Tanto la entrada (variable manipulada) como la salida (variable controlada) se de tiempo muerto. han considerado diferencias de potencial (voltios). L+R #rOUT • segmento 1 c real// entrada salida, del proceso, vm(k) c(k) L #periodo //entrada T ® L #rp // entrada anterior, vm(k-1) L #r // del proceso, vm(k) 3.- PLC S-300 Siemens *R T[vm(k)+vm(k-1)] cp real//// entrada salida anterior, L+R #rp anterior, vm(k-1)c(k-1) 2.-Primer MATERIALES Y MÉTODOS 3.1.orden T #c STAT L #periodo // T +R rp real entrada anterior, vm(k-1) L #tau L*R #periodo //// TT[vm(k)+vm(k-1)] El hardware y software utilizado es el siguiente: L #tau T #c *R // T[vm(k)+vm(k-1)] // 2τ #tau TL+R #c #tau LL #tau // 2τ L+R #tau 96 AFINIDAD +R // 2τ LXXI, 566, Abril - Junio 2014 través de una salida analógica (Figura 1). El periodo de ejecución del bloque OB35 se ha fijado en FB1 tau :=5.000000e+000 100c ms, este valor está almacenado como entero sencillo • segmento 1 :=MD18 en la variable OB35_EXC_FREQ, las primeras instruccio L #r // entrada del proceso, vm(k) este valor a real en segundos (MD10). L #rp // entrada anterior, vm(k-1) El periodones de permiten ejecuciónpasar del bloque OB35 se ha fijado en 100 ms, este valor En el programa principal, OB1,enselasitúan las instrucciones +R está almacenado como entero sencillo variable OB35_EXC_FREQ, las tau :=5.000000e+000 primeras instrucciones permiten pasar este valor real en segundos necesarias para adquirir la entrada delaproceso a partir de(MD10). L #periodo // T tau c:=5.000000e+000 :=MD18 En el programa OB1, se sitúan las instrucciones para una entrada analógica, que, después de convertidanecesarias a nú *R // T[vm(k)+vm(k-1)] c principal, :=MD18 adquirir la mero entrada del proceso partirmarca de unaMD14 entrada analógica, que, después real, guardaaen y emitir la salida, T #c El periodo dese ejecución dellabloque OB35 se ha fijado en 100 ms, este va de convertida a número se guarda en MD14 yms, emitir salida, El periodo de ejecución del bloque selahamarca fijado en 100después este la valor marca MD18, areal, través de OB35 una salida analógica, L #tau está almacenado como entero sencillo en la variable OB35_EXC_FREQ, l marca a través deentero una sencillo salida analógica, después de ser convertida estáMD18, almacenado en la variable OB35_EXC_FREQ, las taucomo :=5.000000e+000 primeras instrucciones permiten pasar este valor a real en segundos (MD10). de ser convertida adecuadamente. L #tau primeras instrucciones permiten pasar este valor a real en segundos (MD10). adecuadamente. c :=MD18 Enprograma el programa principal, OB1, se las sitúan las instrucciones pa +R // 2τ En el principal, OB1, se sitúan instrucciones necesarias necesarias para adquirir la entrada del adepartir defijado unaen entrada que, despu la entrada del proceso asubamortiguado partir una entrada analógica, que, después El periodo de ejecución delproceso bloque OB35 se ha 100 ms,analógica, este valor 3.2.Segundo orden L #periodo 3.2.-adquirir Segundo orden subamortiguado de convertida ade número sede guarda en OB35_EXC_FREQ, laMD14 marca MD14 ysalida, emitir la salid estáLa almacenado como entero sencillo en de convertida a número real, sereal, guarda enlaun lavariable marca emitir la las función transferencia proceso de ysegundo TAK // intercambio de ACU1 y ACU2 primeras instrucciones permiten valor aanalógica, real en segundos (MD10). marca MD18, a través de unadepasar salida analógica, después de ser convertida marca MD18, a través unaeste salida después de ser converti La función deprograma transferencia uncon proceso de instrucciones segundo orden subamortiguado subamortiguado ganancia unidad (Ecuación 4) -R // (T-2τ) En orden el principal,de OB1, se sitúan las necesarias para adecuadamente. adecuadamente. adquirir la entrada del proceso aaplicación partir de unadel entrada analógica, que, después con ganancia unidad (Ecuación conduce, mediante la de aplicación conduce, mediante la4) método Tustin, adel método L #cp // salida anterior, c(k-1) de a convertida a número real, se guarda 5). en la marca MD14 y emitir la salida, de Tustin, su forma discreta (Ecuación su forma discreta (Ecuación 5). 3.2.-3.2.Segundo orden subamortiguado *R // (T-2τ)c(k-1) ordendesubamortiguado marcaSegundo MD18, a través una salida analógica, después de ser convertida L #c adecuadamente. 2 La función de transferencia𝐶𝐶(𝑠𝑠) de un proceso 𝜔𝜔 de 𝑜𝑜 segundo orden subamortiguado TAK La función de transferencia de un proceso delasegundo orden subamortigua =conduce, con 3.2.ganancia unidad 4) mediante aplicación del método Segundo orden(Ecuación subamortiguado 2 2 𝑉𝑉𝑀𝑀(𝑠𝑠) 𝑠𝑠 +4)2𝜉𝜉𝜔𝜔 𝑜𝑜 𝑠𝑠 + 𝜔𝜔𝑜𝑜 mediante la aplicación del méto con ganancia unidad (Ecuación conduce, -R // T[vm(k)+vm(k-1)]-(T-2τ)c(k-1) de Tustin, a su forma discreta (Ecuación 5). Ecuación 4 de Tustin,dea transferencia su forma discreta (Ecuación 5). orden subamortiguado La función de unEcuación proceso de T #c 4 segundo 2 con ganancia unidad (Ecuación 4) la aplicación del método 𝐶𝐶(𝑠𝑠) conduce,𝜔𝜔mediante 𝑜𝑜 L #tau donde ωde la frecuencia de resonancia y ξ, el coeficiente de amortiguamiento. Tustin, a su forma discreta (Ecuación 5). o es 2 =𝐶𝐶(𝑠𝑠) 2 + 2𝜉𝜉𝜔𝜔 𝑠𝑠 + 𝜔𝜔 2𝜔𝜔𝑜𝑜 𝑉𝑉𝑀𝑀(𝑠𝑠) 𝑠𝑠 𝑜𝑜 y ξ, el coeficiente L #tau donde ωo es la frecuencia de resonancia =42𝑜𝑜2 2 Ecuación 𝐶𝐶(𝑠𝑠)𝜔𝜔𝑉𝑉𝑀𝑀(𝑠𝑠) 𝜔𝜔𝑜𝑜𝑠𝑠 −1 2 2 + 2𝜉𝜉𝜔𝜔 𝑜𝑜 𝑠𝑠)+ 𝜔𝜔𝑜𝑜 +R 𝐶𝐶(𝑧𝑧) de amortiguamiento. + 𝑧𝑧 −2 𝑜𝑜 𝑇𝑇2 (1 + 2𝑧𝑧 = 2 4 Ecuación = 𝑉𝑉𝑀𝑀(𝑠𝑠) 𝑠𝑠 + 2𝜉𝜉𝜔𝜔 𝑠𝑠 + 𝜔𝜔 𝑜𝑜 𝑜𝑜 −1 + (𝜔𝜔 2de 2 − 4𝜉𝜉𝜔𝜔 𝑇𝑇 + 4)𝑧𝑧 −2 2 2 ξ, L #periodo donde ωo(𝜔𝜔 es𝑜𝑜2la resonancia coeficiente 𝑉𝑉𝑉𝑉(𝑧𝑧) 𝑇𝑇 2frecuencia + 4𝜉𝜉𝜔𝜔𝑜𝑜 𝑇𝑇 de + 4) + (2𝜔𝜔 −el8)𝑧𝑧 Ecuación 𝑜𝑜 𝑇𝑇y 4 𝑜𝑜 𝑇𝑇 amortiguamiento. 𝑜𝑜 Ecuación 5 +R // (T+2τ) donde ω y ξ, el coeficiente de amortiguamient o es la frecuencia de2 resonancia 2 −1 −2 donde ωo es la frecuencia de resonancia el coeficiente 𝜔𝜔𝑜𝑜 𝑇𝑇 (1y+ξ,2𝑧𝑧 𝐶𝐶(𝑧𝑧) + 𝑧𝑧 ) de amortiguamiento. L #c = 2 2 2 𝑇𝑇 2 − 8)𝑧𝑧 −1 + (𝜔𝜔 2 𝑇𝑇 2 − 4𝜉𝜉𝜔𝜔 𝑇𝑇 + 4)𝑧𝑧 −2 donde T es el periodo de simulación. (𝜔𝜔 (2𝜔𝜔 𝑉𝑉𝑉𝑉(𝑧𝑧) 𝑇𝑇 + 4𝜉𝜉𝜔𝜔 𝑇𝑇 + 4) + 2 −1 −2 ) −1 𝑜𝑜 TAK 𝐶𝐶(𝑧𝑧) 𝑜𝑜 𝜔𝜔2𝑧𝑧 𝑇𝑇 2 (1 2𝑧𝑧 𝑜𝑜 + 𝑧𝑧 −2 ) 𝑜𝑜 𝐶𝐶(𝑧𝑧) 𝜔𝜔𝑜𝑜2 𝑇𝑇 2𝑜𝑜(1 + + 𝑧𝑧+ Ecuación 𝑜𝑜5 == 2 2 2 2 2 𝑇𝑇 2 − /R // [T[vm(k)+vm(k-1)]-(T-2τ)c(k-1)]/(T+2τ) 5 2−1𝑇𝑇+ (2𝜔𝜔 (𝜔𝜔𝑜𝑜8)𝑧𝑧 (𝜔𝜔𝑜𝑜(𝜔𝜔 2 +𝑜𝑜4𝜉𝜉𝜔𝜔 2− −14𝜉𝜉𝜔𝜔 2 −2 −2 2 4)𝑧𝑧 𝑉𝑉𝑉𝑉(𝑧𝑧) 𝑇𝑇 2+ 4𝜉𝜉𝜔𝜔 𝑇𝑇 + 4)𝑇𝑇+Ecuación 8)𝑧𝑧 𝑇𝑇 + 𝑜𝑜 𝑇𝑇+ − (2𝜔𝜔 𝑇𝑇 + 4) + 𝑜𝑜(𝜔𝜔 𝑉𝑉𝑉𝑉(𝑧𝑧) 𝑜𝑜 𝑜𝑜 𝑇𝑇 − 4𝜉𝜉𝜔𝜔𝑜𝑜 𝑇𝑇 + 4)𝑧𝑧 Su implementación en𝑜𝑜forma recursiva es: 5 𝑜𝑜 Ecuación T #c Ecuación 5 donde T es el periodo de simulación. • segmento 2 T periodo es periodo de+simulación. donde T es el de simulación. 𝐵𝐵 2donde · [𝑣𝑣𝑣𝑣(𝑘𝑘) + 2el·forma 𝑣𝑣𝑣𝑣(𝑘𝑘 − 1) 𝑣𝑣𝑣𝑣(𝑘𝑘 − 2)] − 𝐴𝐴1 · 𝑐𝑐(𝑘𝑘 − 1) − 𝐴𝐴2 · 𝑐𝑐(𝑘𝑘 − 2) Su=implementación recursiva donde T es el en periodo de 𝑐𝑐(𝑘𝑘) L #r // entrada actual, vm(k) Su implementación ensimulación. formaes: recursiva es: Su implementación en forma recursiva es: 𝐴𝐴0 T #rp // guardar entr. actual en entr. previa, vm(k-1) 2 [𝑣𝑣𝑣𝑣(𝑘𝑘) Ecuación 6 2)] − 𝐴𝐴1 · 𝑐𝑐(𝑘𝑘 − 1) − 𝐴𝐴2 · 𝑐𝑐(𝑘𝑘 − 2) · + 2 · 𝑣𝑣𝑣𝑣(𝑘𝑘 − 1) + 𝑣𝑣𝑣𝑣(𝑘𝑘 − 𝐵𝐵 Su= implementación en forma recursiva es: 𝑐𝑐(𝑘𝑘) 𝐵𝐵 2 · [𝑣𝑣𝑣𝑣(𝑘𝑘) + 2 · 𝑣𝑣𝑣𝑣(𝑘𝑘 − 1) + 𝑣𝑣𝑣𝑣(𝑘𝑘 − 2)] − 𝐴𝐴1 · 𝑐𝑐(𝑘𝑘 − 1) − 𝐴𝐴2 · 𝑐𝑐(𝑘𝑘 − 2) L #c // salida actual, c(k) 𝐴𝐴0 𝑐𝑐(𝑘𝑘) = 𝐴𝐴 k = instante actual T #cp // guardar sal. actual en sal. previa, c(k-1) donde: Ecuación 06 𝐵𝐵 2 · [𝑣𝑣𝑣𝑣(𝑘𝑘) − 1)6+ 𝑣𝑣𝑣𝑣(𝑘𝑘 − 2)] − 𝐴𝐴1 · 𝑐𝑐(𝑘𝑘 − 1) − 𝐴𝐴2 · 𝑐𝑐(𝑘𝑘 − 2 Ecuación 𝐵𝐵 = 𝜔𝜔0 𝑇𝑇+ 2 · 𝑣𝑣𝑣𝑣(𝑘𝑘 𝑐𝑐(𝑘𝑘) = Ecuación 6 2 2 actual donde: k = instante 𝐴𝐴0 (𝜔𝜔 𝐴𝐴 = 𝑇𝑇 + 4𝜉𝜉𝜔𝜔 donde: actual𝑜𝑜 𝑇𝑇 + 4) 0 k = instante 𝑜𝑜 Se ha utilizado la propia variable de salida, c, para ir almaEcuación 6 𝜔𝜔0𝜔𝜔𝑇𝑇02𝑇𝑇𝑇𝑇 2 − 8) 𝐵𝐵 (2𝜔𝜔 = 𝐴𝐴1𝐵𝐵== 𝑜𝑜 2 2 22 cenando los resultados intermedios. donde:𝐴𝐴0𝐴𝐴= (𝜔𝜔 ++4𝜉𝜉𝜔𝜔 + 4) (𝜔𝜔 = 4𝜉𝜉𝜔𝜔𝑜𝑜𝑜𝑜 𝑇𝑇 𝑇𝑇 2 𝑜𝑜 𝑇𝑇 𝐴𝐴2 = 0(𝜔𝜔 𝑇𝑇𝑜𝑜22𝑇𝑇2− 4𝜉𝜉𝜔𝜔 𝑇𝑇 ++4)4) donde: k𝑜𝑜(2𝜔𝜔 =𝑜𝑜 𝑇𝑇 (2𝜔𝜔 𝐴𝐴1𝐴𝐴= 𝑇𝑇22−−8) 8) 𝑜𝑜 actual Como la ejecución ha de ser de forma periódica con un 1 = 𝑜𝑜instante 2 2 𝑇𝑇 2 2 − 4𝜉𝜉𝜔𝜔 𝑇𝑇 + 4) (𝜔𝜔 𝐴𝐴2𝐴𝐴= 𝑇𝑇 −0 𝑇𝑇 4𝜉𝜉𝜔𝜔𝑜𝑜𝑜𝑜 𝑇𝑇 + 4) 𝐵𝐵(𝜔𝜔 2 = 𝑜𝑜 𝜔𝜔 𝑜𝑜= control ajustado del tiempo, es preferible utilizar un bloque La tabla de variables del bloque de función desarrollado para su 2 2 𝐴𝐴 = 4𝜉𝜉𝜔𝜔función 0 del (𝜔𝜔 𝑜𝑜 𝑇𝑇 + de 𝑜𝑜 𝑇𝑇 + 4)desarrollado para su de organización de ejecución periódica como el OB35,implementación fiLa tabla de variables bloque 2 2 La tabla dees:variables 𝐴𝐴del bloque de función desarrollado para su (2𝜔𝜔 = 𝑇𝑇 − 8) 1 𝑜𝑜 implementación es: jando su periodo de ejecución con un valor igual al periodo Tipoimplementación identificador Comentario es: 4𝜉𝜉𝜔𝜔 Tipo identificador 𝐴𝐴2 = (𝜔𝜔𝑜𝑜2 𝑇𝑇 2 −Comentario 𝑜𝑜 𝑇𝑇 + 4) de simulación. Comentario IN TipoIN r identificador real entrada, r real entrada, vm(k) vm(k) r periodo real entrada, Como ejemplo de aplicación se ha considerado la simu- IN periodo real periodo de simulación, La tabla de variables deldelbloque dedefunción desarrollado real periodo simulación, T envm(k) s T en spara La tabla de variables bloque de función desarrollado periodo real periodo dedesimulación, T0 en en srad/s frec_res real es: frecuencia resonancia, ω0 en rad/s frec_res real frecuencia de resonancia, ω lación de un proceso de segundo orden con amortiguapara su implementación implementación frec_res real frecuencia deamortiguamiento, resonancia, ω0 enξrad/s ξ coef_ames: real coeficiente de coef_am real coeficiente de amortiguamiento, miento crítico asociando dos bloques de primer orden a identificador Comentario Tipo Comentario OUTTipocoef_am c identificadorreal real salida, c(k) coeficiente de amortiguamiento, ξ OUT IN cIN real entrada, salida, entrada, c(k) vm(k dos bloques de datos, DB1 y DB4, en éstos se almacenan real vm(k) r r realsalida, OUT c real c(k) los parámetros y datos de entrada y de salida actuales y periodo real real de simulación, periodo de simulación, T en periodo periodo T en s previos. frec_res real real de resonancia, frecuencia resonancia, ω0 en rad/ en rad/s frec_res frecuencia ω0de coef_am real real coeficiente de amortiguamiento, El bloque de organización OB35 queda: coef_am coeficiente de amortiguamiento, ξ OUTOUT c c real salida, c(k) real salida, c(k) L #OB35_EXC_FREQ STAT cp1 real salida anterior, c(k-1) ITD // paso a entero doble cp2 real salida anterior, c(k-2) DTR // paso a real rp1 real entrada anterior, vm(k-1) L 1000.0 rp2 real entrada anterior, vm(k-2) /R // paso a segundos TEMP B real ω0T T MD10 A0 real ω02T2+4ξω0T+4 CALL FB 1,DB1 A1 real 2ω02T2-8 2 2 r :=MD14 A2 real ω0 T -4ξω0T+4 periodo:=MD10 El bloque simulador del proceso es el siguiente: tau:=5.000000e+000 c :=MD22 FB2 CALL FB 1,DB4 • cálculo de los coeficientes r :=MD22 L #frec_res //ω0 periodo:=MD10 L #periodo //T tau:=5.000000e+000 *R c :=MD18 AFINIDAD LXXI, 566, Abril - Junio 2014 97 L#c T #B //ω0T T#cp1 //c(k-1) L 4.000000e+000 L #coef_am//ξ Este bloque, igual que en el caso anterior, se llama desde *R el bloque de organización OB35. L #B +R L #OB35_EXC_FREQ L #B ITD *R DTR L 4.000000e+000 L 1000.0 +R /R T #A0 //A0 = (4*ξ+B)*B+4 T MD 10 L #B CALL FB 2,DB2 L #B r :=MD14 *R periodo :=MD10 L 2.000000e+000 frec_res :=1.000000e-001 *R coef_amort:=3.000000e-001 L -8.000000e+000 c :=MD18 +R T A1 //A1 = B*B*2-8 El periodo de ejecución del bloque OB35 se ha fijado en L -4.000000e+000 100 ms, en coherencia con el dato de periodo. L #coef_am Igual que en el caso anterior, la señal de entrada se debe *R guardar en la marca MD14 y la señal de salida queda alL #B macenada en la marca MD18. +R El periodo de ejecución del bloque OB35 se ha fijado en 100 ms, en coherencia L #B con el dato de3.3.periodo. Tiempo muerto *R simular un tiempo muerto almacenar la entrada L #4.000000e+000 Igual que en elPara caso anterior, la señal de basta entrada se debe guardar en la marca durante un tiempo igual al tiempo muerto. solución más +R MD14 y la señal de salida queda almacenada en la La marca MD18. simple es establecer un vector en que la primera posición T #A2 //A2 = (-4*ξ+B)*B+4 acoge la entrada más reciente y la última posición contie• cálculo de la respuesta 3.3.- Tiempo muerto ne el valor más antiguo que constituirá la salida, después L #rp1 de tiempo cada salida se desplazan todos los valores. Este durante desL 2.000000e+000 Para simular un muerto basta almacenar la entrada un tiempo consumir gran es cantidad de tiempo *R igual al tiempoplazamiento muerto. Lapuede solución másuna simple establecer un vector en que de ejecución si la dimensión vector, yque es igual al L #rp2 la primera posición acoge la entrada másdel reciente la última posición contiene tiempo muerto, θ, y el periodo de de simu+R el valor más cociente antiguo entre que elconstituirá la salida, después cada salida se lación, es grande. L #r desplazan todos losT,valores. Este desplazamiento puede consumir una gran Para incrementar la eficiencia de la ejecución se puede +R cantidad de tiempo de ejecución si la dimensión del vector, que es igual al un vector en el que en lugar de desL #B cociente entreimplementar el tiempo muerto, θ, circular y el periodo de simulación, T, es grande. plazar valores se un puntero. indica el lugar *R Para incrementar la los eficiencia deutiliza la ejecución seÉste puede implementar un vector donde se encuentra el valor a extraer y donde se introduciL #B circular en el que en lugar de desplazar los valores se utiliza un puntero. Éste la nueva luegoelelvalor puntero se incrementa en una *R indica el lugarrádonde seentrada, encuentra a extraer y donde se introducirá la unidad. hay que tener en cuenta que sobrepasar T #c //[r(k-1)*2+r(k-2)+r(k)]*B*B nueva entrada, luegoSólo el puntero se incrementa enaluna unidad.la Sólo hay que dimensión del vector se debe reiniciar. L #cp1 tener en cuenta que al sobrepasar la dimensión del vector se debe reiniciar. L #A1 El equivalente discreto del tiempo muerto θ, es: *R El equivalente discreto del tiempo muerto θ, es: L #c TAK 𝐶𝐶(𝑧𝑧) -R = 𝑧𝑧 −𝑁𝑁 𝑉𝑉𝑉𝑉(𝑧𝑧) T #c //[r(k-1)*2+r(k-2)+r(k)]*B*B-c(k-1)*A1 Ecuación 7 Ecuación 7 L #cp2 L #A2 donde N = θ/T.donde N = θ/T. *R L #c El bloque de datos correspondiente a la funcióna desarrollada es: TAK El bloque de datos correspondiente la función desarro-R llada es: Tipo identificador Comentario L #A0 IN r real entrada /R Tipo identificador Comentario dead_time int tiempo muerto (N) T #c //salida, c(k) r OUT c real real salida entrada • actualización de las variables IN dead_time tiempo muerto (N) STAT pos int int posición puntero L #rp1 OUT c real salida T #rp2 //vm(k-2) En este caso noSTAT hay cálculo salida sinoposición que sólo se ha de gestionar el L #r pos de la int puntero almacén de datos. Primero se calcula la posición del valor que debe salir y se T #rp1 //vm(k-1) reinicializa si se lano dimensión del El valor contenido en dicha L #cp1 En supera este caso hay cálculo dealmacén. la salida sino que sólo se posición es el ha que función de y será sustituido por la entrada actual. T #cp2 //c(k-2) dedevuelve gestionar la el almacén datos. Primero se calcula la FB3 98 • nueva posición L #dead_time AFINIDAD LXXI, 566, Abril - Junio 2014 posición del valor que debe salir y se reinicializa si se supera la dimensión del almacén. El valor contenido en dicha posición es el que devuelve la función y será sustituido por la entrada actual. 4.1.- Primer orden La función LAG_FILTER se encuentra en la librería CONT_ CTL/Conditioning de UnityPro, su representación en lenguaje ST (texto estructurado) es: FB3 • nueva posición L #dead_time L #pos ==I SPBN _000 L 0 _000: INC1 T #pos • puntero L 4 *I SLD3 L P#8.0 +D LAR1 • salida y almacenamiento de la entrada L DID[AR1,P#0.0] T #c L #r T DID[AR1,P#0.0] Se ha fijado el periodo de ejecución del bloque OB35 a 100 ms, igual que en los casos anteriores, en este bloque de organización se debe incluir: CALLFB 3,DB3 r :=MD14 dead_time:=20 c :=MD18 Igual que en los casos anteriores, la variable de entrada debe situarse en la marca MD14 y la de salida queda en la marca MD18. En este ejemplo se ha considerado un tiempo muerto de 2 segundos, por lo que, siendo el periodo de simulación de 100 ms, el número de posiciones correspondiente es N = 20. En el caso de necesitar simular un tiempo muerto mayor bastará aumentar el valor de N, incrementando las posiciones de memoria disponibles en el correspondiente bloque de datos o concatenar las llamadas al bloque de función que sean necesarias asociando cada llamada a un bloque de datos (DB) diferente. 4.- PLC SCHNEIDER ELECTRIC MODICON PREMIUM® En este caso la tarea es más sencilla dado que el programa UnityPro® ya contiene algunos bloques de función en la librería, concretamente se pueden utilizar los bloques: LAG_FILTER y QDTIME, que se comportan como un proceso de primer orden y de tiempo muerto, respectivamente. Únicamente será necesario programar una función que se comporte como un proceso de segundo orden subamortiguado. AFINIDAD LXXI, 566, Abril - Junio 2014 LAG_FILTER_Instance(IN:=InputValue, GAIN:=GainFactor, LAG:=LagTimeConstant, TR_I:=InicializationInput, TR_S:=InitializationType, OUT:=>Output) Descripción de los parámetros de entrada: IN REAL Valor de entrada, vm(k) GAIN REAL Ganancia LAG TIME Constante de tiempo, τ TR_I REAL Entrada de inicialización TR_S BOOL Tipo de inicialización “1” = Tracking “0” = Automático Descripción del parámetro de salida: OUT REAL Salida Las variables y constantes hacen referencia a la ecuación 1. En Automático, TR_S = 0, el módulo de función se procesará produciendo la respuesta esperada. En Tracking, TR_S = 1, la salida mantiene el valor de inicialización, TR_I. Si se desea simular un proceso de ganancia unidad y constante de tiempo de 5 segundos la llamada a introducir en la tarea MAST es: LAG_FILTER_Instance(IN:=entrada, GAIN:=1.0, LAG:=t#5s, TR_I:=0.0, TR_S:=0, OUT:=>salida) Así como en Step 7 se ha considerado la ganancia del proceso igual a la unidad, en este caso, la rutina de UnityPro contempla la introducción del valor. Tal como se ha mencionado en el apartado Materiales y métodos, se han considerado las señales en voltios, por lo que la variable de salida se deberá multiplicar por 1000 y pasar a entero antes de enviarla a la salida analógica seleccionada, dado que la salida se debe hacer como entero en mV. De la misma forma la señal de entrada que el convertidor analógico/digital da como entero en mV, se deberá pasar a real en V. 4.2.- Segundo orden subamortiguado Se ha programado una función FB derivada denominada SECOND_ORDER utilizando lenguaje ST y partiendo de la ecuación 6. Descripción de las entradas y salida: IN RES_FR COEF_AM SIM_TIME OUT REAL entrada, vm(k) REAL frecuencia de resonancia en rad/s, ω0 REAL coeficiente de amortiguamiento, ξ REAL periodo de simulación en segundos, T REAL salida, c(k) 99 Las variables internas son: OUT1 OUT2 IN1 IN2 REAL REAL REAL REAL salida, c(k-1) salida, c(k-2) entrada, vm(k-1) entrada, vm(k-2) Listado: B:=RES_FR*SIM_TIME; A0:=B*(B+4.0*COEF_AM)+4.0; A1:=2.0*B*B-8.0; A2:=B*(B-4.0*COEF_AM)+4.0; OUT:=(B*B*(IN+2.0*IN1+IN2)-A1*OUT1-A2*OUT2)/A0; OUT2:=OUT1; OUT1:=OUT; IN1=IN; Para los PLC’s Premium de Schneider® no ha sido necesario programar los procesos de primer orden y de tiempo muerto porque ya existen funciones disponibles en la librería, por lo que únicamente se ha tenido que programar el proceso de segundo orden subamortiguado. Se ha comprobado el correcto funcionamiento de las funciones programadas y de las existentes en la librería, recogiendo las respuestas sobre registro de papel, lo que ha permitido comprobar que las respuestas corresponden a los procesos simulados. REFERENCIAS 1 Barberà, E.; Nevado, I.; Molins, J.J.: “El microordenador personal y sus aplicaciones al control de procesos: III Simulación híbrida de sistemas de control”, Afinidad, 42, 587-92, Noviembre-Diciembre 1985 Para su ejecución se programa la tarea MAST como periódica con un periodo de ejecución igual al periodo de simulación, por ejemplo: 2 SEC_OR_IN1 (IN:=entrada, RES_FR:=0.1, COEF_AM:=0.3, SIM_TIME:=0.1, OUT=>salida); Barberà, E.: “Hybrid simulation: a cheap alternative in process control laboratory” (oral communication), 11th Mediterranean Congress of Chemical Engineering, Barcelona, 21-24 october 2008 3 Molins, J.J.; Barberà, E.: “Autómatas programables: Step7® y UnityPro®”, IQS, 2012 en donde SEC_OR_IN1 es una instancia de la función derivada desarrollada. 4.3.- Tiempo muerto En la misma librería mencionada se encuentra la función QDTIME, su representación en ST es: AGRADECIMIENTO Se agradecen especialmente las sugerencias del revisor que han contribuido de forma importante a la mejora de la redacción del presente artículo. QDTIME_Instance (IN:=InputValue, T_DELAY:=DeadTime, TR_I:InitializationInput, TR_S:=InitializationType, OUT:=>Output, READY:=>InternalBufferFlag) Descripción de los parámetros de entrada: IN REAL Valor de entrada T_DELAY TIME Tiempo muerto TR_I REAL Entrada de inicialización TR_S BOOL Tipo de inicialización “1” = Tracking “0” = Automático Parámetros de salida: OUT REAL Salida READY BOOL Estado del búfer “1” = lleno “0” = no lleno Este bloque dispone de un búfer de 128 elementos, por lo que el tiempo muerto debe ser como máximo de 128 veces el periodo de simulación. 5.- CONCLUSIONES Se han programado diversos bloques de función para simular procesos de primer y segundo orden subamortiguado y de tiempo muerto para PLC’s Simatic S-300 de Siemens®. 100 AFINIDAD LXXI, 566, Abril - Junio 2014