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:


La siguiente señal nos mostrará si existe algún fallo en el Sinamics:


Y podemos leer el código de dicho error para saber qué pasa:


Cada vez que borro los errores del servomotor sobrescribo los comandos de escritura en el DB del eje (venía así en un ejemplo de Siemens):


Si hay un fallo presente, con el siguiente segmento lo borro:


Hasta aquí el control básico del estado de Sinamics. Ahora voy a mostrar el código del referenciado (homing). Previamente debemos configurarlo con el Simotion Scout, o en su defecto con Starter:



El comando para realizar un referenciado podría ser algo como esto:


La leva de referenciado está conectada a una entrada digital del PLC, con la siguiente instrucción se la pasamos al Sinamics:


También podríamos prescindir de los dos comandos anteriores y forzar el referenciado en la posición actual del eje activando el siguiente comando (en mi caso no me interesa y lo mantengo desactivado):


El Sinamics nos informa de si está referenciado con la siguiente señal:


Hasta aquí todo lo necesario para referenciar. Puede resultar interesante poner un par de botones en el HMI para mover el eje manualmente y para esto tenemos el modo JOG:


Al igual que el referenciado, el modo JOG se configura con el Simotion Scout (o Starter):


Ah, y no olvidemos configurar los finales de carrera que nos limitan el recorrido seguro del eje:


Una vez referenciado el eje podemos realizar posicionamientos absolutos. El procedimiento es escribir los parámetros para realizar el movimiento, mandarlos al Sinamics, esperar que el Sinamics nos diga que lo ha entendido y finalmente dar el comando Start.

Primero escribimos el número de parámetro 30 000, que significa que vamos a enviar una secuencia de desplazamiento individual y un uno al subíndice de parámetro:


Preseleccionamos los parámetros que se van a transferir, en mi caso posición y velocidad:


Y cargamos la posición y velocidad deseados:


Activamos el bit de escritura:


Ahora debe activarse el bit que nos indica que la transferencia de parámetros está en marcha (busy):


Solo nos queda esperar a que la transferencia se haya completado sin error:


Ya le hemos dicho al eje qué tiene que hacer, nos falta darle la orden para iniciar el movimiento (start):


Si una vez iniciado el movimiento necesitamos interrumpirlo, podemos usar un segmento como este:


Para saber que el eje completó el movimiento compruebo que está en la cota deseada y que está detenido y sin error:


Pero para ello necesitamos saber previamente la posición del servomotor, y para leerla lo primero es saber en que parámetro se almacena; en la documentación vemos que es el parámetro 2521, y lo indicamos junto con el subíndice cero:


Una vez hecho esto se activa el bit de lectura:


Mientras la lectura esté en marcha se activará el bit busy:


y sabremos que ha finalizado si no existe error y con el bit done:


Una vez sabemos que la lectura ha concluido sin error podemos leer el valor de posición del eje:


Como última advertencia debemos saber que no es posible realizar una lectura y una escritura de datos simultáneamente, mientras estemos leyendo debemos inhabilitar la escritura y viceversa.

Y hasta aquí la programación del control de un posicionado simple de Sinamics S120 desde un S7-300.

Como siempre, agradeceré cualquier comentario.

