Me surgió la necesidad de conectar un PC con un PLC con el protocolo Modbus. Ya que entre mis compañeros de trabajo tienen más experiencia en Java, elegimos este lenguaje para tal asunto. Como no fue inmediato, dejo aquí un enlace a la web de mi compañero y amigo @JALP, donde se explica todo el tema.
Si alguien no entiende algo que pregunte!! 🙂
Hola,
Me encuentro bastante necesita frente al codigo que pones para conectarnos con un PLC, y pedir datos a través del puerto ethernet.
La referencia del PLC es 1769-L35E Ethernet Port de Allen Bradley.
El PLC se encuentra, segun mi compañero «bien programado», y lo verificamos recibiendo información haciendo uso un PC conectado al PLC que tiene RSLinx, y los datos los pasamos a una hoja de calculo. Pero el asunto es que queremos recibirlos con JAVA por ethernet y no entendemos claramente como llevar a cabo esta titanica tarea para nosotros.
Una explicación mas clara sobre el codigo, y como pedir la informacion al PCL nos caeria muy bien.
Hola William,
Este es un tema que hicimos hace tiempo, y ahora mismo no tengo la documentación a mano. En cualquier caso sí que te puedo decir que la clase básica que debes usar es tal cual la publica nuestro amigo Jalp en rodeadosdetecnología. Con esa clase puedes abrir conexión, cerrarla, leer mensajes y escribirlos básicamente. Desde tu método main, deberías crearte un objeto de la clase base que estamos hablando (ClienteModbusTCP), y a partir de ahí llamar a los métodos que te interesen, en tu caso imagino que sería abrir conexión y leer datos. Te quedaría saber qué parámetros necesitas pasarle a los métodos…
El método abrir conexión «public boolean AbrirConexion (String dns)» espera una cadena, que no es más que la dirección ip del autómata.
Mientras que el método para leer registros:
«public int []Leer_Multiples_Registros (
int unidad, // Identificador de unidad (nº esclavo – PC)
int direccion, // Direccion de memoria
int cantidad) { // Cantidad de registros a leer (max 126)»
Espera los parámetros unidad, dirección de la memoria que quieres leer y la cantidad de registros. El identificador de unidad suele ser 0 si no recuerdo mal, y se debería configurar en el autómata. La dirección de memoria corresponde a la dirección de memoria del autómata que quieres leer, y la cantidad es la cantidad de registros a leer.
Espero haberte sido de ayuda! Suerte