Contenido
Aclaración Aclaración ............................................ ....................................................................... ......................................................... .......................................... ............ 2 Introducción............. Introducción.......................................... ........................................................... ......................................................... ....................................... ............ 2 Tengo una hoja en blanco ¿Por dónde empiezo para realizar buenas prácticas de programación programación de autómatas? autómatas? ................................................................. ................................................................................... .................. 3 ale! "a tengo más o menos claro #u$ hace " #u$ necesito% ¿" ahora? ................. & ¿Por #u$ no el '''? ............................................................... .......................................................................................... ............................... .... & ¿(u$ nos )a a permitir esto? ...................................................................... ................................................................................. ........... * Asigna rangos rangos a las las I+, .................................................. ............................................................................... ........................................... .............. ¿(u$ ganamos con ello? ................................................................ ....................................................................................... ....................... Pasa las entradas " salidas salidas a marcas ...................................................................... ........................................................................ Asigna nombres nombres a las cosas cosas ......................................................... ...................................................................................... ............................. / 0uenas 0uenas prácticas prácticas de programación en 1 ........................................................... ................................................................. ...... Asigna una una marca de ciclo al principio principio del del pro"ecto pro"ecto ........................................... ............................................. .. ' 4rear un Al5a"s6,n Al5a"s6,n " un Al5a"s6,77 ................................................................. ................................................................. ' 8eja espacio! s$ generoso con el #ue )enga detrás% ........................................ ' 9o seas un talibán de ning:n lenguaje. ;sa todos a tu antojo! pero con orden. .. ' Alarmas ............................... ............................................................ ........................................................... ....................................................... ......................... '' '' Pantallas Pantallas del <=I ........................................................ ...................................................................................... ............................................ .............. '' ¿(u$ #uiero decir con esto? .............................................................................. ................................................................................ .. '2
Aclaración >ste pe#ueo eboo@ es un etracto del libroBcurso Cómo programar Step 7 sin morir en el intento. 1e trata de un curso completo para aprender a programar en 1tep ! conocer cómo 7unciona un PC4 " sacarle chispas a la programación en ADC. >n el podrás encontrar teorEa mezclada con ejercicios epuestos mediante )Edeos. Puedes encontrar más in7ormación sobre este curso enF httpF++programacionsiemens.com
Introducción 1iempre #ue comenzamos a programar! tenemos la incertidumbre de si la 7orma en la #ue trabajamos es la más adecuada o no. >n esta guEa te )o" a contar unas pe#ueas pautas #ue puedes seguir para estructurar correctamente tus pro"ectos. 0ien es cierto! #ue estas no son palabra de 8ios! " por supuesto! pueden ser discutibles "+o matizables. 1on unas recomendaciones #ue te do"! " puede #ue a lo mejor te encajen en tu 7orma de estructurar un pro"ecto o al menos #ue te sir)a para re7leionar sobre cómo has de a7rontar los primeros pro"ectos #ue desarrolles.
Tengo una hoja en blanco ¿Por dónde empiezo para realizar buenas prácticas de programación programación de autómatas? Co primero #ue tienes #ue hacer cuando comienzas un pro"ecto es respirar hondo " no agobiarte. Te puede pasar #ue si miras el pro"ecto en su conjunto pueda ser un tanto mareante al principio% " lo es. 1upongo #ue todos hemos pasado por ello. Co bueno #ue tiene la automatización seguramente junto con otro tipo de programas " so7t5are es #ue es mu" modulable "a #ue la instalación está siempre di)idida en má#uinas! " estas a su )ez en subBmá#uinas " estas 7inalmente en un conjunto de seales " actuadores. Podemos abstraernos por tanto a la hora de programar del resto de la má#uina " centrarnos en muchos casos solamente en una pe#uea parte de esta. Pero ojo! no esto" diciendo #ue comiences a programar con una pe#uea porción de la má#uina sin pensar en el resto. >sto" diciendo #ue el problema global #ue es #ue la dichosa instalación 7uncione! la )as a poder cortar en cachitos " #ue cada cachito por separado no es tan 7iero. Por tanto lo primero #ue tienes #ue pensar es en #u$ má#uinas se di)ide tu instalación " cómo interact:an entre ellas. Co #ue deberEas hacer en un primer estadio del pro"ecto esF
4omprender mu" bien la instalación. (u$ debe hacer G" #u$ noH.
Para comprender bien la instalación tienes #ue conocer bien el pliego de condiciones. >st:dialo " no dejes nada a la interpretación. 1i no tienes claro cómo ha de actuar una parte de la má#uina! pregunta a #uien te pueda sacar de dudas sobre cómo tiene #ue 7uncionar Gclientes o compaerosH. ;na )ez comprendas #ue es lo #ue debe hacer! podrás di)idir la instalación Go má#uinaH en trozos más pe#ueos e independientes. >sto nos )a a ser :til a la hora de de7inir los blo#ues en los #ue se )a a di)idir nuestro pro"ecto. 8ibuja! haz bocetos de cómo tiene #ue actuar cada parte " #u$ elementos )an a inter)enir en cada parte. Aplica lo #ue dijo >instein en su momentoF 1i no puedo dibujarlo! es #ue no lo entiendo.J 9o se trata de #ue sea una obra de arte "a #ue cuatro trazos pueden ser su7icientes si para ti signi7ican algo. Pero entiende cómo han de actuar los di7erentes elementos de la má#uina. Por otro lado! la enumeración parcial de cada seal " cada actuador! nos )a a dar una idea global del )olumen de entradas " salidas del pro"ecto.
serás algunas más de las #ue habEas pensado originalmente por#ue aparecerán "a#uesJ por el camino. Además! este este listado listado te )a a a"udar a"udar a su )ez )ez a )alorar )alorar entre entre otras cosas cosas si merece la pena centralizar todo en el armario el$ctrico! o si )a a ser mejor colocar por la instalación di7erentes armarios remotos! o cajas de coneión! por ejemplo.
ale! "a tengo más o menos claro #u$ hace " #u$ necesito% ¿" ahora? Ka tienes el #u$! )a"amos ahora en el cómoF
>structura tus blo#ues Asigna rangos de I+, 8a nombres a las cosas ;n buen listado de alarmas 0ocetos de las pantallas del <=I
4uando digo #ue estructures los blo#ues #uiero decir #ue des rangos a tus L4! L0 " 80. ImagEnate #ue tienes 3 zonas bien di7erenciadas de la má#uina! pues una 7orma de estructurar tus blo#ues podrEa serF
8el al para blo#ues gen$ricos 8el ' al ' a la zona ' 8el 2 al 2 a la zona 2 8el 3 al 3 a la zona 3
AsE! por por poner un un ejemploF ejemploF imagina imagina #ue dentro dentro de de las zona zona ' tienes tienes un transporta transportador. dor. Pues puedes hacerF
FC110 “Transportador 1J para la lógica booleana #ue maneje todo lo #ue ha"a
sobre ese transportador! sus marchas " paros! manual! automático etc. FB110 “Motor Transportador 1″ Para el manejo del )ariador de dicho transportador! la gestión de las consignas #ue puede #ue le mandes por Pro7ibus! alarmas etc. DB110 “DB Motor Transportador 1″ ! pues como 80 de instancia del L0''
>sto como digo es un ejemplo. Ca idea #ue #uiero #ue pienses es #ue todo lo re7erente al transportador '! estará asociado con el concepto num$rico ''J como cosa global. 1i tienes un segundo transportador! dentro de la zona '! pues le asignas el '2.
¿Por #u$ no el '''? 8ependerá de cada pro"ecto! pero siempre #ue puedas! " para mi gusto! separa los blo#ues. Imagina #ue encima del transportador ' tienes un par actuadores neumático #ue hacen algo! lo #ue sea. Ko le darEa en ese casoF
FC 111 “Actuador #1 Transp 1″ FC 11! “Actuador #! Transp 1″
Todo esto suponiendo #ue tengan su7iciente entidad como para #ue tengan su propio L4 " no puedan ser agrupados en un :nico FC 111 “Actuadores Trans 1″ . >spero #ue cojas el concepto.
¿(u$ nos )a a permitir esto? Pues básicamente! un poco de orden. Por#ue como te acostumbres a poner todos los blo#ues seguidos! )a a ser un caos. Por el simple hecho es #ue la )ida del pro"ecto es larga! " seguro #ue )as a tener #ue insertar nue)os actuadores sobre partes de las má#uinas. 4omo ha"as puestoF
FC 110 Transportador 1 FC 111 Transportador ! FC 11! Transportador " FC 11" Transportador
Ahora imagina imagina #ue #ue los actuadores actuadores de de los #ue #ue hablamos! hablamos! no estaban estaban contemplados contemplados en el pro"ecto inicialmente! " ahora ha" #ue aadirlos #uedará etrao " desorganizado. Además de eso! en nuestro ejemplo! ejemplo! puede #ue unos transportadores transportadores lle)en unos actuadores tipo A! otros transportadores no lle)en! otros sean tipo 0... etc. >n cambio! si di)ides a espaciado 7ijo! sabes #ue todo lo #ue ha" en los L4 '' pertenecen a la misma parte de la má#uina! el transportador ' en nuestro caso. 4reo #ue la idea #ueda su7icientemente clara. Además! puedes puedes completar completar la identi7icación identi7icación con el uso de ma":sculas ma":sculas " min:sculas min:sculas cuando asignas los nombres a los blo#ues. AsE por ejemplo! ejemplo! asignando asignando nombres en ma":scula ma":scula puedes puedes indicar indicar #ue son blo#ues principales " los #ue est$n en min:sculas blo#ues auiliares del blo#ue principal. Por ejemploF
L4' 4I9>=ATI4A M>9>NAC L4'' Transmisión ' L4'2 Transmisión 2 L4'3 Transmisión 3 L4'' 4,=;9I4A4I,9>1 L4''' PC4' OPC42 L4''2 PC4' O P4
8e esta 7orma es mucho más rápido localizar las zonas lógicas del programa e identi7icar #u$ depende de cada zona " cuáles son los blo#ues principales.
Asigna rangos a las I+, Al igual #ue has hecho con con los blo#ue blo#ues! s! la idea serEa la misma para las entrad entradas as " salidas. Intenta dar rangos a las zonas de las má#uinas. 8e tal 7orma " siguiendo con nuestro ejemplo! imagina #ue has decidido poner 3 remotas! una por cada zona de tu instalación. Asigna rangos rangos a las las I+,F
>0' B >0' para la zona ' >02 B >02 para la zona 2 >03 B >03 para la zona 3
¿(u$ ganamos con ello? 1i )as a montar 3 peri7erias remotas " asignas las direcciones de I+, seg:n te las asigna 1tep de 7orma automática! )as a tener todas las entradas " salidas seguidas como un paso doble. 2'2. automáticamente sabes #ue te esto" hablando de una entrada de la zona 2 sin mirar absolutamente nada. Pero no solamente eso. >n un 7uturo! puede #ue tengas #ue ampliar una de las peri7erias con una nue)a tarjeta% pues como no ha"as pensado en espaciarlas! no solamente no tendrás coherencia entre la numeración entre zonas! sino #ue dentro del mismo rac@ tendrás numeraciones altas " bajas "a #ue al aadir una nue)a tarjeta! tendrás 7orzosamente #ue asignar un n:mero más alto #ue el :ltimo #ue 1tep le asignó a la zona 3 1i es la :ltima :lt ima zona no pasará nada por#ue será consecuti)a! pero si es la zona ' #uedará horrible! ¿no crees?
¿Pero habrEa alg:n problema por ello? 9inguno! pero hombre! "a #ue estamos! además de #ue 7uncione! #ue parezca #ue le hemos dedicado ' minutos a pensar cómo asignar las entradas " salidas ¿no?
¿(u$ pasa con las marcas! temporizadores etc.? Análogamente! Análogamente! asigna asigna rangos rangos para el el resto de elementos. elementos. Por ejemploF ejemploF 1i 1i estas en el transportador '! #ue es el L4 ''! pues asigna las marcas ''. Q ''. para dicho transportador! si con ello te )a a ser su7iciente. Puedes dar un rango de marcas para las palabras! otro para las dobles palabras% etc. 8ale al coco " haz tu propio es#uema #ue sea coherente. 4on el paso de los pro"ectos lo irás depurando " mejorando. 9o te agobies con ello. 1implemente dedEcale un poco de tiempo a pensar " a distribuir las marcas "
temporizadores de tal 7orma #ue el simple n:mero de marca o temporizador te d$ una idea de a #u$ zona pertenece más allá del comentario #ue tenga asociado.
Pasa las entradas " salidas a marcas =uchos programadores realizan un pe#ueo truco #ue es )olcar todas las entradas a marcas " las salidas son pre)iamente marcas #ue 7inalmente se igualan a las salidas. >sto )a a permitir cosas interesantesF
Podrás 7iltrar entradas antes de usar la seal. 1olo manipularás en en un un sitio dicha dicha seal. Podrás cambiar 7ácilmente la entrada o salida 7Esica sin tener #ue buscar " sustituir a lo largo " ancho del pro"ecto. 1ólo lo cambiarás en un sitio. 1i replicas má#uinas para di7erentes pro"ectos! no dependerá de las entradas o salidas 7Esicas en cada pro"ecto "a #ue lo podrás adaptar de 7orma 7ácil a tener las I+, localizadas
Para realizar estas asignaciones lo mejor es crear dos L4F uno para las entradas " otro para las salidas #ue serán llamados al principio " 7inal del ,0'. >l L4 de las entradas al principio " el L4 de las salidas al 7inal. 4omo ejemplo para #ue se entienda serEa hacer un blo#ue L4 de entradas de este estiloF L42 >ntradas ; >. R ='. ;>.' R ='.' % ; > 3.R='.; >'. R ='3. K asE sucesi)amente hasta terminar. Análogamente Análogamente las las salidas salidas serán simplemente simplemente de este este estiloF estiloF L42* 1alidas digitales ; =2. R A'. ; =2.'
R A'.' % ; =23. R A'.
¿PodrEa hacer esto )olcando palabras o dobles palabras? Poder! puedes. Pero no debes. >s decir! podrEas hacerF C =D2 T AD' K asE )olcar toda la in7ormación de las marcas a las salidas. Ko no lo harEa "a #ue pierdes parte del objeto de esta maniobra! #ue es la claridad " poder asignar a posteriori las salidas o entradas de 7orma di7erente! hacer 7iltros! etc. >s más práctico aun#ue más laborioso )er cada entrada " cada salida a #u$ se ha igualado.
Asigna nombres a las cosas cosas K donde digo cosas! me re7iero a L4! L0! 80! >ntradas! salidas! marcas! temporizadores% 1i no pones nombre a las marcas e I+, )a a ser mu" complicado el mantener el programa! por no decir imposible. >s una locura encontrarte programas #ue no están comentados% pero nada comentados. >s para echarse a llorar cuando el programa es complejo. 9o ha" 7orma de seguirlo muchas )eces con comentarios! como para seguirlo sin una triste indicación de #u$ hace #u$. Cle)a mucho tiempo! " no siempre es 7ácil mantener la tensión de comentar todo! pero ha" #ue intentar #ue todo est$ razonablemente comentado. ;na 7orma #ue "o suelo usar G" a#uE cada maestrillo tiene su librilloH es la siguienteF
Para las entradas " salidas! como nombre simbólico suelo poner el nombre del elemento de campo #ue es! por ejemplo el 2*03S " como comentario #u$ es con palabras. Puedes poner el I=> completo por ejemplo UonaAB 2*03S mientras #ue te entre en el campo de descripción de la )ariable. Cas marcas rele)antes! pues le das un nombre lo más descripti)o posible de lo #ue hace. Cas marcas+temporizadores etc. auiliares las marco con su propia dirección ='.*S " en la descripción pongo auiliarJ. AsE indico #ue la marca es necesaria como un auiliar pero #ue no sale de ese blo#ue " #ue no está usada de 7orma global en el programa.
0uenas prácticas de programación en 1 Ka hemos )isto las cosas #ue tenemos #ue tener en cuenta a la hora de organizar el programa! pero a:n no hemos programado ni un segmento. Ahora )an las propiamente dichas de #u$ hábitos debes ad#uirir. Apunta esta! grábala grábala en letras letras de oro oro o haz haz lo #ue estimes oportuno oportuno peroF “Sólo da valor a una variable/salida en un sitio”
K en otro blo#ue GL42H $ M10 S A 10
K en otro! pues un reset GL43H $ M!0 % A10
ale. ¿4uánto )aldrá A '.? Pues a priori! ni idea. 8ependerá de cómo est$n las marcas #ue los hacen un 1et o Neset " en #u$ orden han sido llamados los blo#ues% " eso! siempre " cuando dentro de un ao! no se te ocurra #ue en el blo#ue L42! en )ez de un set! es mejor un $ M10 & A1o
(ue entonces la 7iesta "a es completa. 1i ha" )arias condiciones #ue acti)an " desacti)an la A'.! las asignas una marca! " luego agrupas todas para hacer un set! " por otro lado las #ue tenga #ue hacer un reset! o un igual o lo #ue ha"a #ue hacer% pero ;9A W9I4A A1IM9A4IX9 ¿>stá claro? Nepite conmigoF “Sólo asignaré una salida en un sitio”
Asigna una marca de ciclo al principio del pro"ecto pro"ecto 4omo "a hemos )isto es bastante práctico seleccionar la marca de ciclo al principio del pro"ecto de cara a #ue si en la puesta en marcha! o con la má#uina "a 7uncionando te hace 7alta un tren de pulsos! dispongas de una 7orma sencilla de estos! sin tener #ue )ol)er a compilar el pro"ecto " mandárselo al PC4 pasando la 4P; a stop! cosa #ue siempre no es posible en el momento #ue lo #uieres hacer.
4rear un Al5a"s6,n " un Al5a"s6,77 >sto más #ue una buena práctica! es un tru#uilloF si tienes una marca #ue est$ siempre a cero " otra #ue est$ siempre a uno! te a"udará a la hora de hacer pruebas! " desarrollar el programa en la lEnea "a #ue podrás hacer un b"pass 7ácilmente a alguna condición! e)itar #ue un segmento no se ejecute etc. Tambi$n puedes coger el b"te entero lleno de ceros! #ue te ser)irá para borrar datos usando el 17c2' LICC. Para ello! simplemente tendrás #ue hacer un ' 0
T =b , ='. ,9 ='. R ='. 8e tal 7orma #ue el b"te contendrás siempre ceros " el bit '. estará siempre a '. Tonto! pero :til.
8eja espacio! s$ generoso con el #ue )enga detrás% (ue mu" probablemente puedas ser t:. 1i )as a crear un 80 donde almacenar datos para registro o intercambio con otros PC4 por ejemplo! deja espacio libre para #ue en una e)entual ampliación no ha"a #ue replantear nada ni hacer grandes modi7icaciones! sino #ue con tomar parte del espacio #ue este libre! sea su7iciente. Co mismo digo a la hora de asignar las entradas " las salidas! deja espacio para posibles nue)os actuadores o seales! de tal 7orma #ue una 7utura ampliación no pro)o#ue la ampliación de un bastidor por#ue en su dEa las entradas estaban usadas. Todo cuesta dinero! pero es necesario hacer ese es7uerzo por#ue a la larga! es más barato si luego no ha" #ue echar nue)as mangueras! instalar más tarjetas etc.
9o seas un talibán de ning:n lenguaje. ;sa todos a tu antojo! pero con orden. ;na de las entradas #ue más consultas recibe el blog es la de #u$ lenguaje elegir a la a hora de programar en 1tep . Co #ue no saben! es #ue no ha" respuesta absoluta para esa pregunta% pues depende.
Acost:mbrate Acost:mbrate a usar todos los #ue #uieras! #uieras! cuando #uieras. Personalmente Personalmente no mezclarEa en un blo#ue L;P con Y,P! aun#ue sE cual#uiera de ellos con ADC. 9o los mezclarEa por#ue muchas )eces no son traducibles entre sE! " al pasar de uno al otro! puede #ue el #ue dejas no sea traducible " se #uede en un ADC di7Ecil de digerir asE de repente! obligándote a pasar de uno al otro para seguir 7ácilmente el programa. Pero por lo demás! cambia cuando #uieras! prueba " dis7ruta de la )ariedad #ue o7rece 1iemens en ese sentido.
Alarmas ;na de las cosas más importantes en una buena automatización es la colección de alarmas. Puede parecer tri)ial! pero para nada lo es. 4rear un listado de alarmas rele)antes! #ue aporten 7ácilmente #u$ es lo #ue está 7allando " sobre todo no dejarte nada en el tintero! es casi imposible. Pero puedes seguir una serie de pautasF
Puedes usar marcas o un 80 sólo para alarmas. A mi juicio mejor usar un 80 con 0,,C "a #ue las )erás todas juntas además de poder comentar cada una dando ma"or in7ormación a simple )ista. >numerar los pasos automáticos " coloca timeouts con los #ue saber en #u$ paso se ha parado la lEnea. Cista los 7inales de carrera de seguridad! presostatos! temperaturas etc. " decide #u$ )alores son etremos para #ue salte una alarma. >stablece dos gruposF los #ue pararán la má#uina Gsi las ha"H " las #ue simplemente serán indicati)as de un mal7uncionamiento. Neser)a memoria en el 80 para ambos grupos de cara a su ampliación. Piensa cada teto #ue )a a acompaar a cada alarma. Intenta pensar #ue cuando salte! lo )a a leer alguien #ue no tiene ni idea de cómo está programado el PC4. 1$ todo lo user (riendl) #ue #ue puedas.
Pantallas del <=I 8ecEa Albert >instein algo asE como si no puedo di*u+arlo, es -ue no lo entiendo. Además Además de una cita genial! me da pie a comentarte una cosa 7undamental " #ue por ello lo he dejado para el 7inal. A )er si me #ueda lo más claro claro posibleF posibleF
9o programas para ti Cas normas son para cumplirlas Intenta tener un poco de gusto Z9o programas para ti[
9o. 9o es un error.
¿(u$ #uiero decir con esto? Pues eso! #ue el tipo #ue )a a usar tu má#uina probablemente no ha"a )isto un programa en su )ida Gmás #ue probableH " sinceramente! ni es rele)ante! ni le importa. Co importante es lo #ue puede )er " hacer desde la pantalla.
=andos claros In7ormación clara " completa! pero no ecesi)a Lácil de entender la na)egación entre pantallas. >st$ticamente agradable a la )ista Gdentro de lo #ue se puedaH
Piensa #ue la persona #ue )a a manejar la má#uina! en general un operario de producción! no le importa ni cuantos motores tiene tu má#uina! ni detectores! ni las 7iligranas #ue ha"as hecho en el código. s decir! #ue si los botones de las páginas están abajo! est$n siempre abajo! del mismo tamao! si son con dibujos sean todos coherentes etc. Por otra parte! las normas especialmente a los colores " modos de trabajo! han de cumplirse. >s pecado capital poner un botón )erde como reset o rojo como c)cle start Linalmente! un cojoBprograma con unas pantallas poco cuidadas parecerá #ue está cogido con pinzas. Ten un poco de gusto! #ue tampoco cuesta tanto.