modbus_params.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. /*
  2. * SPDX-FileCopyrightText: 2016-2021 Espressif Systems (Shanghai) CO LTD
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. */
  6. /*=====================================================================================
  7. * Description:
  8. * The Modbus parameter structures used to define Modbus instances that
  9. * can be addressed by Modbus protocol. Define these structures per your needs in
  10. * your application. Below is just an example of possible parameters.
  11. *====================================================================================*/
  12. #ifndef _DEVICE_PARAMS
  13. #define _DEVICE_PARAMS
  14. #include <stdint.h>
  15. // This file defines structure of modbus parameters which reflect correspond modbus address space
  16. // for each modbus register type (coils, discreet inputs, holding registers, input registers)
  17. #pragma pack(push, 1)
  18. typedef struct
  19. {
  20. uint8_t discrete_input0:1;
  21. uint8_t discrete_input1:1;
  22. uint8_t discrete_input2:1;
  23. uint8_t discrete_input3:1;
  24. uint8_t discrete_input4:1;
  25. uint8_t discrete_input5:1;
  26. uint8_t discrete_input6:1;
  27. uint8_t discrete_input7:1;
  28. uint8_t discrete_input_port1;
  29. uint8_t discrete_input_port2;
  30. } discrete_reg_params_t;
  31. #pragma pack(pop)
  32. #pragma pack(push, 1)
  33. typedef struct
  34. {
  35. uint8_t coils_port0;
  36. uint8_t coils_port1;
  37. uint8_t coils_port2;
  38. } coil_reg_params_t;
  39. #pragma pack(pop)
  40. #pragma pack(push, 1)
  41. typedef struct
  42. {
  43. float input_data0; // 0
  44. float input_data1; // 2
  45. float input_data2; // 4
  46. float input_data3; // 6
  47. uint16_t data[150]; // 8 + 150 = 158
  48. float input_data4; // 158
  49. float input_data5;
  50. float input_data6;
  51. float input_data7;
  52. uint16_t data_block1[150];
  53. } input_reg_params_t;
  54. #pragma pack(pop)
  55. #pragma pack(push, 1)
  56. typedef struct
  57. {
  58. float holding_data0;
  59. float holding_data1;
  60. float holding_data2;
  61. float holding_data3;
  62. uint16_t test_regs[150];
  63. float holding_data4;
  64. float holding_data5;
  65. float holding_data6;
  66. float holding_data7;
  67. } holding_reg_params_t;
  68. #pragma pack(pop)
  69. extern holding_reg_params_t holding_reg_params;
  70. extern input_reg_params_t input_reg_params;
  71. extern coil_reg_params_t coil_reg_params;
  72. extern discrete_reg_params_t discrete_reg_params;
  73. #endif // !defined(_DEVICE_PARAMS)