Подключение RS232 Modbus к USB

У меня есть устройство RS232, которое отправляет данные по протоколу Modbus. У меня проблемы со связью с ним, и я думаю, что моя проводка неверна. Так как большинство устройств Modbus работают через RS485, информацию об этом найти сложно.

Это кабель от датчика:Сенсорный кабель

У меня есть преобразователь USB в RS232 и кабель RS232. Я зачистил одну сторону кабеля RS232 и подключил провода RXD, TXD и GND к соответствующим проводам датчика. следуя этой схеме:

введите описание изображения здесь

Датчик питается от внешнего источника питания 5В. У меня нет связи с датчиком. Я попробовал это, поменяв местами RXD и TXD, а также на Raspberry Pi с питанием для датчика, поступающим от pi.

Я также пытался использовать преобразователь RS485 в USB, я получаю данные таким образом, но они не имеют никакого смысла в соответствии с протоколом Modbus, они кажутся случайными. Я использовал модуль Python с минимальным модулем Modbus и инструменты последовательного тестирования. Датчик представляет собой Calex PyroCube S, согласно техническому описанию, он использует скорость передачи 9600, отсутствие четности и 2 стоповых бита. Я думаю, что номер раба 1?

Вроде бы очевидно, но: вы подключили TX на датчике к RX на USB-to-RS232 и RX на датчике к TX на кабеле? (Я спрашиваю, потому что вы говорите ... соответствует ... ). Modbus - это протокол, он может работать поверх RS485 или RS232 или любых других электрических уровней (в инструкции к вашему устройству написано, что он на RS232, так что можете забыть о RS485). Мануал аппарата выглядит очень убого, я даже не смог найти ID слейва, может в меню аппарата есть настройка. Если кто-то еще использовал датчик раньше, имейте в виду, что скорость передачи данных могла быть изменена.
В настройках вашего софта нужно отключить управление потоком
Обратитесь к карте регистров Modbus в руководстве вашего датчика, чтобы знать, что запрашивать - хотя, если вы запрашиваете несуществующий регистр, вы должны как минимум получить ответ об ошибке = полное сообщение в ответ, а не тишина . Вы можете попробовать сканировать идентификаторы ведомых устройств в последовательности. Адресное пространство идентификаторов подчиненных устройств составляет 0..254, если не изменяет память.
По моему опыту, правильный способ сделать это — применить общий подход к отладке. Разделяй и властвуй. Пройдитесь по цепочке сигналов и примените щуп/касание, чтобы увидеть, как далеко вы можете увидеть какой-либо сигнал. Или вы можете начать с самого нижнего «слоя», где он доступен. RS232 хорош тем, что он относительно медленный. Вам нужно проверить, есть ли у вас импульсы/фрагменты на выводе TX ПК (вывод 3 DB9). Оптимальным инструментом был бы осциллограф, но я сомневаюсь, что он у вас есть. На скорости 9600 бит/с попробуйте подключить светодиод последовательно с резистором 1 кОм. Или активный динамик, последовательно с линейным входом поставить резистор 100кОм.
Если вы видите свои запросы, попробуйте проверить ответы - тот же тест, вы поняли. Что касается программного обеспечения, я не знаю pythonesque API для последовательных устройств. Но я хорошо разбираюсь в базовых нативных API в Linux и Win32. Если у вас Windows, попробуйте использовать RealTerm — настройте COM-порт и попробуйте отправить несколько двоичных последовательностей байтов, включая запросы Modbus (единственная трудная часть — это контрольная сумма). Если у вас есть какие-то зонды на RS232 и ничего не видно, сначала проверьте зонды — отключите управление потоком и начните с 2400 бит/с.
Кстати, самый простой тест обратной связи — это замыкание контактов 2 и 3 в DB9. Убедитесь, что вы можете отличить физическую петлю от возможного локального эха на основе ПО в вашем терминале (по умолчанию должно быть отключено). Этот тест отлично работает в любом эмуляторе терминала: шпатлевке, гипертерминале, миникоме и так далее. Это первая проверка работоспособности вашей среды.
Что это за датчик? Даташит было бы неплохо.

Ответы (1)

Если у него есть RXD и TXD, это не RS485. Для меня это выглядит как обычный RS-232, на котором есть данные Modbus RTU.

введите описание изображения здесь

Попробуйте прочитать регистр держателя 0x0040 с помощью QModMaster на скорости 9600 бод.