目前,我與施耐德功率邏輯電氣設備的工作。我想從設備讀取數據並在我的系統中顯示數值。到目前爲止,我發現了J2mod,Jamod和Modbus4Java庫。我用所有的modbus4java來連接並獲取設備的數據。Modbus4J Modbus RTU主
其實我還是搞不清我是否想創建主側或從一側。基於我的理解,該設備將成爲奴隸,我的系統將成爲主人(第一個問題)。
下面是設置在我的設備。它表明處於從站模式的設備及其協議是Modbus RTU。所以,我需要創建一個主應用程序來與它進行通信,而使用ModbusRTU協議正確嗎? (第二問題)
- 模式:從站
- 協議:Modbus RTU的
- 地址:1
- 波特率:38400
- 校驗位:無
下面是對代碼我的應用程序作爲法師和使用的ModbusRTU協議
public static void main(String[] args) throws ModbusTransportException, ErrorResponseException {
ModbusFactory factory = new ModbusFactory();
SerialParameters params = new SerialParameters();
params.setCommPortId("COM6");
params.setBaudRate(9600);
params.setDataBits(8);
params.setStopBits(1);
params.setParity(0);
ModbusMaster master = factory.createRtuMaster(params);
master.setTimeout(1000);
master.setRetries(0);
long start = System.currentTimeMillis();
try {
master.init();
} catch (Exception e) {
System.out.println("Modbus Master Init Error: " + e.getMessage());
return;
}
try {
System.out.println("Reg. 1001 Value:" + master.getValue(1, RegisterRange.HOLDING_REGISTER, 3110, DataType.FOUR_BYTE_FLOAT_SWAPPED));
}
finally {
master.destroy();
}
System.out.println("Time elapsed: " + (System.currentTimeMillis() - start) + "ms");
}
這是我從Modbus4Java頁面提供的示例代碼中獲得的代碼。另一件值得關注的事情是價值params.setCommPortId("COM6");
除了我可以放在那裏的「COM6」還有什麼其他價值。因爲基本上它會收到一個字符串值。那麼我能夠把它的任何字符串值?這個特定的setCommPortID的功能是什麼? (第3題)
在研究樣本代碼提供由Modbus4Java頁面,它不把設備的IP地址。但在我的情況下,我的設備有一個IP地址。而IP地址只能在Slave應用程序中使用。我的系統應該如何識別設備的IP地址? (第四個問題)。
我運行此代碼片斷後,我得到了一個錯誤:
穩定圖書館
本地庫版本= RXTX-2.1-7
的Java庫版本= RXTX-2.1-7
Modbus主初始化錯誤:com.serotonin.io.serial.SerialPortException:gnu.io.NoSuchPortException
請,請,請您幫我。我一直堅持這個近一個月。真的希望有人能幫助我。預先感謝您提供任何形式的幫助和建議。
謝謝你的回答。但我已經知道我的錯誤是什麼。 –
不用擔心 - 我會定期尋找未回答的問題並回答問題;) –