Mostrando entradas con la etiqueta Siemens. Mostrar todas las entradas
Mostrando entradas con la etiqueta Siemens. Mostrar todas las entradas

4 de mayo de 2017

Una función de bloque (FB) para el registro de datos en PLC Siemens

En la entrada anterior expliqué cómo dibujar una gráfica en HMI con los datos almacenados en un bloque de datos (DB) en un PLC. Ahora voy a centrarme en la captura de datos en el propio PLC y para ello he desarrollado una función de bloque que recoge todo el proceso de captura.

Realizar la captura de datos de un proceso puede resultar un tema complejo ya que debemos tener en cuenta todos los factores en juego, tales como la velocidad de adquisición o la capacidad de almacenamiento disponible. La forma óptima y con la que obtendremos el mejor rendimiento es usar bloques de organización (OB) de interrupción por tiempo "Cyclic interrupt", en los que a intervalos regulares se leen las señales a analizar. En los nuevos PLC de la gama 1500 de Siemens he visto que se pueden programar OB de interrupción por tiempo con periodos de 500 μs en adelante.

En los veteranos S7-300 estos OB tienen un periodo de interrupción más largo, pueden empezar, según modelo, en el rango de 100 o 200 ms en adelante.

Sin embargo esta no es la estrategia que voy a seguir en este ejemplo, ya que el FB que he programado se llamará en el ciclo principal del PLC. Por tanto lo primero de lo que debemos asegurarnos es que el tiempo de ciclo de nuestro programa es suficiente para registrar los datos del sistema. Por ejemplo si tenemos una señal analógica proveniente de una célula de carga cuyo conversor analógico/digital tiene un tiempo de actualización de 100 ms y el tiempo de ciclo de nuestro PLC es de unos 15 ms, entonces no habrá problemas con la captura de datos.

NOTA: es importante señalar que el tiempo de ciclo de un PLC no es un valor constante y depende de la carga de programa en cada ciclo. Por lo general será suficiente asegurarse de que, mientras esté la captura de datos en marcha, no se requieran tareas pesadas al PLC tales como bucles FOR o WHILE largos.

Otro elemento a tener en cuenta es la cantidad máxima de datos a almacenar. Mi objetivo es la representación de los datos en una gráfica en un panel de Siemens y el número máximo de elementos que puede tener una tabla para ser enlazada desde el panel al PLC es de 1600 valores. Si se toma un dato en cada ciclo de scan del PLC las tablas de datos se llenan en pocos segundos, así que es necesario discriminar los datos a guardar cada cierto intervalo o el máximo valor de cada intervalo, por ejemplo.

Teniendo todo esto en cuenta he preparado un FB que utilizo cuando tengo que hacer un registro de datos. Una llamada a dicho FB tiene el siguiente aspecto:


El funcionamiento es el siguiente: cuando la señal de habilitación está activa y la Señal X se encuentra entre el Valor mínimo (X) y Valor máximo (X) se procede a la captura de datos, indicado con la salida Capturando. Cada vez que la Señal X se incremente en un Paso mínimo (X) se almacenará un nuevo dato en la tabla, salvo que esté activada la opción Guardar máximos (Y), en cuyo caso el valor que se guardará será el máximo para la Señal Y dentro del intervalo definido por el Paso mínimo (X). Una vez finalizada la captura de datos, bien porque la Señal X haya salido de la ventana de valores mínimo y máximo o porque haya caído la señal de habilitación, se activará la salida Listo durante el tiempo especificado en Tiempo pulso fin lectura. El número de puntos almacenados en las tablas lo tenemos en la salida Puntos y si se alcanza el límite de datos posible se activa la señal Desbordamiento. Para repetir una captura de datos será necesario dar un pulso a la señal de Reinicialización antes de volver a habilitar la captura.

Los datos se almacenan en tablas que deberemos crear en un bloque de datos (DB) aparte y deberán tener el formato Array[0..1599] of Real. Se pasan al FB como parámetros InOut, y al ser un tipo de datos estructurado se pasan como puntero, con lo que no se desperdicia memoria duplicando las tablas, tal y como viene explicado en la documentación:

24 de abril de 2017

Gráfica X/Y en HMI Siemens a partir de puntos almacenados en un bloque de datos (DB)

Si utilizamos un PLC Siemens para realizar una captura de datos y después pretendemos realizar una gráfica con estos datos en un panel táctil de Siemens (un Comfort Panel por ejemplo), veremos que la cosa no es tan sencilla.

Los controles para mostrar gráficas en los sistema HMI de Siemens parecen estar pensados para que el propio sistema HMI haga la captura de datos para su representación, como queriendo liberar al PLC de esta tarea. Sin embargo el limitado ciclo de adquisición que tienen estos sistemas nos limitan a procesos con una dinámica lenta, en los que registrando un punto cada varios segundos sea suficiente. Si es necesario registrar un proceso más rápido deberá ser el PLC el que se haga cargo, guardando, por ejemplo, los datos en tablas en un bloque de datos (DB), pero entonces se plantea el problema de cómo llevar estos datos al control de visualización de gráficas.

En esta entrada voy a explicar cómo representar en un control "Visor de curvas f(x)" datos almacenados en un bloque de datos en un PLC. Me he basado en un ejemplo que me facilitó un técnico de Siemens, aunque yo lo he elaborado un poco más.

La idea general será que el control "Visor de vurvas f(x)" permite ser configurado para obtener los datos de un fichero de texto en formato CSV, y como desde un script podemos crear ficheros de texto y además tenemos acceso a las variables del PLC, programaremos uno que vaya leyendo los datos almacenados en el bloque de datos y escribiéndolos en un fichero CSV digerible por el control "Visor de curvas f(x)".

11 de abril de 2017

Unas notas sobre las novedades para programar controladores S7-1500 en TIA Portal

En estos últimos años me he dedicado casi en exclusiva a programar PLC de Siemens con el software de ingenería TIA Portal, desde la versión 12 a la última 14. Al principio controladores de la gama S7-300 pero, además, he empezado a utilizar la nueva gama S7-1500, que traen un cambio importante de tecnología. Aunque la programación de los antiguos S7-300/400 sirve para los nuevos S7-1500, mantener las mismas constumbres de programación nos hará desaprovechar muchas de las importantes mejoras que traen estos últimos.

Para ponernos al día sobre todas las posibilidades Siemens pone a nuestra disposición abundante documentación que nos servirá de orientación. En esta entrada haré un resumen de las ideas y conceptos que más me han llamado la atención y que me han parecido más interesantes. A continuación tenéis una serie de enlaces donde podemos acceder a la fuente de esta documentación en la propia página de Siemens:
Lo primero que tengo que decir es que si tenemos un proyecto en TIA Portal con un S7-300 y tenemos que migrarlo a un S7-1500 el proceso es muy sencillo. Yo habré migrado media docena de proyectos con distintas configuraciones y no he tenido ningún problema, ya que todas las capacidades de un S7-300 están soportadas por un S7-1500. Sin embargo, al hacer ésto estamos desaprovechando las nuevas características que nos ofrece el 1500, como son, por ejemplo, los bloques optimizados.

1 de febrero de 2014

Realizar un autotuning de los parámetros de un regulador con Simotion Scout

Para que un servomotor funcione correctamente y con la máxima eficiencia se debe realizar un ajuste de los parámetros del lazo de regulación. Para facilitar esta operación, el software de ingeniería Simotion Scout (supongo que en Starter será similar) viene preparado para realizar un ajuste automático de estos parámetros, operación también llamada autotuning.

En esta entrada voy a detallar los pasos que he dado para realizar un autotuning en un motor controlado por un Simotion D435.

