Escalado Analógica en Logix con instrucción CPT Capítulo 2

logo2dominios


En la anterior entrada, hicimos una introducción y realizamos los pasos para crear una aplicación y la configuración de hardware:

Escalado Analógica en Logix con instrucción CPT Capítulo 1

Siendo el montaje del controlador y la tarjeta de EA el siguiente:

Fuente de alimentación 24VCC, Compact Logix L16 y módulo EA.

Detalle de tarjeta de entrada analógica 1734-IE4C

Antes de seguir, os aconsejo que leáis la serie de entradas sobre Señales Analógicas:

Señales Analógicas

Y si ya lo habéis hecho, vamos a repasar unos conceptos en los siguientes párrafos, éstos están extraídos de la siguiente entrada:

Señales Analógicas Cap.11 (Práctica-Parte 7)

1. Escalado de Señal Analógica.

Trabajar en unidades de ingeniería (m, mca, rpm, %, ppm….) es más intuitivo para los integradores que hacerlo con las unidades internas de los PLC o PAC, las llamadas “números de cuentas”, además éstas últimas presentan el problema que dependen de la resolución de la tarjeta y de cada tipo y marca, por lo que se suele convertir a unidades de ingeniería. Además es necesario hacer esta conversión, para representar estos valores en los HMI’s, de esta manera, explotación-producción podrá interpretar más fácilmente los valores de proceso.

Podemos realizar el escalado de tres formas diferentes:

  • En PAC’s de alta gama como es el Control Logix de Allen Bradley, el escalado se realiza en la propia tarjeta de analógicas, por lo que obtenemos directamente el valor en unidades de ingeniería, sin tener que realizar ningún tipo de programación adicional.
  • Realizar el escalado mediante funciones y librerias propias de los PLC’s-PAC’s.
  • Mediante un algoritmo que realice el cálculo.

En nuestro caso, disponemos de un PAC que no dispone de escalado en la tarjeta, por lo que el escalado lo tenemos que realizar mediante una función interna o un algoritmo, esta segunda opción la dejamos para entradas posteriores.

 

Una vez que conocemos el hardware con el que realizaremos las prácticas y hemos repasado algunos conceptos, comenzamos:

1 – Declarar una estructura de datos de usuario (UDT User Defined Data Types).

Para declararla, debemos desplegar en el “Controller Organizer” la carpeta Data Types” y tras pulsar en botón derecho seleccionamos “New Data Type”.

Nos aparecerá la siguiente ventana emergente.

Le asignamos el nombre que deseemos para nuestra estructura de datos, recordad que debe ser un nombre descriptivo de su uso, en nuestro caso le asignamos el nombre “ESCALADO”.

Rellenamos la estructura con los datos que necesitemos para la UDT. Cabe recordar, que una UDT puede estar formada por variables que sean datos predefinidos y/o por matrices de éstos. En nuestro ejemplo, introducimos los siguientes datos:

  • ENTRADA_ANALOGICA, dato que usaremos para almacenar la variable que nos da la variable con los datos de la entrada analógica. Elegimos un dato tipo DINT, no obstante podría ser de tipo INT, ya que el dato que nos entrega la tarjeta de EA es de tipo INT.

  • NUMERO_CUENTAS_BAJO, dato que usaremos para fijar el extremo inferior del número de cuentas, este dato depende de la resolución de la tarjeta (número de bits) que equipemos. Veremos esto con más detalle más adelante.
  • NUMERO_CUENTAS_ALTO, dato que usaremos para fijar el extremo superior del número de cuentas, este dato depende de la resolución de la tarjeta (número de bits) que equipemos. Veremos esto con más detalle más adelante. De tipo DINT, podríamos usar
  • UDS_INGENIERIA_BAJO, dato que usaremos para fijar el extremo inferior de las unidades de ingeniería de nuestro instrumento.
  • UDS_INGENIERIA_ALTO, dato que usaremos para fijar el extremo superior de las unidades de ingeniería de nuestro instrumento.
  • RESULTADO, variable para almacenar la salida de la instrucción con el la EA ya escalada.

En los tres últimos datos elegimos datos de tipo REAL para disponer de decimales.

De momento, estos son los datos que declaramos en la UDT y que iremos ampliando a medida que introduzcamos más funcionalidades.

