Discusiones sobre Productos NI

cancelar
Mostrando los resultados de 
Buscar en lugar de 
Quiere decir: 

Problemas Modbus TCPIP con PLC M340

¡Resuelto!
Ir a solución

Hola.

Estoy trabajando en la comunicacion a través de Modbus TCPIP con LabVIEW para poder escribir y leer variables desde un PLC Modicom M340 con puerto Ethernet. He empezado utilizando la biblioteca de Modbus nimodbus21.zip. Como indica uno de los tutoriales. Dentro de esta biblioteca he utiliza el ejemplo MB Ethernet Example Master.vi y en otro PC conectado a través de TCPIP el ejemplo MB Ethernet Example Slave.vi (Ojo!!, para esto quité el Firewall de Windows ya que suele dar problemas). Al correr los VIs funciona perfectamente. Ahora bien mi intención es primeramente utilizando el ejemplo del Master.vi comunicarme con el PLC. ¿Que pasos tengo que hacer? Mis dudas son: ¿Tengo que programar codigo en el PLC? Se que en Unity pro XL hay unas funciones de comunicacion llamadas READ_VAR y WRITE_VAR. ¿Solamente con estas funciones puedo tener la comunicacion terminada? La idea es leer todos los registros que pueda desde el PLC.

Un saludo y gracias.

Es un placer echar una mano siempre( Base de una sana convivencia). Si mi respuesta te sirve por favor agradecemelo con un Kudo 🙂
Un especial saludo a mis hermanos latinos. Un mundo mejor es posible.
0 kudos
Mensaje 1 de 6
9.039 Vistas
Solución
Aceptado por el autor del tema jorge81

Lo primero que tiene que hacer es revisar las direcciones de Modbus que tiene el PLC MODICOM, normalmente Scheneider Electric asocia los direccionamientos con las variables de memoria que utiliza el PLC. Eso quiere decir que Utiliza las palabras por ejemplo %M (en modicom son las variables de memoria binaria) para leerlas directamente en algún software (como labview) por la función 2 en Modbus.

 

Para ser mas especifico Utiliza la variable %M0 asociada a una entrada digital del PLC, luego en LAbVIEW utilizando la bibloteca de Modbus especificamente el  MB Ethernet Master Query, Selecciona Read discrete Inputs, dirección de inicio 0 y numero de registres puede ser 1 ó 2. Y listo ya obtienes un vector el cual mostrará un 1 ó 0 cuando tenga una entrada física en el PLC.

 

Hay otra forma de comunicar por medio de OPC debes instalar un OPC server y uno cliente así obtendras la variable te recomiendo keepserver, mas sinembargo con la librería de labview funciona muy bien.

 

Cualquier duda o depronto no fuí sufuciente mente claro me escribes al correo.

 

 

Mensaje 2 de 6
9.006 Vistas

Hola Nito, gracias por tu contestación.

Te muestro en una imagen las direcciones de Modbus que tiene este PLC. (Lo que yo he conseguido)

Captura3.PNG

Al utilizra las variables %M0 me da un erro al Analizar mi Proyecto que dice así:

 

    Analizando...

    {Variables derivadas}: El tipo topologico es incompatible.: "SalidasDigitales"

    Ajustes del proyecto desactivados: Mantener vínculos de salida en EF deshavilitados(EN=0)

 

Al utilizar las varibles %I0 me da otro error:

 

    Analizando...

    {Variables derivadas}: La instancia está ubicada en una direccion que no está configurada.: "Bits"

    Ajustes del proyecto desactivados: Mantener vínculos de salida en EF deshavilitados(EN=0)

 

y por ultimo si utilizo %MW0 no me da error y me funciona la comunicación. Pero estaría más interesado en poder acceder a las entradas y salidas del PLC.

No sé si no estoy declarando bien las variables o es que no se permite por Modbus esta comunicación(cosa que dudo).

 

Un saludo.

 

Es un placer echar una mano siempre( Base de una sana convivencia). Si mi respuesta te sirve por favor agradecemelo con un Kudo 🙂
Un especial saludo a mis hermanos latinos. Un mundo mejor es posible.
0 kudos
Mensaje 3 de 6
8.940 Vistas

Buenos dias,

continuando con mi trabajo ya he conseguido que funcione todo. Pero tengo dudas básicas que me gustaría poder aclarar con ustedes. He utilizado la libreria de modbus y luego el ejemplo VI MB Ethernet Example Master.vi para la comunicacion por Modbus hacia mi esclavo, un PLC M340. Si he conseguido la comunicacion con este ejemplo entonces:

1) ¿para que caso vale utilizar el servidor de E/S y las variables compartidas en las red?? ¿Es para comunicarse con otros LabVIEW?

2) ¿Para utilizar OPC se necsita el modulo DSC?

3) ¿Sin el servidor de E/S no se puede hacer la comunicacion por Modbus?

 

un saludo

Es un placer echar una mano siempre( Base de una sana convivencia). Si mi respuesta te sirve por favor agradecemelo con un Kudo 🙂
Un especial saludo a mis hermanos latinos. Un mundo mejor es posible.
0 kudos
Mensaje 4 de 6
8.821 Vistas

Hola jorge81,

 

con la idea de compartir lo aprendido con los demás usuarios del foro, ¿cómo solucionaste la comunicación? ¿usaste los registros del PLC?

 

Ahora trataré de ayudarte con tus preguntas:

 

1) las variables compartidas en red sirven para compartir datos entre VIs de un mismo proyecto, o entre host dentro de una misma red. Incluso entre distintos targets (llámese PCs y CompactRIO, por ejemplo)

 

2) Entiendo que para publicar variables OPC desde tu aplicación, necesitas ser un servidor OPC, y deberías tener el módulo NI OPC Server . Para ser un cliente OPC, solo debes conseguir un cliente OPC o simplemente usar LabVIEW como un cliente OPC. En este link hay un ejemplo creado por un integrador de National Instruments, de como usar LAbVIEW como cliente OPC.

 

3) Solo basta usar la librería Modbus para comunicar equipos mediante ese protocolo.

 

Saludos !

Patricio Cortes | NI Cono Sur
Mensaje 5 de 6
8.797 Vistas

Hola pcortes,

muchas gracias por tu ayuda.

Respondiendo a tus preguntas...

utilicé los registros del PLC, %M0, %M1, %M2.... y al final no tuve problema, la comunicacion fue con el vi que he mencionado arriba. Estaba atascado en una tontería pero hasta que no lo ves parece algo mas dificil. Si necesitas mas información y más exacta encantado de poder ayudarte, ahora mismo ando liado pero estaré por aquí a menudo. Perdoname.

 

Un saludo.

Es un placer echar una mano siempre( Base de una sana convivencia). Si mi respuesta te sirve por favor agradecemelo con un Kudo 🙂
Un especial saludo a mis hermanos latinos. Un mundo mejor es posible.
Mensaje 6 de 6
8.765 Vistas