mb_registers.py 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. from enum import Enum
  2. reg_table = {'out_cur': 0x0200, 'out_mode': 0x0202, 'out_mode_save': 0x0203, 'pwm_duty': 0x0210,
  3. 'pwm_duty_save': 0x0220, 'pwm_per': 0x0230, 'pwm_per_save': 0x0240,
  4. 'rtc_sinhro': 0x0804, 'log_info': 0x0900, 'log_ent': 0x0901,
  5. 'arch_cap': 0x0902, 'arch_ent': 0x0903, 'archive_per': 0x0904}
  6. DIO_REGS = {'load_bits': 0x0130, 'cred_bits': 0x0131, 'out_cur': 0x0200}
  7. LOG_REGS = {'log_info': 0x0900, 'log_ent': 0x0901, 'arch_cap': 0x0902, 'arch_ent': 0x0903, 'arch_per': 0x0904}
  8. class DioReg(Enum):
  9. IN_STATE = 0x0100 # Состояние входов (вкл./выкл.)
  10. IN_BITS = 0x0101 # Текущее состояние входов
  11. IN_CNT = 0x0102 # Счетчики импульсов
  12. IN_MODE = 0x0120 # Режим работы входов (битовое поле)
  13. IN_NORM = 0x0122 # Нормальное состояние входов
  14. IN_DEBOUNCE = 0x0124 # Время антидребезга (ms)
  15. LOAD_ERR = 0x0130 # Состояние датчиков обрыва нагрузки (битовое поле)
  16. OUT_ERR = 0x0131 # Неисправность реле (битовое поле)
  17. OUT_STATE = 0x0200 # Состояние выходов (вкл./выкл.)
  18. OUT_STATE_SAVE = 0x0201 # Состояние выходов в безопасном режиме (вкл./выкл.)
  19. OUT_BITS = 0x0202 # Текущее состояние выходов
  20. OUT_BITS_SAVE = 0x0203 # Состояние выходов в безопасном режиме
  21. OUT_MODE = 0x0204 # Режим работы выходов (битовое поле)
  22. OUT_MODE_SAVE = 0x0205 # Режим работы выходов в безопасном режиме (битовое поле)
  23. class AiReg(Enum):
  24. IN_STATE = 0x0300 # Состояние входов (вкл./выкл.)
  25. IN_MODE = 0x0301 # Режим работы входов (битовое поле)
  26. IN_VOL_RANGE = 0X0302 # Диапазон измерения напряжения
  27. IN_CUR_RANGE = 0x0303 # Диапазон измерения тока
  28. IN_FAILURE = 0x0304 # Аварии аналоговых входов (битовое поле)
  29. EXT_SENS_POWER = 0x0305 # Питание внешних датчиков
  30. IN_GAINE_FACTOR = 0x0310 # Коэффициент усиления канала
  31. IN_K_FACTOR = 0x0320 # Коэффициент пересчета K
  32. IN_B_FACTOR = 0x0340 # Коэффициент пересчета B
  33. IN_RAW = 0x0360 # Канал AN_INP_1 (сырые данные)
  34. IN_FILTER = 0x0380 # Фильтрованные данные с учетом K и B
  35. PR_STATE = 0X03B0 # Состояние уставок (вкл./выкл.)
  36. PR_MIN = 0x03BA # Нижнее значение уставок
  37. PR_MAX = 0x03D2 # Верхнее значение уставок
  38. PR_HIST = 0x03EA # Значение гистерезиса
  39. class AoReg(Enum):
  40. OUT_STATE = 0x0500 # статус выходов
  41. OUT_STATE_SAVE = 0x0501 # статус выходов (безопасный режим)
  42. OUT_MODE = 0x0502 # режим работы выходов (напряжение/ток)
  43. OUT_MODE_SAVE = 0x0503 # режим работы выходов (безопасный режим)
  44. OUT_POWER = 0x0504 # питание выходных каналов
  45. OUT_VALUE = 0x0510 # Значение на выходе
  46. OUT_VALUE_SAVE = 0x0520 # Значение на выходе (безопасный режим)
  47. class SysReg(Enum):
  48. '''Производственные настройки'''
  49. MODEL = 0x0080 # Модель (числовой код)
  50. HW_REV = 0x0081 # Ревизия платы
  51. PRODATE = 0x0082 # Дата производтсва
  52. SN = 0x0084 # Серийный номер
  53. FW_VER = 0x0086 # Версия ПО
  54. TEST_STATUS = 0x008A # Статус тестирования
  55. PASSWORD = 0x0090 # Пароль
  56. SAVE_SYS = 0x0091 # Команда записи системных настроек
  57. '''Системные параметры'''
  58. COMMAND = 0x0800 # Команды управления
  59. UPTIME = 0x0801 # Uptime
  60. RTC = 0x0803 # RTC
  61. BAT_VOLTAGE = 0x0807 # Напряжение на батарее RTC
  62. ERR = 0x0809 # Состояние модуля
  63. INFO = 0x080B # Текстовая строка (пользовательская информация)
  64. SAVE_MODE = 0x081B # Безопасный режим работы (0-выкл, 1-вкл)
  65. SAVE_DELAY = 0x081C # Время до перехода в безопасный режим
  66. '''Команды'''
  67. WDT_STOP = 0x0014 # Отключить watchdog (программно)
  68. class Log(Enum):
  69. """Управление"""
  70. CMD = 0x0800 # Регистр управления
  71. LOG_ENTRYS_MAX = 0x0900 # Количество записей в журнале событий (возможное)
  72. LOG_ENTRYS_CNT = 0x0901 # Количество записей в журнале (текущее)
  73. ARCH_ENTRYS_MAX = 0x0902 # Количество записей в (возможное для одного канала)
  74. ARCH_ENTRYS_CH1 = 0x0903 # Количество записей в архиве для канала 1
  75. ARCH_ENTRYS_CH2 = 0x0904 # Количество записей в архиве для канала 2
  76. ARCH_ENTRYS_CH3 = 0x0905 # Количество записей в архиве для канала 3
  77. ARCH_ENTRYS_CH4 = 0x0906 # Количество записей в архиве для канала 4
  78. ARCH_ENTRYS_CH5 = 0x0907 # Количество записей в архиве для канала 5
  79. ARCH_ENTRYS_CH6 = 0x0908 # Количество записей в архиве для канала 6
  80. ARCH_ENTRYS_CH7 = 0x0909 # Количество записей в архиве для канала 7
  81. ARCH_ENTRYS_CH8 = 0x090A # Количество записей в архиве для канала 8
  82. ARCH_ENTRYS_CH9 = 0x090B # Количество записей в архиве для канала 9
  83. ARCH_ENTRYS_CH10 = 0x090C # Количество записей в архиве для канала 10
  84. ARCH_ENTRYS_CH11 = 0x090D # Количество записей в архиве для канала 11
  85. ARCH_ENTRYS_CH12 = 0x090A # Количество записей в архиве для канала 12
  86. """Период ведения архива"""
  87. ARCH_PER_CH1 = 0x090F # Период ведения архива для канала 1
  88. ARCH_PER_CH2 = 0x0910 # Период ведения архива для канала 2
  89. ARCH_PER_CH3 = 0x0911 # Период ведения архива для канала 3
  90. ARCH_PER_CH4 = 0x0912 # Период ведения архива для канала 4
  91. ARCH_PER_CH5 = 0x0913 # Период ведения архива для канала 5
  92. ARCH_PER_CH6 = 0x0914 # Период ведения архива для канала 6
  93. ARCH_PER_CH7 = 0x0915 # Период ведения архива для канала 7
  94. ARCH_PER_CH8 = 0x0916 # Период ведения архива для канала 8
  95. ARCH_PER_CH9 = 0x0917 # Период ведения архива для канала 9
  96. ARCH_PER_CH10 = 0x0918 # Период ведения архива для канала 10
  97. ARCH_PER_CH11 = 0x0919 # Период ведения архива для канала 11
  98. ARCH_PER_CH12 = 0x091A # Период ведения архива для канала 12