Una vez que tenemos definida nuestra estructura, declaramos en “Controller Tags” una variable que llamaremos “TEMPERATURA” y será de tipo “ESCALADO” (UDT declarada en el paso anterior).

Ya tenemos una estructura que nos facilitará el escalado de una señal analógica con la instrucción CPT.

En la siguiente entrada, usaremos la instrucción CPT y la función de escalado que implementaremos en ella.

¡Saludos!.

favicon

Escalado Analógica en Logix con instrucción CPT Capítulo 1

logo2dominios


Hola tras la consulta de Daniel en una entrada anterior, vamos a publicar una serie de entradas donde explicaremos como se realiza el escalado con lenguaje ladder:

Señales Analógicas Cap.11 (Práctica-Parte 7)

Comenzamos:

En la entrada anteriormente comentada, el escalado se realiza en lenguaje de bloques de funciones y muchas veces no se dispone de este lenguaje por no disponer de licencia para ello, por ello es muy útil saber realizar el escalado con ladder o diagrama de contactos, además personalmente le veo otras ventajas adicionales que iremos viendo a lo largo de las siguientes entradas. Por ello, en esta serie de entradas vamos a explicar nuestra forma de realizar este escalado.

Hay que dejar claro, que vamos a trabajar con la plataforma Logix y más concretamente con la familia Compact Logix, con sus respectivas tarjetas de entrada y salida analógicas de la familia 1769 y POINT I/O 1734, si vamos a trabajar con tarjetas de la familia de Control Logix, prefiero usar la funcionalidad de escalado en la propia tarjeta de entrada o salida analógica de la familia 1756, aunque no se lo crea más de uno hay gente que no la usa y os podéis encontrar programas que realizan un escalado a número de cuentas en la tarjeta y posteriormente se realiza el escalado a unidades de ingeniería por programa. Por tanto, esta entrada nos servirá, entre otras, para las siguientes combinaciones de equipos:

  • Compact Logix con entradas y salidas de la familia 1769 y 1734.
  • Control Logix si equipamos un modelo de periferia de E/S descentralizada, por ejemplo cabecera 1734-AENT y entrada analógica de esta familia.

En nuestro caso, vamos a usar un Compact Logix L16 y una entrada analógica 1734-IE4C como módulo de expansión.

1- Comenzamos creando una aplicación Logix.

Lo primero que hacemos es abrir RSLogix 5000 o Studio 5000 y crear un nuevo proyecto, o lo realizamos con QUICK START.

O lo realizamos a través de “File/New…”.


 

En nuestro caso, elegimos el controlador 1769-L16ER-BB1B en versión 20 con un módulo de expansión y llamamos a nuestra aplicación “Escalado_Analogica_Ladder”.


2- Declaramos el hardware en I/O Configuration.

Procedemos a declarar en la “I/O Configuration” el módulo de entrada analógica 1734-IE4C. La familia L1 utiliza las E/S de la familia de POINT I/O 1734. Para ello, con botón derecho pulsamos sobre “New Module…”. No vamos a entrar en detalle, ya que existen otras entradas en el blog que detallan más como se declara una E/S, por lo que a continuación sólo recogemos los pasos principales para declarar el módulo EA.

Buscamos el módulo 1734-IE4C en el catálogo hardware.

Le asignamos el nombre “EA”.

Comprobamos en “Controller Tags” que se ha generado las estructuras de este módulo, en nuestro ejemplo son las “LOCAL:2”, ya que las “LOCAL:1” son de las E/S que equipa el controlador L16.

En la siguiente entrada, vamos a declarar una estructura de datos definida por el usuario (UDT) en la que vamos a ir recogiendo las variables necesarias para realizar el escalado, a medida que implementamos más funcionalidades, iremos ampliándola con  más variables.

¡Saludos!.

favicon

“APP arIE (Realidad Aumentada de Instalaciones de EMASESA)… Mirar, Ver y Comprender” gana el Tercer Premio del VII Concurso de Ideas en Emasesa

logo2dominios

 

 

 


El pasado veinticinco de abril, se falló la VII EDICIÓN DEL CONCURSO DE IDEAS DE EMASESA y tuve la gran suerte de volver a estar entre los finalistas y obtener el tercer premio en la categoría de ideas para proyectos de I+D+i.

