modbus_params.h 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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. // This file defines structure of modbus parameters which reflect correspond modbus address space
  15. // for each modbus register type (coils, discreet inputs, holding registers, input registers)
  16. #pragma pack(push, 1)
  17. typedef struct
  18. {
  19. uint8_t discrete_input0:1;
  20. uint8_t discrete_input1:1;
  21. uint8_t discrete_input2:1;
  22. uint8_t discrete_input3:1;
  23. uint8_t discrete_input4:1;
  24. uint8_t discrete_input5:1;
  25. uint8_t discrete_input6:1;
  26. uint8_t discrete_input7:1;
  27. uint8_t discrete_input_port1:8;
  28. } discrete_reg_params_t;
  29. #pragma pack(pop)
  30. #pragma pack(push, 1)
  31. typedef struct
  32. {
  33. uint8_t coils_port0;
  34. uint8_t coils_port1;
  35. } coil_reg_params_t;
  36. #pragma pack(pop)
  37. #pragma pack(push, 1)
  38. typedef struct
  39. {
  40. float input_data0; // 0
  41. float input_data1; // 2
  42. float input_data2; // 4
  43. float input_data3; // 6
  44. uint16_t data[150]; // 8 + 150 = 158
  45. float input_data4; // 158
  46. float input_data5;
  47. float input_data6;
  48. float input_data7;
  49. uint16_t data_block1[150];
  50. } input_reg_params_t;
  51. #pragma pack(pop)
  52. #pragma pack(push, 1)
  53. typedef struct
  54. {
  55. float holding_data0;
  56. float holding_data1;
  57. float holding_data2;
  58. float holding_data3;
  59. uint16_t test_regs[150];
  60. float holding_data4;
  61. float holding_data5;
  62. float holding_data6;
  63. float holding_data7;
  64. } holding_reg_params_t;
  65. #pragma pack(pop)
  66. extern holding_reg_params_t holding_reg_params;
  67. extern input_reg_params_t input_reg_params;
  68. extern coil_reg_params_t coil_reg_params;
  69. extern discrete_reg_params_t discrete_reg_params;
  70. #endif // !defined(_DEVICE_PARAMS)