2017-02-03 139 views
1

我需要通過USB端口(使用USB至RS-485轉換器)通過RS-485接口從Data Aggregator設備讀取數據以用於JavaFX上的桌面應用程序,所以我一直在檢查連接並獲取適當的值。如何從通過USB連接的RS-485獲取數據

Data Aggregator Device收集有關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連接到電腦後。然後我試着通過Bray檢查與終端1.9的連接。我嘗試發送一些東西。而作爲接收消息,它也給我發送了一些數據。但是,這並不意味着一切都連接良好。終端也顯示我一些幀錯誤。我知道,基於「主從」方案的Modbus協議。因此,作爲客戶端的PC是「主」,而作爲服務器的設備是「從」。我必須向奴隸發送一些請求以獲得一些預期的迴應。但是,怎麼樣? 請檢查我的連接!我不知道下一步該怎麼做。

回答

1

RS-485是差分的,只需要兩根導線,您可以安全地移除接地導線(GND)。然後,將電線連接到USB至RS485轉換器上的R +和R-上。

做完了,我可以問你,你是如何嘗試發送一些東西的? Modbus需要最後一個字節,這是很難用手確定的CRC。你創建了一個有效的modbus數據包嗎?

一個有效的Modbus包需要一個接收器的地址,有效載荷長度,數據本身和最終CRC

+0

非常感謝您的回覆! 我已經移除了GND。所以,如果我理解正確,而不是USB轉換器上的A和B,我必須將電線連接到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終端。它實際上有一個選項可以爲modbus自動計算CRC並將其添加到數據包的最後位置。 你可以在他們的主頁下載免費版本。

docklight.de

它的使用非常簡單。與您使用的Bray終端相同。下面是如何爲每個軟件包設置modbus CRC計算的示例。 https://docklight.de/manual/sendingmodbuscommandswithc.htm

我知道他們也有很好的支持。 一旦你成功地將消息發送到設備並獲得答案,事情就會變得容易得多,因爲你會理解協議的實際工作方式。 Modbus RTU是非常成熟的協議,但仍然使用它,因爲許多現有系統都使用它,並且將它添加到某個設備非常簡單。所有設備需要的是串行端口(UART)連接到modbus。所以不難理解並使用它。只要看看我在這封郵件中給出的modbus的具體採用的解釋視頻和終端。

+0

非常感謝你@Vladimir!這是一開始就非常重要的信息。因爲我不明白它是如何工作的,並且每天都打破我的想法:)不幸的是,製造此設備的公司不想分享協議規範。這就是爲什麼我的下一步被拒絕。 – catscoolzhyk