🏠 Главная → База знаний → Протоколы обмена
Общий объем: 10 байт
Пример: dd 03a8 0dcf 0c 002ce494
Структура пакета:
| Байт | Поле | Значение | Описание |
|---|---|---|---|
| 0 | Тип пакета | 0xDD |
Данные от коммутатора по расписанию |
| 1-2 | Ток канала 1 | 0x03A8 |
Ток 1-го канала (0x3A8 = 936 = 4,99 мА) |
| 3-4 | Напряжение | 0x0DCF |
Напряжение питания в мВ (0xDCF = 3535 = 3,53 В) |
| 5 | Температура | 0x0C |
Температура в °С (0x0C = 12°С) |
| 6-9 | Uptime | 0x002CE494 |
Время работы в сек (0x2CE494 = 2942100 сек = 817 ч) |
Типы пакетов:
0xCC – Данные по нажатию кнопки Button0xBB – Данные по версии ПО коммутатора0xDD – Данные от коммутатора по расписаниюПримечание: Если значение температуры больше 127, для получения температуры необходимо вычесть его из 256.
Общий объем: 20 байт
Пример: dd 02cd 0df0 16 00000000 024075c28f 0c c063fcd5
Структура пакета:
| Байт | Поле | Значение | Описание |
|---|---|---|---|
| 0 | Тип пакета | 0xDD |
Данные от коммутатора по расписанию |
| 1-2 | Значение АЦП | 0x02CD |
750 = 4мА, (717×4)/750 = 3,824 мА |
| 3-4 | Напряжение | 0x0DF0 |
Напряжение питания (0xDF0 = 3568 мВ) |
| 5 | Температура | 0x16 |
Температура (0x16 = 22°С) |
| 6-9 | Uptime | 0x00000000 |
Время работы устройства |
| 10 | HART переменных | 0x02 |
Число переменных HART |
| 11-14 | HART: ток | 0x4075c28f |
Значение тока в мА = 3,83999 (IEEE-754) |
| 15 | HART: единица | 0x0C |
Код единицы измерения = 12 = «кПа» (HART) |
| 16-19 | HART: значение | 0xC063FCD5 |
Значение переменной 2 = -3,5623 (IEEE-754) |
Примечание: Если значение температуры больше 127, для получения температуры необходимо вычесть его из 256.
Общий объем: 16 байт
Пример: dd03e805dc07d009c40e10175fe4a0dc
Структура пакета:
| Байт | Поле | Значение | Описание |
|---|---|---|---|
| 0 | Тип пакета | 0xDD |
Пакет с данными |
| 1-2 | Канал 1 | 0x03E8 |
Значение на 1-м входе (1000) |
| 3-4 | Канал 2 | 0x05DC |
Значение на 2-м входе (1500) |
| 5-6 | Канал 3 | 0x07D0 |
Значение на 3-м входе (2000) |
| 7-8 | Канал 4 | 0x09C4 |
Значение на 4-м входе (2500) |
| 9-10 | Напряжение | 0x0E10 |
Напряжение питания (3600 мВ) |
| 11 | Температура | 0x17 |
Температура (23°С) |
| 12-15 | Timestamp | 0x5FE4A0DC |
Unix timestamp (Thu, 24 Dec 2020 14:08:28 GMT) |
Если устройство не откалибровано, оно не считает обороты, только отправляет статусные сообщения при заданной дискретности. После калибровки устройство считает обороты и отправляет сообщение, если после последнего оборота прошло более 5 секунд.
Пример: cc010005ff0000030102030dd217
Структура пакета:
| Байт | Поле | Значение | Описание |
|---|---|---|---|
| 0 | Тип сообщения | 0xCC |
0xCC - статус, 0xAC - алерт об изменении |
| 1 | Статус калибровки | 0x01 |
Статус калибровки устройства |
| 2 | Текущие обороты | 0x00 |
Количество оборотов относительно 0 |
| 3 | Максимум | 0x05 |
Откалиброванное число оборотов макс. открытия |
| 4 | Направление | 0xFF |
0xFF - закрытие, 0x01 - открытие |
| 5 | Код ошибки | 0x00 |
Код ошибки калибровки (см. ниже) |
| 6 | Процесс | 0x00 |
0 - нормальная работа, 1 - калибровка |
| 7 | Последний датчик | 0x03 |
Последний сработавший датчик (1, 2, 3) |
| 8 | Счетчик 1 | 0x01 |
Количество сработок датчика 1 |
| 9 | Счетчик 2 | 0x02 |
Количество сработок датчика 2 |
| 10 | Счетчик 3 | 0x03 |
Количество сработок датчика 3 |
| 11-12 | Напряжение | 0x0DD2 |
Напряжение питания (3,538 В) |
| 13 | Температура | 0x17 |
Температура (23°С) |
Коды ошибок калибровки:
0x00 - нет ошибки0x01 - калибровка не выполнена0x02 - количество вращений не равно в разных направлениях0x03 - не зафиксировано вращений во время калибровки0xF0 - неизвестная ошибкаПервый старт (калибровка не выполнена):
cc000000000000000000000dcf16
Запуск калибровки:
ac000000000001000000000dca16
Ошибочная калибровка (не совпадает число оборотов):
ac000000ff0200030b0c0c0dcf16
Успешная калибровка:
ac010006ff0000030c0c0c0dcf17
Задвижка открылась на 2 оборота из 6:
ac010206010000010f0e0e0dd217
Статусное сообщение:
cc010206010000010f0e0e0dcf16
Задвижка закрылась на 1 оборот (была открыта на 2) из 6:
ac010106ff000003100f0f0dcf16
Пример: dd00020003000000000000000400000000000000050006000700000000000000080000000000000009 0aaa0b
Структура пакета:
| Байт | Поле | Значение | Описание |
|---|---|---|---|
| 0 | Тип пакета | 0xDD |
Пакет с данными |
| 1-2 | Датчик 1: качания | 0x0002 |
Число качаний с момента отправки (2) |
| 3-4 | Датчик 1: изменения | 0x0003 |
Число изменений состояния (3) |
| 5-12 | Датчик 1: всего качаний | 0x0000000000000004 |
Всего качаний (4) |
| 13-20 | Датчик 1: всего изменений | 0x0000000000000005 |
Всего изменений состояния (5) |
| 21-22 | Датчик 2: качания | 0x0006 |
Число качаний с момента отправки (6) |
| 23-24 | Датчик 2: изменения | 0x0007 |
Число изменений состояния (7) |
| 25-32 | Датчик 2: всего качаний | 0x0000000000000008 |
Всего качаний (8) |
| 33-40 | Датчик 2: всего изменений | 0x0000000000000009 |
Всего изменений состояния (9) |
| 41-42 | Напряжение | 0x0AAA |
Напряжение питания (2730 мВ) |
| 43 | Температура | 0x0B |
Температура (11°С) |
Общий объем: 6 байт
Пример: cc010c0e0c16
Структура пакета:
| Байт | Поле | Значение | Описание |
|---|---|---|---|
| 0 | Тип пакета | 0xCC |
Состояние |
| 1-2 | Температура внешняя | 0x010C |
Температура внешнего датчика (16,75°С) |
| 3-4 | Напряжение | 0x0E0C |
Напряжение батареи (3596 мВ = 3,596 В) |
| 5 | Температура внутренняя | 0x16 |
Температура внутреннего датчика (22°С) |
# Пример преобразования температуры внешнего датчика
data = 0x010c # данные о температуре внешнего термодатчика
# получаем знак (старший бит из 12)
sign = -1 if ((data >> 11) & 0x01) else 1
# целая часть - биты 4-10 включительно
value = float((data & 0x7FF) >> 4)
# младшие 4 бита - дробная часть, разрешение 0.0625
value += (data & 0x0F) / 16.0
# применяем знак
value *= sign
print('%.4f' % value) # выводим с точностью 4 знака после запятой
Пример: dd0e00000015001000140000000000000000000000000000000000000000000000000ccc14
Структура пакета:
| Байт | Поле | Значение | Описание |
|---|---|---|---|
| 0 | Тип пакета | 0xDD |
0xDD - данные, 0xAA - алерт, 0x21 - ответ |
| 1 | Сработки | 0x0E |
Младшие 4 бита - состояние входов (b00001110) |
| 2-3 | Вход 1 (наклон) | 0x0000 |
Количество сработок между пакетами (0) |
| 4-5 | Вход 2 (удар 1) | 0x0015 |
Количество сработок между пакетами (21) |
| 6-7 | Вход 3 (удар 2) | 0x0010 |
Количество сработок между пакетами (16) |
| 8-9 | Вход 4 (звук) | 0x0014 |
Количество сработок между пакетами (20) |
| 10-13 | Канал 5: период | 0x00000000 |
Импульсы между пакетами (0) |
| 14-21 | Канал 5: всего | 0x0000000000000000 |
Общее количество импульсов (0) |
| 22-25 | Канал 6: период | 0x00000000 |
Импульсы между пакетами (0) |
| 26-33 | Канал 6: всего | 0x0000000000000000 |
Общее количество импульсов (0) |
| 34-35 | Напряжение | 0x0CCC |
Напряжение батареи (3,276 В) |
| 36 | Температура | 0x14 |
Температура (20°С) |
Охранные входы (младшие 4 бита байта 1):
Примечание: Флаги сработок сбрасываются при отправке двух алертов.
Измеритель-коммутатор MODBUS - неавтономное устройство с питанием 220В для опроса промышленных КИП/контроллеров по интерфейсу RS-485. Оснащен тремя дискретными входами для счета импульсов или контроля состояния.
Пример: 01f1020106010000000000020201000101020203030404050506060707080809090a0a0b0b0c0c
Структура пакета:
| Байт | Поле | Значение | Описание |
|---|---|---|---|
| 0-1 | Тип пакета | 0x01F1 |
Тип пакета и активный профиль |
| 2 | Число входов | 0x02 |
Количество импульсных входов далее |
| 3 | Вход 1: номер | 0x01 |
Номер входа |
| 4 | Вход 1: байты | 0x06 |
Число байт данных далее |
| 5 | Вход 1: состояние | 0x01 |
Текущее состояние входа |
| 6 | Вход 1: тревога | 0x00 |
Наличие тревоги |
| 7-10 | Вход 1: счетчик | 0x00000000 |
Значение счетчика |
| 11 | Вход 2: номер | 0x02 |
Номер входа |
| 12 | Вход 2: байты | 0x02 |
Число байт данных далее |
| 13 | Вход 2: состояние | 0x01 |
Текущее состояние входа |
| 14 | Вход 2: тревога | 0x00 |
Наличие тревоги |
| 15+ | Данные Modbus | ... | Данные профиля RS-485 |
Примечание: Если отправка всех параметров для входа выключена, вход в пакете не присутствует. Байт количества входов всегда присутствует (может быть 0).
Пример: aa00010106010000000000020106010000000000030406010000000002
Структура пакета:
| Байт | Поле | Значение | Описание |
|---|---|---|---|
| 0 | Тип пакета | 0xAA |
Пакет оповещения |
| 1 | Резерв | 0x00 |
Зарезервировано |
| 2 | Вход 1: номер | 0x01 |
Номер входа |
| 3 | Вход 1: режим | 0x01 |
Режим работы |
| 4 | Вход 1: байты | 0x06 |
Число байт данных |
| 5 | Вход 1: состояние | 0x01 |
Текущее состояние |
| 6 | Вход 1: тревога | 0x00 |
Наличие активного оповещения |
| 7-10 | Вход 1: счетчик | 0x00000000 |
Значение основного счетчика |
| 11+ | Следующие входы | ... | Аналогичная структура для входов 2, 3 |
Примечание: В пакете оповещения всегда отправляется состояние для всех входов.
Команда BB (0xBB) - Запрос версии:
Запрос: BB
Ответ: [версия прошивки и платы]
Команда CE (0xCE) - Перезапуск:
Запрос: CE
Ответ: [подтверждение перезапуска]
Команда F0 (0xF0) - Тестирование связи:
Запрос: F0
Ответ: [подтверждение связи]
Команда 03 (0x03) - Изменить интервал опроса:
Изменяет интервал опроса на постоянной основе (сохраняется после перезапуска).
Пример: 03003C
03 - код команды003C - время в секундах (60 сек)Команда 10 (0x10) - Запрос текущих данных:
Возвращает текущие данные устройства (может быть несколько пакетов).
Команда 0x41 - Запрос настроек входа:
Запрос: 4101 (номер входа 1-3)
Ответ: 210141010001006401010001000100
210141Команда 0x42 - Установка настроек входа:
Запрос: 420101006401010001000100
Ответ: 21014200 (00 - успех, 01 - ошибка)
Команда 0x43 - Запрос значений счетчиков:
Запрос: 4300 (0 - все входы, 1-3 - конкретный вход)
Ответ: 2101430000010c0000000A000000000000000A...
Команда 0x44 - Запрос всех текущих значений входа:
Запрос: 4401 (номер входа 1-3)
Ответ: 2101440100011601010000000a000000000000000a000000000000000b
Команда 0x45 - Сброс счетчиков:
Запрос: 4501 (номер входа 1-3)
Ответ: 21014500 (00 - успех)
Команда 10 (0x10) - Запрос уставок:
Ответ: 11f411000000060000008c0000011800000001000000010000005f000000020000000a000000620000004b0000007800000005
Структура:
0x11 - тип пакета (уставки)0xF4 - тип опрашиваемого устройства0x11 - номер пакетаОперации с уставками:
01 - чтение 16-бит уставки (до 12 в запросе)02 - запись 16-бит уставки (до 12 в запросе)03 - запись в регистр управления Modbus04 - чтение 32-бит уставки (до 8 в запросе)05 - запись 32-бит уставки (до 8 в запросе)Примеры:
Чтение уставки:
Запрос: 044a41
Ответ: 2104044a410000008c
Запись уставок:
Запрос: 054a410000008c4a4b00000118
Ответ: 2104054a41004a4b00