馃搱FB comunicaci贸n variadores por SDO 鉃★笍 FB_SDO_Variadores
馃摌 Planteamiento detr谩s de la FB
El objetivo principal de la creaci贸n de esta Funci贸n Bloque (FB) es permitir la comunicaci贸n de velocidades desde la pantalla HMI hacia los variadores, a trav茅s de un PLC de la serie NX y utilizando el m茅todo SDO.
Este bloque de funci贸n ha sido dise帽ado para ser totalmente reutilizable, pudiendo implementarse en cualquier proyecto y adaptarse a un n煤mero indefinido de variadores, siempre que el PLC tenga capacidad de comunicaci贸n con ellos.
鈿欙笍 Desarrollo y pruebas
Para el desarrollo y validaci贸n del bloque, se realizaron pruebas con los siguientes elementos:
-
Controlador: NX102
-
Comunicaci贸n: EtherCAT
-
Variadores: 4 unidades MX2 con tarjeta opcional instalada
-
Configuraci贸n: par谩metros ajustados seg煤n la documentaci贸n t茅cnica
Adem谩s, se utiliz贸 la funci贸n EC_CoESDOWrite (descrita en el documento Manual FB SO_Write (1).pdf) para gestionar la escritura de los valores mediante SDO.
馃З Resultado
El resultado es una FB flexible y escalable, capaz de integrarse f谩cilmente en distintas aplicaciones, simplificando la comunicaci贸n de datos entre la HMI, el PLC y los variadores MX2 a trav茅s de EtherCAT.
鈩癸笍 Introducci贸n de la FB
Para realizar la comunicaci贸n por SDO se utiliza una funci贸n de Sysmac studio llamada聽EC_CoESDOWrite.聽
鉁忥笍 Objeto Ethercat A020
Para configurar bien esta instrucci贸n debemos crear una variable de tipo SdoObj聽en la cual se define el objeto Ethercat a comunicar, este objeto lo sacamos del聽Manual de comunicaciones de Ethercat del variador MX2.
Para escribir en el canal聽A020聽el cual es el canal para la multi-velocidad 0 debemos configurar el objeto Ethercat de la siguiente manera:
// PARAMETRO A020 -> ES EL REGISTRO 1216 HEX Y EL INDICE 4012 hex y SUBINDICE 3B
OBJ_SDO_A020.Index:= UINT#16#4012;
OBJ_SDO_A020.Subindex:= USINT#16#3B;
//TAMA脩O DE DATOS 32 BITS
WteSize:=UINT#4;
Tal y como se describe en dicho聽Manual de comunicaciones Ethercat. apartado聽A-4 MX2 Series Parameter List:
El tama帽o de datos es muy importante configurarlo adecuadamente ya que de lo contrario no funcionar铆a.
鈩癸笍 Explicaci贸n funci贸n EC_CoESDOWrite y l贸gica de la FB general
Tambi茅n es muy importante introducir correctamente el tipo de datos en el par谩metro WriteDat seg煤n el tipo de datos que vayamos a leer. En nuestro caso, el par谩metro聽WriteDat va a venir de desde un array de velocidades de tipo UDINT. ( VelocidadVariadores[])
Tal y como se puede apreciar en la l铆nea de programa, se configura el bloque con un array (VelocidadVariadores[] )聽 y un 铆ndice iNodoSDO, este 铆ndice se va recorriendo desde el 1 hasta el n煤mero m谩ximo de variadores a comunicar, tiene una l贸gica a帽adida la cual nos permite avanzar la comunicaci贸n aunque uno de los variadores no est茅 en conectado a la red en ese momento, gracias a esto, permitimos una comunicaci贸n mucho m谩s r谩pida y sin interrupciones.
En este caso se comunican 52 Variadores, una vez que se ha completado la instrucci贸n, doneSDO, se incrementa el numero del 铆ndice a comunicar el cual se utiliza tanto para el NodeAdr como el array de velocidad a comunicar.
Una vez completado, se vuelve a realizar la comunicaci贸n, 1 ms m谩s tarde. Esto nos brinda rapidez a la hora de comunicar con muchos nodos como es este caso.
En este apartado se gestionan alarmas para que el usuario sepa que variadores no est谩n comunicando y cuales si, adem谩s nos indicar谩 si ha tenido un fallo en la ejecuci贸n de la FB.
鈿欙笍Configuraci贸n de la FB
Una vez explicado el funcionamiento, hay que definir el bloque de funci贸n en el programa, el cual se presenta de la siguiente manera y requiere ciertas entradas y salidas.
Tal y como vemos, para activar la ejecuci贸n de la FB tenemos que alimentar el IN con un contacto o siempre que est茅 el PLC encendido. si en alg煤n momento queremos pausar la comunicaci贸n, debemos de poner a TRUE el bit StopSDO del FB, esto, detendr谩 la comunicaci贸n en el nodo que est茅 comunicando en ese momento.
En el par谩metro VelocidadVariadores, tenemos que introducir un array de longitud el mismo numero de variadores que vamos a comunicar, en este caso, el tipo de datos es UDINT tal y como se ha explicado en la descripci贸n del objeto.
La velocidad es un n煤mero entero, por lo tanto, si deseamos poner 42,10 hz聽 deberemos poner el valor 4210 en la velocidad de ese variador.
En el siguiente par谩metro, NodosAComunicar, introducimos un valor fijo. La entrada de bResetSDO, sirve para resetear fallos en la ejecuci贸n de la instrucci贸n.
En las salidas tenemos el bErrorSDOVariadores, el cual tambi茅n es un array de BOOL del mismo tama帽o que variadores se vayan a comunicar.
Par谩metros a configurar en el variador.
Configurar el par谩metro A001 鉃★笍 2聽 (referencia de frecuencia desde multi-velocidad A020).
El par谩metro A002 鉃★笍* 1 Depende de la configuraci贸n pero en este caso se utilizaron entradas digitales.
Si deseamos que el valor se mantenga aunque se produzca un fallo de tensi贸n o la comunicaci贸n se interrumpa por un periodo largo de tiempo, debemos configurar los siguientes par谩metros:聽
聽






