Как распознать настройки протокола и порта при связи с котлом Modbus - PullRequest
1 голос
/ 24 октября 2019

Это мой первый вопрос. Я пытаюсь включить / выключить отопление с помощью Arduino. Сначала я должен выяснить, как с ним общаться. Мой термостат имеет 4 провода (3 В, GND, A +, B-). Это типичное 2-проводное питание RS-485 + 3 В для питания термостата. Я подключил преобразователь RS-485 к Ethernet, чтобы контролировать протокол и выяснять команды, используемые моим фактическим термостатом, чтобы скопировать их с помощью Arduino (и автоматизировать некоторые задачи). Я начал с монитора Modbus (Serial Port Monitor), и некоторые пакеты имеют контрольную сумму OK, а некоторые пакеты имеют контрольную сумму BAD. Я не знаю конфигурацию порта, поэтому я пробовал 9600 8 бит без четности, 9600 8 бит с четностью, 9600 8 бит с нечетностью и результат тот же. Кажется, что пакеты иногда соответствуют структуре Modbus, но не всегда. Могу ли я предположить, что протокол связи является Modbus? Почему некоторые пакеты более или менее 30% имеют контрольную сумму OK, а 70% - контрольную BAD?

[23/10/2019 19:57:51]
Modbus Response (COM4)
Адрес: 7
Функция: 15 (0x0f) - Запись нескольких катушек
Начальный адрес: 1 Количество: 4

Контрольная сумма: 1454 (ОК)

[23/10/2019 19:57: 52]
Ответ Modbus (COM4)
Адрес: 7
Функция: 1 (0x01) - Считать количество байт катушек: 0
Значения:

Контрольная сумма: 32174 (ОК)

[23/10/2019 19:57:52]
Ответ Modbus (COM4)
Адрес: 7
Функция: 1 (0x01) - Считать количество байт катушек: 1
Значения: 00
Катушки 0-7: 00000000

Контрольная сумма: 20736 (ОК)

[23/10/2019 19:57:52]
Ответ Modbus (COM4))
Адрес: 7
Функция: 15 (0x0f) - Запись нескольких катушек
Начальный адрес: 1 Количество: 4

Контрольная сумма: 33660 (ОК)

[23/ 10/2019 19:57:52]
Ответ Modbus (COM4)
Адрес: 7
Функция: 15 (0x0f) - Запись нескольких катушек

Контрольная сумма: 1 (BAD)

[23/10/2019 19:57:52]
Modbus Response (COM4)
Адрес: 0
Функция: 4 (0x04)- Чтение входных регистров

Контрольная сумма: 1454 (BAD)

[23/10/2019 19:57:53]
Ответ Modbus (COM4)
Адрес: 7
Функция: 1 (0x01) - чтение катушек

Контрольная сумма: 0 (BAD)

[23/10/2019 19:57:53]
Ответ Modbus (COM4)
Адрес: 0
Функция: 7 (0x07) - Чтение Исключения

Контрольная сумма: 32174 (ПЛОХО)

[23/10/2019 19:57:53]
Ответ Modbus (COM4)
Адрес: 7
Функция: 1 (0x01) - Чтение катушек

Контрольная сумма: 256 (BAD)

[23/10/2019 19:57: 53]
Ответ Modbus (COM4)
Адрес: 7
Функция: 15 (0x0f) - Запись нескольких катушек
Начальный адрес: 1 Количество: 4

Контрольная сумма: 256 (ПЛОХО)

Как вы думаете, используется ли протокол Modbus, или я должен попробовать другой протокол? Как я могу быть уверен, что настройки связи с портом (9600 8-битная четность) в порядке?

Спасибо, ребята!

1 Ответ

1 голос
/ 06 ноября 2019

Я решил проблему. Проблема заключалась в том, что я использую RS485 для подключения к Ethernet-устройству для чтения шины. Устройство буферизовало кадры до тех пор, пока буфер не достигнет 1024 байта, затем оно упаковывает данные в пакет UDP и отправляет их на мой ПК. Это ломало кадры Modbus. Кадр Modbus ограничен периодом молчания в 3,5 раза больше символа. Я настроил буфер на 0 байт, чтобы устройство немедленно отправляло данные на мой компьютер, и все CRC теперь в порядке, и данные имеют смысл. Теперь я должен проанализировать данные, отправленные Modbus, но это уже другая тема. Спасибо!

...