Recientemente he tenido una consulta en la cual el lector me preguntaba una forma de identificar bits activos dentro de un DB.
La idea es identificar los bits y pasar esta información a otro DB donde podamos ver qué bits son los que se han identificado.
Esta clara la aplicación ¿no?
Contenido
Cómo identificar bits activos
Lo que vamos a hacer, es algo similar a lo que puedes ver en la siguiente imagen:
Como ves, la idea es identificar los bits que están a 1 (en verde) y traducir su dirección a un numero real que se almacenará en orden en otro DB indicando la dirección física que está a 1 en el DB1.
¿Listo? Empecemos a identificar bits activos
He creado un FC al cual le pasamos 3 valores: el DB de booleanas (DB_Bool), el DB de reales (DB_Reales), y el número de booleanas a tratar (NumeroBool).
Lo que haremos será lo siguiente:
- Limpiar el DB destino con un valor que no pueda tomar nunca una dirección. Por ejemplo -1.0. La razón es que el 0.0 sí es una dirección válida.
- Usaremos un índice que vaya diciéndonos qué bit es el que estamos evaluando.
- Rastrearemos bit por bit del DB de booleanas. Si es false, no haremos nada. Si es TRUE copiaremos el índice en el DB destino pero transformando el número de bit en un número real representativo de la dirección.
Por tanto, en el DB destino tendremos los valores que representan los bits puestos a TRUE del primer DB siendo -1.0 el resto de valores.
El vídeo de identificar bits activos
Como en otras ocasiones, la explicación la veremos a través de un vídeo:
Precauciones en el uso
Tienes que tener en cuenta que para usar este FC1 que ves en el vídeo, el número de bits y de reales en los DB origen y destino tienen que ser igual de grandes, ya que podrían estar todos los bits a TRUE.
Lógicamente el DB destino podría ser aún mayor, pero al menos tiene que ser igual.
El número de bits a chequear deberá ser como mucho, igual de grande que el número de bits del DB origen

¿Quieres descargar el proyecto?
Apúntate a la newsletter, y además de obtener el proyecto, recibirás un mini-curso gratuito de Step 7.
Descargar el proyecto ejemplo
Recuerda en chequear tu email para recibir un mini curso de Step 7 y un PDF de regalo
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.
11 Comentarios
Querido amigo.
Quisiera hacerte una pregunta, tengo en una red Profinet 2 encoders y debo controlar el movimiento Horizonta y vertical, de dos motores, los cuales deben
detenerse en ciertas posiciones prefijadas. La informacion de los inverters me llegan atraves del Profinet, pero no se donde.
En pocas palabras, como capturo la posicion que me van dando los inverters en cada momento, para saber cuando parar los motores
Gracias por tu tiempo. Y disculpa si mi explicacion es poco entendible.
Zeno Martorana.
Hola,
No te puedo ser de mucha utilidad. Tienes que ver en la configuración del hardware que entradas y salidas intercambian. Una vez que tengas esas direcciones, mirar en la documentación del encoder y ver como envía los datos, en que bytes etc.
Vamos, que cada aparato tiene su configuración y la forma de comunicarte lo establece el fabricante del bicho.
Tienes que mirar la documentación del encoder y la configuración de hardware del proyecto para saber donde escribe.
Saludos
Cordial Saludo,
Estimado Iñigo muchas gracias por tus aportes y por compartir tu conocimiento.
Tengo una consulta, has trabajado con CPU SIMOTION, si es asi, veremos alguna entrada con un tutorial.
Gracias
Hola Oscar. El catálogo de hardware de Siemens es enorme y a día de hoy no me he tenido que enfrentar con los Simotion por lo que no tengo experiencia con ellos. Lamento no poder ayudarte con ellos.
Saludos
Claro entiendo, muchas gracias.
Super chulo el ejemplo!!! para usar los blucles loop-next y los punteros que a mi personalmente me cuesta un poco coger el hilo a la hora de llevarlo a la practica a pesar de ser sencillo de comprender su cometido.
Esta muy bien para poder saber ya a tiro fijo que direccion de defectos estan a 1 si tu maquina no te indica la direccion solo el comentario y tiene un DB donde los registra y se te nubla la vista si tenes por ejemplo 512 booleanas de defectos y tienes que vusualizar cual es TRUE y cual es FALSE.
Muchas gracias David. Esta semana, lo vemos realizado en SCL. Saludos!
Hola Iñigo
No encuentro el enlace del proyecto del semaforo y adquiri en su dia el curso,
Me lo podria descargar de algun enlace o por mail?
Gracias!!
Hola Vicente,
El ejemplo del semáforo está en la carpeta de los proyectos que te descargas junto con el pdf. Se llama ejemplo semáforo.
Mira ahí, porque tiene que estar.
Saludos
Gracias amigo. Te agradezco tu tiempo y esfuerzo …..
Un gran abrazo.
Gracias.
Necesito ver como identificar bit’s activos en un aword de alarmas que me llega desde un robot. Pienso que este programa me pueda ayudar.