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(); } } }