当前位置: 首页 > news >正文

java整合modbusRTU与modbusTCP

理解 Modbus TCP 报文格式,Modbus TCP 报文格式如下:

| Transaction ID (2 bytes) | Protocol ID (2 bytes) | Length (2 bytes) | Unit ID (1 byte) | Function Code (1 byte) | Data (N bytes) |
  • Transaction ID:标识事务的唯一标识符,确保正确的 Transaction ID:每个请求的 Transaction ID 都应该唯一,以便服务器能够正确区分不同的事务(2位,00 00为2位)
  • Protocol ID:总是 0x0000(Modbus Protocol)(2位,00 00为2位)
  • Length:后续数据的长度(功能码 + 数据)(2位,00 00为2位)
  • Unit ID:从站地址(也叫单元标识符)(1位,00 为位)
  • Function Code:操作码(功能码)(1位,00 为位)
  • Data:具体的数据内容(如寄存器地址、寄存器数量等)(N位)

yml配置

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.6</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>modbusRTU</artifactId><version>0.0.1-SNAPSHOT</version><name>modbusRTU</name><description>modbusRTU</description><properties><java.version>8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>com.intelligt.modbus</groupId><artifactId>jlibmodbus</artifactId><version>1.2.9.9</version></dependency><dependency><groupId>org.scream3r</groupId><artifactId>jssc</artifactId><version>2.8.0</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

modbus几种类型源码

使用高级协议库(如 Modbus 库)测试的java代码modbusRTU

package com.example.modbusrtu.config;import com.intelligt.modbus.jlibmodbus.master.ModbusMaster;
import com.intelligt.modbus.jlibmodbus.master.ModbusMasterFactory;
import com.intelligt.modbus.jlibmodbus.serial.SerialParameters;
import com.intelligt.modbus.jlibmodbus.serial.SerialPort;
import lombok.SneakyThrows;
import org.springframework.stereotype.Service;@Service
public class ModbusService {@SneakyThrowspublic static void main(String[] args) {// 配置串口参数SerialParameters serialParameters = new SerialParameters();serialParameters.setDevice("COM3"); // 端口名,例如 COM3serialParameters.setBaudRate(SerialPort.BaudRate.BAUD_RATE_9600); // 波特率serialParameters.setDataBits(8); // 数据位serialParameters.setStopBits(1); // 停止位serialParameters.setParity(SerialPort.Parity.NONE); // 校验位ModbusMaster master = null;try {/** 创建 Modbus 主站*/master = ModbusMasterFactory.createModbusMasterRTU(serialParameters);/**初始化 Modbus 主站连接*/master.connect();// 读取从站地址为 1 的寄存器从地址 1 开始的 10 个寄存器的值int slaveId = 1; // 从站地址int startAddress = 1; 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • BUG——GT911上电后中断一直触发
  • RK3588——网口实时传输视频
  • 什么是深拷贝
  • ubuntu20 vmware硬盘空间不够,进行扩容,实操成功!
  • 通俗易懂 serverless 架构、微服务架构和云原生架构,并简单代码
  • UltraISO制作Centos7.X系统U盘启动
  • 2024年入职/转行网络安全,该如何规划?_网络安全职业规划
  • Docker的介绍、保姆级安装和使用
  • 数据库学习(进阶)
  • LoginFormDTO
  • iOS18 Beta7 最终测试版推送:苹果的又一次技术飞跃
  • HTTP 之 HTTP/1.0、HTTP/1.1和HTTP2的缓存策略(六)
  • [数据集][目标检测]起子检测数据集VOC+YOLO格式1215张1类别
  • 在Excel中“直接引用”字符串地址
  • 【实战教程】用scikit-learn玩转KNN:鸢尾花数据集的分类之旅
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • css布局,左右固定中间自适应实现
  • express + mock 让前后台并行开发
  • extract-text-webpack-plugin用法
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • JavaScript实现分页效果
  • Otto开发初探——微服务依赖管理新利器
  • ReactNative开发常用的三方模块
  • React中的“虫洞”——Context
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • 从零搭建Koa2 Server
  • 第十八天-企业应用架构模式-基本模式
  • 构造函数(constructor)与原型链(prototype)关系
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 今年的LC3大会没了?
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 浅谈Golang中select的用法
  • 全栈开发——Linux
  • 数据科学 第 3 章 11 字符串处理
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 通过调用文摘列表API获取文摘
  • 移动端高清、多屏适配方案
  • #《AI中文版》V3 第 1 章 概述
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • (02)Hive SQL编译成MapReduce任务的过程
  • (1)Jupyter Notebook 下载及安装
  • (C语言)fread与fwrite详解
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (二)原生js案例之数码时钟计时
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • .bashrc在哪里,alias妙用
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .net 7和core版 SignalR
  • .net core 6 redis操作类
  • .NET Core Web APi类库如何内嵌运行?
  • .NET HttpWebRequest、WebClient、HttpClient
  • .net6 webapi log4net完整配置使用流程
  • /boot 内存空间不够