Одна теплосистема. Ниже — карта показаний двух магистралей. Размер архивной записи — 64 байта.
| EEPROM | Поле |
|---|---|
0x0000 |
Номер, 8 ASCII-цифр |
0x0010 |
Старшая тетрада — число каналов расхода; младшая — исполнение |
0x0011 |
Сетевой адрес |
0x0012 |
Версия; при версии ≥3 архив читается через A/4 |
Версия 00/FF недопустима. Значения каналов 1–2 читаются для одной теплосистемы; настройки третьего канала — только при его наличии и выборе для чтения.
Смещения от начала payload. Форматы — в общей части.
| Смещение | Байт | Поле | Масштаб |
|---|---|---|---|
| 0 | 5 | Дата | BCD YY MM DD hh mm |
| 5 | 7 | Q | BCD /1e9, Гкал |
| 12 | 7 | M1 | BCD /1e6, т |
| 19 | 7 | M2 | BCD /1e6, т |
| 26 | 7 | M3, отрицательный дисбаланс | BCD /1e6, т |
| 33 | 2 | t1 | UInt16 /256, °C |
| 35 | 2 | t2 | UInt16 /256, °C |
| 37 | 2 | t холодной воды | UInt16 /256, °C |
| 39 | 1 | P1 | /100, МПа |
| 40 | 1 | P2 | /100, МПа |
| 41 | 1 | P холодной воды | /100, МПа |
| 42 | 4 | Время нормальной работы | BCD /100, ч |
| 46 | 4 | Время G < Gmin | BCD /100, ч |
| 50 | 4 | Время G > Gmax | BCD /100, ч |
| 54 | 4 | Время dT < dTmin | BCD /100, ч |
| 58 | 4 | Время технической неисправности | BCD /100, ч |
| 62 | 1 | Ошибки/режим | Биты |
| 63 | 1 | KSI | Инверсия суммы байтов 0–62 |
M3 не является массой третьего трубопровода. Архивных V1/V2 нет. Архивная температура холодной воды 151 °C преобразуется в 0 как служебное значение, а не измерение 0 °C. Для текущих показаний такое преобразование не применяется.
После проверки KSI запись считается пустой, если каждый из первых пяти байтов равен 00 или FF.
| Бит | Значение |
|---|---|
| 0 | Останов счёта |
| 1 | Техническая неисправность |
| 2 | dT < dTmin |
| 3 | G > Gmax |
| 4 | G < Gmin |
| 5 | Реверс G2 |
Биты 7–6: 00 — обычный режим; 01 — автореверс G2; 10 — G2=0; 11 — G1=0. Это режим, не дополнительные ошибки.
| Архив | AT для A/4 | Записей | Начало FLASH, байты | EEPROM-указатель последней записи |
|---|---|---|---|---|
| Месячный | 2 | 30 | 0x0080 |
0x0058 |
| Суточный | 1 | 512 | 0x0800 |
0x0054 |
| Часовой | 0 | 1504 | 0x8800 |
0x0050 |
Для версии <3: указатель читается R как UInt16 BE; допустимый диапазон 0..count-1. Запись читается восемью запросами L:
byte_address = ring_start + index * 64
L_address = byte_address / 8 + part # part = 0..7
Ответы объединяются в 64 байта. Полностью нулевые/FF страницы пропускаются до проверки KSI; для остальных проверяются KSI и дата. На стёртые старые слоты при двоичном поиске смотрят как на записи раньше заданной даты. Финальная дата проверяется независимо от поиска.
Логическое начало — (last_index+1) % count. При хронологическом порядке применяется двоичный поиск первой записи с датой ≥ заданной; физический индекс (first+logical_index) % count. После сбросов или перевода часов порядок может нарушиться; в таком случае двоичный поиск неприменим.
Из данных обычного ответа используются первые 3 байта — FP3.
| Поле | Канал 1 | Канал 2 | Единица |
|---|---|---|---|
| t | 0x0350 |
0x0358 |
°C |
| P | 0x0368 |
0x0370 |
МПа |
| Gv | 0x044D |
0x048D |
м³/ч |
| Gm | 0x0468 |
0x04A8 |
т/ч |
sign = -1, если b0 & 0x80; иначе +1
exponent = (b0 & 0x7F) - 64
mantissa = ((b1 << 8) | b2) / 65536
value = sign * mantissa * 2^exponent
FP3 не является IEEE float. 46 F0 00 → 60,0.
Запрос: 00 BA 50 01 47 NN 00 00 00 00 00 00 00 KS
Ответ: 00 BA D0 01 47 NN [7 байт BCD] KS
| NN, dec | Поле | Масштаб |
|---|---|---|
| 0 | Q | /1e9, Гкал |
| 1 / 2 | V1 / V2 | /1e6, м³ |
| 4 / 5 | M1 / M2 | /1e6, т |
| 16 | Время нормальной работы | /100, ч |
| 17 | Время G < Gmin | /100, ч |
| 18 | Время G > Gmax | /100, ч |
| 19 | Время dT < dTmin | /100, ч |
| 20 | Время технической неисправности | /100, ч |
BCD: packet[6:13]. В этой команде времена тоже занимают 7 байт, в архиве — 4.
Начало данных: EG E1 E2. Признак текущей неисправности: (EG & 0x1F) != 0 || E1 != 0 || E2 != 0. В EG биты 0–4 совпадают по смыслу с младшими битами архивного байта ошибок. В E1: бит 2 — t1 вне допуска; бит 3 — t2 вне допуска; соответствующее значение температуры помечается недостоверным. Текущее состояние не относится к прошлым архивным интервалам.
| EEPROM | Поле | Формат |
|---|---|---|
0x0018 |
Абонент | 8 байт CP866 |
0x0020 |
S1 | Бит 0: 0 — ТСП 1.3910, 1 — ТСП 1.3850; 2/3 — источник T1/T2, 4/5 — P1/P2, 6/7 — G1/G2 |
0x0021 |
S2 | Биты 0/1/2 — источник T3/P3/G3 |
0x0023 |
Режим | 0/1/2/3 — обычный/автореверс G2/G2=0/G1=0 |
0x0024–0x0026 |
Заданные T1/T2/T3 | UInt8, °C |
0x0027 / 0x0028 |
Минимум dT1−2 / dT2−3 | UInt8, °C |
0x0029–0x002B |
Заданные P1/P2/P3 | UInt8 /100, МПа |
0x002C–0x002E |
Заданные G1/G2/G3 | UInt8, % диапазона |
0x0040 |
Адрес установки | 16 байт CP866, два чтения |
n*0x100+0x40 |
Ду и номер ППР n | 3+5 ASCII-байт |
n*0x100+0x50 |
Диапазон ППР n | FP3, м³/ч |
Флаг источника: 0 — измерение, 1 — заданное значение. Текст завершается NUL, пробелы по краям и управляющие символы удаляются; поле из 00/FF/пробелов считается незаданным. Поля канала 3 применяются только к соответствующему исполнению.
T/G → M 0x0028 → P с NN=0 и 16–20 → для каждого выбранного канала четыре G (t/P/Gv/Gm) и два P (V/M). Мгновенные значения и накопленные интеграторы имеют разные единицы и сохраняются раздельно.