ModBus プロトコルをサポートするユニットがあり、'Jamod' を使用してユニットに接続してレジスタ値を読み取ろうとすると、エラー コード 2 が表示されます。
ユニット構成:
このユニットは、RS-485 およびイーサネット インターフェイスを介して Modbus プロトコルをサポートします。RS-485 インターフェイスでは、Modbus ネットワーク上に構成可能な Modbus アドレスがあります。デフォルトでは、これは 99 に設定されています。ユニットはブロードキャスト アドレス 0 にも応答します。
RS-485 インターフェイスは、デフォルトで 9600 ボーのボー レートで動作し、8 ビットおよび偶数パリティを使用します。1200、2400、4800、9600、19200、38400、57600、または 15200 ボーに設定できます。
イーサネット インターフェイスは RJ45 コネクタを使用します。このインターフェイスは、ポート 502 で TCP/IP イーサネット接続をサポートします。スレーブ アドレスは 0 です。
このユニットは、Modbus Read Input Registers 機能コード 4 を使用してデータを返します。また、Modbus 保持レジスタ アクセス機能 3 および 16 を使用して構成パラメータの読み取りと書き込みを行うこともできます。また、Modbus 診断機能コード 8 のサブセットもサポートされています。
ユニットに接続して読む方法を教えてください、ありがとう
*******************Sample Code***********************
import java.io.*;
import java.lang.*;
import java.net.InetAddress;
import net.wimpi.modbus.Modbus;
import net.wimpi.modbus.io.ModbusTCPTransaction;
import net.wimpi.modbus.msg.ReadInputRegistersRequest;
import net.wimpi.modbus.msg.ReadInputRegistersResponse;
import net.wimpi.modbus.net.TCPMasterConnection;
public class modbus_conn {
public static void main(String args[]){
try {
/* The important instances of the class*/
TCPMasterConnection con = null; //the connection
ModbusTCPTransaction trans = null; //the transaction
ReadInputRegistersRequest rreq = null; //the read request
ReadInputRegistersResponse rres = null; //the read response
/* Variables for storing the parameters */
InetAddress addr = null; // the slave's address
int port = 502; // the default port
//int coil = 1; // one of the coils (D0 1 for this address) to switch ON/OFF
//Setup the parameters
addr = InetAddress.getByName("127.192.6.31"); // ** The address assigned to the module **
//Open the connection
con = new TCPMasterConnection(addr);
con.setPort(port);
con.connect();
//Prepare the READ request
int k = 30001; // register address starting from 30001
rreq = new ReadInputRegistersRequest(k, 2); // Reading 8 bytes
//Prepare the READ transaction
trans = new ModbusTCPTransaction(con);
trans.setRequest(rreq);
//Execute the READ transaction
trans.execute();
rres = (ReadInputRegistersResponse) trans.getResponse();
System.out.println("Hex Value of register " + "= " + rres.getHexMessage());
//Close the connection
con.close();
}
catch (Exception ex) {
System.out.println("Error");
ex.printStackTrace();
}
}
}
エラー:
Error
net.wimpi.modbus.ModbusSlaveException: Error Code = 2
at net.wimpi.modbus.io.ModbusTCPTransaction.execute(ModbusTCPTransaction.java:207)
at modbusConn.Control_ADAM.main(modbus_conn.java:48)