settings_ai.c 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. #include "at32f403a_407.h"
  2. #include "settings_api.h"
  3. #include "settings_ai.h"
  4. #include "analog_input.h"
  5. #if defined (MAI_12)
  6. //
  7. void settings_ai_set_all_default(void)
  8. {
  9. // Аналоговые входы
  10. settings_ai_def(&settings);
  11. // Питание внешних датчиков
  12. settings_ext_sens_power_def(&settings);
  13. }
  14. //
  15. void settings_ai_def(settings_t *settings)
  16. {
  17. // Все входы выключены
  18. settings->ai_state_bits = 0;
  19. // Режим измерения напряжения
  20. settings->ai_mode_bits = 0;
  21. // режим измерения напряжения (0 - 0-10В)
  22. settings->ai_voltage_mode_bits = 0;
  23. // режим измерения тока (0 - 4-20 mA)
  24. settings->ai_current_mode_bits = 0;
  25. // Основные 12 каналов
  26. for (int i = 0; i < AI_COMMON_NUMBER; i++)
  27. {
  28. settings->ai[i].state = 0; // вход выключен
  29. settings->ai[i].mode = 0; // режим измерения напряжения (ток или напряжение)
  30. settings->ai[i].voltage_mode = 0; // диапазон измерения напряжения (0 - 0-10В)
  31. settings->ai[i].current_mode = 0; // диапазон измерения тока (0 - 4-20 mA)
  32. settings->ai[i].gain_factor = 1; // коэф-т усиления внешнего ADC
  33. settings->ai[i].k_factor = 1.0;
  34. settings->ai[i].b_factor = 0.0;
  35. }
  36. settings->ai[0].name = AN_INP_1;
  37. settings->ai[1].name = AN_INP_2;
  38. settings->ai[2].name = AN_INP_3;
  39. settings->ai[3].name = AN_INP_4;
  40. settings->ai[4].name = AN_INP_5;
  41. settings->ai[5].name = AN_INP_6;
  42. settings->ai[6].name = AN_INP_7;
  43. settings->ai[7].name = AN_INP_8;
  44. settings->ai[8].name = AN_INP_9;
  45. settings->ai[9].name = AN_INP_10;
  46. settings->ai[10].name = AN_INP_11;
  47. settings->ai[11].name = AN_INP_12;
  48. // Дополнительные 2 канала. Измерения происходят всегда.
  49. for (int i = 0; i < AI_ADD_NUMBER; i++)
  50. {
  51. settings->ai_add[i].state = 1; // вход включен
  52. settings->ai_add[i].mode = 0; // режим измерения напряжения
  53. settings->ai_add[i].gain_factor = 1; // коэф-т усиления внешнего ADC
  54. settings->ai_add[i].k_factor = 1.0;
  55. settings->ai_add[i].b_factor = 0.0;
  56. }
  57. settings->ai_add[0].name = V_ISO_CL;
  58. settings->ai_add[1].name = V_ISO;
  59. settings->ai_add[2].name = CRNT_LIM_U_BFR_R;
  60. settings->ai_add[3].name = CRNT_LIM_U_ABFR_R;
  61. // Уставки
  62. // Уставки по всем каналам включены
  63. settings->preset_state_bits = 4095;
  64. // Параметры уставок
  65. for (int i = 0; i < AI_COMMON_NUMBER; i++)
  66. {
  67. settings->preset[i].state = 1; // включена
  68. settings->preset[i].type = 0; // тип уставки - фиксированное значение
  69. settings->preset[i].hyst = 5.0; //
  70. settings->preset[i].min = 0; // TODO пока условно
  71. settings->preset[i].max = 30000; // TODO пока условно
  72. }
  73. // Время ведения архива по каждому каналу (сек.)
  74. for (uint8_t i = 0; i < ARCH_AI_CH_NUMBER; i++) {
  75. settings->period_archive[i] = 3600;
  76. }
  77. }
  78. //
  79. void settings_ext_sens_power_def(settings_t *settings)
  80. {
  81. settings->ext_sens_power = 0;
  82. }
  83. #endif