Enlace noticia.

La idea consiste en desarrollar una APP que facilite las tareas de explotación, supervisión y mantenimiento correctivo/preventivo en las instalaciones de EMASESA.

Según Wikipedia:

La realidad aumentada (RA) es el término que se usa para definir la visión de un entorno físico del mundo real, a través de un dispositivo tecnológico, es decir, los elementos físicos tangibles se combinan con elementos virtuales, logrando de esta manera crear una realidad mixta “Realidad Aumentada” en tiempo real.

En resumen, la realidad aumentada consiste en ofrecer información digital superpuesta a la visión real.

El gran auge de los dispositivos móviles ha hecho posible que este tipo de tecnología esté disponible en cualquier momento y lugar, gracias a la inclusión de las cámaras digitales. Entre las APP que usan esta tecnología, se encuentran empresas del sector de la compra-venta y alquiler de viviendas, hostelería, arquitectura y diseño. Y a nivel de hardware no podemos olvidar el desarrollo de las GoogleGlass.

El CEO de Apple Tim Cook, decía hace unos meses, en una entrevista sobre la realidad virtual y la realidad aumentada lo siguiente:

“Está la realidad virtual y la realidad aumentada, ambas son increíblemente interesantes, pero mi opinión es que la realidad aumentada es la mayor de las dos, probablemente de lejos, porque ahora nosotros dos estamos aquí hablando, pero podríamos tener otras cosas –visuales–, tal vez son cosas de las que no hablemos, tal vez sea otra persona que no está presente pero parece estarlo.”

“……….somos lo que hacemos día a día, por lo que la innovación no es un acto, es un hábito………”

Adaptación de la frase de Aristóteles por el “capo”.

¡Saludos!.

Entrada relacionada.

favicon

 

 

La creatividad es un estado de ánimo

 logo2dominios


Me gustaría comunicaros, que la entrada publicada en el día de ayer, será la última que haga sobre Automatización en el blog. Esta temática, la principal del blog hasta la fecha, será abordada por los colaboradores en la medida de sus posibilidades, pero mi persona no volverá a hacerlo sobre este tema.

Está muy de moda, decir que la creatividad es un estado de ánimo y pienso que es cierto, por ello voy a dejar de “crear” sobre temas de automatización, es duro dejar algo que te apasiona, pero ya estoy cansado “del día de la marmota” o quizás tenga razón un amigo mío y he llegado “a ese punto”.

creatividad

Saludos.

favicon

DeviceLogix Cap. 14 POINT I/O Programación Módulo 1734-8CFGDLX Parte 8

 logo2dominios


En la última entrada, hemos realizado una copia de seguridad de la red y ahora vamos a realizar forzados de variables en DeviceLogix.

¡Comenzamos!.

En la anterior entrada hemos realizado un “upload” de la red y estabamos en línea con ella, ahora  hacemos doble clic sobre el módulo que tiene DeviceLogix (PointIO 24VDC 8pt Config DLX), para abrir la ventana de configuración del equipo.

dlx129

Seleccionamos la pestaña “DeviceLogix”.

dlx134

Y pulsamos sobre “Start Logic Editor…”.

dlx135

Debemos visualizar el programa que tengamos implementado en el módulo, en él vamos a realizar un forzado de variable.

dlx136

Para realizar el forzado, sobre la variable (en nuestro ejemplo Discrete Input 0) debemos hacer clic en el botón derecho del ratón y seleccionar “Force”.

dlx137

Cuando la variable está forzada se pone en amarillo el fondo de la instrucción.

dlx139

Para quitar el forzado, sobre la variable (en nuestro ejemplo Discrete Input 0) debemos hacer clic en el botón derecho del ratón y seleccionar “Clear Force”.

dlx140

dlx141

En la siguiente entrada veremos como intercambiar datos de módulos en la misma red, en nuestro ejemplo leeremos datos del módulo 1734-8CFG.

Saludos.

favicon

DeviceLogix Cap. 13 POINT I/O Programación Módulo 1734-8CFGDLX Parte 7

 logo2dominios


En la última entrada, hemos realizado un programa algo más complejo con DeviceLogix. En esta entrada vamos a realizar una copia de seguridad  mediante la funcionalidad “Upload”.

¡Comenzamos!.

