2017-02-03 1 views
1

Мне нужно прочитать данные с некоторых устройств агрегатора данных через интерфейс RS-485 через USB-порт (используемый конвертер USB-RS-485) для настольного приложения на JavaFX, поэтому я уложил на проверку соединение и получил правильные значения.Как получить данные с RS-485, подключенного через USB

Устройство сбора данных собирает информацию о произведенном токе, мощности и т. Д. От PV-модуля (солнечной энергии). Это устройство имеет единственный порт RS-485. Как я прочитал из документации, он использует протокол Modbus RTU (с настройками: 9600-8N1).

Честно говоря, это мой первый опыт работы с COM-портами и устройствами. Вот почему я даже не знаю, правильно ли подключаю контакты. Я прочитал много вещей, связанных с RS-485, Modbus. Но, тем не менее, я на первых шагах.

Итак, я использую простой кабель UTP для подключения. И то, что я сделал:

  1. This is how I connect USB-to-RS485 converter
  2. And this is about Data Aggregator Device

Windows, найден виртуальный порт "COM3", после подключения USB к компьютеру. Затем я пытаюсь проверить соединение с терминалом 1.9 by Bray. Я пытаюсь что-то отправить. И, получая сообщения, он также отправил мне некоторые данные. Однако это не означает, что все хорошо связано. Также терминал показывает мне ОШИБКА FRAME. Я знаю, что протокол Modbus основан на схеме «master-slave». Поэтому ПК как клиент - «Мастер», а устройство в качестве сервера - «Ведомый». Мне нужно отправить запрос рабу, чтобы получить ожидаемый ответ. Но как?! Пожалуйста, проверьте мои подключения! Я не знаю, что делать дальше.

ответ

1

RS-485 является дифференциальным и требует всего два провода, вы можете безопасно удалить провод заземления (GND). Затем подключите провода к R + и R- на конвертере USB-to-RS485.

Выполнено, могу ли я спросить вас, как вы пытались что-то отправить? Modbus требует конечного байта, CRC, который трудно определить вручную. Вы создали действительный пакет Modbus?

Действительный пакет Modbus требует адрес приемника, длина полезной нагрузки, сами данные и окончательный CRC

+0

благодарит за ваш ответ! Я удалил GND. Итак, если я правильно понял, вместо A и B на USB-конвертере, мне нужно подключить провода к R + и R-? А как насчет устройства? Должен ли я делать то же самое? – catscoolzhyk

+0

Я только что что-то прислал. Конечно, это не очень хорошо. Я просто попытался увидеть реакцию виртуального порта. Я не знаю, как отправить. Я знаю, что этот пакет включает заголовок, PDU, контрольную сумму. Будет здорово, если вы покажете примерный пример, как отправить правильный пакет! P.S .: Я хочу сделать свой проект с Java, так что можно сделать его с помощью java? Я нашел много библиотек. Но что лучшего? PSS: http://forum.easyelectronics.ru/download/file.php?id=30525&sid=a73ca588be24d221b7ffe32118de379a&mode=view Что я сделал в терминале – catscoolzhyk

+0

, сначала вам нужно узнать формат точного пакета, как ожидается, солнечным инвертор. Проверьте руководство, оно должно быть там –

1

Я не знаю о Java, но если у вас есть спецификация протокола устройств, безусловно, вы можете использовать терминал для отправки сообщения на Modbus и чтения сообщений. Таким образом, вы проведете тестирование протокола, и впоследствии не должно быть сложно сделать заказное программное обеспечение. Но пока вы не сможете отправить сообщение и получить полезное сообщение с помощью программного обеспечения терминала, я рекомендую вам придерживаться его.

Это видео YouTube даст базовые знания, необходимые о MODBUS RTU формате пакета: https://www.youtube.com/watch?v=OvRD2UvrHjE

Самая сложная часть вычисления CRC каждый раз. Но, к счастью, вы можете загрузить терминал Docklight. На самом деле у него есть возможность автоматически вычислять CRC для modbus и добавлять его в последние позиции пакета. Вы можете скачать бесплатную версию на своей домашней странице.

docklight.de

Он очень прост в использовании. То же, что и терминал Bray, который вы использовали. И вот пример того, как настроить вычисление CRC Modbus для каждого пакета. https://docklight.de/manual/sendingmodbuscommandswithc.htm

Я знаю, что они также имеют большую поддержку. Как только вы успешно отправите сообщение на устройство и получите ответ, все станет намного проще, потому что вы поймете, как работает протокол. Modbus RTU - очень зрелый протокол, но он по-прежнему используется, потому что многие существующие системы используют его, и его очень просто добавить на какое-то устройство. Для подключения всех устройств требуется последовательный порт (UART) для подключения к Modbus. Так что это не так сложно понять и использовать. Просто ознакомьтесь с объяснением видео и терминалом, специально принятым для modbus, который я дал ссылкам в этом сообщении.

+0

Большое спасибо @ Владимир! Это очень важная информация в самом начале. Потому что я не понимал, как это работает, и каждый день ломал голову. К сожалению, компания, которая сделала это устройство, не хочет делиться спецификацией протокола. Вот почему мои следующие шаги были отклонены. – catscoolzhyk

Смежные вопросы