Problema VIN y RS-485

  • 13 Respuestas
  • 5831 Vistas

guille

  • Aprendiz
  • **
  • Mensajes: 20
Problema VIN y RS-485
« : noviembre 18, 2016, 08:21:35 am »
Hola Boris!

Estoy midiendo la salida de un variador de velocidad que está configurada en 0~10V. Como verás en el código, realizo varias conversiones y las guardo en diferentes variables, con diferentes métodos para mostrarlo en el HMI Array S300, como sigue:

new Motor1_VInt, Motor1_VInt1
new Float: Motor1_VFloat

PlcMain()
{
   
   if(MbRtuServInit(1, 9600, SERIAL_8E1, MB_RTU_INTERFACE_RS232) < 0) //RS485 "No responde" !!!!!
   {      
      // Error, pausar programa en este punto.
      while(true)
      {
         DelayMS(2000)
         LedToggle()
      }
   }
   
   VinSetRange(1, VIN_RANGE_5V)
   VinSetRange(2, VIN_RANGE_5V)
   VinSetRange(3, VIN_RANGE_5V)
   VinSetRange(4, VIN_RANGE_10V)
   VinSetRange(5, VIN_RANGE_10V)
   VinSetRange(6, VIN_RANGE_10V)
   VinSetRange(7, VIN_RANGE_10V)
   VinSetRange(8, VIN_RANGE_10V)

   VinFilterAOn(1000, 1000)
   
   while(true)
   {
      Motor1_VFloat= VinReadVolt(6)
      Motor1_VInt= FloatToInt(VinReadVolt(6))
      Motor1_VInt1= VinRead(6)
      
      MbRtuServLoadRegister(42016, Motor1_VFloat)
      MbRtuServLoadRegister(42017, Motor1_VInt)
      MbRtuServLoadRegister(42018, Motor1_VInt1)
      MbRtuServLoadRegister(42019, Motor1_VFloat)
   
}
}   


Te adjunto una imagen de los valores mostrados y al mismo tiempo medido por un voltímetro. No hay forma de mostrar el valor correcto! También probé con la salida 4..20mA del variador, colocando los jumpers J3, J4, J5 (entradas VIN1, 2 o 3) y utilizando la función "VinToCurrent" y tampoco hay forma. Qué puede estar pasando?

Por otro lado, si coloco el jumper J1 e inicio el bus en RS485, el HMI me dice "No Responde"... ni aún colocando el jumper J2 para la resistencia de terminación. En el datasheet indica que soporta tanto RS232 como 485.

Gracias por la ayuda!

Saludos!

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2313
  • Soporte Técnico
Re:Problema VIN y RS-485
« Respuesta #1 : noviembre 18, 2016, 10:16:00 am »
Buenos días,

No se puede cargar una variable tipo float al registro ModBus directamente, ya que solo admite valores enteros.

Lo que podes hacer es convertir de float a entero y luego guardar en el registro ModBus.

Entonces, de tu ejemplo:

Código: (Pawn) [Seleccionar]
// Variables
new Motor1_VInt
new Float: Motor1_VFloat

// Inicializar.
VinSetRange(6, VIN_RANGE_10V)
VinFilterAOn(200, 2000)

//
// Muestreo.
//

// Obtener voltaje en float.
Motor1_VFloat=  Float: VinReadVolt(6)

// Multiplicar por 100 para pasar dos decimales a la parte entera del numero.
Motor1_VFloat = Motor1_VFloat * 100

// Convertir float a entero.
Motor1_VInt= FloatToInt(Motor1_VFloat )

// Almacenar entero en registro ModBus 42001 por ejemplo.
MbRtuServLoadRegister(42001, Motor1_VInt)

Notar como se multiplicó el float por 100 para preservar los decimales, es decir si lees 7.25 valor float, luego de la multiplicación tenes 725 en valor entero.

En el display HMI debes configurar un objeto NUMERIC para que muestre un registro holding en dirección 42001 de ModBus RTU, con el formato DIGIT=5 y DECIMAL=2
como muestra la siguiente imagen:

http://slicetex.com/hmi/sh-300/files/sh-300-float.png

La dirección ModBus puede ser otra, es solo a fines de ejemplo la que puse.

Proba el ejemplo separado, para solo testear esta característica, podes ingresarle un voltaje de 5 volts a la entrada para fines de prueba.



En cuanto al RS485, el display y PLC lo soporta, pero los pines de conexión utilizados son diferentes a los del PLC, con el cable actual solo podes usar RS232, de lo contrario tenes que fabricar un conector especial para cablear correctamente los pines RS485 del PLC a los pines del display HMI con RS485. Ademas, para RS485 necesitas colocar las resistencias de polarización, tal como lo especifica el bus RS485.

Quedo a disposición.

Saludos

SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

guille

  • Aprendiz
  • **
  • Mensajes: 20
Re:Problema VIN y RS-485
« Respuesta #2 : noviembre 21, 2016, 19:40:04 pm »
El problema de el escalado AD está solucionado! Gracias!!

En cuanto al conector RS485, son correctos los pinout que de la imagen adjunta? (Para 2 y 4 cables, respectivamente) Gracias!

Saludos.

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2313
  • Soporte Técnico
Re:Problema VIN y RS-485
« Respuesta #3 : noviembre 22, 2016, 08:50:19 am »
Buenos días,

¿Si son correctos para conectar el puerto de la STX8091?.

No, fíjate en la hoja de datos, pagina 32, figura 21:

http://slicetex.com/hw/stx8091/docs/STX8091-DS-AX_BX_CX_DX.pdf

El terminal inversor (-) esta en el pin 3, y el terminal no inversor (+) esta en el pin 2, para RS485 de dos cables en el STX8091.

Igual, recorda que si estas usando el HMI, el PLC debe funcionar como Slave, por lo solo podes conectar dispositivos que sean Master lo cual es poco pratico ya que tendrias colisiones entre ambos Master intentando acceder al bus.

Saludos
« Última Modificación: noviembre 22, 2016, 08:53:33 am por Soporte »
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

guille

  • Aprendiz
  • **
  • Mensajes: 20
Re:Problema VIN y RS-485
« Respuesta #4 : diciembre 05, 2016, 10:05:41 am »
Hola Boris,

armé el cable como sugiere la hoja de datos (pines 2,3,5.... D+,D-, GND respectivamente y chasis a GND) y coloqué los jumpers J1 y J2. Lo raro es que cuando activo GPCOils anda, responde, pero cuando quiero mostrar el resultado del conversor AD, o del RTC, no muestra nada y al ratito el mensaje en el HMI de "No responde"... Debo tener algo más en cuenta?

Saludos.

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2313
  • Soporte Técnico
Re:Problema VIN y RS-485
« Respuesta #5 : diciembre 05, 2016, 10:29:41 am »
Buenos días,

¿Estas intentando conectar el RS485-PLC al RS485-SH-300?.

Esos pines que comentas son del lado PLC, pero del lado HMI, hay otros pines para RS-485 según hoja de datos.

Pasame un diagramita de la conexión que estas intentado realizar así comprendo el cable que armaste.

Por ahora no conectes el PLC con el HMI para no dañarlos en caso de cablear mal hasta estar seguros.
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

guille

  • Aprendiz
  • **
  • Mensajes: 20
Re:Problema VIN y RS-485
« Respuesta #6 : diciembre 05, 2016, 15:51:27 pm »
Exacto Boris, estoy conectando simplemente el PLC con el HMI (Array SH-300) mediante RS-485. Veo la hoja de dato que me pasas y en la página 77 indica los pines del lado del HMI: 1 y 9 (D+), 6 y 8 (D-), 5 (GND). Es correcto?

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2313
  • Soporte Técnico
Re:Problema VIN y RS-485
« Respuesta #7 : diciembre 05, 2016, 16:10:58 pm »
Si, te adjunto diagrama que hice rápidamente en una hoja para que te guíes.

En la hoja de datos del PLC, pág. 33, Figura 22 explica sobre conexionado RS485.