Lo primero es abrir RSNetworx y abrir un nuevo fichero, para ello “File\New”.

          dlx149

dlx147

Si tenemos todas las versiones instaladas de RSNetworx (Ethernet/IP, DeviceNet y ControlNet), en la ventana emergente nos aparecerán tres opciones, elegimos “DeviceNet Configuration De….”.

dlx148

Procedemos a ponernos online con la red, para ello pulsamos el botón “Online” en la barra de herramientas.

rsnetworx5        

dlx125

Nos aparecerá un ventana emergente, para seleccionar la ruta hasta la red que queramos escanear.

dlx126

En nuestro ejemplo, es “Pointbus Port, DeviceNet” en la cabecera 1734-AENTR.

dlx127

Nos aparecerá una ventana emergente de advertencia, que dice lo siguiente:

dlx36

“Antes de que el software le permite configurar dispositivos en línea , debe cargar o descargar la información del dispositivo . Cuando se haya completado la operación de carga o descarga, configuración fuera de línea pueden sincronizar con la red en línea .

Nota: Puede cargar o descargar la información del dispositivo en cualquier forma de toda la red o dispositivo individual .”

En la ventana de configuración de elementos nos parecerán todos los elementos escaneados.

dlx129

Ahora realizaremos el paso más importante, que es hacer una carga desde los dispositivos de toda la red. Para ello pulsando botón derecho del ratón, sobre la ventana de configuración de elementos, seleccionamos del menú “Upload from Network”.

dlx131

dlx132

dlx133

dlx129

Para finalizar, debemos guardar el fichero y para ello “File\Save As..”

dlx143

dlx144

En la siguiente entrada veremos como forzar variables en DeviceLogix.

Saludos.

favicon

Poner en Fecha y Hora Micro 810 (Fran Sánchez)

logo2dominios


Entrada del colaborador Fran Sánchez:

¡Comenzamos!

El programa utilizado para programar estos PLC´s es Connected  Components  Workbench es gratuito y se puede descargar en  http://www.rockwellautomation.com/global/products-technologies/connected-components/tools/workbench.page#tab4 el problema es que la versión abierta no permite edición online, ni estructuras de datos.

El que no permita edición online es un incordio y una pérdida de tiempo para la programación muy grande, pero por lo menos está la opción gratuita.

Para poner en Fecha y Hora un Micro 810 disponemos de dos modos de hacerlo (Como todos los PLC´s de Rockwell) uno es mediante programación y otro es desde la configuración de PLC, el problema es que al menos en la versión gratuita, para poner en hora el PLC desde la configuración hay que pararlo.

El ejemplo lo vamos a realizar con un Micro 810 Pero se hace igual en toda la gama Micro8X0.

Modo 1, Desde configuración:

Presupongo, que todos sabemos conectarnos al PLC y movernos por el PLC, así que vamos al grano.

Hacemos doble click sobre el controlador, en este caso Micro810.

img1

Se nos abrirá la siguiente ventana, y pulsamos sobre Real Time Clock.

img2

Llegado a este paso, debemos asegurarnos de que podemos pasar el PLC a modo program, si es así lo hacemos pulsando el selector que aparece marcado en la imagen.

img3

Nos preguntará si estamos seguros de que queremos cambiar a modo Program, Aceptamos si estamos seguros de que lo queremos.

img4

Una vez puesto el PLC en Program pulsamos sobre SET DATA/TIME.

img5

Una vez pulsado se nos abrirá la siguiente ventana, en la cual podemos configurar manualmente la fecha y hora.

img6O en su defecto podemos seleccionar que use la del ordenador desde el que estamos conectados, que es lo que voy a hacer yo, así que seleccionamos la opción Use current computerr´s data and time y pulsamos sobre OK.

img7

Una vez aceptado, volvemos a poner el PLC en Run , asegurándonos de que podemos hacerlo pulsamos sobre el mismo selector desde el que anteriormente hemos puesto el PLC en Program.

img8

De nuevo nos preguntará, si estamos seguros de que queremos pasa a Run, le decimos que OK.

img9

Y con esto, quedará cambiada la hora, del modo 1.

Modo 2, desde el programa:

Presupongo, que todos sabemos conectarnos al PLC, movernos por el PLC y transferir los programas, así que vamos al grano.

