modbus_params.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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:8;
  29. } discrete_reg_params_t;
  30. #pragma pack(pop)
  31. #pragma pack(push, 1)
  32. typedef struct
  33. {
  34. uint8_t coils_port0;
  35. uint8_t coils_port1;
  36. } coil_reg_params_t;
  37. #pragma pack(pop)
  38. #pragma pack(push, 1)
  39. typedef struct
  40. {
  41. float input_data0; // 0
  42. float input_data1; // 2
  43. float input_data2; // 4
  44. float input_data3; // 6
  45. uint16_t data[150]; // 8 + 150 = 158
  46. float input_data4; // 158
  47. float input_data5;
  48. float input_data6;
  49. float input_data7;
  50. uint16_t data_block1[150];
  51. } input_reg_params_t;
  52. #pragma pack(pop)
  53. #pragma pack(push, 1)
  54. typedef struct
  55. {
  56. float holding_data0;
  57. float holding_data1;
  58. float holding_data2;
  59. float holding_data3;
  60. uint16_t test_regs[150];
  61. float holding_data4;
  62. float holding_data5;
  63. float holding_data6;
  64. float holding_data7;
  65. } holding_reg_params_t;
  66. #pragma pack(pop)
  67. extern holding_reg_params_t holding_reg_params;
  68. extern input_reg_params_t input_reg_params;
  69. extern coil_reg_params_t coil_reg_params;
  70. extern discrete_reg_params_t discrete_reg_params;
  71. #endif // !defined(_DEVICE_PARAMS)