Closed mcerdeiro closed 10 years ago
Hola Mariano. Por lo que estuve viendo, la biblioteca no tiene Modbus Slave, que es lo primero que estamos necesitando en CIAA-Firmware. Yo plantearía una implementación desde cero. Te copio abajo el mail que envié hace unos días para que me den su opinión. Los que estén interesado en comenzar a trabajar con el módulo modbus, escriban así comenzamos a intercambiar opiniones. Saludos
Mail:
Estuve reunido con Luciano Diamand (CIAA-Software) charlamos sobre una posible estructura para la implementación de MODBUS (adjunto). Como ya se mencionó antes, los mensajes MODBUS comparten el mismo formato independientemente si son peticiones del maestro o respuestas de un esclavo, por este motivo pensamos en una interfaz (6) donde se definan los mensajes:
struct Type_MsgModProt { uint8_t *msg; int32_t size; };
y una estructura común con llamados a funciones para el intercambio de los mismos:
struct Type_ModProt { int32_t (_pSend) (Type_MsgModProt msg); int32_t (_pRecv) (Type_MsgModProt msg); }
(3) (4) y (5) Se inicializan pasando como argumento el/los handler de los dispositivos, cuya interfaz podría ser:
struct Type_IO { int32_t fd; int32_t (_pwrite) (int32_t fd, const void buffer, int32_t size); int32_t (_pread) (int32_t fd, const void buffer, int32_t size); }; [1]
Al inicializar devuelve un Type_ModProt que es pasado como argumento en la inicialización de ModbusSlave (2), de esta manera queda vinculado el puerto al protocolo ModbusSlave ASCII. Y así con las otras posibles combinaciones.
Es una idea y está abierta a todas los ca mbios que sugieran. Saludos
[1] Design of an Extensible, Portable and POSIX Compliant Protocol, Agustin Alba Chicar, Ezequiel Esposito, Ariel Lutenberg
Hola Gustavo,
me parece bien, recién mande un mail a la lista consutlando el tema de los drivers/bus/etc y como se registrarian.
Saludos. Mariano.-
TODO tests for the commit 94aae74d8635f58010a0dcf35ce9498e65353bb4.
I think the first version is running and we can close this issue. if needed new issues shall be opened.
Podemos basarnos en: http://libmodbus.org/download/? Implementarlo de cero?