Simulación de procesos con controladores lógico

Anuncio
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
Descargar