|
@@ -1,152 +1,153 @@
|
|
-#ifndef __ANALOG_INPUT_H
|
|
|
|
-#define __ANALOG_INPUT_H
|
|
|
|
-
|
|
|
|
-#include <stdbool.h>
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-typedef struct
|
|
|
|
-{
|
|
|
|
- uint8_t state; // 0 - выкл, 1 - вкл
|
|
|
|
- uint8_t mode; // режим измерения (0 - напряжение, 1 - ток)
|
|
|
|
- uint8_t current_mode; // режим измерения тока (0 - 0-20 mA, 1 - 4-20 mA)
|
|
|
|
- uint8_t name; //
|
|
|
|
- uint8_t gain_factor; // коэффициент усиления
|
|
|
|
- float k_factor; //
|
|
|
|
- float b_factor; //
|
|
|
|
-} ai_t;
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-typedef struct
|
|
|
|
-{
|
|
|
|
- bool alarm_flag;
|
|
|
|
- bool tim_flag;
|
|
|
|
- uint32_t cnt;
|
|
|
|
-
|
|
|
|
-} ai_alarm_t;
|
|
|
|
-
|
|
|
|
-// Режим измерения (ток или напряжение)
|
|
|
|
-typedef enum
|
|
|
|
-{
|
|
|
|
- MEAS_VOLTAGE = 0,
|
|
|
|
- MEAS_CURRENT,
|
|
|
|
-
|
|
|
|
-} MEAS_CHAN_MODE_t;
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-typedef enum
|
|
|
|
-{
|
|
|
|
- MUX_301_CH = 0,
|
|
|
|
- AN_INP_1,
|
|
|
|
- AN_INP_2,
|
|
|
|
- AN_INP_3,
|
|
|
|
- AN_INP_4,
|
|
|
|
- AN_INP_5,
|
|
|
|
- AN_INP_6,
|
|
|
|
- V_ISO_CL, // +24 V
|
|
|
|
- V_ISO, // +5 V
|
|
|
|
-
|
|
|
|
- MUX_401_CH,
|
|
|
|
- AN_INP_7,
|
|
|
|
- AN_INP_8,
|
|
|
|
- AN_INP_9,
|
|
|
|
- AN_INP_10,
|
|
|
|
- AN_INP_11,
|
|
|
|
- AN_INP_12,
|
|
|
|
- CRNT_LIM_U_BFR_R,
|
|
|
|
- CRNT_LIM_U_ABFR_R,
|
|
|
|
-
|
|
|
|
- NUMBER_ADC_CH,
|
|
|
|
-
|
|
|
|
-} ANALOG_IN_t;
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-//
|
|
|
|
-void ai_init_modbus_params(void);
|
|
|
|
-
|
|
|
|
-//
|
|
|
|
-void ai_init(void);
|
|
|
|
-
|
|
|
|
-//
|
|
|
|
-void ai_led_update(void);
|
|
|
|
-
|
|
|
|
-//
|
|
|
|
-void ai_set(void);
|
|
|
|
-
|
|
|
|
-//
|
|
|
|
-void ai_set_meas_mode(void);
|
|
|
|
-
|
|
|
|
-//
|
|
|
|
-bool ai_adc_init(void);
|
|
|
|
-
|
|
|
|
-//
|
|
|
|
-void ai_processing(void);
|
|
|
|
-
|
|
|
|
-//
|
|
|
|
-void adc_meas_two_channels(ai_t *one, ai_t *two, uint16_t *out_one, uint16_t *out_two);
|
|
|
|
-
|
|
|
|
-//
|
|
|
|
-uint8_t adc_get_gain(uint8_t tmp);
|
|
|
|
-
|
|
|
|
-//
|
|
|
|
-void adc_print_data(void);
|
|
|
|
-
|
|
|
|
-//
|
|
|
|
-void adc_print_data_extend(void);
|
|
|
|
-
|
|
|
|
-//
|
|
|
|
-void adc_task(void *params);
|
|
|
|
-
|
|
|
|
-//
|
|
|
|
-void adc_alarm_task(void *params);
|
|
|
|
-
|
|
|
|
-//
|
|
|
|
-void ai_voltage_alarm_detect(void);
|
|
|
|
-
|
|
|
|
-//
|
|
|
|
-void ai_current_alarm_detect(void);
|
|
|
|
-
|
|
|
|
-//
|
|
|
|
-void ai_alarm_tim_handler(void);
|
|
|
|
-
|
|
|
|
-//
|
|
|
|
-void ai_connect_channel(uint8_t channel);
|
|
|
|
-
|
|
|
|
-//
|
|
|
|
-void ai_set_mode(MEAS_CHAN_MODE_t mode, uint8_t channel);
|
|
|
|
-
|
|
|
|
-//
|
|
|
|
-void ai_set_mode_word(MEAS_CHAN_MODE_t mode, uint8_t channel);
|
|
|
|
-
|
|
|
|
-//
|
|
|
|
-void ai_ext_sens_power(uint16_t state);
|
|
|
|
-
|
|
|
|
-//
|
|
|
|
-void ai_leds_processing(void);
|
|
|
|
-
|
|
|
|
-//
|
|
|
|
-void ai_connect_test(void);
|
|
|
|
-
|
|
|
|
-//
|
|
|
|
-void ai_mode_test(void);
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-extern uint16_t ai_gain[];
|
|
|
|
-
|
|
|
|
-extern uint16_t adc_com_raw_data[];
|
|
|
|
-
|
|
|
|
-extern float adc_com_data[];
|
|
|
|
-
|
|
|
|
-extern uint16_t adc_com_fil_data[];
|
|
|
|
-
|
|
|
|
-extern uint16_t adc_add_raw_data[];
|
|
|
|
-
|
|
|
|
-extern uint16_t ai_alarm;
|
|
|
|
-
|
|
|
|
-extern uint16_t ai_state_bit;
|
|
|
|
-
|
|
|
|
-extern ai_alarm_t ai_alarm_f[];
|
|
|
|
-
|
|
|
|
-extern ai_alarm_t ai_cur_lim;
|
|
|
|
-
|
|
|
|
-#endif // __ANALOG_INPUT_H
|
|
|
|
-
|
|
|
|
|
|
+#ifndef __ANALOG_INPUT_H
|
|
|
|
+#define __ANALOG_INPUT_H
|
|
|
|
+
|
|
|
|
+#include <stdbool.h>
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+typedef struct
|
|
|
|
+{
|
|
|
|
+ uint8_t state; // 0 - выкл, 1 - вкл
|
|
|
|
+ uint8_t mode; // режим измерения (0 - напряжение, 1 - ток)
|
|
|
|
+ uint8_t current_mode; // диапазон измерения тока (0 - 4-20мА, 1 - 0-20mA)
|
|
|
|
+ uint8_t voltage_mode; // диапазон измерения напряжения (0 - 0-10В, 1 - 0-1В)
|
|
|
|
+ uint8_t name; //
|
|
|
|
+ uint8_t gain_factor; // коэффициент усиления
|
|
|
|
+ float k_factor; //
|
|
|
|
+ float b_factor; //
|
|
|
|
+} ai_t;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+typedef struct
|
|
|
|
+{
|
|
|
|
+ bool alarm_flag;
|
|
|
|
+ bool tim_flag;
|
|
|
|
+ uint32_t cnt;
|
|
|
|
+
|
|
|
|
+} ai_alarm_t;
|
|
|
|
+
|
|
|
|
+// Режим измерения (ток или напряжение)
|
|
|
|
+typedef enum
|
|
|
|
+{
|
|
|
|
+ MEAS_VOLTAGE = 0,
|
|
|
|
+ MEAS_CURRENT,
|
|
|
|
+
|
|
|
|
+} MEAS_CHAN_MODE_t;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+typedef enum
|
|
|
|
+{
|
|
|
|
+ MUX_301_CH = 0,
|
|
|
|
+ AN_INP_1,
|
|
|
|
+ AN_INP_2,
|
|
|
|
+ AN_INP_3,
|
|
|
|
+ AN_INP_4,
|
|
|
|
+ AN_INP_5,
|
|
|
|
+ AN_INP_6,
|
|
|
|
+ V_ISO_CL, // +24 V
|
|
|
|
+ V_ISO, // +5 V
|
|
|
|
+
|
|
|
|
+ MUX_401_CH,
|
|
|
|
+ AN_INP_7,
|
|
|
|
+ AN_INP_8,
|
|
|
|
+ AN_INP_9,
|
|
|
|
+ AN_INP_10,
|
|
|
|
+ AN_INP_11,
|
|
|
|
+ AN_INP_12,
|
|
|
|
+ CRNT_LIM_U_BFR_R,
|
|
|
|
+ CRNT_LIM_U_ABFR_R,
|
|
|
|
+
|
|
|
|
+ NUMBER_ADC_CH,
|
|
|
|
+
|
|
|
|
+} ANALOG_IN_t;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+//
|
|
|
|
+void ai_init_modbus_params(void);
|
|
|
|
+
|
|
|
|
+//
|
|
|
|
+void ai_init(void);
|
|
|
|
+
|
|
|
|
+//
|
|
|
|
+void ai_led_update(void);
|
|
|
|
+
|
|
|
|
+//
|
|
|
|
+void ai_set(void);
|
|
|
|
+
|
|
|
|
+//
|
|
|
|
+void ai_set_meas_mode(void);
|
|
|
|
+
|
|
|
|
+//
|
|
|
|
+bool ai_adc_init(void);
|
|
|
|
+
|
|
|
|
+//
|
|
|
|
+void ai_processing(void);
|
|
|
|
+
|
|
|
|
+//
|
|
|
|
+void adc_meas_two_channels(ai_t *one, ai_t *two, uint16_t *out_one, uint16_t *out_two);
|
|
|
|
+
|
|
|
|
+//
|
|
|
|
+uint8_t adc_get_gain(uint8_t tmp);
|
|
|
|
+
|
|
|
|
+//
|
|
|
|
+void adc_print_data(void);
|
|
|
|
+
|
|
|
|
+//
|
|
|
|
+void adc_print_data_extend(void);
|
|
|
|
+
|
|
|
|
+//
|
|
|
|
+void adc_task(void *params);
|
|
|
|
+
|
|
|
|
+//
|
|
|
|
+void adc_alarm_task(void *params);
|
|
|
|
+
|
|
|
|
+//
|
|
|
|
+void ai_voltage_alarm_detect(void);
|
|
|
|
+
|
|
|
|
+//
|
|
|
|
+void ai_current_alarm_detect(void);
|
|
|
|
+
|
|
|
|
+//
|
|
|
|
+void ai_alarm_tim_handler(void);
|
|
|
|
+
|
|
|
|
+//
|
|
|
|
+void ai_connect_channel(uint8_t channel);
|
|
|
|
+
|
|
|
|
+//
|
|
|
|
+void ai_set_mode(MEAS_CHAN_MODE_t mode, uint8_t channel);
|
|
|
|
+
|
|
|
|
+//
|
|
|
|
+void ai_set_mode_word(MEAS_CHAN_MODE_t mode, uint8_t channel);
|
|
|
|
+
|
|
|
|
+//
|
|
|
|
+void ai_ext_sens_power(uint16_t state);
|
|
|
|
+
|
|
|
|
+//
|
|
|
|
+void ai_leds_processing(void);
|
|
|
|
+
|
|
|
|
+//
|
|
|
|
+void ai_connect_test(void);
|
|
|
|
+
|
|
|
|
+//
|
|
|
|
+void ai_mode_test(void);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+extern uint16_t ai_gain[];
|
|
|
|
+
|
|
|
|
+extern uint16_t adc_com_raw_data[];
|
|
|
|
+
|
|
|
|
+extern float adc_com_data[];
|
|
|
|
+
|
|
|
|
+extern uint16_t adc_com_fil_data[];
|
|
|
|
+
|
|
|
|
+extern uint16_t adc_add_raw_data[];
|
|
|
|
+
|
|
|
|
+extern uint16_t ai_alarm;
|
|
|
|
+
|
|
|
|
+extern uint16_t ai_state_bit;
|
|
|
|
+
|
|
|
|
+extern ai_alarm_t ai_alarm_f[];
|
|
|
|
+
|
|
|
|
+extern ai_alarm_t ai_cur_lim;
|
|
|
|
+
|
|
|
|
+#endif // __ANALOG_INPUT_H
|
|
|
|
+
|