Programación PL7 pro tarjeta conteo rápido

Mantis78 Mensajes publicados 7 Estado Miembro -  
Mantis78 Mensajes publicados 7 Estado Miembro -
Hola,

Vengo aquí a pedir ayuda porque estoy a cargo de un proyecto para mi segundo año de BTS en el que debo hacer programación con PL7 Pro.

Me explico: debo poder mostrar la velocidad de un eje motor (1500 tr/min máx, 2 direcciones de giro) en una pantalla Magélis gracias a un codificador de 1024 puntos por vuelta (modelo RI58-D/1024ED.371B). La API utilizada es un TSX 3722, además de una tarjeta de conteo rápida TSX CTZ 2AA, ya que la API no puede contar una frecuencia tan alta (f = 25,6 kHz para 1500 tr/min).

Como es la primera vez que toco PL7 Pro, vengo aquí a pedir ayuda para que me indiquen si hay alguna forma de lograr esta parte de mi proyecto.

Gracias de antemano

Configuración: Windows XP, Internet Explorer 7.0

5 respuestas

bigburns Mensajes publicados 21 Estado Miembro 15
 
Para resolver tu problema, no tienes elección,
ya que tu tarjeta solo admite 500 KHz.
La única solución es usar un codificador que no supere
los 200 puntos por vuelta.

¿Por qué quieres poner un codificador de 1024 puntos?
2
Mantis78 Mensajes publicados 7 Estado Miembro
 
Hola,

