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

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.

17 de enero de 2012

Probando un adaptador USB/MPI chino

Recientemente, en el foro de Siemens en infoPLC, me enteré de la existencia de un adaptador USB/MPI muy económico que se vende a través de ebay, total que hemos comprado uno. El pedido tardó unas tres semanas en llegar (dentro del plazo que especifica el vendedor). En el paquete venía el adaptador y un mini CD con los controladores:

(pulsar encima para ampliar)

La primera impresión es bastante lamentable, leer For SEMIES S7-300 no hace presagiar nada bueno. El cable mide unos tres metros y el adaptador en sí apenas tiene peso. La carcasa tampoco parece muy sólida y lo primero que he hecho es abrirla para curiosear la electrónica:

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:


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.

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.

15 de marzo de 2011

Accediendo a un PLC Siemens desde Visual Basic: LIBNODAVE

Libnodave es una biblioteca libre de funciones para comunicar con PLC Siemens, utilizando adaptadores MPI/PPI o Ethernet. Está disponible para descarga directa aquí y viene con el código fuente, programas de prueba, bibliotecas para Linux, Windows (32 bits), .NET y ejemplos. Para programar podemos elegir una gran variedad de lenguajes y entornos: C, C++, C#, Delphi, Pascal, Perl, Visual Basic y Visual Basic for Aplications.

Para probarlo voy a partir de la configuración que tengo hecha de las dos entradas anteriores en las que comunicaba un S5-95U con un 315-2DP por Profibus. Ahora lo que pretendo es conectarme desde mi ordenador al S7-300 para visualizar, en una aplicación en Visual Basic, las lecturas que hago de la periferia integrada del S5.

Para comunicar mi PC con el 315-2DP tengo un adaptador serie/MPI de Siemens referencia 6ES7901-2BF00-0AA0. No viene en la lista de adaptadores probados en la página de Libnodave pero ha funcionado bien, incluso a través de un adaptador USB/serie de la marca Prolific.

Para clarificar, en el siguiente esquema represento el conexionado que tengo entre los diferentes elementos:

Lo que voy a hacer en este proyecto es una aplicación en Visual Basic 2010 Express a la que voy a incorporar la biblioteca Libnodave para leer y escribir en el bloque de datos donde interactúo con la periferia del S5-95U: lo único que hará mi aplicación es leer y escribir en el DB10 del 315-2DP.

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.

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.

20 de noviembre de 2010

Ejemplo de control de un cilindro neumático de doble efecto en Step7

El cilindro neumático de doble efecto es el actuador al que más veces me habré enfrentado; no exagero si digo que el 80% de las salidas digitales que he programado han sido para controlar algún cilindro neumático de este tipo.

Para comandar el cilindro se pueden elegir diversos tipos de electroválvulas, las más habituales son las de dos posiciones (monoestables o biestables) o tres posiciones (centros cerrados o centros a escape).

Su programación casi siempre sigue las mismas pautas, así que he programado un bloque de función (FB) donde está todo el código repetitivo. Aquí cada programador tiene sus propias manías y preferencias, el código que pongo a continuación es el que me resulta más cómodo, pero supongo que para otros no será la mejor solución.

13 de octubre de 2010

Programación de un Sinamics S120 en un PLC S7-300 (parte 2ª y última)

Entrada anterior aquí.

En este ejemplo voy a usar el modo MDI (Manual Data Input), que es la manera más sencilla de posicionar un eje en Sinamics. Los parámetros de posicionamiento (velocidad, posición de destino -modo absoluto- o distancia de desplazamiento -modo relativo- e incluso aceleraciones) se le pasan desde el PLC, y se activan con el comando Start.

Si necesitamos una programación más elaborada, tenemos a nuestra disposición el modo de bloques de desplazamiento (traversing blocks), en el que se pueden programar hasta 64 secuencias de movimiento que se pueden ejecutar secuencialmente o según cualquier otro criterio programable, pero en mi aplicación no es necesario.

Para empezar debemos habilitar el eje (esta señal debe ponerse a cero y luego a uno después de un error en el Sinamics):


Para saber si tenemos el servomotor listo:

10 de octubre de 2010

Programación de un Sinamics S120 en un PLC S7-300 (parte 1ª)

En esta entrada hablé de cómo configurar un Sinamics S120 controlado por un PLC S7-300. Como bien me apuntan en un comentario, falta hablar de cómo hacer la programación en el S7-300, así que voy a ello.

Lo primero es ir a la página de Siemens y descargar el Toolbox SINAMICS S120, que es un fichero en formato zip que incluye un proyecto de Step7 con un interface programado para Sinamics S120; también incluye documentación (en inglés y alemán).

La lectura de la documentación es obligada, porque dependiendo de como queramos manejar nuestro servomotor debemos seguir unos pasos u otros. En esta entrada voy a describir como he hecho la programación para manejar un eje en posicionamiento absoluto. Básicamente, lo que voy a hacer desde el PLC es:
  • puesta en condiciones de funcionamiento
  • referenciado (homing)
  • posicionado a una velocidad dada

7 de septiembre de 2010

Los contadores de horas de funcionamiento (run-time meters) de los S7-300/400

Los PLC de Siemens de las series S7-300 y S7-400 (y también el WinAC) vienen equipados con contadores de horas de funcionamiento (CHF). Se trata de temporizadores con una resolución mínima de una hora, aunque su formato no es como un temporizador Simatic: se almacenan en enteros con signo de 16 ó 32 bits y puede haber uno o varios, dependiendo del modelo de PLC. Por ejemplo, un PLC 313C-2DP viene equipado con uno de 32 bits, el WinAC tiene ocho de 16 bits, etc.

En la información del módulo del PLC 313C-2DP podemos ver su contador de horas de funcionamiento:


