Omron Sysmac NX Lectura de temperatura de Servomotor 1S
En este ejemplo de programación Omron vamos a ver como acceder al dato de la temperatura del encoder del ServoMotor 1S de Omron utilizando un controlador NX1P y la instrucción EC_CoESDORead
Los Servomotores 1S de Omron ofrecen datos muy interesantes que podemos leer desde el controlador para poder trabajar con ellos, en este ejemplo vamos a leer la temperatura del encoder del motor pero tenemos muchísimos parámetros que poder leer
¿Qué parámetros podemos leer del Servo?
La forma más fácil de saber que parámetros poder leer de los Servos 1S es la siguiente. Una vez que tenemos configurada nuestra red EtherCAT con el Servo 1S vamos al Driver y con el botón derecho del ratón seleccionamos "Monitor de Estado" del menú.
Esto nos abre una ventana con las diferentes áreas de parámetros (llamados Objects) a los cuales podemos acceder desde el controlador, veréis que hay un montón de datosinteresantes. En nuestro caso vamos al "Area del Encoder" - " Encoder - Temperatura del encoder" que nos puede servir para poder hacer un mantenimiento predictivo.
Estando Online con el Servo podemos monitorizar el valor de todos los Objects, en nuestro caso tenemos una temperatura de 45ºC
Una vez que lo localizamos el Object que queremos leer nos posicionamos sobre el con el ratón y veremos que nos aparece un numero.
En nuestro caso 4510.89, este número es el que debemos utilizar para acceder al parámetro de la temperatura del encoder del Servomotor. Este dato lo utilizaremos más adelante.
4510 será el Index
89 será el Subindex
¿Cómo leemos la temperatura del Servo Motor ?
Desde el programa utilizaremos la Funtion Block (FB) EC_CoESDORead , esta instrucción lee un valor de un objeto CoE * de un esclavo especificado en una red EtherCAT.
Insertamos la FB y le damos un nombre, en nuestro ocaso "Lec_Banda_40SR1_Temp" e introducimos los parámetros.
NodeAdr = UINT#1 (Es el numero de nodo del Servo, en nuestro caso el Nodo 1)
SdoObj = Puede ser cualquier nombre, en nuestro caso la llamamos "SDO_Banda_40SR_Tem" ( Esta varible es donde vamos a indicar que Object del Servo queremos leer)
Si nos fijamos en la tabla de variables al crear esta variable nos indica de forma automática que es de tipo "_sSDO_ACCESS"
Esta variable es donde deberemos asignar el valor del Object que hemos visto antes de Index y Subindex, mas adelante veremos como introducir estos parámetros
TimeOut = UINT#20
ReadData = Puede ser cualquier nombre, en nuestro caso la llamamos "Tem_Banda_40SR1 " (Es la variable que guarda el dato leído, en nuestro caso la temperatura y será de tipo LINT)
Ahora vamos a indicarle a la variable "SDO_Banda_40SR_Tem" los parámetros necesarios, lo hacemos moviendo los valores del Index y Subindex
Cada vez que activamos el bit de lectura "Clock_1"
Movemos el valor UINT#16#4510 a SDP_Danda_40SR_Tem.Index
Movemos el valor UINT#16#89 a SDP_Danda_40SR_Tem.Subndex
Movemos el valor FALSE a SDP_Danda_40SR_Tem.IsCompletAccess (esto es para que solo lea el Index que le indicamos)
De esta forma ya tenemos la lectura de la temperatura del servo en nuestro controlador para poder trabajar con ella, en nuestro caso 46 ºC. Este dato por ejemplo lo podemos utilizar para controlar su valor medio o máximo y poder dar avisos prematuros ante un incremento en la temperatura.