# Modbus4j **Repository Path**: green-night/Modbus4j ## Basic Information - **Project Name**: Modbus4j - **Description**: 这是一个用Java实现modbus-rtu协议的框架 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: http://co4.top/modbus4j - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-11-18 - **Last Updated**: 2022-11-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MSocket4j 基于Modbus协议实现的框架 # 写在前面 通讯方式采用的是Java的Socket来进行通讯,也就是代表走的是TCP连接,但是使用的协议则是modbus-rtu协议,此框架不但支持与PLC设备通讯,同时还支持只生成报文信息,使得用户的选择可以更灵活,用户可以选择将连接交给框架来处理也可以选择将连接有自己来管理,同时将代码开源希望有大佬能指点一二 联系方式 : 2429921892@qq.com # 使用详情 参考 Test.java ~~~ package top.co4.modbus4j.test; import top.co4.modbus4j.Interface.rtu.Read; import top.co4.modbus4j.Interface.rtu.Write; import top.co4.modbus4j.code.DataType; import top.co4.modbus4j.exception.ModbusException; import top.co4.modbus4j.function.read.ReadCoilsRegisters; import top.co4.modbus4j.function.read.ReadDiscreteInputRegisters; import top.co4.modbus4j.function.read.ReadHoldingRegisters; import top.co4.modbus4j.function.read.ReadInputRegisters; import top.co4.modbus4j.function.write.WriteCoilRegisters; import top.co4.modbus4j.function.write.WriteCoilsRegisters; import top.co4.modbus4j.function.write.WriteRegister; import top.co4.modbus4j.function.write.WriteRegisters; import java.io.IOException; /** * @author CodeXYW * @date 2022/7/17 8:23 */ public class Test { private Write write; private Read read; /*** * @Description //TODO 读线圈 * @Date 2022/7/19 18:13 */ public void readCoils() throws IOException, ModbusException { read=new ReadCoilsRegisters(); String s = read.readMsg(1, 0, 1,0); System.out.println(s); } /*** * @Description //TODO 读离散输入寄存器 * @Date 2022/7/19 18:17 */ public void readDiscreteInput() throws IOException, ModbusException { read=new ReadDiscreteInputRegisters(); String s = read.readMsg(1, 0, 2,0); System.out.println(s); } /** * @Description //TODO 读取输入型寄存器 * @Date 2022/7/19 18:42 */ public void readInput() throws ModbusException { read=new ReadInputRegisters(); String s = read.readMsg(1, 0, 3, DataType.FLOAT); System.out.println(s); } /** * @Description //TODO 读取保持型寄存器 * @Date 2022/7/19 18:43 */ public void readHolding() throws ModbusException { read=new ReadHoldingRegisters(); String s = read.readMsg(1,0,3,DataType.FLOAT); System.out.println(s); } /** * @Description //TODO 写入单个线圈 * @Date 2022/7/20 19:03 */ public void writeCoil() throws ModbusException { write=new WriteCoilRegisters(); String s = write.writeMsg(1, 0, true,0); System.out.println(s); } /** * @Description //TODO 写入寄存器 * @Date 2022/7/20 19:21 */ public void writeRegister() throws ModbusException { write=new WriteRegister(); String s = write.writeMsg(1, 0, 2, DataType.INTEGER); System.out.println(s); } /** * @Description //TODO 批量写入线圈 * @Date 2022/7/20 19:21 */ public void writeCoils() throws ModbusException { write=new WriteCoilsRegisters(); String s = write.writeMsg(1, 1, new boolean[]{true, true, true, true, true, true, true, true, true},0); System.out.println(s); } /** * @Description //TODO 批量写入保持型寄存器(浮点数类型数据) * @Date 2022/7/21 11:15 */ public void writeRegistersFloat() throws ModbusException { write=new WriteRegisters(); String s = write.writeMsg(1, 0, new float[]{1, 12, 5}, DataType.FLOAT); System.out.println(s); } /** * @Description //TODO 批量写入保持型寄存器(Int类型数据) * @Date 2022/7/21 11:16 */ public void writeRegistersInt() throws ModbusException { write=new WriteRegisters(); String s = write.writeMsg(1, 0, new int[]{1, 12, 5}, DataType.INTEGER); System.out.println(s); } public static void main(String[] args) throws ModbusException, IOException { Test test = new Test(); System.out.println("===================读取数据报文==================="); test.readCoils(); test.readDiscreteInput(); test.readHolding(); test.readInput(); System.out.println("===================写入数据报文==================="); test.writeCoil(); test.writeCoils(); test.writeRegister(); test.writeRegistersFloat(); test.writeRegistersInt(); } } ~~~