Ocho contadores de horas de funcionamiento de un sistema WinAC:


Si los CHF son de 16 bits podemos contabilizar como máximo 32 727 horas, que son unos 3,7 años, lo cual puede quedarse corto, problema que no existe con los de 32 bits. Podemos usarlos para, por ejemplo, contabilizar las horas que está el PLC en funcionamiento, las horas que está funcionando en modo automático o, lo que en mi opinión sería su uso más lógico, saber las horas de trabajo efectivo de la máquina.

2 de agosto de 2010

Contando en Step7

En mis programas de Step7 siempre he hecho un uso muy escaso de las funciones integradas de contaje. De hecho, cuando necesito contar, suelo recurrir a hacer mi propio contador ad hoc. En mi opinión, las instrucciones de contaje Simatic no resultan muy útiles, tienen su propio formato en BCD y su mayor limitación reside en su limitado rango de contaje, de 0 a 999. Si necesitamos contar más siempre se pueden encadenar dos o más contadores, pero no es muy práctico tener un contador repartido entre varias variables.

Otra opción que tenemos es utilizar contadores según la norma IEC 1131–3, que en Step7 están implementados como bloques de función de sistema (SFB) en la biblioteca Standard Library, bajo el apartado System Function Blocks. El SFB0 "CTU" sirve para contar hacia adelante, el SFB1 "CTD" para contar hacia atrás y el SFB2 "CTUD" para contar en ambos sentidos. El tipo de variable de contaje es un entero de 16 bits con signo (INT) lo que nos da un rango entre -32 768 y 32 767. En la ayuda de Step7 vienen perfectamente documentados. Aunque este rango nos permite un mayor juego, se me antoja que para muchos posibles usos se queda corto. Por ejemplo, una aplicación típica sería un contador de piezas en una máquina: es habitual llevar la cuenta de piezas buenas y piezas malas, la cantidad de piezas procesadas según su referencia, etc. Y ciertamente en una aplicación así el rango de contaje podría ser mayor, con la posibilidad de contar, dependiendo de la máquina, incluso millones.

No existe en Step7 un contador que tenga un rango de 32 bits, o por lo menos yo no he encontrado ninguna referencia, así que tengo mi propio bloque de función (FB) que uso para poner contadores de piezas en mis máquinas. Está programado en AWL y el código es muy sencillo:

6 de julio de 2010

La protección KNOW HOW de Step7

Es habitual en los proyectos de Step7 que ciertos bloques de programa estén protegidos, sobre todo si usamos bloques de bibliotecas de Siemens. Por ejemplo, los bloques que entrega Siemens para manejar una CP340 están protegidos:


Si intentamos abrirlos nos saldrá el mensaje:


Estos bloques tienen activada la protección KNOW HOW y tan solo nos permite ver la interfaz del bloque (parámetros IN, OUT e IN/OUT) y su comentario general. Sin embargo, el código del bloque, las variables estáticas y temporales, y los comentarios de los segmentos son inaccesibles.

Nosotros también podemos proteger nuestros bloques de programa. En la página web de Siemens está explicado, el procedimiento es sencillo y voy a poner un ejemplo.

21 de junio de 2010

Temporización en Step7 sin usar temporizadores SIMATIC

El número de temporizadores SIMATIC que tenemos disponibles programando en Step7 está limitado, depende de cada modelo de PLC. Por ejemplo, para un 312C tenemos 128 temporizadores, para un 313C-2DP son 256, etc. Esto es suficiente para la mayoría de las aplicaciones, pero puede ocurrir que necesitemos más. Como solución existen varias alternativas. Una sería usar temporizadores según la norma IEC, que en Step7 vienen implementados como funciones del sistema integradas (SFB). Dicha norma define dos tipos de temporizadores, TON y TOF, que no son más que un retardo a la conexión (SFB4) y retardo a la desconexión (SFB5), respectivamente. Para utilizarlos los tenemos disponibles en la biblioteca 'Standard library', bajo 'System Function Blocks'. Podemos usar tantos como queramos, pero teniendo en cuenta que para cada temporizador será necesario declarar un bloque de datos (DB) de instancia, lo cual ocupa memoria (58 bytes por cada temporizador exactamente).


Estos temporizadores no usan el formato de tiempo S5TIME propio de Step7, sino que usan el formato TIME según la norma IEC. Este formato no es más que un entero doble con signo (32 bits) donde se almacena el tiempo en milisegundos. Para saber más sobre su funcionamiento, en la ayuda de Step7 vienen perfectamente documentados.

Pero existe otra opción para realizar temporizaciones. En Step7 tenemos la función del sistema SFC64 TIME_TCK (time tick), con la que se puede leer el cronómetro del sistema de la CPU. Esto nos da la opción de construir nuestro propio temporizador a medida y es lo que voy a hacer a continuación.

21 de mayo de 2010

Temporización discontinua en Step7

Supongamos que tenemos que controlar la dosificación de un líquido que debe producirse durante un tiempo preciso. Además, existe una barrera que, al interrumpirse, bloquea la salida del líquido y, al liberarse, debe seguir dosificando el tiempo restante. Está claro que hay que usar un temporizador. En Step7 existen cinco clases de temporizadores:
S_IMPULS ó SI -> Impulso
S_VIMP ó SV -> Impulso prolongado
S_EVERZ ó SE -> Retardo a la conexión
S_SEVERZ ó SS -> Retardo a la conexión con memoria
S_AVERZ ó SA -> Retardo a la desconexión
Cada temporizador tiene dos instrucciones posibles para lanzarlo: la corta (SI, SV, ...) en la que simplemente especificamos el tiempo de temporización y la larga (S_IMPULS, S_VIMP ...), en la que además podemos parametrizarlo.