Para ir creciendo un poco más en la lógica binaria vamos a ver un par de ejemplos durante estos días después de haber visto los primeros fundamentos con el álgrebra de boole. El primero será crear FBs en Step 7 y el siguiente será crear FCs.
- Un ejemplo de creación de FB
- Un ejemplo de creación de FC
La idea es ir introduciendo conceptos nuevos, y no se puede programar en Step 7 si no se conocen los FB y los FC.
FBs en Step 7
Hoy comenzamos con los FBs. Son más completos que los FC ya que como vamos a ver, van a tener remanencia a diferencia de los FC que nos servirán para otros menesteres como veremos pronto.
Como ya dijimos en la introducción los FB no son mas que unos bloques que nosotros vamos a construir y que va a poder tener una serie de variables (ninguna de ellas obligatoria):
- Variables de entrada
- Variables de salida
- Variables de entrada/salida
- Variables temporales
- Variables estáticas (remanentes)
Como bien digo, no es obligatorio el uso de ninguna de ellas ya que se puede hacer la llamada al FB y dentro de este usar variables globales (marcas u otros DBs).
Lo único que es obligatorio es crear un DB de instancia asociado al FB. Este DB nos servirá para almacenar la información remanente aunque veremos que todas las variables quedan reflejadas en él (todas las que se declaren, claro).
No hay que declarar ninguna variable dentro del DB ya que Step 7 lo va a hacer por ti a la hora de hacer la llamada o al crearlo desde el Simatic Manager
Ejemplo de maniobra de una Bomba de agua
Para ver cómo crear FBs en Step 7 de forma práctica vamos a hacerlo a través de un ejemplo de manejo de una bomba de agua.
Se trata de un tanque que tiene un mínimo y un máximo que es abastecido entre estos límites a través de una bomba. Esta bomba toma el agua de una fuente sin determinar y que no viene al caso.
La cuestión es que hay que hacer:
- A través de una maneta de OFF/ON, poner el sistema en posibilidad de trabajar. Cuando se pasa al estado ON, la máquina se pone en modo manual.
- El modo manual es simple. Si se activa el botón de marcha de la bomba, esta bombea sin límites. Si se vuelve a pulsar se para.
- El modo automático se pone cuando se pulsa el botón de auto/man. Tras pasar a auto hay que pulsar el botón de marcha de la bomba y esta trabajará entre el mínimo y el máximo. Cuando pierde el mínimo se activa y cuando llega al máximo se para.
- Si se vuelve a pulsar el botón de auto/man se pasa de nuevo a manual y la bomba se para.
- Hay una serie de leds para indicar los estados de auto, manual, marcha y paro de la bomba.
Para visualizar todo esto mejor, te he preparado un vídeo donde se explica el ejercicio (sin solución).
En el siguiente vídeo puedes ver la resolución del ejercicio.
Recuerda..
Este ejemplo está incluido en Cómo programar Step 7 y no morir en el intento con todos los textos, explicaciones, vídeos y proyectos para su descarga.
Enseño a programar PLC de Siemens a través de mis cursos.
Más información sobre mi aquí
Puedes seguirme en cualquiera de las siguientes redes sociales.
37 Comentarios
Excelente Iñigo!!!
Con respecto con el asunto de usar FC o FB es un tema que me complica encontrarle un uso efectivo a las funciones FB.
Si bien es cierto las funciones FB son remanentes, esto quiere decir que en las declaraciones de variables locales, las voy a guardar en un DB de instancia asociado y esto me obliga a generar tantos DB´s por el uso de FB que requiera.
En cambio usar FC no hay remanencia de sus variables locales tras finalizar la llamada de dicha FC y así sucesivamente a lo largo del ciclo scan (OB1).
Cuando estoy usando FB todas las variables locales son almacenadas en el DB de instancia (entradas, salidas, entradas/salidas, temporales, estaticas), pero en la mayoría de las aplicaciones que he visto solo se requiere refrescar las entradas como salidas de la función FB, por lo tanto cuando llamo y parametrizo la función FC estoy volviendo a declarar nuevas variables (marcas, DB´s principalmente u otro).
En cambio usando FC puedo hacer lo anterior y evito duplicar variables, (evito los DB´s de instancia). Creo la función FC y uso variables locales y marcas, procuro declarar bien las variables locales especialmente las entradas y salidas, una vez realizada mi programación llamo a la función FC desde otra FC o del OB1 u otro, cuando llamo la FC y la parametrizo (en los parámetros uso DB´s globales, teniendo precaución con la función AUF o OPN) y así llamo la función con cuantos DB´s quiera evitando usar DB´s de instancia. He insisto solo refresco entradas y salidas de la FC programada.
Sin embargo, con lo expuesto te darás cuenta, que aún lo he encontrado el gustillo o mejores aplicaciones a las funciones FB´s considerando que me he basado en la remanencia.
Saludos y ánimo!!!
Hola Grabiel,
Yo generalmente también uso FC. Pero hay que reconocer que para realizar una programación orientada a objetos, los FB es un paso adelante.
Tener objetos preconfigurados que sabes que funcionan y que son reutilizables con remanencia es muy interesante.
Pero como todo, para gustos.
Un saludo y gracias por tu punto de vista.
Buenas tardes Iñigo.
Enhorabuena por el curso. Está muy logrado. Te voy a hacer una petición. ¿Podrías pasar a formato PDF la resolución de los ejercicios?. Es para poder seguir mejor el razonamiento de los mismos.
Gracias.
Roberto,
Voy a hacer una cosa mejor, que debería haber hecho y se me olvidó. Subir el proyecto para que lo podáis descargar y jugar con él.
Saludos
Hola Iñigo, en verdad se me hace una excelente idea tu aportacion de conocimientos en Siemens, y si no es mucho pedir, podrias ayudarme compartiendo un tutorial de manejo de drives SINAMICS ademas de RED ASI
Saludos
Hola Luis,
No tengo experiencia en bus ASi aunque por lo que sé es similar en su uso a otros buses de campo.
En cuanto a Sinamics algún día puede que haga algún ejemplo, pero no a corto plazo ya que de momento he redirigido el objetivo del blog a los que empiezan a programar.
Entiendo que sea frustrante, pero de momento no puedo ofrecer más ya que el tiempo y recursos es limitado.
Un saludo
Excelente video tutorial, tengo un ciclo de sistemas de regulaciñon y control de automatismos, muy orientado a la programación de PLCs y la verdad que estos videos estan muy bien para tenerlos y poder recordar cositas como las variables estaticas en los FB, enorabuena y sigue así, la gente aprendera mucho con tus tutoriales.
Muchas gracias Yeray!
Hola, soy novel en lo que a programación se refiere, me ha llevado HORAS resolver esto por mi cuenta, pero lo he conseguido, XDD, quería hacerle unas preguntas:
a efectos prácticos que diferencia hay entre una variable estática y una dinámica?
poder acceder al valor de esas variables desde cualquier lugar del programa o que estos se mantengan hasta ser refrescados en el siguiente ciclo de scan?
funcionaría el telerruptor programado en un FC?
si estoy diciendo barbaridades lo siento.
un saludo
No hay dinámicas. Hay globales o locales. Las estáticas son también globales y son parte del DB de instancia. Lo normal es acceder exclusivamente dentro del DB pero se puede acceder sin problemas desde cualquier otro punto.
Las temporales, a las que te refieres solo se pueden usar desde el FB/FC y se debe dar valor antes de usarlas ya que sino pueden hacer cosas raras si las lees antes de darles valor.
El telerruptor no funcionaría en un FC porque no tiene estáticas. Las variables temporales no valdrían para esto. Deberías usar marcas pasándoselas como IN/OUT, por ejemplo.
Un saludo
Ok, voy entendiendo, cuando dije dinámicas lo que quería decir ers temporales, se me fue el santo al cielo. gracias
Excelente vídeo, muchas gracias por la explicación. tengo una duda la programación en step7 se puede hacer siguiendo el curso pero la de la pantalla de simatic win cc y la integración no me queda claro como se hace, no se si es que se explico en otra parte y no lo vi o si se omitió la explicación,.. la verdad no se como se integran los estados de entradas y salidas para q aparezca la bomba, los leds enciendan o apaguen según step7 en la pantalla de simatic win cc.
Muchas gracias por su atención, espero su respuesta.
desde colombia felicitaciones, muy interesante su pagina y estoy aprendiendo mucho. gracias por compartir el conocimiento
Hola Iñigo, excelente video como siempre. Estoy suscrito a tu canal de youtube.
Respecto a este proyecto tengo una duda, es posible tener el proyecto de la programacion en PLC (Step7) separado de la parte del HMI (WinCC Flexible). Descarge el proyecto y lo quise migrar a TIA Portal, pero no me deja hacer la migración porque solo tengo instalado el Step7 y no el WinCC Flexible, para lo cual se me habia ocurrido tener los proyectos por separado, migrar el proyecto de PLC y yo crear la HMI en TIA Portal, por supuesto que si lo hago, con gusto te paso la carpeta del archivo del proyecto de TIA Portal en caso que te interese subirlo a este blog. Saludos.
Sí, es posible.
Pero claro. Necesitas el wincc flexible para separarlos.
Hola Iñigo, te quisiera realizar una consulta, cuando creas un FC o un FB dentro de ellos(en Interface) existe un tipo de variable llamada IN_OUT o variables de entrada_salida; en que casos usas este tipo de variables al momento de crear dichos bloques?
Muchas gracias por todos los tutoriales….sigue adelante.
Las variables IN_OUT se usan cuando quieres manipular la variable de de entrada y darle valor de salida, modificarla.
gracias
Hola, sinceramente tus vídeos están muy buenos, pero tengo un pequeño problema, utilizo el TIA portal V12 y es bastante distinto gráficamente lo que vos haces, me podrías decir cual es la versión que vos usas, porque cuando quise ver lo que habías puesto para descargar no me permitía verlo ya no es compatible con el programa que tengo
Hola Iñigo antes de todo darte las gracias por este curso, has hecho un trabajo fantastico y ademas de manera altruista, lo que desde mi punto de vista es admirable.
Bien,supongo que como muchos electromecanicos que no han tenido la oportunidad de estudiar mucho, soy virgen en el tema de programacion y pese a lo bien hechos que estan los videos. hay muchos terminos que empleas que desconozco. Podrias aconsejarme donde puedo encontrar algo de informacion para entender desde cero en programacion.
Muchas gracias.
Ufff Miquel… es complejo.
La verdad es que no sabría decirte dónde podrías leer y documentarte.
Puedes bajarte los PDF de Siemens Googleando un poco ya que son gratuitos, pero creo que son muy durillos para la gente que empieza… por no decir un tostón (mejorando lo que yo he hecho, que para nada quiero sustituirlo. He hecho lo que he podido y sabido).
Saludos
Hola Iñigo:
Dejame felicitarte por tu blog, muy bien encarado en la programacion siemens, te cuento que anteriormente realice un programa similar al manejo de una bomba manual-automatico con boyas como este que presentaste en esta video y mi opinion es que seguramante hay formas mas simple de implementarlo desde el punto de vista de la programacion, yo lo realice copn un logo y el programa es mucho mas sencillo aprovechando funciones ya integradas en los bloque de programacion, como el teleruptor, muchas gracias y saludos , desde Argentina.
Grande iñigo (Y) gracias hermano.
Muchas gracias por tu tiempo y dedicación, aunque te quisiera pedir el favor de reestablecer los links de los proyectos, pues estos están caídos, y la verdad quisiera aprovecharlos al máximo.
¿que links no funcionan?
Gracias, ya he logrado descargarlos, el inconveniente era el AdBlock que le tengo instalado al navegador.
Iñigo. Dios te bendiga y gracias por los videos, en el video de «Curso de programación en S7 (IV) Solución de ejemplo de manejo de una bomba», no se ve como se llama el FB, hiciste los FBs pero no como se llaman, solo sale en el video cuando ya estan los dos llamados.
saludos
Orizaba Veracruz Mexico
excelete ejemplo
Gracias Pavel!
Hola Iñigo.
Como siempre muy didáctico.
Es grato comprobar de nuevo que todos los caminos llevan a Roma, FC / FB.
Yo he entendido:
La diferencia de los FB es que tienen remanencia, es decir, cuando existe rellamada sobre un actuador.
No se si estoy en lo cierto.
Los vídeos explicativos muy buenos, así como su estructura.
Gracias Iñigo
Exacto.
Los FB tienen la «gracia» de tener las variables tipo STATIC que no pierden el valor entre llamadas del bloque.
Ojo, no confundamos remanencia (no pierde valor cuando re-arranca el PLC) con estaticidad, que no pierde el valor entre llamadas.
Saludos!
Hola Iñigo;
Estoy mirando el curso pero no consigo avanzar en este ejemplo de la bomba. Podrías decirme donde descargar el proyecto.
Saludos.
Hola Matias,
Los ejemplos resueltos(proyectos) solo están disponibles para los alumnos que en este caso, hayan adquirido el curso de step 7.
Saludos
Olá Iñigo,
Tenho duvidas em relação aos DBs de estancia , e DBs globais, assim como FB, como poderei aplicar ou usar , qual a diferença.
No curso vai ter explicação
Gracias
Jacfig
Gracias por tu respuesta.
Si puedes manda a mi correo un presupuesto.
Saludos
En la web tienes el precio y aquí toda la información: https://programacionsiemens.com/como-programar-step-7/
esta muy bueno el pequeño curso