Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Hola, he estado navegando por la red y por el foro intentando entender lo suficiente este protocolo para poder implementarlo en C para hacer pruebas el caso es que todos dicen lo sencillo que es y demás pero no tengo experiencia con protocolos y aunque a groso modo se como funciona el protocolo no consigo entenderlo al 100% ya digo no tengo experiencia en esto. Si sabeis de libros alguna buena web o simplemente sabeis del tema y podeis ayudar os lo agradeceria. Más tarde con más tiempo posteare algunas dudas.
Gracias.
Hola popkorn,
Creo que encontrarás algunas implementaciones ya por la red. Esta es en C++:
http://www.modbusdriver.com/doc/libmbusmaster/
¿ te sirve esa ?
No he mirado a fondo, pero me imagino que también existirá documentación sobre el protocolo en sí ahí.
Slds, Sphinx.
¿Que es lo que no entiendes, el uso o la implementación del protocolo?.
Tengo muchos compañeros que no saben de protocolos pero usan modbus todos los días, basta con saber la dirección del esclavo, el número de i/o y el tipo de dato...
El protocolo tiene varios interfaces de transporte: serial-RTU, serial-ASCII y TCP, creo que existe otra implementacion UDP, pero no se si es estándar. Son tramas muy sencillas, start, dirección de esclavo, dirección de I/O, función, datos, CRC16, end... Mejor verlo en los documentos:
http://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b.pdf " onclick="window.open(this.href);return false;
http://www.modbustools.com/PI_MBUS_300.pdf " onclick="window.open(this.href);return false;
Para entrar en detalles del protocolo hay muchos recursos en la red:
http://www.modbus.org/ " onclick="window.open(this.href);return false;
http://www.modbus.pl/ " onclick="window.open(this.href);return false; (con ejemplos para PIC)
El funcionamiento del protocolo más o menos se como va, el maestro envia una trama solicitando cierta información al esclavo que le contesta con otra trama (si estoy verde xd), el caso es k no me queda muy claro en la trama como funciona la parte de "datos" es decir como indicarle que entradas/salidas tiene que comprobar y demas. Lo que no tengo tampoco claro es como implementar todo esto en C, las tramas como se mandan? como cadenas?
Salu2
PD: Espero aprender todo lo que pueda en el camino
El protocolo define que tipo de acceso quieres tener, si lo que quieres es escribir o leer en registros de datos, registros de estado de bobinas, u otras funcionalidades. Ten en cuenta que esto está escrito para comunicarse con un PLC, con lo cual lo que pretende es escribir en salidas del PLC (bobinas de relé), leer entradas del mismo, o datos almacenados que dependen del programa.
Lo habitual suele ser que los datos internos o registros, vengan definidos por tu aplicación. Es decir, que tú te lo guisas, y tú te lo comes. Dos productos con ModBus no tienen porqué tener los mismos tipos de datos en las mismas direcciones para ser ModBus. Esa es la simplificación y la grandeza de este protocolo. Y también lo que complica la cosa.
Particularmente, lo que yo hacía era definirme estructuras de datos, puestas dichas estructuras en ciertas posiciones de direccionamiento del ModBus, y así mediante simples punteros, ir incrementando. Luego en el PC u otro aparato ModBus maestro, tenía las mismas estructuras definidas, para acceder a los datos de la misma manera.
Si estuviese en casa (de hecho, estoy en Deustchland) te podría pasar algo de lo que tengo hecho para AVR y C#. De hecho, es posible que encuentres algo puesto por ahí.
De todas maneras, en http://www.freemodbus.org " onclick="window.open(this.href);return false; (creo) puedes encontrar código C de muestra para varias arquitecturas (AVR como mínimo, creo que también PIC, PC en C, etc).
Generalmente, los protocolos que se suelen usar de manera general, sólo se encargan de traspasar datos de un sistema a otro de manera segura (para solucionar sincronizaciones, seguridad, integridad), pero no se encargan de interpretarlos.