1 протокол связиПротокол физического слоя 1,1
Физический слой использует интерфейс связи UART to TTL
Скорость передачи данных составляет 9600, 8 бит данных, 1 стоп бит, нет четности
1.2 протокола уровня приложения
Слой приложения использует протокол Modbus-RTU для связи. В настоящее время он поддерживает только функциональные коды, такие как 0x03 (чтение холдинга), 0x04 (чтение ввода регистра), 0x06 (запись одного регистра), 0x41 (калибровка), 0x42 (сброс энергии). И т. д.
0x41 код функции предназначен только для внутреннего использования (адрес может быть только в том случае, 0xF8), используется для заводскую калибровку и вернуться к заводским настройкам обслуживание случаев, после того, как код функции для того, чтобы увеличить 16-бит пароль, пароль по умолчанию 0x3721
Диапазон адресов slave 0x01 ~ 0xF7. Адрес 0x00 используется в качестве адреса трансляции, подчиненному не нужно отвечать мастеру. Адрес 0xF8 используется в качестве общего адреса, этот адрес может быть использован только в одноработоспособной среде и используется для калибровки и т. Д.
1,3 прочтите результат измерения
Командный формат мастера считывает результат измерения (всего 8 байт):
Рабочий адрес + 0x04 + зарегистрированный адрес высокий байт + зарегистрированный адрес низкий байт + количество регистров высокий байт + количество регистров низкий байт + проверка CRC высокий байт + проверка CRC низкий байт.
Командный формат ответа от подчиненного делится на два вида:
Правильный ответ: рабочий адрес + 0x04 + количество байт + зарегистрировать 1 Высокий байт данных + зарегистрировать 1 низкий байт данных +... + CRC проверка высокого байта + CRC проверка низкого байта
Ответ об ошибке: рабочий адрес + 0x84 + ненормальный код + CRC проверка высокого байта + CRC проверка низкого байта
Ненормальный код анализируется следующим образом (см. Ниже)
L 0x01, незаконная функция
L 0x02, незаконный адрес
L 0x03, незаконные данные
L 0x04, ошибка раба
Таблица результатов измерений приведена в следующей таблице
Зарегистрированный адрес
Описание
Разрешение
0x0000
Значение напряжения
1LSB соответствуют 0,1 V
0x0001
Значение тока низкое 16 бит
1LSB соответствует 0.001A
0x0002
Значение тока высокое 16 бит
0x0003
Низкое значение мощности 16 бит
1LSB соответствуют 0,1 W
0x0004
Мощность значение высокое 16 бит
0x0005
Низкое значение энергии 16 бит
1LSB соответствует 1Wh
0x0006
Высокая энергетическая ценность 16 бит
0x0007
Значение частоты
1LSB соответствуют 0,1 Гц
0x0008
Значение коэффициента мощности
1LSB соответствуют 0,01
0x0009
Состояние сигнализации
0xFFFF является сигналом тревоги, 0x0000не является сигналом тревоги
Например, мастер отправляет следующую команду (код проверки CRC заменяется на 0xHH и 0xLL, то же самое ниже)
0x01 + 0x04 + 0x00 + 0x00 + 0x00 + 0x0A + 0xHH + 0xLL
Указывает, что мастеру необходимо прочитать 10 регистров с подчиненным адресом 0x01 и исходный адрес регистра 0x0000
Правильный ответ от Ведомого является следующим образом:
0x01 + 0x04 + 0x14 + 0x08 + 0x98 + 0x03 + 0xE8 + 0x00 + 0x00 + 0x08 + 0x0x98 + 0x00 + 0x00 + 0x00 + 0x00 + 0x00 + 0x00 + 0x01 + 0xF4 + 0x00 + 0x64 + 0x00 + 0x00 + 0xHH + 0xLL
Приведенные выше данные
Напряжение l-0x0898, преобразуется в десятичное-2200, отображение-220,0 в
L ток 0x000003E8, преобразуется в десятичный 1000, дисплей 1.000A
Мощность l-0x00000898, преобразуется в десятичное-2200, дисплей-220,0 Вт
L энергия 0x00000000, преобразуется в десятичное значение 0, отображение 0Wh
L частота 0x01F4, преобразуется в десятичный 500, дисплей 50,0 Гц
L Мощность фактор 0x0064, преобразуется в десятичная система является 100, дисплей 1,00
Состояние будильника составляет 0x0000, означает, что сила тока ниже порогового значения мощности будильника
1,4 чтение и изменение параметров slave
В настоящее время он поддерживает только чтение и изменение адреса и порога тревоги
Регистр расположен в следующей таблице
Зарегистрированный адрес
Описание
Разрешение
0x0001
Порог сигнализации питания
1LSB соответствует 1 Вт
0x0002
Адрес Modbus-RTU
Диапазон 0x0001 ~ 0x00F7
Командный формат мастера для чтения параметров slave и считывания результатов измерений одинаковый (подробное описание в разделе 2,3), нужно только изменить код функции от 0x04 до 0x03.
Командный формат мастера для изменения рабочих параметров (всего 8 байт):
Рабочий адрес + 0x06 + зарегистрированный адрес высокий байт + зарегистрированный адрес низкий байт + значение регистра высокий байт + значение регистра низкий байт + проверка CRC высокий байт + проверка CRC низкий байт.
Командный формат ответа от подчиненного делится на два вида:
Правильный ответ: рабочий адрес + 0x06 + количество байтов + регистровый адрес низкий байт + значение регистра высокий байт + значение регистра низкий байт + проверка CRC высокий байт + проверка CRC низкий байт.
Ответ об ошибке: рабочий адрес + 0x86 + ненормальный код + CRC проверка высокого байта + CRC проверка низкого байта.
Например, Мастер устанавливает порог сигнала тревоги работника:
0x01 + 0x06 + 0x00 + 0x01 + 0x08 + 0xFC + 0xHH + 0xLL
Указывает, что мастеру необходимо установить регистр 0x0001 (порог питания) на 0x08FC (2300 Вт).
Настройте правильно, раб возвращается к данным, которые отправляются от мастера.
Например, Мастер устанавливает адрес раба
0x01 + 0x06 + 0x00 + 0x02 + 0x00 + 0x05 + 0xHH + 0xLL
Указывает, что мастер должен установить 0x0002 register (Modbus-RTU address) на 0x0005
Настройте правильно, раб возвращается к данным, которые отправляются от мастера.
1,5 сброс энергии
Команду формат мастера для того, чтобы сбросить рабаЭнергияIs (всего 4 байта):
Рабочий адрес + 0x42 + CRC проверка высокого байта + CRC проверка низкого байта.
Правильный ответ: рабочий адрес + 0x42 + CRC проверьте высокий байт + CRC проверьте низкий байт.
Ответ об ошибке: рабочий адрес + 0xC2 + ненормальный код + CRC проверка высокого байта + CRC проверка низкого байта
1,6 калибровка
Командный формат мастера для калибровки работника (всего 6 байт):
0xF8 + 0x41 + 0x37 + 0x21 + CRC проверьте высокий байт + CRC проверьте низкий байт.
Правильный ответ: 0xF8 + 0x41 + 0x37 + 0x21 + CRC проверьте высокий байт + CRC проверьте низкий байт.
Ответ об ошибке: 0xF8 + 0xC1 + ненормальный код + CRC проверка высокого байта + CRC проверка низкого байта.
Следует отметить, что калибровка занимает от 3 до 4 секунд, после того как мастер отправляет команду, если калибровка успешна, для получения ответа от раба потребуется 3-4 секунды.
1,7 проверка CRC
Проверка CRC использует формат 16 бит, занимает два байта, полиномиальный генератор X16 + X15 + X2 + 1, полиномиальное значение, используемое для расчета 0xA001.
Значение проверки CRC-это данные фрейма, разделяющие все результаты проверки всех байтов, за исключением контрольного значения CRC.