El primer paso será poner la máquina donde está instalado nuestro servomotor en orden de trabajo, puertas cerradas, setas de emergencia desenclavadas, barreras inmateriales libres y demás seguridades listas y rearmadas. En mi caso el servomotor está acoplado a un husillo, así que manejando la máquina desde el panel de operador (o el método de manejo que tenga) llevo el eje a la mitad de su recorrido, aproximadamente. Esto es necesario ya que durante el autotuning el servomotor va a dar varias vueltas y si lo dejamos cerca del límite de recorrido es posible que lo sobrepase. 

13 de abril de 2013

Un vistazo al entorno de programación Simotion Scout - El árbol de proyecto


En la entrada anterior dejamos nuestra CPU D435-2 DP/PN con una configuración mínima. Ahora, antes de entrar a preparar ejes y realizar la programación, voy a hacer un repaso (no muy exhaustivo) del entorno Simotion Scout.


A la derecha está el árbol de proyecto (Project navigator) donde tendremos acceso a los diferentes componentes. Desplegando la CPU D435 podemos ver en primer lugar el conector de entradas/salidas digitales X142. Haciendo doble clic sobre él podemos cambiar su direccionamiento:

11 de abril de 2013

Primer contacto con un Simotion D435-2 DP/PN


Estoy involucrado en el proyecto de una máquina que va a llevar como control un Simotion D435-2 DP/PN. Aprovechando que me acaba de llegar la CPU voy a escribir una serie de entradas sobre como realizar su conexión, configuración y programación.

El manual de referencia que he consultado para la elaboración de esta entrada es el llamado SIMOTION D4x5-2 Commissioning and Hardware Installation Manual, disponible en formato PDF aquí. Para buscar más manuales sobre Simotion se puede seguir el siguiente enlace.

Para realizar estas pruebas el único material que voy a necesitar es una fuente de 24VDC, la tarjeta Compact-Flash que trae el firmware y las licencias, un cable ethernet, y la propia CPU.

Coloco la CPU sobre mi mesa y le instalo en la parte inferior el ruidoso ventilador que viene en el mismo embalaje, sin el cual el Simotion dará error. Quito la tapa azul inferior y alojo la tarjeta Compact-Flash en su ranura. Levanto la carcasa y en el conector X124 alimento a 24VDC. Finalmente conecto un cable ethernet entre la toma marcada con PN/IE X127 P1 en el frontal de la CPU y mi portátil. Doy tensión a la fuente y ya tengo todo lo necesario para hacer mis pruebas. El conjunto tiene sobre mi mesa el siguiente aspecto:


Para programar esta CPU voy a utilizar el software de ingeniería Simotion Scout V4.3.1.3 que tengo instalado en una máquina virtual bajo VirtualBox.

21 de enero de 2013

Una aplicación para importar tags de Step 7-Micro/WIN a WinCC Flexible

Actualmente estoy implicado en automatizar una máquina en la que vamos a montar un PLC Siemens S7-200, concretamente una CPU 224, y como HMI un panel también Siemens modelo OP73.

A diferencia de la gama S7-300, no es posible tener integrado en un mismo proyecto el programa del PLC y el programa de la pantalla, con lo que los tags (variables) que deben compartir se deben introducir manualmente. Para hacer esta tarea más sencilla, y aprovechando las opciones para importar tags que tiene el software de programación de paneles WinCC Flexible, he hecho una sencilla aplicación en Visual Basic que me permitirá copiar y pegar tags desde Step 7-Micro/WIN y guardarlos en un fichero en formato CSV que aceptará sin problemas WinCC Flexible.

Al ejecutar la aplicación veremos la siguiente ventana:


6 de julio de 2012

Midiendo el tiempo de arranque de una máquina con un script en WinCC Flexible

Hace ya unas semanas un lector me hizo una consulta sobre cómo medir el tiempo de arranque de una máquina con un script en WinCC Flexible. En su momento no tuve tiempo de responderle, pero he hecho una prueba y aprovecho para publicarla en el blog.

Lo que se pretende es visualizar en una pantalla el tiempo de arranque de una máquina. No existe la posibilidad de modificar el programa PLC, con lo que toda la programación deberá hacerse sobre WinCC Flexible.

