Я хочу использовать код функции = 03, что означает чтение регистров временного хранения, но у меня возникли ошибки после подключения оборудования.
Я использовал jar-файл j2mod-1.06 и rxtx. Я использую для него eclipse . В eclipse, во время сеанса покрытия эта часть отображается красным, что означает, что он не запущен.
catch (Exception exception)
{
System.out.println("Not Run");
exception.printStackTrace();
}
/* Read the first four holding registers */
try
{
slaveResponse = serialMaster.readMultipleRegisters(unitID, startingRegister, registerCount);
for (int i = 0; i < slaveResponse.length; i++)
{
System.out.println("reg" + i + " = " + slaveResponse[i]);
}
}
Вот его код
import com.ghgande.j2mod.modbus.facade.ModbusSerialMaster;
import com.ghgande.j2mod.modbus.Modbus;
import com.ghgande.j2mod.modbus.ModbusException;
import com.ghgande.j2mod.modbus.procimg.Register;
import com.ghgande.j2mod.modbus.util.SerialParameters;
public class ModbusMaster
{
/**
* @param args
*/
public static void main(String[] args)
{
/* The important instances of the classes mentioned before */
ModbusSerialMaster serialMaster = null; // the connection
/* Variables for storying the parameters */
String portname = "COM3"; // the name of the serial port to be used
int unitID = 1 ; // the unit identifier we will be talking to
int startingRegister = 10001; // the reference, where to start reading from
int registerCount = 0; // the count of the input registers to read
Register[] slaveResponse = new Register[registerCount];
try
{
/* Setup the serial parameters */
SerialParameters parameters = new SerialParameters();
parameters.setPortName(portname);
parameters.setBaudRate(9600);
parameters.setDatabits(8);
parameters.setParity("None");
parameters.setStopbits(1);
parameters.setEncoding(Modbus.SERIAL_ENCODING_RTU);
parameters.setEcho(false);
/* Open the connection */
serialMaster = new ModbusSerialMaster(parameters);
serialMaster.connect();
}
catch (Exception exception)
{
System.out.println("Not Run");
exception.printStackTrace();
}
/* Read the first four holding registers */
try
{
slaveResponse = serialMaster.readMultipleRegisters(unitID, startingRegister, registerCount);
for (int i = 0; i < slaveResponse.length; i++)
{
System.out.println("reg" + i + " = " + slaveResponse[i]);
}
}
catch (ModbusException e)
{
e.printStackTrace();
}
/* Close the connection */
serialMaster.disconnect();
}
}
Вот полученная мной ошибка.
com.ghgande.j2mod.modbus.ModbusIOException: I/O exception - failed to read
at com.ghgande.j2mod.modbus.io.ModbusRTUTransport.readResponse(ModbusRTUTransport.java:645)
at com.ghgande.j2mod.modbus.io.ModbusSerialTransaction.execute(ModbusSerialTransaction.java:189)
at com.ghgande.j2mod.modbus.facade.ModbusSerialMaster.readMultipleRegisters(ModbusSerialMaster.java:269)
at ModbusMaster.main(ModbusMaster.java:53)