You are on page 1of 43

Introduccin a la Programacin de

controladores lgicos ( P L C )
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 1
Este es el texto de un pequeo !ursillo" que es una introdu!!i#n a los !on!eptos $%si!os de la
progra&a!i#n de !ontroladores l#gi!os" apli!ados al !ontrol o siste&a de seguridad de una &aquina o
pro!eso.
Se refiere a los !on!eptos $%si!os de progra&a!i#n estru!tural ' &odular" ' a las !onsidera!iones
$%si!as de seguridad fun!ional (S)*2+.
Para &ostrar la apli!a!i#n pra!ti!a de estos !on!eptos" se presenta ' anali,a el &is&o e-e&plo fi!ti!io"
desarrollado para equipos de los prin!ipales fa$ri!antes de P*.. El &is&o !aso resuelto en un /ri!onex"
en un S!hneider ' en un .ontrol*ogix" para ver las diferen!ias entre distintas &ar!as ' &odelos de
!ontrolador l#gi!o progra&a$le.
Rolf Dahl-Skog
rolfds0g&ail.!o&
1ndi!e de !ontenido
.ontroladores *#gi!os Progra&a$les..................................................................................2
.onsidera!iones de seguridad.............................................................................................3
Siste&a )nstru&entado de Seguridad (S)S+................................................................4
Seguridad 5un!iona ( 5un!tional Safet' + .................................................................4
6iveles de seguridad (S)*+..........................................................................................4
.onsidera!iones de diseo..................................................................................................7
Progra&a!i#n de un P*......................................................................................................8
9:ue es un algorit&o ;...............................................................................................<
Progra&a!i#n Estru!turada........................................................................................10
Progra&a!i#n =odular...............................................................................................11
/ipos de varia$les......................................................................................................12
*engua-es de progra&a!i#n.......................................................................................13
E-e&plos de algorit&os usados en pl!.......................................................................1>
?lgorit&o @5irstAButC .....................................................................................................................................1>
?lgorit&o @5anA)nC ..........................................................................................................................................17
?lgorit&o @5anAButC .....................................................................................................................................18
Defini!i#n de un !aso fi!ti!io !o&o e-e&plo......................................................................1<
Solu!i#n !on Dnit'" de S!hneider.............................................................................21
Solu!i#n !on /ristation" de /ri!onex..........................................................................27
Solu!i#n !on .ontrol*ogix" de Ro!kEell..................................................................22
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 2
.ontroladores *#gi!os Progra&a$les.
Dn .ontrolador *#gi!o Progra&a$le" o P.*... (Progra&&a$le Logi! Controller+ es un !o&putador
espe!ial&ente diseado para auto&ati,a!i#n industrial" para el !ontrol de una &aquina o pro!eso
industrial.
? diferen!ia de un !o&putador tradi!ional" un P*. no tiene te!lado" pantalla ni rat#n" ta&po!o tienen
dis!o duro ni FindoEs. Pero interna&ente si es un !o&putador" !on su hardEareG pro!esadores"
&e&oria" puertos de !o&uni!a!i#n" et!. ' !on su softEareG un siste&a operativo (que le lla&an
5ir&Eare +" ' una progra&a!i#n" espe!ifi!a para la apli!a!i#n o el !aso parti!ular en que se esta
usando.
*a prin!ipal diferen!ia entre un P. ' un P*." es que el P*. !ontienen &Hltiples !anales para &edir
distintas seales provenientes de sensores instalados en la &aquina o pro!eso que !ontrolan. I ta&$iJn
tienen !anales de salida de seal que a!tHan so$re la &aquina o pro!eso que !ontrolan.
Dn P*. per&ite !ontrolar o proteger un pro!eso industrial" posi$ilitando ade&as las op!iones de
&onitoreo ' diagnosti!o de !ondi!iones (alar&as+" present%ndolas en un K=) (Ku&an-=a!hine )nterfa!e+
o pantalla de opera!i#n" o present%ndolas a una una red de !ontrol superior.
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 2
Dn P*. es un e-e&plo de !ontrol en tie&po real" pues rea!!iona auto&%ti!a&ente ante las !ondi!iones
varia$les que esta vigilando.
Dn P*. puede ser parte de un siste&a de !ontrol distri$uido (D.S+. B puede ser parte de un S.?D?.
B puede ser parte del siste&a de seguridad.
Dn D.S ( Distri$uted .ontrol S'ste&+ . Es un siste&a de !ontrol de un pro!eso (de una planta industrial+
for&ado por una red de !ontroladores. Dn D.S esta orientado al !ontrol en tie&po real del pro!eso. En
!a&$io se ha$la de un S.?D?" !uando es una red orientada al &onitoreo de equipos distantes (no
!ontrol en tie&po real+.
En !a&$io" un Siste&a de seguridad" o S)S (Safet' )nstru&ented S'ste&+ es algo distinto a un siste&a
de !ontrol" es la prote!!i#n para !uando el pro!eso (o la &aquina+ se sale de !ontrol. Por lo tantoG
6B de$e usarse el &is&o P*. que se usa para el !ontrol de un pro!eso" !o&o parte del siste&a de
seguridad (prote!!i#n+ del &is&o pro!eso. Pues" la finalidad de un Sistema de seguridad, es
-usta&ente llevar el proceso hacia una condicin segura, cuando su control se sale de los limites
de seguridad.
.onsidera!iones de seguridad
*a prin!ipal apli!a!i#n de un P*. en la industria petro-quL&i!as ' de sustan!ias quL&i!as peligrosas" es
for&ar parte de un siste&a de seguridad (Safet' )nstru&ented S'ste&+ . I por esto en el diseo de la
solu!i#n ade!uada para !ada !aso" sie&pre se de$e anali,arse ta&$iJn las ne!esidades de seguridad
de !ada !aso" ' ta&$iJn anali,arse la integridad del diseo del &is&o P*. desde el punto de vista de la
seguridad.
*a nor&a interna!ional )E. >1408" define los !riterios de seguridad para el diseo" !onstru!!i#n '
opera!i#n de siste&as elJ!tri!os M ele!tr#ni!os M ele!tr#ni!os progra&a$les.
*a nor&a interna!ional )E. >1411 esta $asada en la )E. >1408" ' define los !riterios so$re la apli!a!i#n
de Sistemas Instrumentados de Seguridad en las industrias de pro!esos" que se utili,a en industrias
petro-quL&i!as ' de sustan!ias quL&i!as peligrosas" entre otras.
*a nor&a interna!ional )E. >1412 esta $asada en la )E. >1408" ' define los !riterios so$re la apli!a!i#n
de Siste&as )nstru&entados de Seguridad en la industria nu!lear.
Seguridad N ?usen!ia de riesgo ina!epta$le" de dao a las personas" de daos a la propiedad o al &edio
a&$iente.
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 3
Siste&a )nstru&entado de Seguridad (S)S+
Dn siste&a instru&entado de seguridad ( Safet' )nstru&ented S'ste& + es un siste&a que reali,a
fun!iones espe!Lfi!as para !onseguir &antener el pro!eso dentro de !ondi!iones seguras. Dete!tan
!uando las !ondi!iones del pro!eso son ina!epta$les o peligrosas" ' to&an auto&%ti!a&ente a!!iones
!orre!tivas.
*a finalidad de un Siste&a de seguridad ( Safet' )nstru&ented S'ste& +" es llevar el pro!eso ha!ia una
!ondi!i#n segura" !uando su !ontrol se sale de los li&ites de seguridad.
*os Siste&a de seguridad" est%n separados ' son independientes de los siste&as de !ontrol nor&al"
aunque est%n !o&puestos por ele&entos si&ilares" !o&o sensores" pro!esadores de la l#gi!a" a!tuado-
res " et!.
Seguridad 5un!iona ( 5un!tional Safet' +
Estas nor&as definen una @5un!i#n de seguridadC ( 5un!tional Safet' + !o&o la dete!!i#n de una
!ondi!i#n poten!ial&ente peligrosa" ' la a!tiva!i#n de un dispositivo de prote!!i#n" o &e!anis&o
!orre!tivo para evitar las !onse!uen!ias del evento peligroso.
*as fun!iones de seguridad tienen el o$-etivo de redu!ir la pro$a$ilidad de eventos peligrosos que
pueden !ausar dao.
.ada !ondi!i#n poten!ial&ente peligrosa" que tenga el pro!eso (o la &aquina+ sera una fun!i#n de
seguridad distinta. ?un que varias fun!iones de seguridad pueden rea!!ionar a!tivando el &is&o
dispositivo de prote!!i#n.
*a seguridad fun!ional se refiere a los siste&as a!tivos que identifi!an una !ondi!i#n ' rea!!ionan" para
proteger de las !onse!uen!ias de esa !ondi!i#n. Se refiere a los siste&as instru&entados de
seguridadO no se refieren a los &e!anis&os pasivos (por e-e&plo una v%lvula de so$re presi#n+.
6iveles de seguridad (S)*+
El !orre!to fun!iona&iento de un siste&a de seguridad" requiere un !orre!to diseo para propor!ionar la
integridad ' la !onfia$ilidad requerida" por !ada !aso.
6o todas las @fun!iones de seguridadC" requieren el &is&o nivel de seguridad" por que !ada !ondi!i#n
poten!ial&ente peligrosa" tiene distintas pro$a$ilidades de o!urren!ia" ' ta&$iJn sus !onse!uen!ias
tienen distintas &agnitudes de dao poten!ial.
El P6ivel de )ntegra!i#n de SeguridadP o S)* ( Safet' )ntegrit' *evel + es el nivel de redu!!i#n de riesgo
que se requiere para !ada P5un!i#n de SeguridadP. Siendo S)*-1 es el nivel &enos seguro" ' S)*-3 es
el nivel &as seguro.
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 4
Para !ada una de las P5un!i#n de SeguridadP" del pro!eso o la &aquina" de$e deter&inarse el nivel de
seguridad (S)*+ requerido" anali,ando la pro$a$ilidad de o!urren!ia de la !ondi!i#n peligrosa" ' la
&agnitud del dao poten!ial de sus !onse!uen!ias.
S)* es enton!es el nivel de seguridad requerido para !ada deter&inada P5un!i#n de SeguridadP
*os requeri&ientos de seguridad (S)*+ de$en sie&pre deter&inarse a partir de un estudio de los riesgos
de opera!i#n ( HAZOP + del pro!eso o &aquina !orrespondiente. Dsando las tJ!ni!as de an%lisis que
se &en!ionan en las nor&as )E. >1411 e )E. >1408.
Si despuJs del anlisis de riesgos de !ada !aso. Se define" que una deter&inada fun!i#n de seguridad
(una prote!!i#n+ de$e ser S)*2 (o S)*2" et!+ todos los ele&entos involu!rados en esa fun!i#n de$en
!u&plir !on el &is&o !riterioG *os sensores" trans&isores" repetidores" a!tuadores" v%lvulas" et! ' no
solo el P*.. Para lograr esto" &u!has ve!es se de$e re!urrir a sensores redundantes" o triple
redundantes" o a!tuadores ' v%lvulas redundantes" et!.
En el diseo del siste&a de seguridad (S)S+ de$e !onsiderarse el S)* de !ada fun!i#n de seguridad" '
un an%lisis de fallos Q efe!tos" ' !riti!idad" de !ada uno de los !o&ponentes del siste&a.
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina >
.onsidera!iones de diseo
*as fun!iones de seguridad" de un siste&as de seguridad" se instalan para proteger a las personas" el
&edio a&$iente ' para la prote!!i#n de a!tivos de la e&presa. Estas prote!!iones sie&pre de$en
a!tivarse ante una !ondi!i#n peligrosa" pero solo en estas situa!iones.
=ientras &a'or el S)* requerido por una fun!i#n de seguridad" de$er%n e&plearse &as re!ursos
te!nol#gi!os para garanti,ar el fun!iona&iento de esta fun!i#n de seguridad. I &as !o&ple-o es el
siste&a" ' &as !osas podrLan fallar en Jl.
Si una fun!i#n de seguridad se a!tiva sin la presen!ia real de la situa!i#n peligrosa (por e-e&plo" de$ido
a una falla interna de algHn !o&ponente" falla de instru&enta!i#n" et!.+ provo!a" deten!iones
inne!esarias" que signifi!an pJrdidas e!on#&i!as. El diseo de$e in!luir los auto diagn#sti!os '
alar&as ne!esarios para advertir a tie&po las anor&alidades. Dsando redundan!ia ' verifi!a!i#n de
dis!repan!ias si es ne!esario.
.o&o la &a'orLa de los P*. solo per&ite for,ar seales de entrada o salida dis!retos" ' ho' en dLa la
&a'orLa de los instru&entos sensores no son dis!retos. El diseo de la l#gi!a de$erLa !onte&plar la
for&a de poder ha!er &anteni&iento de la instru&enta!i#n sin tener que detener el pro!eso produ!tivo"
in!orporando $'pass te&porales de las prote!!iones" que no des ha$iliten la &edi!i#n ' alar&as.
*a revisi#n ' &anteni&iento de los !o&ponentes del siste&a instru&entado de seguridad" puede ser
difL!il" o hasta i&posi$le de ha!er sin detener el pro!eso" si en el diseo no se !onsider# el diagnosti!o '
&anteni&iento del siste&a.
El Siste&a resultante puede ser tan !o&ple-o !o&o se i&agine" o tan si&ple !o&o lo que real&ente se
ne!esite. Dn siste&a de seguridad &al diseado" no garanti,a &as seguridad" solo difi!ultara su
&anteni&iento ' la opera!i#n del pro!eso.
El !o&prar de equipos de &a'or !osto" !ertifi!ados para seguridad" sin un $uen dise!o integral del
siste&a" puede que no au&ente la seguridad" pero esta &a'or !o&ple-idad te!nol#gi!a (' &a'or
inversi#n+ si podrLa au&entara las deten!iones inne!esarias ' las perdidas e!on#&i!as" por no
disponi$ilidad.
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 7
Progra&a!i#n de un P*.
Dn progra&a de !o&putadora es un !on-unto de instru!!iones que produ!ir%n la e-e!u!i#n de una
deter&inada tarea. En esen!ia" un progra&a es una respuesta predeter&inada" a todas las posi$les
!o&$ina!iones de estados de la infor&a!i#n que re!i$e.
El pro!eso de progra&a!i#n de un P*. es" por !onsiguiente" un pro!eso" en !u'o desarrollo se requieren
!ada una de las siguientes pasosG
".# Defini!i#n ' anlisis del pro$lema .
Este es el paso &as i&portante" tener !laridad de que se ne!esita.
Este an%lisis de$erLa in!luir el resultado de un K?RBP.
1. 1 - 9:uJ resultados de$e propor!ionar el siste&a; :ue salidas" so$re que de$e a!tuar.
1. 2 - 9:uJ datos se ne!esitan para deter&inar el resultado; :ue de$e &edir o vigilar (Entradas+
1. 2 - 9.o&o de$e rea!!ionar ante perdida de infor&a!i#n; .o&o de$e rea!!ionar si no puede
&edir varia$les que ne!esita vigilar. (S)*.+
1. 3 - 9.o&o de$e rea!!ionar ante fallas de si &is&o; .apa!idad de auto diagnosti!o (S)*.+
%.# Defini!i#n de la arquite!tura del hardEare ne!esario (entradasMsalidas" redundan!ia" auto
diagnosti!o" et!. +
&.# Diseo de los algorit&os.
'.# Progra&a!i#n del !#digo" en los lengua-es de progra&a!i#n.
(.# Depura!i#n ' verifi!a!i#n del progra&a (prue$as efe!tivas+.
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 8
9:ue es un algorit&o ;
Dn algorit&o es una se!uen!ia de pasos (instru!!iones o reglas+ para llevar a !a$o una tarea espe!ifi!a.
*os algorit&os son independientes tanto del lengua-e de progra&a!i#n en que se expresan" !o&o de la
&aquina que los e-e!uta. Disear un ?lgorit&o es disear un &Jtodo de to&a de de!isiones.
*as !ara!terLsti!as funda&entales que de$e !u&plir todo algorit&o sonG
*a defini!i#n de un algorit&o de$e des!ri$ir tres partesG Entrada" Pro!eso ' Salida.
Dn algorit&o de$e ser pre!iso e indi!ar el orden de reali,a!i#n de !ada paso.
Dn algorit&o de$e estar definido. ?nte las &is&as !ondi!iones de entradas" sie&pre de$e
o$tener se el &is&o resultado.
Dn algorit&o de$e ser finito. De$e de tener un nH&ero finito de pasos. (En ninguna situa!i#n se
puede quedar @pensadoC en un !i!lo infinito.
/odo progra&a de !o&putador es un !on-unto de
algorit&os.
E-e&plo de algorit&oG
EntradasG
Sot#n de partida
Sot#n de parada
Estado del &otor
SalidasG
.o&ando de &ar!ha o deten!i#n ha!ia el &otor
*#gi!a del algorit&oG
Si &otor esta andando O esta a!tivado $ot#n de
partida ) no esta a!tivado $ot#n de parada
Enton!es enviar !o&ando de &ar!ha
De lo !ontrario enviar !o&ando detener
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina <
Progra&a!i#n Estru!turada.
*a progra&a!i#n estru!turada es la for&a !l%si!a de progra&ar en for&a se!uen!ial. PodrLa&os de!ir
que es lo !ontrario a la progra&a!i#n orientada a o$-etos (!lases" eventos+.
*a progra&a!i#n estru!turada utili,a solo 2 tipos de estru!turasG
Se!uen!ias
Sele!!i#n ()nstru!!i#n !ondi!ional+
)ntera!!i#n (repeti!i#n !ondi!ional+
.ada una de estas estru!turas puede a su ve, !ontener otras de estas &is&as estru!turas" a esto se le
lla&a Panida&ientoP.
E-e&ploG
Leer BotonPartir
Leer BotonParar
Si BotonPartir Y No BotonParar Entonces
Motor = Activar
Sino
Motor = Detener
FinDelSi
Btro e-e&ploG
Leer x
Leer y
Si x > y Entonces
Escribir x " es mayor qe " y
Sino
Escribir y " es mayor qe " x
FinDelSi
Este e-e&plo tiene un error. 9*o viste;
Dn progra&a es una respuesta predeter&inada" a todas las posi$les !o&$ina!iones de estados de la
infor&a!i#n que re!i$e. 9:ue o!urre en este e-e&plo si x es igual a ' ; /a&$iJn es!ri$irLa @' es &a'or
que xC.
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 10
Venta-as de la progra&a!i#n estru!turada
-. *os progra&as son &%s f%!iles de entender" pueden ser leLdos de for&a se!uen!ial para entender la
l#gi!a.
-. *a estru!tura de los progra&as es !lara" puesto que las instru!!iones est%n &%s ligadas o rela!ionadas
entre sL.
-. Redu!!i#n del esfuer,o en las prue$as ' depura!i#n. El segui&iento de los errores del progra&a se
fa!ilita de$ido a su estru!tura &%s sen!illa ' !o&prensi$le" por lo que los errores se pueden dete!tar '
!orregir &%s f%!il&ente.
-. Redu!!i#n de los !ostos de &anteni&iento. ?n%loga&ente a la depura!i#n" durante la fase de
&anteni&iento" &odifi!ar o extender los progra&as resulta &%s f%!il.
-. *os $loques de !#digo son !asi auto-expli!ativos" lo que redu!e ' fa!ilita la do!u&enta!i#n.
)n!onvenientes de la progra&a!i#n estru!turada
El prin!ipal in!onveniente de la progra&a!i#n estru!turada es que se o$tiene un Hni!o $loque de
progra&a" que !uando se ha!e de&asiado grande" puede resultar pro$le&%ti!o para el &ane-o de su
!#digo fuente por su gran extensi#n.
Esto se resuelve e&pleando" en for&a !on-unta tanto las tJ!ni!as de progra&a!i#n estru!turada !o&o
las de programacin modular.
En la a!tualidad la !on-un!i#n PProgra&a!i#n estru!turadaP ' Pprogra&a!i#n &odularP es la &%s
utili,adas" en la progra&a!i#n de P*." en la que los &#dulos tienen una estructura *err+uica en la que
se pueden definir fun!iones dentro de fun!iones.
Progra&a!i#n =odular
*a progra&a!i#n &odular !onsiste en dividir un progra&a en &#dulos o su$-progra&as !on el fin de
ha!erlo &%s legi$le ' &ane-a$le.
Kist#ri!a&ente la progra&a!i#n &odular" es una evolu!i#n de la progra&a!i#n estru!turada" para
solu!ionar pro$le&as de progra&a!i#n &as grandes ' !o&ple-os.
la progra&a!i#n &odular" !onsiste en dividir un pro$le&a !o&ple-o en varios su$-pro$le&as &%s
si&ples" ' estos a su ve, en otros su$ pro$le&as &%s si&ples. Esto se ha!e hasta o$tener su$
pro$le&as lo sufi!iente&ente si&ples !o&o para poder ser resueltos f%!il&ente (divide ' ven!er%s+.
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 11
.ada &odulo" es una parte de un progra&a" ' es lo que en infor&%ti!a se !ono!e !o&o Psu$-rutinaP 'M o
Pfun!i#nP.
/radi!ional&ente se deno&ina @fun!i#nC al su$ progra&a que devuelve un resultado. Pode&os
ali&entar una @fun!ionC !on datos ' esta nos entregar% un resultado" sin ne!esitar tener que o!uparnos
de su fun!iona&iento interno.
Varia$le de entrada T 5un!i#n T Varia$le de salida
Square Root
.o&o e-e&plo de fun!i#n" en la i&agen se &uestra la fun!i#n @S:R/-realC esta es una fun!i#n 'a
existente que viene !on el siste&a" si&ple&ente le da&os un valor ' nos devuelve otro valor que es la
rai, !uadrada del anterior. De la &is&a &anera pode&os !rear nuestras propias fun!iones para lo
que ne!esite&os.
*a venta-a de usar un su$ progra&a que sea una @fun!ionC es que pode&os apli!ar &u!has ve!es el
&is&o algorit&o para distintos datos" es!ri$iendo una sola ve, el !#digo (algorit&o en lengua-e de
progra&a!i#n+" sin tener que es!ri$ir repetidas ve!es el &is&o !#digo.
Dna su$rutina o fun!i#n" solo se e-e!uta !uando es lla&ada desde dentro de otro progra&a" ' ha!e que
el progra&a prin!ipal se detenga" por que Ple pasaP la e-e!u!i#n a la su$ rutina. El progra&a que lla&o a
la su$ rutina" solo !ontinuar% su e-e!u!i#n" !uando la su$ rutina ter&ina" ' le @devuelveP el resultado.
/ipos de varia$les.
En progra&a!i#n" una varia$le es un espa!io reservado en la &e&oria" que pueden !a&$iar de !ontenido
a lo largo de la e-e!u!i#n de un progra&a.
*as varia$les se representan !on identifi!adores (P/agP+ que ha!en referen!ia al lugar de la &e&oria en
donde se al&a!ena un dato.
Respe!to a su %&$ito" un varia$le puede serG
,aria$le LocalG .uando la &is&a s#lo es a!!esi$le desde el su$ progra&a al que pertene!e" no
pudiendo ser leLda o &odifi!ada desde otro su$ progra&a.
,aria$le -lo$alG .uando la &is&a es a!!esi$le desde todos los su$ progra&as de la apli!a!i#n.
En un P*. todas sus entradas ' salidas sie&pre son varia$les glo$ales.
*as varia$les internas solo ser%n glo$ales si espe!Lfi!a&ente se las define !o&o tales. De lo !ontrario
solo ser%n lo!ales del su$ progra&a dentro del !ual est%n definidas.
*a venta-a de usar varia$les lo!ales" es que evita&os tener un gigantes!o listado de varia$les glo$ales"
difL!il de &ane-ar.
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 12
Respe!to a su tipo" un varia$le puede serG
/ipo *ogi!aG (P$ooleanaP+ Verdadero M 5also.
/ipo .nteroG un valor entero entre 0 ' n. Donde n depende de la !antidad de $'tes !on que tra$a-e el
siste&a" (' si usa o no un $it para representar el signo+.
Por e-e&ploG 2 $'tes N 2x8 $its N 1>$its ----- 2 elevado a 1> N >442>. El valor &axi&o seria >4424
/ipo /ealG o P!o&a flotantePG El rango valido ' su exa!titud varia segHn la !antidad de $'tes !on que
tra$a-e el siste&a ( !uo!iente U exponente +.
Por e-e&ploG 213"1> N 2"131> x 10 elevado 2
/ipo !ara!teresG (PStringP+ Es una se!uen!ia de nH&eros enteros" que representa una se!uen!ia de
!ara!teres (letras o signos+ de un deter&inado alfa$eto.
SegHn el ta&ao de &e&oria que usan" se a!ostu&$ra ha$lar deG
Sool N 1 $its
S'te N 8 $its
Ford N 1> $it
Dou$le Ford N 22 $it
)nteger N 2 $'tes N 1> $its
Dou$le )nteger N 3 $'tes
Real N 3 $'tes
et!.
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 12
*engua-es de progra&a!i#n
El standard interna!ional )E. >1121 define los siguientes lengua-es de progra&a!i#n para P*.G
)nstru!tion list ()*+" texto
*adder (*D+" grafico
5un!tion $lo!k diagra& (5SD+" grafico
Stru!tured text (S/+" texto
El lengua*e 0Instruction list0 no es &as que la representa!i#n en for&a de texto del lengua-e gr%fi!o
P*adderP. Es el &as antiguo de los lengua-es de progra&a!i#n de P*.. Pre!ursor del *adder se
usa$a !uando los !o&putadores aun no tenLan !apa!idad gr%fi!a.
E-e&plo en )nstru!tion list
LD BotonPartir
OR Motor
AND NOT BotonParar
OUT Motor
El lengua*e LA11./" (Pes!aleraP+" es un lengua-e de progra&a!i#n gr%fi!o &u' popular" 'a que est%
$asado en los !l%si!os esque&as de !ontrol elJ!tri!os !on reles. De este &odo" es &u' f%!il de entender
para un tJ!ni!o elJ!tri!o.
El &is&o e-e&plo anterior en *adder
| |
| BotonPartir BotonParar Motor |
|------[ ]------|------[/]----------------------(OUT)---------|
| | |
| | |
| | |
| Motor | |
|------[ ]------| |
| !
1esventa*as del lengua-e ladder G
Es el &%s ade!uado para !ontrolar los pro$le&as" donde s#lo las varia$les dis!retas ($oleanas+
son ne!esarias 'Mo donde son el pro$le&a prin!ipal de !ontrol.
Es difL!il &anipular las varia$les anal#gi!as ' expresar las opera!iones arit&Jti!as.
/iene un soporte &u' li&itado para las &atri!es ' $u!les" resultando a &enudo en la dupli!a!i#n
de !#digo.
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 13
El lengua*e 02unction $loc3 diagram0 es un lengua-e gr%fi!o" que des!ri$e una fun!i#n entre las
varia$les de entrada ' varia$les de salida" !o&o un !on-unto de $loques ele&entales" que est%n
!one!tados por lineas lLneas de !onexi#n.
El &is&o e-e&plo anterior en 5un!tion $lo!k diagra&
El lengua*e 0Structured te4t0 es un lengua-e de alto nivel" que es estru!turado en $loques '
sint%!ti!a&ente si&ilar a Pas!al.
El &is&o e-e&plo anterior en Stru!tured text
IF ( BotonPartir OR Motor ) AND NOT BotonParar THEN
Motor := TRUE
EL!E
Motor := FAL!E
END"IF
, enta*as del lengua-e Stru!tured text G
Soporta instru!!iones arit&eti!as !o&ple-as.
Soporta instru!!iones anidadas.
Soporta !i!los de itera!i#n (repeat-until" Ehile-do+
Soporta e-e!u!i#n !ondi!ional ()f-/hen-Else" .ase+
Es f%!il agregar !o&entarios que expli!an la l#gi!a.
/odo lo que esta entre (# ' #) es !o&entario ' no se e-e!uta.
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 14
E-e&plos de algorit&os usados en pl!
Algoritmo 52irst6Out7
Dna &aquina o pro!eso tiene" ade&as de alar&as que no detienen" varias alar&as que detienen su
fun!iona&iento. .uando por alguna de estas se detiene la &aquina" su deten!i#n produ!e altera!iones
en el pro!eso" que provo!an a su ve, la a!tiva!i#n de otras alar&as que ta&$iJn podrLan ha$er !ausado
la deten!i#n. El resultado es que !uando el operador llega a ver por que se detuvo la &aquina" se
en!uentra !on &u!has alar&as a!tivadas" ' no sa$e !ual de ellas fue la pri&era que !auso la deten!i#n.
(# E$ta %art& '&( %ro)ra*a r&)i$tra +,a( &$ &( *oti-o '& (a '&t&n+ion '& (a
*a.,ina/ Para .,& &$to 0,n+ion&1 '&2& r&$%&tar$& &$t& or'&n '& &3&+,+ion '& (o$
%ro)ra*a$:
4- E-a(,ar (a$ &ntra'a$ 5 +a(+,(ar +,a(&$ A(ar*a$ &$tan a+ti-a'a$/
6- D&+i'ir $i *a.,ina +ontin,a 0,n+ionan'o o 7a5 .,& '&t&n&r(a/
8- D&$%,&$ '& '&+i'ir $&),ir o %arar1 &3&+,tar &$t& a()orit*o 9Fir$t-O,t9
:- Mo$trar (o$ &$ta'o$ &n &( %an&( '& A(ar*$ o HMI/
ENTRADA!: E$t& a()orit*o n&+&$ita r&+i2ir (a$ $i),i&nt&$ $&;a(&$/
E( arr&)(o Tri%A(ar*No<[=] .,& +onti&n& (o$ &$ta'o$ a+t,a(&$ '& to'a$ (a$
+on'i+ion&$ .,& '&ti&n&n/
E( arr&)(o Ana(o)No<[=] .,& +onti&n& (o$ -a(or&$ a+t,a(&$ '& (a$ -aria2(&$
ana(o)a$ +riti+a$
La -aria2(& 9R,n9 &$ $i (a *a.,ina &$ta an'an'o o '&t&ni'a/
!ALIDA!: E$t& a()orit*o '&-o(-&ra (a$ $i),i&nt&$ $&;a(&$/
E( arr&)(o Tri%A(ar*La$t!D[=] .,& +onti&n& (o$ &$ta'o$ .,& t&nian to'a$ (a$
+on'i+ion&$ .,& '&ti&n&n1 ',rant& (a ,(ti*a '&t&n+ion
E( arr&)(o Ana(o)La$t!D[=] .,& +onti&n& (o$ -a(or&$ .,& t&nian (a$ -aria2(&$
ana(o)a$ +riti+a$1 ',rant& (a ,(ti*a '&t&n+ion
>aria2(&$ (o+a(&$:
?a@ra2a'o '&( ti%o Boo(
#)
IF NOT(R,n) AND NOT(?a@ra2a'o) THEN
FOR =:= 4 TO AA DO (#!,%oni&n'o .,& AA &$ (a 'i*&n$ion '& (o$ arr&)(o$#)
Tri%A(ar*La$t!D[=] := Tri%A(ar*No<[=]
Ana(o)La$t!D[=] := Ana(o)No<[=]
END"FOR
?a@ra2a'o:= TRUE
END"IF
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 1>
IF R,n THEN
?a@ra2a'o:= FAL!E
END"IF
Este algorit&o @5irstAoutC per&ite tener una foto del estado de las varia$les !riti!as en el instante en que
se detuvo la &aquina" de &anera de poder indi!ar !ual fue la !ausante.
En el !aso de un !o&presor $asta !on uno de estos algorit&os" por que la &aquina tiene solo dos
estados" pero" por e-e&plo en un horno" en que ha' v%lvulas de pilotos a gas" v%lvulas de que&adores
de gas ' v%lvulas de que&adores de petroleo. Ka$r% que tener un @5irst-ButC pilotos" un @5irst-ButC
que&adores de gas" ' un @5irst-ButC que&adores de petroleo" !ada uno !one!tado a sus varia$les
!orrespondientes.
Algoritmo 52an6In7
.onvierte 1> dis!retos en un valor entero entre 0 ' >4424" usado para enviar por !o&uni!a!i#n" los
$ooleanos !o&o un valor dentro de un arreglo de valores.
t&*% :=B
!i 2itBB &nton+&$ t&*% := t&*% C 4
!i 2itB4 &nton+&$ t&*% := t&*% C 6
!i 2itB6 &nton+&$ t&*% := t&*% C :
!i 2itB8 &nton+&$ t&*% := t&*% C D
!i 2itB: &nton+&$ t&*% := t&*% C 4E
!i 2itBF &nton+&$ t&*% := t&*% C 86
!i 2itBE &nton+&$ t&*% := t&*% C E:
!i 2itBG &nton+&$ t&*% := t&*% C 46D
!i 2itBD &nton+&$ t&*% := t&*% C 6FE
!i 2itBA &nton+&$ t&*% := t&*% C F46
!i 2it4B &nton+&$ t&*% := t&*% C 4B6:
!i 2it44 &nton+&$ t&*% := t&*% C 6B:D
!i 2it46 &nton+&$ t&*% := t&*% C :BAE
!i 2it48 &nton+&$ t&*% := t&*% C D4A6
!i 2it4: &nton+&$ t&*% := t&*% C 4E8D:
!i 2it4F &nton+&$ t&*% := t&*% C 86GED
>a(orO,t := t&*%
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 17
Algoritmo 52an6Out7
Es el algorit&o inverso del anterior" extrae 1> dis!retos desde un valor entero entre 0 ' >4424.
entregando un arreglo de $ooleanos P?lar&aVxW
t&*%4 :=>a(orIn
Para = '&$'& 4E 7a$ta 4 r&%&tir
t&*%6 := ( 6 &(&-a'o a ( =-4 ) )
!i (t&*%4 / t&*%6) &$ *&nor .,& 4 &nton+&$
A(ar*a[=] = Fa($o
D& (o +ontrario
A(ar*a[=] = >&r'a'&ro
t&*%4 := t&*%4 - t&*%6
Hontin,ar +on (a $i),i&nt& r&%&ti+iIn
En lengua-e de texto estru!turado esto &is&o es ...
t&*%4 :=>a(orIn
FOR =:= 4E TO 4 B? -4 DO
t&*%6 := ( 6##(=-4)) (# 6 &(&-a'o a /// #)
IF (t&*%4/t&*%6) J 4/B THEN
A(ar*a[=]/a := FAL!E
EL!E
A(ar*a[=] := TRUE
t&*%4 := t&*%4 - t&*%6
END"IF
END"FOR
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 18
Defini!i#n de un !aso fi!ti!io !o&o e-e&plo
Para poder ver la apli!a!i#n pra!ti!a de los !on!eptos de progra&a!i#n estru!turada ' &odular" usando
fun!iones ' arreglos de varia$les lo!ales" se plantea un !aso fi!ti!io" para resolverlo progra&an el
&is&o !aso en P*. de distintos fa$ri!antes.
.ada fa$ri!ante de P*. ofre!e sus propias herra&ientas de progra&a!i#n (softEare+" ' !ada &odelo
tiene sus propias !ara!terLsti!as ' parti!ularidades.
En el desarrollo del e-e&plo" no se detalla la !onfigura!i#n del hardEare" ni las alar&as de auto
diagnosti!o del &is&o pl!. Ia que la for&a de ha!er esto es distinta en !ada &odelo espe!ifi!o de pl!"
' la l#gi!a que se &uestra aquL es la parte genJri!a" se podrLa apli!ar a toda una linea de pl! del &is&o
fa$ri!ante. *a &a'orLa de los pl! entregan varia$les de diagnosti!o de si &is&os" ' es el progra&ador
el que puede usar o no esta infor&a!i#n en su progra&a!i#n.
Plantea&iento del pro$le&aG
Suponga&os que tene&os un !o&presor de gases re!ipro!o (de pist#n+ &ovido por un &otor elJ!tri!o" '
se ne!esita que tenga las siguientes alar&as ' prote!!iones.
El &otor se de$e detener ante !ualquiera de las siguientes !ondi!ionesG
Sot#n de deten!i#n &anual
Sa-a presi#n de a!eite de lu$ri!a!i#n (&edida por un trans&isor de 3 a 20 &ilia&peres+
?lta te&peratura de des!arga (&edida por un trans&isor de 3 a 20 &ilia&peres+
Sa-a presi#n de su!!i#n (seal desde un sEit!h de presi#n+
So$re!arga elJ!tri!a (o falla elJ!tri!a en general+
?lta vi$ra!i#n (seal desde un sEit!h de vi$ra!i#n+
?lta diferen!ial su!!i#n des!arga (seal desde un sEit!h de presi#n diferen!ial+
El &otor de$e partir solo !uando una persona presione un $ot#n de partida &anual" sie&pre ' !uando
en ese &o&ento estJn !u&plidos los siguientes requisitosG
6inguna de las !ondi!iones que lo detienen
Presi#n de a!eite de lu$ri!a!i#n tenga un valor nor&al (&edia por el trans&isor+
/e&peratura de des!arga tenga un valor nor&al (&edia por el trans&isor+
Exista presi#n de agua de enfria&iento (seal desde un sEit!h de presi#n+
De$e tener un panel !on lu!es de alar&a que indique !ada una de estas !ondi!iones de alar&a. Este
de$e fun!ionar !o&o un panel de alar&as !l%si!o. Esto es la lu, de indi!a!i#n de !ada alar&a de$e
parpadear hasta que la nueva alar&a sea re!ono!ida" !on un $ot#n re!ono!er.
?lar&a de deten!i#n por el $ot#n de deten!i#n &anual
?lar&a de &u' $a-a presi#n de a!eite
?lar&a de $a-a presi#n de a!eite
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 1<
?lar&a de &u' alta te&peratura de des!arga
?lar&a de alta te&peratura de des!arga
?lar&a de $a-a presi#n de su!!i#n
?lar&a de falla elJ!tri!a
?lar&a de alta vi$ra!i#n
?lar&a de alta diferen!ial su!!i#n des!arga
?lar&a de $a-a presi#n de agua de enfria&iento
Resu&en alar&a no re!ono!ida (So!ina de alar&a+
Resu&en de !ondi!i#n de alar&a presente (un rele a una alar&a re&ota+
De$e ade&as per&itir que el estado de todas estas alar&as puedan ser leLdas por !o&uni!a!i#n digital
desde un D.S.
Se trata de un e-e&plo tLpi!o de los &as si&ples.
El desarrollados que se &uestra a !ontinua!i#n per&iten dar un vista,o a las parti!ularidades" de la
progra&a!i#n de los prin!ipales fa$ri!antes de pl!" ' ver !o&o se apli!a en ellos los !on!eptos de
progra&a!i#n estru!turada ' &odular. *as fun!iones" arreglos" !i!los" et!.
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 20
Solu!i#n !on Dnit'" de S!hneider
Para P*.s =odi!on =230" Pre&iu& o :ua&tu&
El progra&a se divide en tres su$-progra&asG ?nalogas" Prin!ipal ' ?lar&as.
El pri&er progra&a que se e-e!uta es @?nalogasC" donde se es!alan las entradas anal#gi!as ' se
!o&paran !on las valores de alar&a. Este progra&a a su ve, usa la fun!i#n @Es!alarC.
*a funcin 5.scalar7 re!i$e la entrada an%loga en rango de 1000 a 4000 &ili volt ' la es!ala al rango
deseado. /a&$iJn levanta una alar&a si la entrada esta fuera de su rango.
>a(orIn := INT"TO"REAL(>a(or)
Ma=In := INT"TO"REAL(Ma="in)
MinIn := INT"TO"REAL(Min"in)
E$+a(a'o := ((((>a(orIn - MinIn)/(Ma=In - MinIn))#(Ma="O,t - Min"O,t))C Min"O,t)
IF (>a(or K !o2r&Ran)o) OR (>a(or J Ba3oRan)o) THEN
Fa((a := TRUE
EL!E
Fa((a := FAL!E
END"IF
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 21
El programa 5Analogas7.
El segundo progra&a que se e-e!uta es @Prin!ipalC" en el se de!ide si &antener" detener o dar partida
al &otor prin!ipal.
KS21 es el $oton de parar (nor&al !errado+.
KS22 es el $oton de partir (nor&al a$ierto+.
@Read'C es la indi!a!i#n de que est%n todas las !ondi!iones para partir.
X=21 el el !o&ando de &ar!ha o deten!i#n ha!ia el &otor.
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 22
El programa 5Principal7
DespuJs se e-e!uta el programa 5Alarmas7 donde se infor&a al operador los estados de las alar&as.
El progra&a @?lar&asC usa un arreglo lla&ado @?lar&C (de di&ensi#n 0 a <<+ del tipo de @?lar&/ipoC
que es una estru!tura !o&puesta de ...
En la pri&era parte de este progra&a se aso!ian las !ondi!iones ' estados a las entradas de las
alar&as.
(#"""""""""""""LEER""E!TADO!"""""""""""""#)
Bot"R&+ono+& := H!68
A(ar*[B]/In := NOT(H!64) (#D&t&n+ion *an,a(#)
A(ar*[4]/In := PLLB4 (#*,5 2a3a %r&$ion a+&it&#)
A(ar*[6]/In := PL44 (#2a3a %r&$ion a+&it&#)
A(ar*[8]/In := THHB6 (#*,5 a(ta t&*% '&$+ar)a#)
A(ar*[:]/In := TH46 (#a(ta t&*% '&$+ar)a#)
A(ar*[F]/In := NOT(PLLB8) (#2a3a %r&$ion $,++ion#)
A(ar*[E]/In := NOT(LHHB:) (#0a((a &(&+tri+a#)
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 22
A(ar*[G]/In := NOT(>HHBF) (#a(ta -i2ra+ion#)
A(ar*[D]/In := NOT(PDHHBE) (#a(ta 'i0&r&n+ia( $,++ion '&$+ar)a#)
A(ar*[A]/In := NOT(PL4G) (#2a3a %r&$ion a),a#)
A(ar*[4B]/In := FAL!E (#A(ar*a 'i$%oni2(&#)
A(ar*[44]/In := FAL!E (#A(ar*a 'i$%oni2(&#)
A(ar*[46]/In := FAL!E (#A(ar*a 'i$%oni2(&#)
A(ar*[48]/In := FAL!E (#A(ar*a 'i$%oni2(&#)
A(ar*[4:]/In := FAL!E (#A(ar*a 'i$%oni2(&#)
(# $& %,&'&n $&),ir a)r&)an'o 7a$ta AA a(ar*a$#)
En la segunda parte de este progra&a se e-e!uta la l#gi!a de panel de alar&as" para esto se lla&a " por
!ada una de las alar&as" a la fun!i#n @=oduloA?lar&aC.
(# EMEHUTAR LO@IHA DEL PANEL DE ALARMA! #)
(# ((a*a a ,na in$tan+ia '& (a 0,n+ion NMi"R&(o3N #)
(# .,& &ntr&)a &( %ar%a'&o %ara (a$ (,+&$ #)
P,($o$ := R&(o34/P,($o
FOR i:=B TO AA DO (# R&%&tir %ara (a$ a(ar*a$ B 7a$ta (a AA #)
(# ((a*a a (a 0,n+ion NMo',(o"A(ar*aN %a$an'o(& -a(or&$ '& (a a(ar*a i #)
Mo',(o"A(ar*a ( Entra'a := A(ar*[i]/In1
?a"D&t&+ := A(ar*[i]/D&t&+1
Bot"R&+ono+&r := Bot"R&+ono+&1
?a"R&+on := A(ar*[i]/R&+on1
Par%a'&o := P,($o$ )
(# (a 0,n+ion NMo',(o"A(ar*aN $& &3&+,ta 5 &ntr&)a -a(or&$ #)
A(ar*[i]/D&t&+ := Mo',(o"A(ar*a/D&t&+ta'a
A(ar*[i]/R&+on := Mo',(o"A(ar*a/R&+ono+i'a
A(ar*[i]/O,t := Mo',(o"A(ar*a/!a(i'a
A(ar*[i]/L,O := Mo',(o"A(ar*a/L,O
END"FOR (# R&%&tir +on (a $i),i&nt& a(ar*a i #)
En la ter!era parte de este progra&a se !opia el resultado de la l#gi!a de alar&as ha!ia las salidas
!orrespondientes.
(# E!HRIBIR RE!ULTADO! EN LUHE! DE ALARMA #)
LA64 := A(ar*[B]/L,O (#D&t&n+ion *an,a(#)
LAB4 := A(ar*[4]/L,O (#*,5 2a3a %r&$ion a+&it&#)
LA44 := A(ar*[6]/L,O (#2a3a %r&$ion a+&it&#)
LAB6 := A(ar*[8]/L,O (#*,5 a(ta t&*% '&$+ar)a#)
LA46 := A(ar*[:]/L,O (#a(ta t&*% '&$+ar)a#)
LAB8 := A(ar*[F]/L,O (#2a3a %r&$ion $,++ion#)
LAB: := A(ar*[E]/L,O (#0a((a &(&+tri+a#)
LABF := A(ar*[G]/L,O (#a(ta -i2ra+ion#)
LABE := A(ar*[D]/L,O (#a(ta 'i0&r&n+ia( $,++ion '&$+ar)a#)
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 23
C
i
c
l
o
LA4G := A(ar*[A]/L,O (#2a3a %r&$ion a),a#)
(#LA// := A(ar*[4B]/L,O (#A(ar*a 'i$%oni2(&#)
(#LA// := A(ar*[44]/L,O (#A(ar*a 'i$%oni2(&#)
(#LA// := A(ar*[46]/L,O (#A(ar*a 'i$%oni2(&#)
(#LA// := A(ar*[48]/L,O (#A(ar*a 'i$%oni2(&#)
(#LA// := A(ar*[4:]/L,O (#A(ar*a 'i$%oni2(&#)
(#LA// := A(ar*[4F]/L,O (#A(ar*a 'i$%oni2(&#)
(#""""""""""""""""""""""""""""""""""""""""""""""""""""""""#)
(# E!TADO! DE ALARMA! PARA HOMUNIHAHION MODBU! #)
PM4BB := A(ar*[B]/O,t (#Mo'2,$ B:B4B4 = A(ar*a D&t&n+ion *an,a(#)
PM4B4 := A(ar*[4]/O,t (#Mo'2,$ B:B4B6 = A(ar*a *,5 2a3a %r&$ion a+&it&#)
PM4B6 := A(ar*[6]/O,t (#Mo'2,$ B:B4B8 = A(ar*a 2a3a %r&$ion a+&it&#)
PM4B8 := A(ar*[8]/O,t (#Mo'2,$ B:B4B: = A(ar*a *,5 a(ta t&*% '&$+ar)a#)
PM4B: := A(ar*[:]/O,t (#Mo'2,$ B:B4BF = A(ar*a a(ta t&*% '&$+ar)a#)
PM4BF := A(ar*[F]/O,t (#Mo'2,$ B:B4BE = A(ar*a 2a3a %r&$ion $,++ion#)
PM4BE := A(ar*[E]/O,t (#Mo'2,$ B:B4BG = A(ar*a 0a((a &(&+tri+a#)
PM4BG := A(ar*[G]/O,t (#Mo'2,$ B:B4BD = A(ar*a a(ta -i2ra+ion#)
PM4BD := A(ar*[D]/O,t (#Mo'2,$ B:B4BA = A(ar*a a(ta 'i0&r&n+ia( $,++ion '&$+ar)a#)
PM4BA := A(ar*[A]/O,t (#Mo'2,$ B:B44B = A(ar*a 2a3a %r&$ion a),a#)
PM44B := A(ar*[4B]/O,t (#Mo'2,$ B:B444 = A(ar*a 'i$%oni2(&#)
PM444 := A(ar*[44]/O,t (#Mo'2,$ B:B446 = A(ar*a 'i$%oni2(&#)
PM446 := A(ar*[46]/O,t (#Mo'2,$ B:B448 = A(ar*a 'i$%oni2(&#)
PM448 := A(ar*[48]/O,t (#Mo'2,$ B:B44: = A(ar*a 'i$%oni2(&#)
PM44: := A(ar*[4:]/O,t (#Mo'2,$ B:B44F = A(ar*a 'i$%oni2(&#)
PM44F := A(ar*[4F]/O,t (#Mo'2,$ B:B44E = A(ar*a 'i$%oni2(&#)
*a fun!i#n @8odulo6AlarmaC !ontiene lo que se &uestra en la
i&agen a la dere!ha.
Este es la &is&a l#gi!a apli!ada a !ada una de las <<
alar&as.
El usar un arreglo en !on-unto !on un !i!lo !ondi!ional"
per&ite en ve, de es!ri$ir << ve!es la l#gi!a para !ada una de
las << alar&as. Es!ri$irla una sola ve, ' usarla << ve!es para
las << alar&as.
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 24
El progra&a @?lar&asC ta&$iJn lla&a a la funcin 58i6relo*7 para generar el pulso !on que
parpadean las lu!es de las alar&as.
6ota que las varia$les x1" x2" x2" /i&er1 '
/i&er2" no apare!en en el listado de
varia$les de los de&%s progra&as" por que
son varia$les lo!ales (internas+ de esta
fun!i#n @=iArelo-C
Esta fun!i#n no tiene entradas" solo tiene una
salida dis!reta lla&ada @PulsoC
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 2>
Solu!i#n !on /ristation" de /ri!onex
Para P*.s /ri!onex o /rident.
El progra&a se divide en tres su$progra&as. Dentro de la !onfigura!ion del P*. se de$e definir el
orden de e-e!u!i#n de estosG Pri&ero se e-e!uta el que se lla&a @?nalogasC" donde se es!alan las
entradas anal#gi!as ' se !o&paran !on las valores de alar&a. DespuJs se e-e!uta el que se lla&a
@Prin!ipalC" donde se de!ide si detener o no el &otor. DespuJs se e-e!uta el que se lla&a @?lar&asC
donde se infor&a al operador los estados de las alar&as.
El programa 5Analogas7 tiene lo siguienteG
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 27
*uego el programa 5Principal7 que tiene lo siguienteG
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 28
Por ulti&o el programa 5Alarmas7 que tiene lo siguienteG
Este progra&a @?lar&asC lla&a a las siguientes fun!ionesG
*a funcin 58i6/elo*7 no tiene entradas" se usa para generar el pulso para las lu!es inter&itentes.
F"N#$%&N'BL&#( Panel'Alarmas
)* Entra+as y sali+as +e esta ,nci-n *.
/A0'%NP"$
)* No se necesitan entra+as*.
END'/A0
/A0'&"$P"$
Plso 1 B&&L 2
END'/A0
)* /ariables Locales *.
/A0
$imer3 1 $&N2
$imer4 1 $&N2
x35 x45 x6 1 B&&L 2
END'/A0
)* Fnction Bloc7 Bo+y *.
IF =6 THEN =8:=FAL!E EL!E =8:=TRUE END"IF
Ti*&r4(IN:==81PT:=tQ4$)
=4 := Ti*&r4/R
Ti*&r6(IN:==41PT:=tQ4$)
=6 := Ti*&r6/R
IF =4 THEN P,($o:=FAL!E EL!E P,($o:=TRUE END"IF
END'F"N#$%&N'BL&#(
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 2<
Equivalente en *adder
.on el softEare /ristation (de /ri!onex+ no existe &anera de ha!er un !i!lo repetitivo. Esta li&ita!i#n
de /ri!onex es inten!ional" ' de$e ser para i&pedir que por errores de progra&a!i#n" pueda llegar a
for&arse" en alguna !ondi!i#n" un !i!lo sin fin. De he!ho los /ri!onex son los Hni!os !ertifi!ados para
apli!a!iones en que se requiera S)* 2" ' gestionan auto&%ti!a&ente su propio auto diagnosti!o '
redundan!ia.
Por esto" la Hni!a for&a de ha!er la &is&a l#gi!a para las 10 alar&as" es es!ri$ir 10 ve!es la &is&a
l#gi!a. Sin e&$argo !o&o esta dentro de una fun!i#n" si ne!esita&os &as alar&as pode&os lla&ar
varias ve!es a la &is&a fun!i#n. Por e-e&plo" si ne!esit%ra&os 30 alar&as" podrLa&os dentro del
progra&a @?lar&asC poner 3 ve!es la fun!i#n @PanelA?lar&asC.que tiene la l#gi!a de 10 alar&as por
!ada ve,.
*a fun!i#n @Panel6AlarmasC !ontiene la l#gi!a de las alar&as.
F"N#$%&N'BL&#( Panel'Alarmas
)* Entra+as y sali+as +e esta ,ncion *.
/A0'%NP"$
0econocer5 $est 1 B&&L2
%n'835 %n'845 %n'865 %n'895 %n'8:5 %n'8;5 %n'8<5 %n'8=5 %n'8>5 %n'38 1B&&L2
Plsos 1B&&L2
END'/A0
/A0'&"$P"$
Neva5 0esmen 1 B&&L2
&t'835 &t'845 &t'865 &t'895 &t'8:5 &t'8;5 &t'8<5 &t'8=5 &t'8>5 &t'38 1B&&L2
L?'835 L?'845 L?'865 L?'895 L?'8:5 L?'8;5 L?'8<5 L?'8=5 L?'8>5 L?'38 1B&&L2
END'/A0
)* /ariables Locales *.
/A0
Det'835 Det'845 Det'865 Det'895 Det'8:5 Det'8;5 Det'8<5 Det'8=5 Det'8>5 Det'38 1B&&L2
0ec'835 0ec'845 0ec'865 0ec'895 0ec'8:5 0ec'8;5 0ec'8<5 0ec'8=5 0ec'8>5 0ec'38 1B&&L2
END'/A0
(# ALARMA 4 #)
IF (In"B4 OR D&t"B4) AND NOT(R&+"B4) THEN D&t"B4:=TRUE EL!E D&t"B4:=FAL!E END"IF
IF (In"B4 OR D&t"B4) AND (R&+ono+&r OR R&+"B4) THEN R&+"B4:=TRUE EL!E R&+"B4:=FAL!E END"IF
IF (D&t"B4 OR R&+"B4) THEN O,t"B4:=TRUE EL!E O,t"B4:=FAL!E END"IF
IF (D&t"B4 AND P,($o$) OR R&+"B4 OR T&$t THEN L,O"B4:=TRUE EL!E L,O"B4:=FAL!E END"IF
(# ALARMA 6 #)
IF (In"B6 OR D&t"B6) AND NOT(R&+"B6) THEN D&t"B6:=TRUE EL!E D&t"B6:=FAL!E END"IF
IF (In"B6 OR D&t"B6) AND (R&+ono+&r OR R&+"B6) THEN R&+"B6:=TRUE EL!E R&+"B6:=FAL!E END"IF
IF (D&t"B6 OR R&+"B6) THEN O,t"B6:=TRUE EL!E O,t"B6:=FAL!E END"IF
IF (D&t"B6 AND P,($o$) OR R&+"B6 OR T&$t THEN L,O"B6:=TRUE EL!E L,O"B6:=FAL!E END"IF
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 20
(# ALARMA 8 #)
IF (In"B8 OR D&t"B8) AND NOT(R&+"B8) THEN D&t"B8:=TRUE EL!E D&t"B8:=FAL!E END"IF
IF (In"B8 OR D&t"B8) AND (R&+ono+&r OR R&+"B8) THEN R&+"B8:=TRUE EL!E R&+"B8:=FAL!E END"IF
IF (D&t"B8 OR R&+"B8) THEN O,t"B8:=TRUE EL!E O,t"B8:=FAL!E END"IF
IF (D&t"B8 AND P,($o$) OR R&+"B8 OR T&$t THEN L,O"B8:=TRUE EL!E L,O"B8:=FAL!E END"IF
(# ALARMA : #)
IF (In"B: OR D&t"B:) AND NOT(R&+"B:) THEN D&t"B::=TRUE EL!E D&t"B::=FAL!E END"IF
IF (In"B: OR D&t"B:) AND (R&+ono+&r OR R&+"B:) THEN R&+"B::=TRUE EL!E R&+"B::=FAL!E END"IF
IF (D&t"B: OR R&+"B:) THEN O,t"B::=TRUE EL!E O,t"B::=FAL!E END"IF
IF (D&t"B: AND P,($o$) OR R&+"B: OR T&$t THEN L,O"B::=TRUE EL!E L,O"B::=FAL!E END"IF
(# ALARMA F #)
IF (In"BF OR D&t"BF) AND NOT(R&+"BF) THEN D&t"BF:=TRUE EL!E D&t"BF:=FAL!E END"IF
IF (In"BF OR D&t"BF) AND (R&+ono+&r OR R&+"BF) THEN R&+"BF:=TRUE EL!E R&+"BF:=FAL!E END"IF
IF (D&t"BF OR R&+"BF) THEN O,t"BF:=TRUE EL!E O,t"BF:=FAL!E END"IF
IF (D&t"BF AND P,($o$) OR R&+"BF OR T&$t THEN L,O"BF:=TRUE EL!E L,O"BF:=FAL!E END"IF
(# ALARMA E #)
IF (In"BE OR D&t"BE) AND NOT(R&+"BE) THEN D&t"BE:=TRUE EL!E D&t"BE:=FAL!E END"IF
IF (In"BE OR D&t"BE) AND (R&+ono+&r OR R&+"BE) THEN R&+"BE:=TRUE EL!E R&+"BE:=FAL!E END"IF
IF (D&t"BE OR R&+"BE) THEN O,t"BE:=TRUE EL!E O,t"BE:=FAL!E END"IF
IF (D&t"BE AND P,($o$) OR R&+"BE OR T&$t THEN L,O"BE:=TRUE EL!E L,O"BE:=FAL!E END"IF
(# ALARMA G #)
IF (In"BG OR D&t"BG) AND NOT(R&+"BG) THEN D&t"BG:=TRUE EL!E D&t"BG:=FAL!E END"IF
IF (In"BG OR D&t"BG) AND (R&+ono+&r OR R&+"BG) THEN R&+"BG:=TRUE EL!E R&+"BG:=FAL!E END"IF
IF (D&t"BG OR R&+"BG) THEN O,t"BG:=TRUE EL!E O,t"BG:=FAL!E END"IF
IF (D&t"BG AND P,($o$) OR R&+"BG OR T&$t THEN L,O"BG:=TRUE EL!E L,O"BG:=FAL!E END"IF
(# ALARMA D #)
IF (In"BD OR D&t"BD) AND NOT(R&+"BD) THEN D&t"BD:=TRUE EL!E D&t"BD:=FAL!E END"IF
IF (In"BD OR D&t"BD) AND (R&+ono+&r OR R&+"BD) THEN R&+"BD:=TRUE EL!E R&+"BD:=FAL!E END"IF
IF (D&t"BD OR R&+"BD) THEN O,t"BD:=TRUE EL!E O,t"BD:=FAL!E END"IF
IF (D&t"BD AND P,($o$) OR R&+"BD OR T&$t THEN L,O"BD:=TRUE EL!E L,O"BD:=FAL!E END"IF
(# ALARMA A #)
IF (In"BA OR D&t"BA) AND NOT(R&+"BA) THEN D&t"BA:=TRUE EL!E D&t"BA:=FAL!E END"IF
IF (In"BA OR D&t"BA) AND (R&+ono+&r OR R&+"BA) THEN R&+"BA:=TRUE EL!E R&+"BA:=FAL!E END"IF
IF (D&t"BA OR R&+"BA) THEN O,t"BA:=TRUE EL!E O,t"BA:=FAL!E END"IF
IF (D&t"BA AND P,($o$) OR R&+"BA OR T&$t THEN L,O"BA:=TRUE EL!E L,O"BA:=FAL!E END"IF
(# ALARMA 4B #)
IF (In"4B OR D&t"4B) AND NOT(R&+"4B) THEN D&t"4B:=TRUE EL!E D&t"4B:=FAL!E END"IF
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 21
IF (In"4B OR D&t"4B) AND (R&+ono+&r OR R&+"4B) THEN R&+"4B:=TRUE EL!E R&+"4B:=FAL!E END"IF
IF (D&t"4B OR R&+"4B) THEN O,t"4B:=TRUE EL!E O,t"4B:=FAL!E END"IF
IF (D&t"4B AND P,($o$) OR R&+"4B OR T&$t THEN L,O"4B:=TRUE EL!E L,O"4B:=FAL!E END"IF
(# RE!UMEN #)
IF D&t"B4 OR D&t"B6 OR D&t"B8 OR D&t"B: OR D&t"BF OR D&t"BE OR D&t"BG
OR D&t"BD OR D&t"BA OR D&t"4B THEN N,&-a:=TRUE EL!E N,&-a:=FAL!E END"IF
IF O,t"B4 OR O,t"B6 OR O,t"B8 OR O,t"B: OR O,t"BF OR O,t"BE OR O,t"BG
OR O,t"BD OR O,t"BA OR O,t"4B THEN R&$,*&n:=TRUE EL!E R&$,*&n:=FAL!E END"IF
END'F"N#$%&N'BL&#(
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 22
Solu!i#n !on .ontrol*ogix" de Ro!kEell
Para P*.s P*.-4" S*.400 o .ontrol*ogix
.ontrol*ogix per&ite varios progra&as ' !ada uno de
estos !ontener a su ve, su$ progra&as.
Dentro de la !onfigura!i#n de la tarea (/ask+ se define en
que orden se e-e!utan los progra&as pertene!ientes a la
tarea.
.ada progra&a tiene definido !ual es el Hni!o su$
progra&a ini!ial" el que de$e lla&ar a los otros su$
progra&as" si se quiere que los otros su$ progra&as se
e-e!uten.
De esta &anera se puede usar un su$ progra&a !o&o si
fuera una fun!i#n" lla&%ndolo varias ve!es" pasando le
!ada ve, datos distintos" ' le'endo !ada ve, el resultado.
Existen varia$les glo$ales @/ag !ontrollerC dentro de las
!uales est%n las entradas ' salidas fLsi!as -unto !on todas
las varia$les de diagnosti!o del siste&a. I las varia$les
que !rea&os para ser visi$les por todos los progra&as.
.ada progra&a tiene sus propias varia$les lo!ales visi$les
por todos sus su$ progra&as" pero ina!!esi$les desde
otros progra&as.
En este e-e&plo los /ag del progra&a .o&presor" ' los /ag del progra&a ?lar&as.
En este e-e&plo se han definido dos tipos de estru!turas de datos" los lla&ados @?nalogA)nC ' los
lla&ados @/ipoA?lar&C.
En este e-e&plo" se definen las varia$le lo!ales (del progra&a @.o&presorCC+ P/01 ' //02 a&$as del
tipo @?nalogAinC.
Esto per&ite tener agrupado" el rango" el valor de entrada" el valor de ingenierLa ' es estado del !anal" en
una &is&a varia$le. Ver la i&agen siguiente.
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 22
En este e-e&plo" se definen la varia$le
glo$al @?lar&aC !o&o un arreglo de datos
del tipo @/ipoA?lar&C. Ver la i&agen de
la dere!ha
El arreglo de alar&as es varia$le glo$al"
por que aunque toda la logi!a '
pro!esa&iento de alar&as esta dentro del
progra&a @?lar&asC" las ?lar&aVxW.Entrada
ser%n a!tivadas desde el progra&a
@.o&presorC
Esto per&ite separar la logi!a de
fun!iona&iento del !o&presor" de la logi!a
de pro!esa&iento de las alar&as del
&is&o" tener una estru!tura &as
ordenada" ' no tener que !rear tantas
varia$les individuales.
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 23
*o pri&ero que se e-e!uta es el programa 5Compresor7 ' el Hni!o su$ progra&a de este que se e-e!uta
auto&%ti!a&ente es @=ainA!o&presorC. /odos los de&%s su$ progra&as de$en ser expli!ita &ente
lla&ados por la l#gi!a
*o pri&ero que ha!e el
@=ainA!o&presorC es lla&ar al su$
progra&a @*eerAdis!retasC.
El su$ progra&a @*eerAdis!retasC (i&agen de la
dere!ha+ !one!ta los !anales fLsi!os de entrada"
definidos en la !onfigura!i#n del hardEare" !on las
varia$les dis!retas !orrespondientes. Ver i&agen
de la dere!ha.
.uando ter&ina el su$ progra&a @*eerAdis!retasC
!ontinua la e-e!u!i#n del @=ainA!o&presorC
Define el rango para la entrada an%loga del trans&isor
de presi#n ( P/...+" ' luego lla&a al su$ progra&a
@*eerAP/01C
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 24
El su$ progra&a
@*eerAP/01C
.one!ta el !anal fisi!o de
entrada !on la varia$le
!orrespondiente.
El !anal anal#gi!o de
entrada esta !onfigurado
para leer una seal de 0 a
20 &ilia&peres" !o&o 0 a 4
volt.
Si se verifi!a que la seal
es &a'or a 0"<4 volt ' es
&enor a 4"1 volt" se
!onsidera que esta dentro
del rango nor&al ' se
a!tiva la varia$le P/01.BY
Se es!ala la seal al rango
de ingenierLa"
anterior&ente definido
Se a!tiva la alar&a de $a-a
presi#n si su valor es
&enor a Z... B si la
seal no esta BY
Se apaga la alar&a de $a-a
presi#n si su valor es
&a'or a Z... I si la
seal si esta BY
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 2>
Se a!tiva la alar&a de &u'
$a-a presi#n si su valor es
&enor a Z...
Se apaga la alar&a de &u'
$a-a presi#n si su valor es
&a'or a Z...
.uando ter&ina el su$ progra&a @*eerAP/01C !ontinua la e-e!u!i#n del @=ainA!o&presorC" que
!ontinua definiendo el rango para la entrada an%loga del trans&isor de te&peratura ( //...+" ' luego lla&a
al su$ progra&a @*eerA//02C
El su$ @*eerA//02C ha!e !on la seal de
te&peratura" lo &is&o que hi,o @*eerAP/01C
!on la de presi#n.
Verifi!a que este dentro de su rango" '
es!alarla al rango de ingenieria.
*uego la !o&para !on los valores
predefinidos de alar&a" para a!tivar o apagar
las alar&as.
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 27
.uando ter&ina el su$ progra&a @*eerA//02C
!ontinua la e-e!u!i#n del @=ainA!o&presorC
lla&ando al su$ progra&a @PartirApararC
En @PartirApararC se de!ide el estado que se enviara ha!ia el &otor del !o&presor.
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 28
? !ontinua!i#n" en este &is&o su$ progra&a"
est%n !one!tados los estados o !ondi!iones"
a las !orrespondientes alar&as que se
a!tivaran.
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 2<
.uando ter&ina el su$ progra&a @PartirApararC !ontinua la e-e!u!i#n del @=ainA!o&presorC lla&ando al
su$ progra&a @Es!ri$irAsalidasC
En @Es!ri$irAsalidasC se !one!tan las varia$les dis!retas !on los !anales fLsi!os de salida
!orrespondientes" definidos en la !onfigura!i#n del hardEare.
6ote !e que la &is&a varia$le @PartirMPararC puede !one!tarse a uno" a dos o a tres !anales de salida"
si&ult%nea&ente. Esto podrLa usarse para au&entar la seguridad" ante la posi$ilidad de falla del !anal
de salida del pl!" por e-e&ploG Si la l#gi!a !one!ta la varia$le de salida a a tres salidas fLsi!as" !ada una
!on un rele distinto. I estos tres reles se ala&$ran en una !onexi#n 2 de 2 para a!tivar el &otor. *as
tres salidas tendrLan que ser de &#dulos distintos del pl!" por si falla un &odulo !o&pleto. I tendrLa que
ha$er tres entradas dis!retas &onitoreando el estado de estos tres reles" para poder darse !uenta" '
alar&ar (falla de redundan!ia en pl!+" si estos no !on!uerdan entre si.
*os &is&os !riterios podrian usarse para seales de entradas redundantes al pl!.
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 30
DespuJs del progra&a @.o&presorC se e-e!uta es el programa 5Alarmas7 ' el Hni!o su$ progra&a de
este que se e-e!uta auto&%ti!a&ente es @=ainAalar&sC. /odos los de&%s su$ progra&as de$en ser
expli!ita &ente lla&ados por la l#gi!a
*o pri&ero que ha!e el progra&a @=ainAalar&sC es
lla&ar al su$ progra&a @[eneraAParpadeoC !u'a
Hni!a fun!i#n es o$tener un pulso para las lu!es de
alar&a.
*uego el progra&a @=ainAalar&sC li&pia (pone en falso+ las varia$les que son resu&en de alar&as.
I despuJs lla&a a e-e!utar 100 ve!es el &is&o su$ progra&a" pero !ada ve, !on datos distintos.
*a pri&era ve, !on indi!e N 0" despuJs !on indi!e N 1"
despuJs !on indi!e N 2" et! Z Kasta indi!e N <<.
Esto per&ite e-e!utar la &is&a l#gi!a para la alar&a
0" para la alar&a 1" para la alar&a 2 " et!...
DespuJs de e-e!utar esta &is&a l#gi!a por !ada una
de las alar&as" verifi!a si alguna de ellas volvi# a
a!tivar (poner en verdadero+ las varia$les que son
resu&en de alar&as.
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 31
El su$ progra&a @*ogi!aA?lar&aC !ontiene lo siguienteC
En la penHlti&a linea si la alar&a esta a!tiva ' aun no ha sido re!onosida" a!tiva el resu&en de alar&a
nueva. I ta&$iJn !opia esta !ondi!i#n al arreglo de $ooleanos @?lar&asA6uevasC.
En la Hlti&a linea si la alar&a esta presente" re!ono!ida o no" a!tiva el resu&en de alar&a presente. I
ta&$iJn !opia esta !ondi!i#n al arreglo de $ooleanos @?lar&asAD.SC. Este arreglo podrLa ser enviado
por !o&uni!a!i#n a un D.S.
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 32
Si has leLdo hasta aquL" gra!ias por tu pa!ien!ia.
Si !rees que este do!u&ento le podrLa interesar a alguien &as" reenvLa se lo.
.ualquier sugeren!ia &e pueden en!ontrar en rolfds0g&ail.!o&
Rolf Dahl-Skog Enero 2012. Volver al Indice Pagina 32

You might also like