Files
IoTManager/src/modules/exec/EctoControlAdapter/AdapterCommon.h
2025-02-21 17:50:41 +03:00

183 lines
15 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#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 - не было команды.
*/