El programador que me impusieron, la tarjeta de conteo rápida también, por cierto ¿estás segura de que admite solo 500 kHz? ¿No será que admite hasta 500 kHz?
Mi mayor preocupación es sobre todo la programación :-(

Gracias
0
bigburns Mensajes publicados 21 Estado Miembro 15
 
No sé dónde encontraste %ID3.11.0 ? Mejor prueba: %ID3.0 si el codificador está en la voz 0 o %ID3.1 si el codificador está en la voz 1. Tu principio de cálculo está bien, siempre y cuando tu paso X14 dure un solo ciclo de sondeo. Porque si no, harás tu cálculo mientras %S6 sea igual a 1 ya sea durante 0,5 s. Tu valor siempre estará en movimiento. Como el magélis irá a buscar este valor en segundo plano, no puedes saber en qué momento. Así que mostrará cualquier cosa. No entiendo tu %MW24 visualizador magélis. Cuando configuras el magélis, creas una tabla de diálogo. Ejemplo: Parámetro en el magélis. %MW20 = Número de página mostrada XBT -> API %MW21 = Página a procesar XBT <-> API %MW22 = Tabla de alarmas XBT <- API En el autómata solo tienes que poner en %MW21 el número de la página donde está el mensaje que contiene tu variable de velocidad (%MD2), y se lee automáticamente. Para tu cálculo, usa mejor una palabra doble. Porque no es una calculadora, no va a decirte si hay desbordamiento y obtendrás cualquier cosa. Cabe señalar que si usas %MD2, da %MW2 = peso bajo de %ID2 %MW3 = " peso alto de %ID2 Si solo tienes que mostrar la velocidad, ¿para qué hacer un grafcet?
2
Mantis78 Mensajes publicados 7 Estado Miembro
 
Intenté %ID3.0 y funciona.

En realidad uso el grafcet solo para el arranque de mi motor, y %X14 corresponde a la etapa en la que arranca.
Para el Magélis tienes razón, %MW24 no tiene nada que hacer allí, tomaré %MD2.

Para el cálculo de %S6 quería que el autómata cuente durante 0,5 o 1 s pero que vuelva a empezar cuando haya terminado, así tendría una actualización de la velocidad lo suficientemente buena. Entonces, si lo he entendido bien, ¿ahora podría contar una y otra vez?
0
bigburns Mensajes publicados 21 Estado Miembro 15
 
Sí, es correcto hasta 500 kHz. Disculpa, pero cometí un error de cálculo, tu tarjeta de conteo es más que suficiente. Ya que acepta 500000 impulsos/s y el codificador dará 25600 impulsos/s a 1500 rpm. Para transformar impulsos del codificador en velocidad, basta con tomar el bit del sistema %S6 que tiene la base de tiempo de un segundo entre dos frontes ascendentes. Te pongo un valor de preselección del codificador 0. -Fronta ascendente %S6 valida el bit de preselección para obtener el valor actual del codificador = 0 -Front descendente %S6, carga el valor del codificador %IDx.0 en %MD1 según el sentido de rotación, %MD1 será positivo o negativo; si es negativo lo multiplicas por -1. A partir de ahí, conoces el número de impulsos en 0,5 s. Luego solo queda convertirlo a rpm, que colocarás en %MD2. En la pantalla basta con recuperar %MD2.
1
Mantis78 Mensajes publicados 7 Estado Miembro
 
Una respuesta así da gusto, mañana por la mañana ataco PL7 pro ^^


Muchas gracias bigburns
0
Mantis78 Mensajes publicados 7 Estado Miembro
 
He trabajado en ello hoy y tuve algunos problemas de comprensión.

Para el valor de preselección codificador lo puse en 0, por su parte luego para el frente ascendente %S6 no sé dónde se valida el valor actual del codificador.
Para el frente descendente es igual, no sé dónde cambiamos el valor del codificador %IDx.0 en %MD1.
0
bigburns Mensajes publicados 21 Estado Miembro 15
 
En voulant rajouter un deuxième ordinateur chez moi en réseaux j'ai mis là pagaille, et je n'avais plus de connection. Mais bon, me revoila. Dans le préliminaire: -Transformer le bit système %S6 en bit interne (pour permettre d'utiliser les fronts) -Validation carte comptage -Si mesure invalide (%Iwx.i.2:X7) charge la valeur présélection sur front %S5 base de temp de 100ms -Charge sur front montant %S6 la valeur de présélection -Charge valeur codeur sur front descendant %S6 dans %MD1 -Calcul Exemple: à savoir que x = position rack dans l'automate i = voie du codeur ( 0 ou 1 ) %S6 |---| |------------------------------------------------------(%M6)-| |----------------------------------------------------------(%Qx.i)-| %IWx.i.2:X7 %S5 |----| |-----------| |---+-------------------------------(%Qx.i.1)-| | %M6 | |----|P|-----------------+ %M6 opération |--|N|-----+----------------------------------------[%MD1:=%IDx.i]-| | comp opération +--[%MD1<0]-----------------------------[%MD1:=%MD1*-1]-| Pour le calcul sachant que tu as 25600 imp/s pour 1500 tr/min, pour une base de temp d'une seconde. Comme dans l'exemple on n'est en base de temp de 0,5s on aura donc 12800 imp pour 1500 tr/min. Ensuite il suffit de faire la règle de trois, mais pour éviter les débordements de calculs 12800 ==> 128 1500 ==> 15 Ce qui donne: opération |------------------------------------------[ %MD2:=(%MD1*15)/128 ]-| Pour l'afficheur tu mes ajouter un champ et tu places la variable %MD2 et voilà. Il faut savoir que là, je te propose une solution, et non là solution. Car chaques programmeurs à ses astuces.<code>
</code>
1
Mantis78 Mensajes publicados 7 Estado Miembro
 
Hola,

Gracias por tu respuesta, es mucho más claro.

Al final yo pensaba programar esto:

%X14 %M6 operación
|--| |-----------| |------------------------------------[%MW24:=(%ID3.11.0*1500)/6400]---|

%X14 corresponde a la etapa del grafcet donde debe aparecer la velocidad.
%MW24 corresponde al display de Magélis.
ID3.11.0 corresponde a la variable de entrada de los signos del código, pero mesmo así PL7 pro no quiere validármelo aunque puse el rack correcto (3) y .11.0 está escrito en la ayuda de PL7...
Luego para la fórmula hice la regla de tres.
Para el ajuste puse solo conteo porque si cuenta solamente, el sentido de rotación importará poco mientras haya flancos ascendentes.

Mi profe me dijo que eso convenía, pero como lo verificó en velocidad dudo un poco...

¿Qué piensas tú?

Voy a estudiar bien tu propuesta porque mañana tengo la prueba oral y voy a intentar terminar esta parte :-)
0
bigburns Mensajes publicados 21 Estado Miembro 15
 
No, el problema no está ahí. Como necesitas 0,5 s para conocer la velocidad del motor, y en tu ejemplo %MD2 va a variar durante 0,5 s. Y que no puedes saber en qué momento el magnélis la tomará. Tu valor mostrado será aleatorio. En ese caso hay que usar obligatoriamente un fronte. ¡Aparentemente estás enfadado con los frentes!!! Ejemplo: %S6 |--| |-----------------------------------------------------(%M6)-| %M6 %X14 |--| P o N |-------| |-------------[ %MD2:=(%ID3.0*1500)/6400 ]-| Mientras la etapa X14 esté activa, el cálculo se hará. Así que actualización cada segundo en el TSX. El magnélis tiene una actualización de aproximadamente cada segundo, así que no sirve ir más rápido. He puesto M6 frente ascendente o descendente porque no sé en qué momento cargas el valor de la preselección. Cuidado, debe recargarse en cada frente.
1
Mantis78 Mensajes publicados 7 Estado Miembro
 
Ah sí, yo y las frentes que suben nos llevamos dos... :-)

Quería darte las gracias enormemente, Bigburns, porque pasé mi oral y gracias a tus consejos y comentarios no tuve ningún problema frente al jurado.
Aunque no pude hacer funcionar el modo magélis porque la API fallaba, pude explicar el funcionamiento vía PL7 pro.
En todo caso, estoy muy contento de que en el último momento alguien como tú me ayude con el codificador.

¡Gracias de nuevo!

Cordialmente,
Alex
0