También configura los parámetros de conexión PLC y HMI para RS485.

Quedamos a disposición.




SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

guille

  • Aprendiz
  • **
  • Mensajes: 20
Re:Problema VIN y RS-485
« Respuesta #8 : diciembre 06, 2016, 08:48:57 am »
Buen día Boris,

gracias por tus respuestas rápidas y completas!

Sigo con preguntas, jeje. Para la resistencia pull up, de donde saco los 5V? De algún pin del bus?...

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2313
  • Soporte Técnico
Re:Problema VIN y RS-485
« Respuesta #9 : diciembre 06, 2016, 09:19:09 am »
Buenos días,

Podes sacarlo del terminal +5D del PLC.

Saludos.
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

guille

  • Aprendiz
  • **
  • Mensajes: 20
Re:Problema VIN y RS-485
« Respuesta #10 : marzo 31, 2017, 10:55:18 am »
Buen día Boris,

retomando el tema de la lectura de los variadores de velocidad, ahora estoy sobre el mismo asunto pero ya con los motores instalados. En el taller, sólo con el variador, logré hacer funcionar el siguiente código a la perfección (te pego solo el fragmento de interés):

VinSetRange(1,VIN_RANGE_5V)

VinFilterAOn(1000, 1000)
   
AD_FLOAT= Float:VinToCurrent(1,100)
AD_FLOAT=AD_FLOAT*1000000   //para no perder los decimales, debí correr la coma por 6 lugares...
M2= FloatToInt(AD_FLOAT)
MbRtuServLoadRegister(42008,M2)

Por supuesto el Jumper J3 colocado, para leer 4..20mA.

Cuando vengo a la planta y trabajo sobre la máquina, con los motores instalados, no hay forma de que se muestren los valores correctos, utilizando el mismo código! Además, los valores mostrados cambian constantemente y son muy disímiles.

Adjunto una foto de los valores medidos por el tester y por el PLC, ambos en mA.

El código es correcto? El filtro esta correctamente seteado? Puede ser que tenga problemas de ruido, al estar presente los motores? Que sugerencia tenes para mi?

Gracias!



Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2313
  • Soporte Técnico
Re:Problema VIN y RS-485
« Respuesta #11 : marzo 31, 2017, 17:47:36 pm »
Buenas tardes,

Lo veo correcto al código en ese fragmento.

Podrias subir un poco el periodo de muestreo del filtro, por ejemplo:

VinFilterAOn(1000, 2000)



¿Como alimentas el sensor que envia corriente al PLC, con una fuente independiente?

¿Como lo conectas al PLC? ¿Comparte la masa/GND con el PLC esa fuente independiente?.

¿Los valores en el tester no oscilan?.

¿Como activas los motores ? ¿con el PLC?

¿Con los motores apagados tenes el mismo problema?.

Si, me resulta extraño si tenes exactamente el mismo entorno.

¿El osciloscopio te muestra interferencia de algún tipo?.



Otra prueba podría ser, colocar 5V a la entrada VIN5 (por ejemplo, no a la entrada de corriente) , usando rango 0-10V para la misma,  y ese mismo valor mostrarlo en el HMI. Hacerlo con la entrada de corriente desconectada y los motores encendidos. Si lo muestra bien, podríamos descartar por el lado del PLC y examinar para el lado del sensor.

Saludos


SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

guille

  • Aprendiz
  • **
  • Mensajes: 20
Re:Problema VIN y RS-485
« Respuesta #12 : abril 12, 2017, 13:57:18 pm »
Hola Boris,

después de revisar todo lo que me dijiste procedi a re-cablear la salida de los sensores de corriente de los variadores hasta el PLC con cable mallado. Esto soluciono el problema!! Quedó midiendo los valores analógicos a la perfección!

Gracias por tu ayuda! Saludos!

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2313
  • Soporte Técnico
Re:Problema VIN y RS-485
« Respuesta #13 : abril 12, 2017, 16:58:37 pm »
Perfecto! saludos.
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com