En la línea de programa que deseemos, insertamos del modo habitual una Instrucción.

img10

Se nos abrirá la siguiente ventana, en la cual buscamos y  seleccionamos pulsando OK la instrucción RTC_SET

img11

En la página 421 del manual http://literature.rockwellautomation.com/idc/groups/literature/documents/rm/2080-rm001_-es-e.pdf tenemos más información acerca de la instrucción, en las que dice que para el modelo 810(El del ejemplo) y 820 basta con rellenar el campo de la instrucción RTCData.

Pulsamos dos veces sobre la parte baja de RTCData.

img12

Y se nos abrirá el Variable Selector.

img13

Rellenamos el nombre de la variable que deseemos y pulsamos OK.

img14

Insertamos también un contacto, desde el que vamos ejecutar la instrucción RTC_SET.

img15

Una vez hecho todo lo anterior, transferimos el programa y nos ponemos Online.

Hacemos doble click sobre el contacto SET.

img16

Y se nos abrirá la ventana de variable Monitoring.

img17

Expandimos el tipo de dato SET_CLOCK y rellenamos la fecha que queramos, durante el ejemplo compruebo que no se puede establecer una fecha inferior al año 2000.

Rellenamos las variables marcadas, no hay que rellenar la variable SET_CLOCK.DayOfWeek ya que el manual dice que se ignora, ya que se calcula sola.

img18

Una vez rellena la fecha que queremos activamos la variable SET pulsando sobre su campo LogicalValue para activarlo.

img19

Una vez activado, veremos que se ejecuta la instrucción, si Sts está a 1, es que la instrucción se ha ejecutado correctamente.

img20

Una vez que hayamos comprobado que se ha ejecutado correctamente desactivamos la variable SET.

img21

Comprobamos que la Fecha y Hora se han cambiado correctamente

img22

Comprobamos que se ha cambiado correctamente, los minutos no coinciden porque es el tiempo que he tardado en realizar todo esto.

Un saludo, Fran.

favicon

 

Where Am I Project (Alberto Fuentes)

 logo2dominios

 

 


Ya tenemos la primera entrada de Alberto Fuentes, estoy seguro que os va a encantar y sorprender.

¡Comenzamos!.

El proyecto Where Am I (¿Dónde estoy?) se desarrolló para la asignatura de Redes de Sensores del último curso del grado de Telecomunicaciones. Nuestro grupo estaba formado por 5 personas, todos ellos cursando la intensificación de telemática, para este proyecto decidimos agrupar todas las especialidades de nuestra carrera en este proyecto:

  • Señales.
  • Electrónica.
  • Programación.

El proyecto desarrollado tiene como objetivo estimar la posición de un usuario dentro de una determinada zona y que un robot pueda seguirlo (Mindstorms LEGO). Para ello empleamos sensores inalámbricos (motes Telosb de CrossBow) y para resolver parte de la automatización usamos una Raspberry Pi.

La disposición de los “motes” o nodos es muy relevante para el desarrollo del proyecto, cuatro de ellos se situarán formando un rectángulo (en los vértices), donde actuarán como nodos ancla (“anchor”) para el servicio de localización. Un quinto nodo, el que porta el usuario, será el que se pueda mover dentro del rectángulo, y es del que necesitamos conocer su posición. Por último, habrá un nodo más que será el que permita la comunicación entre el robot y el nodo del usuario.

imagen_1Esquema de funcionamiento.

Los nodos ancla, intercambian un mensaje de forma periódica que contiene sus coordenadas y que le permite a los demás extraer el RSSI (Indicador de fuerza de la señal recibida). Cuando cada nodo ancla conoce las coordenadas y la RSSI del resto de los nodos ancla, se puede estimar con facilidad la posición del nodo central a partir de las distancias a los nodos ancla. Es importante señalar que el intercambio de mensajes entre los nodos ancla nunca cesa, por lo que se van recibiendo nuevos valores de RSSI, que permiten que el sistema se adapte a los cambios del medio radioeléctrico.

El nodo central, por su parte, envía de forma periódica un mensaje de saludo (HELLO) a todos los nodos ancla, y cuando éstos lo reciben, responden con la distancia estimada al nodo central desde cada uno de ellos. Una vez que el nodo central ha recibido las estimaciones de los cuatro nodos ancla, ya puede determinar el punto en el que se encuentra (dentro del cuadrilátero).

