9-10.Modbus_master-slave_PC/Modbus_RTU_Master/ModbusRTUMaster.java
Евгений Малыгин 52c755cbd4 Первая версия Modbus master
Используется библеотека j2mod.
pom.xml добавлен для того, что бы эта библиотека работала.
Сборка на maven
SDK проекта: openjdk-20
2023-06-07 19:42:58 +00:00

54 lines
2.3 KiB
Java

package org.example;
import com.ghgande.j2mod.modbus.ModbusException;
import com.ghgande.j2mod.modbus.facade.ModbusSerialMaster;
import com.ghgande.j2mod.modbus.procimg.InputRegister;
import com.ghgande.j2mod.modbus.procimg.Register;
import com.ghgande.j2mod.modbus.procimg.SimpleRegister;
import com.ghgande.j2mod.modbus.util.SerialParameters;
public class ModbusRTUMaster {
public static void main(String[] args) {
// Установка параметров порта
SerialParameters parameters = new SerialParameters();
parameters.setPortName("COM3"); // Имя порта
parameters.setBaudRate(9600); // Скорость передачи
parameters.setDatabits(8); // Биты данных, в нашем случае передается по 8 битов
parameters.setParity("None"); // Без бита четности
parameters.setStopbits(1); // Стоповый бит 1
parameters.setEncoding("rtu"); // Кодирование RTU
parameters.setEcho(false); // Лок. эхо выкл
// Создание экземпляра ModbusSerialMaster
ModbusSerialMaster modbusMaster = new ModbusSerialMaster(parameters);
try {
modbusMaster.connect(); // Подключение к устройству
int slaveId = 1; // ID устройства slave
int registerAddress = 0; // Адрес регистра
// Чтение значения из регистра
InputRegister[] registers = modbusMaster.readInputRegisters(slaveId, registerAddress, 1);
int value = registers[0].toUnsignedShort();
System.out.println("Значение регистра: " + value);
// Запись значения в регистр
int newValue = 123;
SimpleRegister register = new SimpleRegister(newValue);
modbusMaster.writeSingleRegister(slaveId, registerAddress, register);
System.out.println("Значение успешно записано в регистр.");
modbusMaster.disconnect(); // Отключение от устройства
}catch (ModbusException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}