analog_input.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. #ifndef __ANALOG_INPUT_H
  2. #define __ANALOG_INPUT_H
  3. #include <stdbool.h>
  4. typedef struct
  5. {
  6. uint8_t state; // 0 - выкл, 1 - вкл
  7. uint8_t mode; // режим измерения (0 - напряжение, 1 - ток)
  8. uint8_t current_mode; // режим измерения тока (0 - 0-20 mA, 1 - 4-20 mA)
  9. uint8_t name; //
  10. uint8_t gain_factor; // коэффициент усиления
  11. float k_factor; //
  12. float b_factor; //
  13. } ai_t;
  14. typedef struct
  15. {
  16. bool alarm_flag;
  17. bool tim_flag;
  18. uint32_t cnt;
  19. } ai_alarm_t;
  20. // Режим измерения (ток или напряжение)
  21. typedef enum
  22. {
  23. MEAS_VOLTAGE = 0,
  24. MEAS_CURRENT,
  25. } MEAS_CHAN_MODE_t;
  26. typedef enum
  27. {
  28. MUX_301_CH = 0,
  29. AN_INP_1,
  30. AN_INP_2,
  31. AN_INP_3,
  32. AN_INP_4,
  33. AN_INP_5,
  34. AN_INP_6,
  35. V_ISO_CL, // +24 V
  36. V_ISO, // +5 V
  37. MUX_401_CH,
  38. AN_INP_7,
  39. AN_INP_8,
  40. AN_INP_9,
  41. AN_INP_10,
  42. AN_INP_11,
  43. AN_INP_12,
  44. CRNT_LIM_U_BFR_R,
  45. CRNT_LIM_U_ABFR_R,
  46. NUMBER_ADC_CH,
  47. } ANALOG_IN_t;
  48. //
  49. void ai_init_modbus_params(void);
  50. //
  51. void ai_init(void);
  52. //
  53. void ai_led_update(void);
  54. //
  55. void ai_set(void);
  56. //
  57. void ai_set_meas_mode(void);
  58. //
  59. bool ai_adc_init(void);
  60. //
  61. void ai_processing(void);
  62. //
  63. void adc_meas_two_channels(ai_t *one, ai_t *two, uint16_t *out_one, uint16_t *out_two);
  64. //
  65. uint8_t adc_get_gain(uint8_t tmp);
  66. //
  67. void adc_print_data(void);
  68. //
  69. void adc_print_data_extend(void);
  70. //
  71. void adc_task(void *params);
  72. //
  73. void adc_alarm_task(void *params);
  74. //
  75. void ai_voltage_alarm_detect(void);
  76. //
  77. void ai_current_alarm_detect(void);
  78. //
  79. void ai_alarm_tim_handler(void);
  80. //
  81. void ai_connect_channel(uint8_t channel);
  82. //
  83. void ai_set_mode(MEAS_CHAN_MODE_t mode, uint8_t channel);
  84. //
  85. void ai_set_mode_word(MEAS_CHAN_MODE_t mode, uint8_t channel);
  86. //
  87. void ai_ext_sens_power(uint16_t state);
  88. //
  89. void ai_leds_processing(void);
  90. //
  91. void ai_connect_test(void);
  92. //
  93. void ai_mode_test(void);
  94. extern uint16_t ai_gain[];
  95. extern uint16_t adc_com_raw_data[];
  96. extern float adc_com_data[];
  97. extern uint16_t adc_com_fil_data[];
  98. extern uint16_t adc_add_raw_data[];
  99. extern uint16_t ai_alarm;
  100. extern uint16_t ai_state_bit;
  101. extern ai_alarm_t ai_alarm_f[];
  102. extern ai_alarm_t ai_cur_lim;
  103. #endif // __ANALOG_INPUT_H