Con este planteamiento lo primero es localizar dos variables en el programa PLC que nos sirvan para identificar los momentos de inicio y fin de arranque. Para mi ejemplo he enlazado dos variables llamadas INICIO_CICLO y FIN_CICLO que cumplirán esta función y mediante dos botones desde el HMI simularé su activación. También crearé con formato Long tres variables internas, una para el tiempo de inicio (TIEMPO_INICIAL), otra para el tiempo final (TIEMPO_FINAL) y la tercera para la diferencia entre ambos (TIEMPO_MEDIDO), que será el tiempo de arranque buscado.


Estas variables deberemos enlazarlas desde el HMI, seleccionando en su configuración Ciclo continuo y ajustando el Tiempo de adquisición al más bajo posible: 100 ms. Así el panel estará leyendo cada 100 ms el valor de estas variables desde el PLC. Por lo tanto es importante que estas variables en el PLC estén activadas durante más de 100 ms.

16 de enero de 2012

Modificando tiempos en un PLC S7 desde WinCC Flexible RT

Recientemente me ha tocado actualizar el programa de una máquina que llevaba un panel táctil realizado en ProTool. En este proyecto hay una serie de tiempos configurables desde el panel y me llamó la atención que estaban enlazados a variables en formato WORD, haciendo la conversión a formato S5TIME en el PLC, con segmentos como el siguiente:


El valor se recibe en un WORD, se copia en un INT, que vuelve a ser un WORD después de la instrucción I_BCD, se le añade la base de tiempo con la instrucción WOR_W, para finalmente moverlo a la variable en formato S5TIME definitiva.

No es la primera vez que me encuentro con conversiones similares, pero como no estaba del todo seguro de cómo trata WinCC Flexible directamente las variables de tipo S5TIME, pues nada mejor que hacer una sencilla prueba.

26 de diciembre de 2011

Probando un servomotor Posmo A para posicionamiento simple (parte 2ª)

Habiendo dejado en la entrada anterior el Posmo configurado, ahora toca realizar un proyecto en Step7 para controlarlo. Como maestro Profibus voy a usar un PLC S7-315-2DP al que voy a conectar una tarjeta simuladora de entradas / salidas digitales para dar las órdenes necesarias al servomotor y visualizar su estado.


Alimento el PLC y el servomotor, conecto el cable Profibus entre ambos y al borne 1 del servomotor un detector inductivo que hará las veces de leva de referenciado.

Ejecuto el Administrador Simatic y creo un proyecto vacío. Inserto un equipo Simatic 300 y abro la configuración hardware. Inserto mi referencia de PLC, la tarjeta simuladora, creo una red Profibus y finalmente añado el Posmo, con lo que me quedaría algo como esto:


23 de diciembre de 2011

Probando un servomotor Posmo A para posicionamiento simple (parte 1ª)

El Simodrive Posmo A es un servomotor de Siemens que hemos montado en multitud de ocasiones. Es sencillo de configurar y programar, y siempre ha dado buen resultado, destacando su fiabilidad. Aprovechando que tengo uno por aquí (referencia 6SN2132-1BC11-1BA1) voy a dedicarle una entrada.

El Posmo A sobre mi mesa preparado para hacer pruebas.
Lo primero que llama la atención es que lleva incorporado el regulador, formado un bloque compacto. Se alimenta con corriente continua, 24 o 48 V según versiones. Como interface de comunicaciones tiene un puerto Profibus. Bajo la tapa lleva unos microinterruptores donde ajustaremos la resistencia terminadora de red y la dirección Profibus. También tiene un bornero donde podremos realizar alimentación separada de electrónica y potencia, y un par de entradas / salidas configurables.

3 de octubre de 2011

Accediendo a un PLC Simatic a través de ethernet con Libnodave

