En este grupo En todos

Grupo de Automatización



funcion en step 7

IVAN DARIO
Ingenieria mecanica universidad pontif...
Escrito por Ivan Dario Ramirez Balcarcel
el 08/06/2009 | Nivel Avanzado

Hola compañeros quisiera saber si alguien me puede colaborar en como se monta una funcion (sea FB o FC) en step 7 para leer ciclicamente datos de un DB y que los almacene en otros.

Eri Amanau
Tecnico superior en electricidad mensi...
Escrito por Eri Amanau
el 25/06/2009 | Nivel Avanzado

Amigo Ivan estos son los bloques propios del step 7 para guardar la programacion, de igual si detallas que quiers hacer, para poder ayudarte

Ivan Dario Ramirez Balcarcel
Ingenieria mecanica universidad pontif...
Escrito por Ivan Dario Ramirez Balcarcel
el 21/07/2009 | Nivel Avanzado

Hola Eri, realmente lo que pasa es lo siguiente. Estoy trabajando en un proyecto en el cual se tiene un sistema robotico cartesiano para aplicaciones de paletización. Se tienen dos motores paso a paso, uno para el eje X y otro para el eje Y, y un servomotor para el eje Z. Estos tres motores son marca Festo, y son gobernados por un plc Siemens via prófibus; la refrencia del plc es un S7-315F 2PN/DP. Lo de los bloques FB o FC es para hacer la rutina automática, es decir, que el programa (que lo estoy haciendo en KOP) sea de forma tal que al yo activar un pulsador el sistema cumpla la funcion de ir hasta una posición, tomar la pieza (por ventosa y/o gripper) y llevarla a otra. Estas posiciones las tengo almacenadas en un DB para cada uno de los ejes (DB1 para el eje X, DB2 para el eje Y y DB3 para el eje Z). Además, debe haber por supuesto un modo manual, que cada vez que active un pulsador haga una parte del proceso, y para avanzar al siguiente pues active el mismo pulsador.

Estoy intentando con el SCL crear un FB o un FC que sea capaz de hacerme estas funciones, de leer cíclicamente los datos de los DB para este fin. No sé si me hice entender; cualquier comentario o sugerencia, le agradecería enormemente, y me puede escribir a estos correos;

Dario_447@hotmail. Com

Ffrincont@hotmail. Com


Muchas gracias, cordial saludo, Dario.

Ivan Dario Ramirez Balcarcel
Ingenieria mecanica universidad pontif...
Escrito por Ivan Dario Ramirez Balcarcel
el 03/08/2009 | Nivel Avanzado

Hola Eri, realmente lo que pasa es lo siguiente. Estoy trabajando en un proyecto en el cual se tiene un sistema robotico cartesiano para aplicaciones de paletización. Se tienen dos motores paso a paso, uno para el eje X y otro para el eje Y, y un servomotor para el eje Z. Estos tres motores son marca Festo, y son gobernados por un plc Siemens via prófibus; la refrencia del plc es un S7-315F 2PN/DP. Lo de los bloques FB o FC es para hacer la rutina automática, es decir, que el programa (que lo estoy haciendo en KOP) sea de forma tal que al yo activar un pulsador el sistema cumpla la funcion de ir hasta una posición, tomar la pieza (por ventosa y/o gripper) y llevarla a otra. Estas posiciones las tengo almacenadas en un DB para cada uno de los ejes (DB1 para el eje X, DB2 para el eje Y y DB3 para el eje Z). Además, debe haber por supuesto un modo manual, que cada vez que active un pulsador haga una parte del proceso, y para avanzar al siguiente pues active el mismo pulsador.

Estoy intentando con el SCL crear un FB o un FC que sea capaz de hacerme estas funciones, de leer cíclicamente los datos de los DB para este fin. No sé si me hice entender; cualquier comentario o sugerencia, le agradecería enormemente, y me puede escribir a estos correos;

Dario_447@hotmail. Com

Ffrincont@hotmail. Com


Muchas gracias, cordial saludo, Dario.

Juan Gavilan
Ingeníero mecatrónico itesm campus sal...
Escrito por Juan Gavilan
el 05/08/2009 | Nivel Avanzado

Ivan: Espero y esto te sirva. El FB los puedes programar con variables locales, con entradas y salidas que puedes configurar dentro del FB y haces la secuencia que quieres que se realice. Por ejemplo: si quieres que la entrada 1 (temp1) mande la posicion y velocidad al servo, como puede ser posicion 1 (temp2) la mandas a una salida 1 out 1. Despues en el FC puedes mandar llamar el FB y tendras de un lado las entradas como puede ser entrada1, posicion1 y out1, ahi colocas las entradas globales (por decir la I0. 0, DB1. DBD0 y la Q0. 0, y todo lo que programaste dentro del FB se ejecutara cada vez que tu le des las entradas y salidas que programaste. Una vez que has realizado el FB este lo puedes mandar llamar cuantas veces necesites para cada uno de los ejes siempre y cuando coloques para cada llamada del FB un DB de instancia para que no haya problemas.

Saludos y ahi estamos para cualquier cosa.

Ivan Dario Ramirez Balcarcel
Ingenieria mecanica universidad pontif...
Escrito por Ivan Dario Ramirez Balcarcel
el 06/08/2009 | Nivel Avanzado

Ok Juan, muchas gracias por tu aporte, pero es que la historia no termina ahí. Realmente he creado FBs y FCs tal y como lo dijiste, pero el gran problema es que (estoy desarrollando estos bloques es KOP) por cada línea dentro del KOP en la cual asigno una coordenada X,Y,Z para una entrada en especial, es decir, para I1, X1,Y1,Z1, para I2, pues X2, Y2, Z2.. Las entradas son cuantas posiciones yo quiera, pero salidas son solo tres, la de activar los tres motores para que vayan a las coordenadas predeterminadas. El problema es que el sistema solo obedece la última orden que le escribí, la última línea. Me explico, despues de parametrizar los FB de cada motor (con su respectivo DB de instancia), empiezo a escribir las líneas de las ordenes, si I1, entonces cargar las posiciones X1, Y1, Z1 en cada FB de cada motor, (usando el bloque de transferencia MOVE) y una vez cargado el dato, activar los tres motores. Si escribo solo esa, el sistema responde sin ningun problema, pero si añado otra linea, que para un I2, cargue datos de X2,Y2,Z2 y arranque.. Me hace esa segunda linea y la primera, cuando yo la active, ya no la hace, a pesar de que anteriormente si me dejó. Si cargo una tercera línea, pues me hace la tercera, pero ni la segunda, ni la primera no las ejecuta, a pesar de que antes hizo la segunda. Y lo peor es que pongo la cpu en ONLINE, y muestra que ejecuta el programa, todo s epone en verde, se cargan los datos, pero fisicamente los motores no se mueven, a menos que yo esté activando la última linea escrita. Conclusión, si escribo 50 lineas, es decir, 50 posiciones para 50 entradas diferentes, solo realiza la 50, de la 1 a la 49, simplemente no lo hace. Entonces, si eso pasa de una manera "manual", no tengo ni idea de cómo hacer para que ello sea automático, de manera que con solo activar una entrada, haga todas las posiciones de maneta automática.

No sé si me hice entender, o si enrredé más la cosa.. Jaja, en todo caso, mil gracias por las sugerencias, y estoy atento a cualquier otra.. Y comentarios.


Cordial saludo, Dario!