mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-06-10 20:09:19 +03:00
183 lines
15 KiB
C
183 lines
15 KiB
C
#pragma once
|
||
#include <Arduino.h>
|
||
|
||
#define comm_RebootAdapter 2u
|
||
#define comm_LockOutReset 3u
|
||
|
||
struct BoilerInfo
|
||
{
|
||
uint8_t adapterType; // тип адаптера. 000 - Opentherm 001 - eBus 010 - Navien
|
||
uint8_t boilerStatus; // состояние связи с котлом 0 - нет ответа от котла на последнюю команду 1 - есть ответ от котла на последнюю команду
|
||
uint8_t rebootStatus; // Код последней перезагрузки адаптера. 0...255 - код
|
||
uint8_t adapterHardVer; // Аппаратная версия адаптера. 0...255 - номер версии
|
||
uint8_t adapterSoftVer; // u8 Программная версия адаптера. 0...255 - номер версии
|
||
uint16_t boilerMemberCode; // 0x0021 R u16 Код производителя котла. Зависит от марки и модели котла. 0...65535 - код производителя
|
||
uint16_t boilerModelCode; // 0x0022 R u16 Код модели котла. Зависит от марки и модели котла. 0...65535 - код модели
|
||
};
|
||
|
||
struct BoilerStatus
|
||
{
|
||
uint8_t burnStatus; // бит 0 - текущее состояние горелки 0 - отключена 1 - включена
|
||
uint8_t CHStatus; // бит 1 - текущее состояние отопления 0 - отключено 1 - включено
|
||
uint8_t DHWStatus; // бит 2 - текущее состояние ГВС 0 - отключено 1 - включено
|
||
};
|
||
|
||
// Флаги ошибок (только для котлов с интерфейсом OpenTherm)
|
||
enum FlagErrorOT //: uitn8_t
|
||
{
|
||
er_SecviceReq, // 0: Необходимо обслуживание
|
||
er_LockOut, // 1: Котел заблокирован
|
||
er_LowWater, // 2: Низкое давление в отопительном контуре
|
||
er_FlameFault, // 3: Ошибка розжига
|
||
er_AirPresFault, // 4: Низкое давление воздуха
|
||
er_OverTem // 5: Перегрев теплоносителя в контуре
|
||
};
|
||
|
||
////////////////// Данные регистров второй версии адаптера котла
|
||
//////////////////// Регистры для чтения
|
||
|
||
enum ReadDataEctoControl //: uitn16_t
|
||
{
|
||
ecR_AdapterInfo = 0x0010, // 0x0010 R bitfields бит 2...0 - тип адаптера. 000 - Opentherm 001 - eBus 010 - Navien
|
||
// бит 3 - состояние связи с котлом 0 - нет ответа от котла на последнюю команду 1 - есть ответ от котла на последнюю команду
|
||
// u8 Код последней перезагрузки адаптера. 0...255 - код
|
||
|
||
ecR_AdaperVersion = 0x0011, // 0x0011 R u8 Аппаратная версия адаптера. 0...255 - номер версии
|
||
// u8 Программная версия адаптера. 0...255 - номер версии
|
||
|
||
ecR_Time = 0x0012, // 0x0012 - 0x0013 R u32 Время работы адаптера после перезагрузки 0...4294967295 - время в секундах
|
||
ecR_MinSetCH = 0x0014, // 0x0014 R u8 Нижний предел уставки теплоносителя. 0...100 - температура уставки в град. С
|
||
ecR_MaxSetCH = 0x0015, // 0x0015 R u8 Верхний предел уставки теплоносителя 0...100 - температура уставки в град. С
|
||
ecR_MinSetDHW = 0x0016, // 0x0016 R u8 Нижний предел уставки ГВС 0...100 - температура уставки в град. С
|
||
ecR_MaxSetDHW = 0x0017, // 0x0017 R u8 Верхний предел уставки ГВС 0...100 - температура уставки в град. С
|
||
ecR_TempCH = 0x0018, // 0x0018 R i16 Текущая температура теплоносителя -100...100 - температура в 0.1 гр. С
|
||
ecR_TempDHW = 0x0019, // 0x0019 R u16 Текущая температура ГВС 0...100 - температура в 0.1 гр. С
|
||
ecR_Pressure = 0x001A, // 0x001A R u8 Текущее Давление в контуре 0...50 - давление в (0,1бар)
|
||
ecR_FlowRate = 0x001B, // 0x001B R u8? Текущий расход ГВС 1...255 - расход в (0,1 л/мин)
|
||
ecR_ModLevel = 0x001C, // 0x001C R u8? Текущая модуляция горелки 0xFF - не определено 0...100 - модуляция в (%)
|
||
ecR_BoilerStatus = 0x001D, // 0x001D R bitfields бит 0 - текущее состояние горелки 0 - отключена 1 - включена
|
||
// бит 1 - текущее состояние отопления 0 - отключено 1 - включено
|
||
// бит 2 - текущее состояние ГВС 0 - отключено 1 - включено
|
||
|
||
ecR_CodeError = 0x001E, // 0x001E R u16 Код ошибки котла (основной). Зависит от марки и модели котла. 0...65535 - код ошибки
|
||
ecR_CodeErrorExt = 0x001F, // 0x001F R u16 Код ошибки котла (дополнительный). Зависит от марки и модели котла. 0...65535 - код ошибки
|
||
ecR_TempOutside = 0x0020, // 0x0020 R s8 Температура уличного датчика котла (при егоналичии). -65…+100 температура в градусах С
|
||
ecR_MemberCode = 0x0021, // 0x0021 R u16 Код производителя котла. Зависит от марки и модели котла. 0...65535 - код производителя
|
||
ecR_ModelCode = 0x0022, // 0x0022 R u16 Код модели котла. Зависит от марки и модели котла. 0...65535 - код модели
|
||
ecR_FlagErrorOT = 0x0023 // 0x0023 R s8 Флаги ошибок (только для котлов с интерфейсом OpenTherm)
|
||
// 0: Необходимо обслуживание
|
||
// 1: Котел заблокирован
|
||
// 2: Низкое давление в отопительном контуре
|
||
// 3: Ошибка розжига
|
||
// 4: Низкое давление воздуха
|
||
// 5: Перегрев теплоносителя в контуре
|
||
};
|
||
|
||
////////////////////////////// WRITE /////////////
|
||
|
||
enum WriteDataEctoControl //: uitn16_t
|
||
{
|
||
ecW_SetTypeConnect = 0x0030, // 0x0030 W u8 Тип внешних подключений (будет сохранено в постоянной памяти адаптера)
|
||
// 0 - адаптер подключен к котлу
|
||
// 1 - котел подключен к внешнему устройству (панель или перемычка)
|
||
|
||
ecW_TSetCH = 0x0031, // 0x0031 W int16 Уставка теплоносителя (будет сохранено в постоянной памяти адаптера).
|
||
// Будет передана котлу при старте адаптера, пока главным устройством не
|
||
// были записаны регистры уставки температуры.
|
||
// 0...1000 - температура уставки в десятых долях градуса С (например, для
|
||
// установки 45С нужно записать число 450). Во многих котлах необходимо до
|
||
// подключения адаптера необходимо поднять температуру теплоносителя
|
||
// отопления (нажимая “+” на панели котла) для согласования диапазона
|
||
// температуры теплоносителя, в противном случае температура теплоносителя
|
||
// может не достигнуть требуемого значения.
|
||
|
||
ecW_TSetCHFaultConn = 0x0032, // 0x0032 W int16 Уставка теплоносителя в аварийном режиме(будет сохранено в постоянной памяти адаптера).
|
||
// Будет передана котлу в случае
|
||
// отсутствия связи с главным управляющим устройством.
|
||
// 0...1000 - температура уставки в десятых долях град. С (например,
|
||
// для установки 45С нужно записать число 450)
|
||
|
||
ecW_TSetMinCH = 0x0033, // 0x0033 W u8 Нижний предел уставки теплоносителя 0...100 - температура уставки в град. С
|
||
// Не все котлы поддерживают этот параметр. Как правило, этот
|
||
// предел не должен быть ниже аналогичного предела,
|
||
// установленного в настройках котла.
|
||
|
||
ecW_TSetMaxCH = 0x0034, // 0x0034 W u8 Верхний предел уставки теплоносителя 0...100 - температура уставки в град. С
|
||
// Не все котлы поддерживают этот параметр. Как правило, этот
|
||
// предел не должен быть выше аналогичного предела,
|
||
// установленного в настройках котла.
|
||
|
||
ecW_TSetMinDHW = 0x0035, // 0x0035 W u8 Нижний предел уставки ГВС 0...100 - температура уставки в град. С
|
||
// Не все котлы поддерживают этот параметр. Как правило, этот
|
||
// предел не должен быть ниже аналогичного предела,
|
||
// установленного в настройках котла.
|
||
|
||
ecW_TSetMaxDHW = 0x0036, // 0x0036 W u8 Верхний предел уставки ГВС 0...100 - температура уставки в град. С
|
||
// Не все котлы поддерживают этот параметр. Как правило, этот
|
||
// предел не должен быть выше аналогичного предела,
|
||
// установленного в настройках котла.
|
||
|
||
ecW_TSetDHW = 0x0037, // 0x0037 W u8 Уставка ГВС (EPROM) 0...100 - температура уставки в град. С
|
||
// Для большинства котлов эта уставка должна находиться ниже
|
||
// предела, установленного в меню самого котла, иначе она может быть
|
||
// проигнорирована котлом. Для некоторых котлов стоит устанавливать
|
||
// этот параметр равным верхнему пределу уставки ГВС.
|
||
|
||
ecW_SetMaxModLevel = 0x0038, // 0x0038 W u8 Уставка максимальной модуляции горелки (будет сохранено в постоянной памяти адаптера) 0...100 - уровень модуляции в процентах.
|
||
// Данный параметр поддерживается не всеми котлами. Для
|
||
// электрических трехфазных котлов возможно задать только 3
|
||
// уровня модуляции (в диапазоне 0…100%).
|
||
|
||
ecW_SetStatusBoiler = 0x0039, // 0x0039 W bitfields бит 0 - режим контура отопления (будет сохранено в постоянной памяти адаптера) 0 - отключен 1 - включен
|
||
// бит 1 - режим контура ГВС 0 - отключен 1 - включен
|
||
// бит 2 - “второй контур”, используется только некоторыми котлами с
|
||
// интерфейсом OpenTherm и может отвечать за активацию бойлера
|
||
// косвенного нагрева или встроенной функции ГВС. 0 - отключен 1 - включен
|
||
|
||
|
||
ecW_Command = 0x0080 // 0x0080 W uint16 команда
|
||
// 0 - нет команды
|
||
// 1 - CH water filling (зарезервировано)
|
||
// 2 - перезагрузка адаптера
|
||
// 3 - сброс ошибок котла
|
||
// 4..65525 - зарезервировано
|
||
// При записи любой команды, кроме «нет команды», сразу же меняется
|
||
// состояние регистра «Ответ на команду» - становится 2 – идет
|
||
// обработка команжы
|
||
|
||
|
||
};
|
||
|
||
///////////////////////////////////////// Регистры состояния:
|
||
|
||
/*
|
||
0x0040…0x006F R i16 состояние данных в регистре ($addr - 0x30)
|
||
-2 - ошибка чтения/записи в котел
|
||
-1 - регистр не поддерживается
|
||
0- для регистра на чтение означает, что данные из котла прочитаны и
|
||
валидны. Для регистра на запись означает, что данные успешно приняты
|
||
котлом.
|
||
1- не инициализирован.
|
||
если регистр R: чтение соответствующих данные из котла не
|
||
приводилось,
|
||
если регистр W: адаптеру не было задано значение для записи
|
||
соответствующего значения в котле
|
||
*/
|
||
|
||
|
||
/*
|
||
0x0081 R int16 Ответ на команду
|
||
-32768..-6 - зарезервировано
|
||
-5 – ошибка выполнения команды
|
||
-4 – неподдерживаемая котлом команда
|
||
-3 – не поддерживаемый котлом идентификатор устройства
|
||
-2 – не поддерживается данный адаптером
|
||
-1 – не получен ответ за отведенное врекмя
|
||
0 – команда выполнена успешно
|
||
1 – не было команды (значение по умолчанию)
|
||
2 – идет обработка команды (обмен данными)
|
||
3..32767 - зарезервировано
|
||
Если команда после перезагрузки адаптера не давалась, регистр
|
||
читается как 1 - не было команды.
|
||
*/
|