modbus.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #ifndef __MODBUS_H__
  2. #define __MODBUS_H__
  3. #include "define.h"
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7. #define MODBUS_DATA_SIZE 512
  8. #define CMD_RD_REG (uint8_t)0x03
  9. #define CMD_WR_REG (uint8_t)0x06
  10. #define CMD_WR_MULTI_REG (uint8_t)0x10
  11. typedef struct{
  12. uint8_t addr;
  13. uint8_t func;
  14. uint8_t regAddr[2];
  15. uint8_t regCount[2];
  16. uint8_t count;
  17. uint8_t *data;
  18. }__attribute__((packed))rtu_wr_multi_s;
  19. typedef struct{
  20. uint8_t addr;
  21. uint8_t func;
  22. uint8_t regAddr[2];
  23. uint8_t data[MODBUS_DATA_SIZE];
  24. uint8_t dataSize;
  25. uint16_t crc;
  26. }__attribute__((packed))rtu_rec_s;
  27. typedef struct{
  28. uint8_t addr;
  29. uint8_t func;
  30. uint8_t dataSize;
  31. uint8_t data[MODBUS_DATA_SIZE];
  32. uint16_t crc;
  33. }__attribute__((packed))rtu_rd_s;
  34. typedef struct{
  35. uint8_t rtu_addr;
  36. uint16_t tx_size;
  37. uint16_t rx_size;
  38. uint8_t tx_buffer[MODBUS_DATA_SIZE];
  39. uint8_t rx_buffer[MODBUS_DATA_SIZE];
  40. rtu_rec_s rtu_rec;
  41. rtu_rd_s rtu_rd;
  42. bool modbusRx_stat;
  43. bool modbusTx_stat;
  44. }modbus_work_s;
  45. #ifdef __cplusplus
  46. }
  47. #endif
  48. #endif //__MODBUS_H__