В настоящее время я работаю с электрическим устройством Schneider Power Logic. Я хочу прочитать данные с устройства и показать значение в моей системе. До сих пор я открываю библиотеку J2mod, Jamod и Modbus4Java. Я использовал все modbus4java для подключения и получения данных устройства.Modbus4J Modbus RTU master
На самом деле я все еще путаю, полагаю ли я, чтобы создать сторону «Ведущий» или «Невольник». Основываясь на моем понимании, устройство будет Slave, и моя система будет Master (1-й вопрос).
Ниже приведена настройка НА МОЕМ УСТРОЙСТВЕ. Он указывает, что устройство в подчиненном режиме и его протокол - Modbus RTU. Итак, мне нужно создать мастер-приложения, чтобы общаться с ним правильно, используя протокол ModbusRTU? (Второй вопрос)
- Режим: Подчиненный
- Протокол Modbus RTU
- Адрес: 1
- Скорость передачи данных: 38400
- Четность: Нет
Ниже приведен код мои приложения действуют как Master и используют протокол 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», я могу там положить. Потому что в основном он получает значение String. Могу ли я поместить в него какое-либо значение String? И какова функция этого конкретного setCommPortID. (3-й вопрос)
Рассматривая пример кода, предоставляемого на странице Modbus4Java, он не помещает IP-адрес устройства. Но в моем случае мое устройство получило IP-адрес. И IP-адрес используется только в приложениях Slave. Как моя система должна распознавать IP-адрес устройства? (4-й вопрос).
И после того, как я запускаю этот код, я получил сообщение об ошибке:
Стабильная библиотека
Native Lib Version = RXTX-2.1-7
Java Lib Version = RXTX-2.1-7
Modbus Master Init Ошибка: com.serotonin.io.serial.SerialPortException: gnu.io.NoSuchPortException
Пожалуйста, пожалуйста, и, пожалуйста, помогите мне. Я застрял с этим почти месяц. Надеюсь, кто-то там сможет мне помочь. Заранее благодарю вас за любую помощь и предложение.
Благодарим вас за ответ. Но я уже выяснил, в чем моя ошибка. –
Не беспокойтесь - я периодически ищу ответы на непогашенные вопросы и отвечаю на них;) –