From 52c755cbd4269597060fd0ac6abb622e25811afa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0=B8=D0=B9=20=D0=9C=D0=B0?= =?UTF-8?q?=D0=BB=D1=8B=D0=B3=D0=B8=D0=BD?= Date: Wed, 7 Jun 2023 19:42:58 +0000 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B2=D0=B0=D1=8F=20=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D1=81=D0=B8=D1=8F=20Modbus=20master?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Используется библеотека j2mod. pom.xml добавлен для того, что бы эта библиотека работала. Сборка на maven SDK проекта: openjdk-20 --- Modbus_RTU_Master/ModbusRTUMaster.java | 53 ++++++++++++++++++++++++++ Modbus_RTU_Master/pom.xml | 49 ++++++++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 Modbus_RTU_Master/ModbusRTUMaster.java create mode 100644 Modbus_RTU_Master/pom.xml diff --git a/Modbus_RTU_Master/ModbusRTUMaster.java b/Modbus_RTU_Master/ModbusRTUMaster.java new file mode 100644 index 0000000..b4e1c57 --- /dev/null +++ b/Modbus_RTU_Master/ModbusRTUMaster.java @@ -0,0 +1,53 @@ +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(); + } + } +} + + + diff --git a/Modbus_RTU_Master/pom.xml b/Modbus_RTU_Master/pom.xml new file mode 100644 index 0000000..b305470 --- /dev/null +++ b/Modbus_RTU_Master/pom.xml @@ -0,0 +1,49 @@ + + + 4.0.0 + + org.example + ModbusV3 + 1.0-SNAPSHOT + + + 20 + 20 + UTF-8 + + + + + com.ghgande + j2mod + 3.1.1 + + + + org.slf4j + slf4j-api + 1.7.5 + + + org.slf4j + slf4j-simple + 1.6.4 + + + + net.wimpi + jamod + 1.2 + + + + com.intelligt.modbus + jlibmodbus + 1.2.9.7 + + + + + \ No newline at end of file