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.















Gracias por la imágenes, de la forma como se puede programar el movimiento de posicion de una sinamics...un gusto en conocerle
ResponderSuprimirGENIAL, al parecer si funciona gracias por el aporte
ResponderSuprimirNO TIENES MAS EJEMPLOS??
ResponderSuprimirHola 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.
ResponderSuprimirUn saludo.
EL PROGRAMA QUE REALIZASTE SOLO LO HICISTE EN EL MAIN PRINCIPAL (0B1)?, AL PARECER ESTA DIVIDO EN SUBRUTINAS NO ES ASÍ?
ResponderSuprimirESTE PROGRAMA LO QUIERO APLICAR CON UN S7-1200, PERO QUISIERA SABER SI ES SECUENCIAL O NO
SALUDOS
NILS
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.
ResponderSuprimirMi programa estaba dividido en varios FC adaptados a la estructura de mi proyecto. Debes adaptarlo a tu forma de programar.
Un saludo.
Muy buenas aportaciones GR, te felicito, para mi gusto tienes el trabajo ideal!
ResponderSuprimirGracias. 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 ;)
SuprimirHola. 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
Suprimirhola, este ejemplo me va a servir usando una cp 342-5?, gracias.
ResponderSuprimirCUAL ES EL OFF1/2/3? GRACIAS!!
ResponderSuprimir