En esta entrada usé la biblioteca libre Libnodave para acceder a un PLC S7-300 desde Visual Basic a través de un adaptador serie/MPI. Varios lectores me hicieron consultas sobre si era posible usarla para acceder a un PLC S7-300/400 a través de ethernet, pero al no tener disponible un controlador adecuado para hacer pruebas pues no tenía respuesta. Sin embargo, de la entrada anterior tengo preparada una máquina virtual con WinAC RTX y su puerto ethernet como puerto de comunicaciones, que creo que es un banco de pruebas ideal para hacer pruebas con Libnodave.

Lo primero que voy a hacer es un proyecto en Step7 con un único DB, por ejemplo el DB10, con un único dato de formato BYTE. Lo transferiero al WinAC y pongo el PLC software en modo Run. Me pongo on line y monitorizo la variable.


En el PLC no voy a tocar nada más. A continuación lo que haré será una aplicación en Visual Basic, usando la biblioteca Libnodave a través de ethernet, que se conectará al PLC y leerá y escribirá en esa variable como prueba que el sistema funciona.

30 de septiembre de 2011

Virtualizando WinAC RTX, el PLC software de Siemens

Después de estar trabajando con el SoftLogix de Rockwell sobre máquinas virtuales, me he preguntado si sería posible hacer funcionar al equivalente en Siemens, el WinAC RTX, en las mismas condiciones. Así que me he puesto manos a la obra y he instalado sobre una máquina virtual en VirtualBox con Windows XP el paquete Simatic NET V7.1 + SP1 y WinAC RTX V4.4 + SP1 con su correspondiente licencia. Toda la instalación transcurrió sin problemas:

WinAC RTX ejecutándose sobre una máquina virtual (pincha sobre la imagen para verla mejor)

Ahora el problema es poder configurarlo y programarlo desde otro equipo a través del puerto ethernet. En la web de Siemens hay una guía para hacerlo, está bastante clarita y los pasos que voy a ir explicando están basados en ella.

29 de marzo de 2011

Empezando con Rockwell: un vistazo desde Step7

En vista de que pronto tendré que enfrentarme a un PLC Rockwell he estado poniéndome al día. Hace tiempo que no programo uno, el último fue un SLC 500 hace ya unos añitos. Ahora me toca uno de la serie CompactLogix, más avanzado. Aún no dispongo del software de programación RSLogix5000 para trastear con él, pero en la web de Rockwell hay abundante literatura para ir echando un vistazo.

Para alguien que, como yo, se siente cómodo programando en Step7, Rockwell tiene el documento perfecto: “Guía para conversión de aplicaciones Simatic S7 a Logix5000” cuya lectura recomiendo (está en español). Esta entrada es un pequeño resumen de este documento con las características que más me han llamado la atención.

8 de marzo de 2011

Reutilizando un PLC Simatic S5-95U como cabecera Profibus (parte 2ª)

En la primera parte dejamos al S5-95U preparado para funcionar como cabecera Profibus, ahora vamos a la parte de Step7.

Preparamos un proyecto de Step7 con un PLC 315-2DP y le asignamos una red Profibus con una velocidad de 1,5 Mbit/s (la máxima que soporta el S5-95U). En el catálogo buscamos "S5-95U" y lo arrastramos sobre la red Profibus, asignándole una dirección libre, en mi caso la 7.

Seleccionamos el componente que acabamos de insertar y copiamos el Módulo universal sobre los slots 1 y 2.

7 de marzo de 2011

Reutilizando un PLC Simatic S5-95U como cabecera Profibus (parte 1ª)

Ya que la anterior entrada he retomado el contacto con mi PLC S5-95U, voy a recuperar una vieja idea: reutilizarlo como cabecera Profibus. La idea es aprovechar su gran conectividad (entradas y salidas digitales, contadores rápidos y señales analógicas) desde un PLC más moderno, por ejemplo desde un PLC 315-2DP.

Lo que voy a hacer en esta primera parte es configurar el S5-95U para acceder a toda su periferia integrada, parametrizarlo como esclavo Profibus y hacer una sencilla programación para transmitir y recibir datos. En una segunda parte haré la integración del S5-95U en una red Profibus y el tratamiento de los datos en un S7-300.