22 comentarios:

  1. Gracias por la imágenes, de la forma como se puede programar el movimiento de posicion de una sinamics...un gusto en conocerle

    ResponderEliminar
  2. GENIAL, al parecer si funciona gracias por el aporte

    ResponderEliminar
  3. NO TIENES MAS EJEMPLOS??

    ResponderEliminar
  4. Hola amigo anónimo. Sobre Sinamics S120 no tengo más ejemplos, de hecho solo he trabajado con el que hice pruebas para la entrada del blog.

    Un saludo.

    ResponderEliminar
  5. EL PROGRAMA QUE REALIZASTE SOLO LO HICISTE EN EL MAIN PRINCIPAL (0B1)?, AL PARECER ESTA DIVIDO EN SUBRUTINAS NO ES ASÍ?
    ESTE PROGRAMA LO QUIERO APLICAR CON UN S7-1200, PERO QUISIERA SABER SI ES SECUENCIAL O NO

    SALUDOS

    NILS

    ResponderEliminar
  6. En esta entrada pongo cómo hacer cosas concretas, es un resumen de todos los pasos que di en su día en la programación de un Sinamics S120.

    Mi programa estaba dividido en varios FC adaptados a la estructura de mi proyecto. Debes adaptarlo a tu forma de programar.

    Un saludo.

    ResponderEliminar
  7. Muy buenas aportaciones GR, te felicito, para mi gusto tienes el trabajo ideal!

    ResponderEliminar
    Respuestas
    1. Gracias. Pero cuando llevas unos meses trabajando unas 12 horas diarias, sábados, domingos y festivos incluidos, recluido en una nave industrial, te planteas si este es el trabajo ideal ;)

      Eliminar
    2. Hola. Yo pase mis mejores años asi......y a los 45 me di cuanta de que, quizas no haya merecido la pena. con esto no quiero decir nada. Cada uno que lo valore. Gr, gracias por todo, eres muy bueno en esto y se lo que digo. Un saludo

      Eliminar
  8. hola, este ejemplo me va a servir usando una cp 342-5?, gracias.

    ResponderEliminar
  9. Hola que interesante programa, voy a programar algo parecido solo que con varias posiciones, podrias subir el .zip del codigo, te lo agradeceria mucho.

    ResponderEliminar
    Respuestas
    1. El código está integrado en un proyecto de mi empresa. Por lo general el código específico de cada entrada lo suelo preparar en un proyecto aparte, pero cuando escribí esta entrada no tuve ocasión.

      Siento no poder mandártelo, no creo que a mi jefe le guste que vaya pasando copias de nuestros proyectos.

      Un saludo.

      Eliminar
  10. A ok de todas formas gracias, me sirvio mucho esta giua.Bueno ahora solo tengo un problema, al momento de darle el comando start ya cuando cargue los parametros de posicion y velocidad, el servo no se mueve, pero no me manda error solamente se queda detenido,podrias decirme que podria estar sucediendo? gracias.

    ResponderEliminar
  11. buenas tardes GR, me puedes explicar un poco a detalle el homing activo dentro del sinamics, no alcanzo a entender completamente como es la secuencia que realiza (incluidos los valores que se mencionan (posicion offset, tolerance zero mark, max distance to zero mark, etc)

    gracias de antemano.

    ResponderEliminar
  12. GR podrias darme una guia de como hacer un control de un S7-300 y el Sinamics S120 via traversing blocks, estoy realizando un proyectos que consta de lo siguiente:

    El servo controla dos motores con diferentes movimientos (es tedioso pero lo pude hacer), me falta poderlo comunicar con el S7-300 y con un HMI, te agradeceria de antemano una pequeña guia con respecto a mi consulta.

    SALUDOS

    NILS

    ResponderEliminar
    Respuestas
    1. Que tal NILS, en si que es lo que te falta para poderlo comunicar, ¿que cpu tienes?

      Acabo de hacer una aplicación con esas cualidades.

      Saludos.

      Eliminar
  13. COMO ESTAS LALO, LA CPU ES UNA 313C-2DP, EL SERVO ES UN SINAMICS S120 Y EL HMI ES UN KTP 600 VERSION PROFIBUS, SI TIENES ALGUNA AYUDA TE LO AGRADECERIA BASTANTE, QUIERO VER LA POSIBILIDAD DE HACERLO CON UN S7-1200, POR SIACASO MI CORREO ES nils_automation@hotmail.com

    ResponderEliminar
  14. Un gran trabajo y de gran ayuda. Esto no lo consigue siemens con todo su rollo de manuals que no hacen mas que liarte. Gracias

    ResponderEliminar
  15. Que tal Ing. no se si me pueda ayudar con otra duda que tengo, el programa para el accionamiento de mis eje es muy similar al del ejemplo que publico, aun no inicia la puesta en marcha pero me gustaría saber que si para hacer movimientos manuales solo es necesario que active los bit de los JOG o se requiere alguna configuración extra, tal ves activar el bit de escritura previamente o des activarlo des pues de utilizarlo o algo por el estilo

    Saludos y gracias

    ResponderEliminar
  16. Tengo una consulto como se podria resetear el encoder a 0 , mi intencion es que lo controlo con MDI y cada vez que llegue a la posicion resetear el encoder a 0. Un saludo.

    ResponderEliminar

Por favor, no pidas copias de programas comerciales, licencias o números de serie.