Está en la página 1de 13

Contenido

Aclaracin ................................................................................................................. 2
Introduccin............................................................................................................... 2
Tengo una hoja en blanco Por dnde empiezo para realizar buenas prcticas de
programacin de autmatas? ................................................................................... 3
Vale, ya tengo ms o menos claro qu hace y qu necesito y ahora? ................. 4
Por qu no el 111? .............................................................................................. 4
Qu nos va a permitir esto? ................................................................................. 5
Asigna rangos a las I/O ............................................................................................. 6
Qu ganamos con ello? ....................................................................................... 6
Pasa las entradas y salidas a marcas ....................................................................... 7
Asigna nombres a las cosas ...................................................................................... 8
Buenas prcticas de programacin en S7 ................................................................. 9
Asigna una marca de ciclo al principio del proyecto ............................................. 10
Crear un Always_On y un Always_Off ................................................................. 10
Deja espacio, s generoso con el que venga detrs ........................................ 10
No seas un talibn de ningn lenguaje. Usa todos a tu antojo, pero con orden. .. 10
Alarmas ................................................................................................................... 11
Pantallas del HMI .................................................................................................... 11
Qu quiero decir con esto? ................................................................................ 12

Aclaracin
Este pequeo ebook es un extracto del libro-curso Cmo programar Step 7 sin morir en
el intento.
Se trata de un curso completo para aprender a programar en Step 7, conocer cmo
funciona un PLC y sacarle chispas a la programacin en AWL.
En el podrs encontrar teora mezclada con ejercicios expuestos mediante vdeos.
Puedes encontrar ms informacin sobre este curso en:
http://programacionsiemens.com

Introduccin
Siempre que comenzamos a programar, tenemos la incertidumbre de si la forma en la
que trabajamos es la ms adecuada o no. En esta gua te voy a contar unas pequeas
pautas que puedes seguir para estructurar correctamente tus proyectos. Bien es cierto,
que estas no son palabra de Dios, y por supuesto, pueden ser discutibles y/o
matizables.
Son unas recomendaciones que te doy, y puede que a lo mejor te encajen en tu forma
de estructurar un proyecto o al menos que te sirva para reflexionar sobre cmo has de
afrontar los primeros proyectos que desarrolles.

Tengo una hoja en blanco Por dnde empiezo para realizar buenas
prcticas de programacin de autmatas?
Lo primero que tienes que hacer cuando comienzas un proyecto es respirar hondo y no
agobiarte. Te puede pasar que si miras el proyecto en su conjunto pueda ser un tanto
mareante al principio y lo es. Supongo que todos hemos pasado por ello.
Lo bueno que tiene la automatizacin seguramente junto con otro tipo de programas y
software es que es muy modulable ya que la instalacin est siempre dividida en
mquinas, y estas a su vez en sub-mquinas y estas finalmente en un conjunto de
seales y actuadores.
Podemos abstraernos por tanto a la hora de programar del resto de la mquina y
centrarnos en muchos casos solamente en una pequea parte de esta.
Pero ojo, no estoy diciendo que comiences a programar con una pequea porcin de la
mquina sin pensar en el resto. Estoy diciendo que el problema global que es que la
dichosa instalacin funcione, la vas a poder cortar en cachitos y que cada cachito por
separado no es tan fiero.
Por tanto lo primero que tienes que pensar es en qu mquinas se divide tu instalacin
y cmo interactan entre ellas. Lo que deberas hacer en un primer estadio del proyecto
es:

Comprender muy bien la instalacin. Qu debe hacer (y qu no).


Hacer un listado con las posibles divisiones de la instalacin o mquina, como
mquinas (o sub-mquinas) independientes.
De cada mquina y sub-mquina qu detectores vas a necesitar y qu
actuadores.

Para comprender bien la instalacin tienes que conocer bien el pliego de condiciones.
Estdialo y no dejes nada a la interpretacin. Si no tienes claro cmo ha de actuar una
parte de la mquina, pregunta a quien te pueda sacar de dudas sobre cmo tiene que
funcionar (clientes o compaeros).
Una vez comprendas que es lo que debe hacer, podrs dividir la instalacin (o mquina)
en trozos ms pequeos e independientes. Esto nos va a ser til a la hora de definir los
bloques en los que se va a dividir nuestro proyecto.
Dibuja, haz bocetos de cmo tiene que actuar cada parte y qu elementos van a
intervenir en cada parte. Aplica lo que dijo Einstein en su momento:
Si no puedo dibujarlo, es que no lo entiendo.
No se trata de que sea una obra de arte ya que cuatro trazos pueden ser suficientes si
para ti significan algo. Pero entiende cmo han de actuar los diferentes elementos de la
mquina.
Por otro lado, la enumeracin parcial de cada seal y cada actuador, nos va a dar una
idea global del volumen de entradas y salidas del proyecto.
Hacer un listado te va a obligar a pensar sobre qu necesitars y es ms fcil que no te
dejes nada (o casi nada). Sacars por tanto un nmero global de entradas y salidas que
seguramente se acerquen mucho a lo que necesitars finalmente (que normalmente

sers algunas ms de las que habas pensado originalmente porque aparecern


yaques por el camino.
Adems, este listado te va a ayudar a su vez a valorar entre otras cosas si merece la
pena centralizar todo en el armario elctrico, o si va a ser mejor colocar por la instalacin
diferentes armarios remotos, o cajas de conexin, por ejemplo.

Vale, ya tengo ms o menos claro qu hace y qu necesito y


ahora?
Ya tienes el qu, vayamos ahora en el cmo:

Estructura tus bloques


Asigna rangos de I/O
Da nombres a las cosas
Un buen listado de alarmas
Bocetos de las pantallas del HMI

Cuando digo que estructures los bloques quiero decir que des rangos a tus FC, FB y
DB. Imagnate que tienes 3 zonas bien diferenciadas de la mquina, pues una forma de
estructurar tus bloques podra ser:

Del 0 al 99 para bloques genricos


Del 100 al 199 a la zona 1
Del 200 al 299 a la zona 2
Del 300 al 399 a la zona 3

As, por poner un ejemplo: imagina que dentro de las zona 1 tienes un transportador.
Pues puedes hacer:

FC110 Transportador 1 para la lgica booleana que maneje todo lo que haya
sobre ese transportador, sus marchas y paros, manual, automtico etc.
FB110 Motor Transportador 1 Para el manejo del variador de dicho
transportador, la gestin de las consignas que puede que le mandes por
Profibus, alarmas etc.
DB110 DB Motor Transportador 1, pues como DB de instancia del FB110

Esto como digo es un ejemplo. La idea que quiero que pienses es que todo lo referente
al transportador 1, estar asociado con el concepto numrico 110 como cosa global.
Si tienes un segundo transportador, dentro de la zona 1, pues le asignas el 120.

Por qu no el 111?
Depender de cada proyecto, pero siempre que puedas, y para mi gusto, separa los
bloques. Imagina que encima del transportador 1 tienes un par actuadores neumtico
que hacen algo, lo que sea. Yo le dara en ese caso:

FC 111 Actuador #1 Transp. 1


FC 112 Actuador #2 Transp. 1

Todo esto suponiendo que tengan suficiente entidad como para que tengan su propio
FC y no puedan ser agrupados en un nico FC 111 Actuadores Trans. 1. Espero que
cojas el concepto.

Qu nos va a permitir esto?


Pues bsicamente, un poco de orden. Porque como te acostumbres a poner todos los
bloques seguidos, va a ser un caos. Por el simple hecho es que la vida del proyecto es
larga, y seguro que vas a tener que insertar nuevos actuadores sobre partes de las
mquinas.

Como hayas puesto:

FC 110 Transportador 1
FC 111 Transportador 2
FC 112 Transportador 3
FC 113 Transportador 4

Ahora imagina que los actuadores de los que hablamos, no estaban contemplados en
el proyecto inicialmente, y ahora hay que aadirlos quedar extrao y desorganizado.
Adems de eso, en nuestro ejemplo, puede que unos transportadores lleven unos
actuadores tipo A, otros transportadores no lleven, otros sean tipo B... etc.
En cambio, si divides a espaciado fijo, sabes que todo lo que hay en los FC 11x
pertenecen a la misma parte de la mquina, el transportador 1 en nuestro caso. Creo
que la idea queda suficientemente clara.
Adems, puedes completar la identificacin con el uso de maysculas y minsculas
cuando asignas los nombres a los bloques.
As por ejemplo, asignando nombres en mayscula puedes indicar que son bloques
principales y los que estn en minsculas bloques auxiliares del bloque principal.
Por ejemplo:

FC100 CINEMATICA GENERAL


FC101 Transmisin 1
FC102 Transmisin 2
FC103 Transmisin 3
FC110 COMUNICACIONES
FC111 PLC1 <>PLC2
FC112 PLC1 <> PC

De esta forma es mucho ms rpido localizar las zonas lgicas del programa e identificar
qu depende de cada zona y cules son los bloques principales.

Asigna rangos a las I/O


Al igual que has hecho con los bloques, la idea sera la misma para las entradas y
salidas. Intenta dar rangos a las zonas de las mquinas. De tal forma y siguiendo con
nuestro ejemplo, imagina que has decidido poner 3 remotas, una por cada zona de tu
instalacin.
Asigna rangos a las I/O:

EB100 - EB199 para la zona 1


EB200 - EB299 para la zona 2
EB300 - EB399 para la zona 3

Qu ganamos con ello?


Si vas a montar 3 periferias remotas y asignas las direcciones de I/O segn te las asigna
Step7 de forma automtica, vas a tener todas las entradas y salidas seguidas como un
paso doble.
Hasta ah no habra mucho problema ms all de que como digo, queda ms limpio
saber que si te digo E 212.0 automticamente sabes que te estoy hablando de una
entrada de la zona 2 sin mirar absolutamente nada.
Pero no solamente eso. En un futuro, puede que tengas que ampliar una de las periferias
con una nueva tarjeta pues como no hayas pensado en espaciarlas, no solamente no
tendrs coherencia entre la numeracin entre zonas, sino que dentro del mismo rack
tendrs numeraciones altas y bajas ya que al aadir una nueva tarjeta, tendrs
forzosamente que asignar un nmero ms alto que el ltimo que Step7 le asign a la
zona 3
Si es la ltima zona no pasar nada porque ser consecutiva, pero si es la zona 1
quedar horrible, no crees?

Pero habra algn problema por ello?


Ninguno, pero hombre, ya que estamos, adems de que funcione, que parezca que le
hemos dedicado 10 minutos a pensar cmo asignar las entradas y salidas no?

Qu pasa con las marcas, temporizadores etc.?


Anlogamente, asigna rangos para el resto de elementos. Por ejemplo: Si estas en el
transportador 1, que es el FC 110, pues asigna las marcas 110.0 119.7 para dicho
transportador, si con ello te va a ser suficiente.
Puedes dar un rango de marcas para las palabras, otro para las dobles palabras etc.
Dale al coco y haz tu propio esquema que sea coherente.
Con el paso de los proyectos lo irs depurando y mejorando. No te agobies con ello.
Simplemente dedcale un poco de tiempo a pensar y a distribuir las marcas y

temporizadores de tal forma que el simple nmero de marca o temporizador te d una


idea de a qu zona pertenece ms all del comentario que tenga asociado.

Pasa las entradas y salidas a marcas


Muchos programadores realizan un pequeo truco que es volcar todas las entradas a
marcas y las salidas son previamente marcas que finalmente se igualan a las salidas.
Esto va a permitir cosas interesantes:

Podrs filtrar entradas antes de usar la seal. Solo manipulars en un sitio dicha
seal.
Podrs cambiar fcilmente la entrada o salida fsica sin tener que buscar y
sustituir a lo largo y ancho del proyecto. Slo lo cambiars en un sitio.
Si replicas mquinas para diferentes proyectos, no depender de las entradas o
salidas fsicas en cada proyecto ya que lo podrs adaptar de forma fcil a tener
las I/O localizadas

Para realizar estas asignaciones lo mejor es crear dos FC: uno para las entradas y otro
para las salidas que sern llamados al principio y final del OB1. El FC de las entradas al
principio y el FC de las salidas al final.
Como ejemplo para que se entienda sera hacer un bloque FC de entradas de este
estilo:
FC200 Entradas
U E0.0
= M100.0
UE0.1
= M100.1

U E 3.6
=M100.6
U E100.7
= M103.7
Y as sucesivamente hasta terminar.
Anlogamente las salidas sern simplemente de este estilo:
FC250 Salidas digitales
U M200.0
= A100.0
U M200.1

= A100.1

U M203.7
= A100.7

Podra hacer esto volcando palabras o dobles palabras?


Poder, puedes. Pero no debes.
Es decir, podras hacer:
L MW200
T AW100
Y as volcar toda la informacin de las marcas a las salidas.
Yo no lo hara ya que pierdes parte del objeto de esta maniobra, que es la claridad y
poder asignar a posteriori las salidas o entradas de forma diferente, hacer filtros, etc.
Es ms prctico aunque ms laborioso ver cada entrada y cada salida a qu se ha
igualado.

Asigna nombres a las cosas


Y donde digo cosas, me refiero a FC, FB, DB, Entradas, salidas, marcas,
temporizadores
Si no pones nombre a las marcas e I/O va a ser muy complicado el
programa, por no decir imposible.

mantener el

Es una locura encontrarte programas que no estn comentados pero nada


comentados. Es para echarse a llorar cuando el programa es complejo. No hay forma
de seguirlo muchas veces con comentarios, como para seguirlo sin una triste indicacin
de qu hace qu.
Lleva mucho tiempo, y no siempre es fcil mantener la tensin de comentar todo, pero
hay que intentar que todo est razonablemente comentado.
Una forma que yo suelo usar (y aqu cada maestrillo tiene su librillo) es la siguiente:

Para las entradas y salidas, como nombre simblico suelo poner el nombre del
elemento de campo que es, por ejemplo el 25B3 y como comentario qu es
con palabras. Puedes poner el IME completo por ejemplo +ZonaA25B3 mientras que te entre en el campo de descripcin de la variable.
Las marcas relevantes, pues le das un nombre lo ms descriptivo posible de lo
que hace.
Las marcas/temporizadores etc. auxiliares las marco con su propia direccin
M17.5 y en la descripcin pongo auxiliar. As indico que la marca es
necesaria como un auxiliar pero que no sale de ese bloque y que no est usada
de forma global en el programa.

Buenas prcticas de programacin en S7


Ya hemos visto las cosas que tenemos que tener en cuenta a la hora de organizar el
programa, pero an no hemos programado ni un segmento. Ahora van las propiamente
dichas de qu hbitos debes adquirir.
Apunta esta, grbala en letras de oro o haz lo que estimes oportuno pero:
Slo da valor a una variable/salida en un sitio
Hacer un =A1.0 en dos sitios diferentes del programa es de crcel. Jams lo hagas.
Si tienes que declarar 8 marcas y hacer la lgica que sea, la haces, pero nunca, nunca,
nunca, nunca, nunca, asignes dos veces una salida. Y quien dice una salida, dice una
marca. Por qu?
Porque siempre tomar el valor de la ltima vez que la asignaste. Si cambias el orden
de ejecucin, cambiar la forma en la que se pone a uno o a cero.
Imagina que has puesto en una parte del programa (FC1) un
U M0.0
S A1.0
Y en otro bloque (FC2)
U M1.0
S A 1.0
Y en otro, pues un reset (FC3)
U M2.0
R A1.0
Vale. Cunto valdr A 1.0?
Pues a priori, ni idea. Depender de cmo estn las marcas que los hacen un Set o
Reset y en qu orden han sido llamados los bloques y eso, siempre y cuando dentro
de un ao, no se te ocurra que en el bloque FC2, en vez de un set, es mejor un
U M1.0
= A1.o
Que entonces la fiesta ya es completa.
Si hay varias condiciones que activan y desactivan la A1.0, las asignas una marca, y
luego agrupas todas para hacer un set, y por otro lado las que tenga que hacer un reset,
o un igual o lo que haya que hacer pero UNA NICA ASIGNACIN Est claro?
Repite conmigo:
Slo asignar una salida en un sitio

Asigna una marca de ciclo al principio del proyecto


Como ya hemos visto es bastante prctico seleccionar la marca de ciclo al principio del
proyecto de cara a que si en la puesta en marcha, o con la mquina ya funcionando te
hace falta un tren de pulsos, dispongas de una forma sencilla de estos, sin tener que
volver a compilar el proyecto y mandrselo al PLC pasando la CPU a stop, cosa que
siempre no es posible en el momento que lo quieres hacer.

Crear un Always_On y un Always_Off


Esto ms que una buena prctica, es un truquillo: si tienes una marca que est siempre
a cero y otra que est siempre a uno, te ayudar a la hora de hacer pruebas, y desarrollar
el programa en la lnea ya que podrs hacer un bypass fcilmente a alguna condicin,
evitar que un segmento no se ejecute etc.
Tambin puedes coger el byte entero lleno de ceros, que te servir para borrar datos
usando el Sfc21 FILL. Para ello, simplemente tendrs que hacer un
L0

T Mb0
O M1.0
ON M1.0
= M1.0
De tal forma que el byte 0 contendrs siempre ceros y el bit 1.0 estar siempre a 1.
Tonto, pero til.

Deja espacio, s generoso con el que venga detrs


Que muy probablemente puedas ser t. Si vas a crear un DB donde almacenar datos
para registro o intercambio con otros PLC por ejemplo, deja espacio libre para que en
una eventual ampliacin no haya que replantear nada ni hacer grandes modificaciones,
sino que con tomar parte del espacio que este libre, sea suficiente.
Lo mismo digo a la hora de asignar las entradas y las salidas, deja espacio para posibles
nuevos actuadores o seales, de tal forma que una futura ampliacin no provoque la
ampliacin de un bastidor porque en su da las entradas estaban usadas. Todo cuesta
dinero, pero es necesario hacer ese esfuerzo porque a la larga, es ms barato si luego
no hay que echar nuevas mangueras, instalar ms tarjetas etc.

No seas un talibn de ningn lenguaje. Usa todos a tu antojo, pero con orden.
Una de las entradas que ms consultas recibe el blog es la de qu lenguaje elegir a la
a hora de programar en Step 7.
Lo que no saben, es que no hay respuesta absoluta para esa pregunta pues depende.

Acostmbrate a usar todos los que quieras, cuando quieras. Personalmente no


mezclara en un bloque FUP con KOP, aunque s cualquiera de ellos con AWL. No los
mezclara porque muchas veces no son traducibles entre s, y al pasar de uno al otro,
puede que el que dejas no sea traducible y se quede en un AWL difcil de digerir as de
repente, obligndote a pasar de uno al otro para seguir fcilmente el programa.
Pero por lo dems, cambia cuando quieras, prueba y disfruta de la variedad que ofrece
Siemens en ese sentido.

Alarmas
Una de las cosas ms importantes en una buena automatizacin es la coleccin de
alarmas. Puede parecer trivial, pero para nada lo es. Crear un listado de alarmas
relevantes, que aporten fcilmente qu es lo que est fallando y sobre todo no dejarte
nada en el tintero, es casi imposible.
Pero puedes seguir una serie de pautas:

Puedes usar marcas o un DB slo para alarmas. A mi juicio mejor usar un DB


con BOOL ya que las vers todas juntas adems de poder comentar cada una
dando mayor informacin a simple vista.
Enumerar los pasos automticos y coloca timeouts con los que saber en qu
paso se ha parado la lnea.
Lista los finales de carrera de seguridad, presostatos, temperaturas etc. y decide
qu valores son extremos para que salte una alarma.
Establece dos grupos: los que pararn la mquina (si las hay) y las que
simplemente sern indicativas de un malfuncionamiento. Reserva memoria en el
DB para ambos grupos de cara a su ampliacin.
Piensa cada texto que va a acompaar a cada alarma. Intenta pensar que
cuando salte, lo va a leer alguien que no tiene ni idea de cmo est programado
el PLC. S todo lo user friendly que puedas.

Pantallas del HMI


Deca Albert Einstein algo as como si no puedo dibujarlo, es que no lo entiendo. Adems
de una cita genial, me da pie a comentarte una cosa fundamental y que por ello lo he
dejado para el final.
A ver si me queda lo ms claro posible:

No programas para ti
Las normas son para cumplirlas
Intenta tener un poco de gusto
No programas para ti!

No. No es un error. He puesto que No programas para ti! dos veces. Con esta tres.

Qu quiero decir con esto?


Pues eso, que el tipo que va a usar tu mquina probablemente no haya visto un
programa en su vida (ms que probable) y sinceramente, ni es relevante, ni le importa.
Lo importante es lo que puede ver y hacer desde la pantalla.

Mandos claros
Informacin clara y completa, pero no excesiva
Fcil de entender la navegacin entre pantallas.
Estticamente agradable a la vista (dentro de lo que se pueda)

Piensa que la persona que va a manejar la mquina, en general un operario de


produccin, no le importa ni cuantos motores tiene tu mquina, ni detectores, ni las
filigranas que hayas hecho en el cdigo. Hablando groseramente se la pela.
Lo que le importa, sin duda, es lo que puede hacer desde su pantalla, desde sus mandos
y qu informacin devuelve para que l est informado.
Por eso es importante que los mandos sean claros, que no haya que leerse mil pginas
de manual para entender cmo funciona la mquina y que sea lo ms intuitiva posible.
La navegacin entre pginas ha de ser lo ms coherente posible: los botones y el
comportamiento de estos sean previsibles. Es decir, que si los botones de las pginas
estn abajo, estn siempre abajo, del mismo tamao, si son con dibujos sean todos
coherentes etc.
Por otra parte, las normas especialmente a los colores y modos de trabajo, han de
cumplirse. Es pecado capital poner un botn verde como reset o rojo como cycle start.
Finalmente, un cojo-programa con unas pantallas poco cuidadas parecer que est
cogido con pinzas. Ten un poco de gusto, que tampoco cuesta tanto.

También podría gustarte