Para determinar la posición, el código incorpora dos algoritmos de uso libre: el WCL (Weighted Centroid Localization) y un método basado en la trilateración utilizando distancias de Manhattan, desarrollado por Alejandro Braza Barba, componente del grupo, y que cuyo desarrollo se adjunta en el documento TrilateracionManhattan.pdf.

La comunicación entre los nodos centrales y los nodos anclas se basa en el estándar de comunicación inalámbrica ZigBee. En el PC se ejecuta un script de python, que recibe la posición del nodo central a través de comunicación serie y se la comunica al meta sistema Operativo Robótico ROS (en inglés Robot Operating System, ROS) , encargado del control del robot.

Para la comunicación entre ROS y el robot se emplea un enlace inalámbrico entre el PC y una Raspberry Pi donde se ejecutan varios nodos de ROS.

Por último, la comunicación entre la Raspberry Pi y el robot se realiza mediante un interfaz serie, que conecta a la Raspberry por USB con el módulo de control del robot Mindstorms LEGO.

El robot se trata de un Mindstorms NXT de Lego, que posee dos servomotores controlados por el módulo de control. El módulo de control del robot, se alimentó con seis (6) baterías de 1.5 V tipo AA y  para alimentar la Raspberry pi fue necesario integrar un “power bank” en la estructura del robot.

imagen_2

CONTROL DEL ROBOT

Para el control del robot hacemos uso del meta-sistema operativo robótico ROS, el cual está compuesto por una serie de herramientas, funcionalidades y librerías para el desarrollo de aplicaciones robóticas. La filosofía de diseño de ROS permite crear sistemas muy modulares, en los que incluso los programas se pueden estar ejecutando de forma distribuida en una red IP. Para conseguir esta comunicación entre ejecutables (llamados nodos), ROS provee un nodo principal que se encarga de arbitrar las comunicaciones entre todos los demás nodos de la red.

imagen_3

Las comunicaciones pueden ser de dos tipos principalmente:

  1. Basadas en tópicos
  2. Basadas en servicios.

La diferencia fundamental es que en el primero (basadas en tópico) son asíncronas, mientras que las del segundo (basadas en servicios) están compuestas de una petición y una respuesta.

La comunicación basada en tópicos consiste en el patrón publicador-suscriptor, en el que se pueden dar los siguientes casos:

  • Un único publicador envía mensajes a varios suscriptores.
  • Varios publicadores envían mensajes a un único suscriptor.
  • Varios publicadores envían mensajes a varios suscriptores.

En todos ellos, todos los suscriptores reciben todos los mensajes de todos los publicadores, mediante conexión punto a punto entre cada uno de ellos. Cada tópico tiene asociado un nombre y un formato de mensaje específico.

Esta arquitectura de comunicaciones permite la fácil integración de nodos desarrollados por terceros con nodos de desarrollo propio, ya que el único requisito es que publiquen o se suscriban al tópico adecuado y con el formato de mensaje correspondiente.

En nuestro caso integraremos los nodos existentes en el paquete nxt-ros, con nodos desarrollados por nosotros en Python. A grandes rasgos, la funcionalidad ofrecida por el primer conjunto de nodos es el envío de mensajes de control al robot, la recepción de las medidas de los sensores del robot, y el procesamiento de éstas últimas. Esto permite obtener, por ejemplo, la posición (traslación y orientación) del sistema de referencia del robot (“base_link”) con respecto a un sistema de referencia denominado “odom”, a través de las medidas de la posición de los motores.

La transformación entre ambos sistemas de referencia es publicada en el tópico /tf con el tipo de mensaje tf/tfMessage que nos es más que una rotación y una traslación de un sistema de coordenadas con respecto a otro.

ENLACES

Video funcionamiento: https://www.youtube.com/watch?v=8oQcoF7vMic

Trilateración Manhattan: https://www.dropbox.com/s/1tjvi45t91wq9wv/Trilateraci%C3%B3nManhattan.pdf?dl=0

PROYECTO REALIZADO POR:

Francisco Becerra Letrán
Alejandro Braza Barba
Miguel Fontanilla Pérez de Tudela      
Ismael Martín Saldaña
Alberto Fuentes Muñoz

Saludos.

favicon