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: