Vale.
Igual el título es un poco alarmante, y Alfonso no tiene problemas de fantasmas en sus armarios eléctricos y solo quiere realizar un registro de eventos en Step 7.
Pero si que suelen pasar cosas raras en las máquinas. A veces aparecen golpeadas, cosas rotas… y nunca nadie ha hecho nada.
¿Deberíamos pensar que hay fantasmas?
En fin, que eso se lo dejamos a Iker Jiménez.
Vayamos al email que recibí hace unos días que ha dado pie a esta entrada:
Buenas Iñigo,
Dispongo de diez armarios que tienen dos puertas (trasera y delanera). Cada una de las puertas tienen un switch de un contacto Normalmente Abierto (NA). Cada contacto está cableado a una entrada digital del PLC.
Me gustaría poder controlar la apertura de cada puerta y que se grabe el día y hora de cada vez que se produzca un evento de cambio de estado.
No sé cómo estructurar el programa y me gustaría si me pudieras ayudar.
Un saludo y muchas gracias de antemano,
Alfonso
Bien.
No se si Alfonso tiene problemas de eventos sobrenaturales de apertura y cierre de puertas, pero vamos a echar una mano, por si acaso en el registro de eventos en step 7.
Hemos intecambiado más información en el que se quiere tener el histórico en el PLC, con una longitud de unos 50 eventos, y todos juntos en el mismo DB, de tal forma que todo esté en un único sitio.
Cómo registrar eventos en step 7
Vayamos al grano
Tenemos 10 puertas que pueden abrirse y cerrarse del que sabemos su estado debido a un final de carrera.
Al ser NA, estará a 1 cuando esté cerrada, y a 0 cuando esté abierta.
De cara a saber que está cerrada, es lo ideal, ya que en caso de rotura de hilo, se considerará que la puerta está abierta, pudiendo alertar de este estado.
Lo que vamos a hacer es lo siguiente:
- Crearemos un UDT que contendrá la hora, el número de puerta, y el evento (apertura o cierre).
- También un DB global donde meter un array de 50 posiciones de este UDT con los datos de cada evento
- Necesitaremos un FC que registre el evento en el histórico
- Finalmente, un FC que englobe las diferentes puertas y el tratamiento de los eventos de cada una de ellas.
Se puede hacer de más formas, incluyendo uso de FB.
Lo he querido hacer así, ya que si Alfonso me pregunta cómo hacer esto, es porque creo que necesita un nivel sencillo de operar.
Creo que hacerlo con un FB y un FC, complicaría un poco la sencillez propuesta.
La forma de funcionar, será simple:
- Detectamos el flanco positivo o negativo de la puerta
- Movemos el histórico una posición del DB, para dejar espacio al nuevo registro
- Registramos en la posición 1, el nuevo registro de evento en step 7
Adicionalmente, puedes filtrar las señales, para que no se registren aperturas y cierres muy rápidos. Es decir, que si abres la puerta y la cierras de la misma, se considere que no se ha abierto.
Eso ya lo dejo a gusto de cada cual.
¿Lo vemos?
Vídeo de cómo realizar un registro de eventos en Step 7
Ni que decir tiene, que la idea de este ejemplo lo hemos visto en otras ocasiones, y que es aplicable a otras utilidades.
Te invito a que eches un vistazo al vídeo donde se muestra el ejemplo trabajando
¿Qué te ha parecido el registro de eventos en Step 7?
Espero que te haya parecido útil.
Este ejemplo, con el proyecto, lo dejo en el anexo del curso de Step 7.
¿Lo ves útil para aplicar algo similar en tus automatizaciones?
Recuerda que puedes apuntarte en Guorker.com donde por una cuota mensual, tendrás tarifa plana en todos los cursos disponibles en la plataforma.
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.
18 Comentarios
Buenisimo.
hola quiero aprovechar el momento para que por favor me aclares unas dudas.
tengo un HMI SMART LINE MODELO 6AV6 648-0BC11-3AX0.
como hago para programarla ya que en WINCC FLEXIBLE 2008 SP2, no aparece en el listado de pantallas?.
te agradezco.
Saludos.
Si miras en las especificaciones, verás que dice que necesitas wincc2008 sp4 por lo menos :
6AV6648-0BC11-3AX0
SIMATIC HMI SMART 700 IE
SIMATIC HMI SMART 700 IE, SMART Panel, Touch operation, 7″ widescreen TFT display, 65536 colors, RS422/485 interface, Ethernet (RJ45) interface, with CE certificate, configurable from WinCC flexible 2008 SP4 China; contains open-source software, which is provided free of charge see enclosed CD
Una duda Iñigo. No se como ejecuta la copia de datos la instrución BLKMOVE pero si copias desde el DB100DBX0.0 al mismo DB100 pero a partir de DBX12.0 ¿no se solapan o machacan los datos?. Por ejemplo el DB100.DBB0 se copia al DB100.DBB12 pero cuando toque copiar de origen el DB100.DBB12 al DB100.DBB24 ya estaría modificado el valor de la copia anterior. ¿No se debería copiar por ejemplo del DB100 al DB101 y volver a copiar al DB100 pero a partir de la posición 12?
Saludos!
Yo también suelo hacerlo con un paso intermedio, pero como ves, puedes hacerlo directamente también.
En caso de que el ancho de memoria fuera muy grande, desconozco si podría dar problemas.
Saludos
Buenos días Iñigo, muy buenas tus aclaraciones
Hola Iñigo.
Gracias a ti y a Alfonso por el video explicativo. Has resuelto una duda que tenia yo personalmente desde hacia tiempo con el movimiento de datos dentro de un bloque.
Gran explicacion
Un saludo
buenisimo!!!!!!!!!!
Buen dia Iñigo
Espero te encuentres bien. No se puede ver el video.
saludos
Revisa la conexión, porque a mi me funciona sin problemas.
Excelente vídeo
Estimado Iñigo si quisiera crear una pantalla en WinCC Flexible 2008 donde publicar la constante actualización del DB100 que mencionas, podrias realizar un ejemplo? Tengo entendido que tendria que realizarlo mediante un script, pero no estoy seguro.
No sé muy bien qué es lo que quieres hacer, pero para formarte en WinCC Flexible 2008, está el curso completo sobre ello.
Buenas tardes Iñigo, creo que hay algún error porque no se actualiza la hora del reloj y entiendo que en la CPU lo tendrías sincronizado con la del ordenador.
¿Te refieres en el propio ejemplo? En los DB, no puedes ver la fecha y hora de forma directa cuando estás online.
Buenas noches Iñigo.
Entonces, de qué forma puedo exportar estos valores registrados para poder ver la hora en que se produjo cada evento?
Muchas gracias
A qué te refieres con exportar? Si te refieres a sacarlos del plc, hay muchas formas de comunicación con el, pero entonces no se habría hecho de esta forma sino que lo tendrías hecho directamente en el PC donde registres mediante un opc o similar
Hola Iñigo. Primero darte la gracias por estos videos tan ilustrativos. Por necesidad de una aplicacion he realizado este ejemplo para realizar un registro de roturas de una maquina de trefilar. La aplicacion funciona correctemente ( lee los registros de roturas de cada paso al finalizar cada turno y los va almacenando correlativamente en la estructura del db asisgnado). Lo curioso es que con el simulador funciona correctamente pero cuando cargo en PLC cuando se ejecuta el evento carga en el primera estructura las roturas correctamente pero lo que habia en la primera estructura se carga en el resto de estructuras. Estas variables las visualizo en un basic panel ktp600. Es curioso que en el simular no tenga ningun problema y en PLC si…..
Prueba a copiar a una estructura intermedia. Es decir, del DB a un DB de paso, y del DB de paso de nuevo al primer DB. No hagas la copia directamente sobre el propio DB, porque eso puede que te esté fallando.
Hola. Gracias por la respuesta. Finalmente lo que hice fue como hago tan solo 5 registros, es copiar el registo 4 al 5 despues del 3 al 4 y asi sucesivamente hasta correr los 5 registros, de esta manera me lo hace correctamente.