NOTA: Aquí hice una introducción a Step5 que quedó incompleta. Esta entrada podría considerarse su continuación.

Para realizar esta entrada me he basado en este documento de Siemens: Conectar un S5-95U-DP Esclavo a un maestro CPU315-2DP.

10 de febrero de 2011

Comunicación Profibus entre un atornillador Rexroth CS351 y un PLC Siemens S7-300 (parte 2ª y última)

En la entrada anterior dejé el atornillador configurado, ahora vamos a introducirlo en la red Profibus de Step7.

EL primer paso será abrir la herramienta de configuración hardware de Step7 para instalar el archivo GSD que generamos en la entrada anterior.

Lo seleccionamos y lo instalamos. Es posible que nos pida cerrar previamente los proyectos que tengamos abiertos.

29 de enero de 2011

Comunicación Profibus entre un atornillador Rexroth CS351 y un PLC Siemens S7-300 (parte 1ª)

Recientemente me han pedido comunicar un atornillador automático CS351 de Rexroth con un PLC Siemens de la serie S7-300. La idea es seleccionar una receta a través de HMI con la secuencia de tornillos a apretar y que el PLC vaya activando el número de programa correspondiente en el atornillador, comprobando los resultados e indicando en un panel de visualización los resultados y pasos a seguir por el operario. El PLC también gestionará una sencilla maniobra neumática. En esta entrada mostraré las notas que he tomado para configurar la comunicación Profibus atornillador-PLC.

El aspecto de la unidad de control del atornillador es este (cutre-foto con mi móvil):

La unidad de atornillado con la que tengo que trabajar no viene con puerto Profibus, así que tengo que instalar una tarjeta de comunicación IMpdp.

2 de diciembre de 2010

Visualización del tiempo ciclo con Step7 + WinCC Flexible

Una de las cosas que, en mi opinión, no debe faltar en una máquina que disponga de panel de visualización, es una pantalla dedicada al tiempo ciclo. Es curioso ver como en muchas inspecciones de máquinas, el ingeniero de métodos y tiempos, cronómetro en mano, comprueba que nuestra máquina dé cadencia. Si en vez de eso, le damos una tabla de tiempos tomados de forma precisa por el PLC, le simplificaremos la labor y seguramente lo agradecerá... y ya sabemos que el ingeniero de métodos y tiempos es un tipo con el que conviene llevarse bien ;)

Nota: entiéndase tiempo de ciclo como el tiempo que transcurre desde que obtenemos una pieza terminada y la siguiente.

Para ello voy a suponer que mi máquina está comandada por un PLC S7-300 y como HMI tengo un panel táctil de Siemens como el MP277, y sobre esta base voy a programar lo que sería una visualización sencilla de los últimos diez tiempos de ciclo.

En este ejemplo el PLC calculará el tiempo ciclo y mediante una variable booleana le indicará al panel que recoja el dato. Luego el panel leerá el dato y lo introducirá en una tabla de valores, los visualizará por orden de recepción (primero el más reciente) y marcará con color verde el menor y con color amarillo el mayor. La visualización quedará tal como se muestra a continuación:


Empecemos con la programación en el PLC.

23 de noviembre de 2010

Recopilación de código de las últimas entradas de Step7

Para hacer más cómodo el acceso al código que he puesto en las últimas entradas sobre Step7, he recopilado los bloques de función (FB) de mis contadores, temporizadores y el control de cilindro de doble efecto y los he agrupado en un proyecto. Así simplemente será necesario copiar y pegar los FB para hacer uso de ellos.


El proyecto te lo puedes bajar de aquí.

Los FB que se incluyen son:

- Contadores de 32 bits (FB5, FB6, FB7 y FB8).
- Contador en un RTM (FB9).
- Temporizador sin usar temporizadores Simatic (FB11).
- Temporización discontinua (FB12).
- Control de cilindro neumático de doble efecto (FB10).

Espero que así resulte más funcional.