Java 使用Modsim32进行modbus-tcp协议模拟(从机)并使用java当做主机(Maven项目)进行从机信息获取及修改
近期在搞物联网相关内容,接触到了modbus协议,做个记录方便以后使用。
本篇文章主要给大家演示如何通过java对接modbus-tcp协议,后续还会介绍如何通过Java对接modbus-rtu协议。
一、环境准备
关于modbus的协议介绍,这里就不过多赘述了,百度很多,我们直接进入正题。
1.下载modscan32,其中应该会包含modscan32(主机)及modsim32(从机),我们后续会使用modsim32模拟从机。
下载地址或自行百度搜索(网上资源还是很多的):
https://download.csdn.net/download/liboyang71/74307745
2.java环境准备,此处我们使用的是jdk1.8
二、代码编写
2.1 modsim准备
首先我们先使用modsim将从机数据进行准备,流程入下图所示
1.点击 连接设置->连接->Modbus/TCP 服务器
2.文件->新建
3.配置从机相关数据
我们将address设置位0001,deviceId设置为1,point type选择03,这三个参数后续需要和代码有对应关系,我们说明一下,如下图所示,然后我们将0001设置为5721,0002设置为随机数变动。
到这里,我们关于modsim的相关准备工作就做完了,相当于我们模拟了一个modbus-tcp协议的硬件设备,接下来我们来编写代码。
2.2编写Java代码
1.创建一个maven项目
2.添加jlibmodbus依赖
<dependency><groupId>com.intelligt.modbus</groupId><artifactId>jlibmodbus</artifactId><version>1.2.9.7</version></dependency>
3.编写Java代码
package com.beyondli;import com.intelligt.modbus.jlibmodbus.Modbus;
import com.intelligt.modbus.jlibmodbus.master.ModbusMaster;
import com.intelligt.modbus.jlibmodbus.master.ModbusMasterFactory;
import com.intelligt.modbus.jlibmodbus.tcp.TcpParameters;import java.net.InetAddress;public class ModbusPollTCPTest {public static void main(String[] args) {try {// 设置主机TCP参数TcpParameters tcpParameters = new TcpParameters();// 设置TCP的ip地址InetAddress adress = InetAddress.getByName("127.0.0.1");// TCP参数设置ip地址// tcpParameters.setHost(InetAddress.getLocalHost());tcpParameters.setHost(adress);// TCP设置长连接tcpParameters.setKeepAlive(true);// TCP设置端口,这里设置是默认端口502tcpParameters.setPort(Modbus.TCP_PORT);// 创建一个主机ModbusMaster master = ModbusMasterFactory.createModbusMasterTCP(tcpParameters);Modbus.setAutoIncrementTransactionId(true);int slaveId = 1;//从机地址int offset = 0;//寄存器读取开始地址int quantity = 5;//读取的寄存器数量while (true) {try {if (!master.isConnected()) {master.connect();// 开启连接}// 读取对应从机的数据,readInputRegisters读取的写寄存器,功能码04//int[] registerValues = master.readInputRegisters(slaveId, offset, quantity);int[] registerValues = master.readHoldingRegisters(slaveId, offset, quantity);// 控制台输出for (int value : registerValues) {System.out.println(" Value: " + value);}//修改3号位为7165master.writeSingleRegister(slaveId, 2, 7165);Thread.sleep(1000);}catch (Exception e) {e.printStackTrace();Thread.sleep(1000);}}} catch (Exception e) {e.printStackTrace();}}}
以上代码我们获取到了modbus中0001和0002的数据,并且将0003的位置数据改为了7165,对应注释都在代码中,整体效果入下图所示。
以上就是java与modbus-tcp的对接方式,各位同学可根据自己的业务进行一些调整,此文章没有去过多的讲一些理论和概念,主要为了方便后续使用做一些记录,modbus-tcp的对接方式相对简单,后续还会编写一篇modbus-rtu的连接文档,会相对复杂一点。
Java 使用Modsim32进行modbus-tcp协议模拟(从机)并使用java当做主机(Maven项目)进行从机信息获取及修改相关推荐
- Java 使用Virtual Serial Port Driver及Modsim32进行modbus-rtu协议模拟(从机)并使用java当做主机(Maven项目)进行从机信息获取及修改
上面我们写了一篇关于modbus-tcp的文章,这一篇我们主要将关于modbus-rtu的对接方式,好了,废话不多说,直接开搞. 一.环境准备 1.下载Virtual Serial Port Driv ...
- 力控 串口服务器 虚拟串口,M4系列串口服务器与力控组态软件MODBUS TCP 协议通信--有人物联网.pdf...
M4系列串口服务器与力控组态软件MODBUS TCP 协议通信--有人物联网.pdf M4 系列串口服务器与力控组态软件MODBUS TCP 协议通信 M4系列串口服务器与力控组态软件MODBUS T ...
- Modbus tcp协议学习总结
Modbus=报文头(MBAP)+帧结构(PDU) 注意:据说RTU和TCP的差距就是效验码,具体我也没有操作,所以这里介绍的只有TCP相关内容.看这个章节的时候最好下载Modbus Slave(服务 ...
- ModBus/TCP协议分析
ModBus/TCP协议分析 一.术语 1 word = 2 byte; 1 byte = 8 bit. 校验码:校验码是由前面的数据通过某种算法得出的,用以检验该组数据的正确性.代码作为数据在向计算 ...
- MODBUS TCP协议实例数据帧详细分析
MODBUS TCP协议实例数据帧详细分析 1.简介 2.ModbusTCP数据帧 2.1.报文头MBAP 2.2.帧结构PDU 3.ADU详细结构 3.1. 0x01:读线圈 3.2. 0x02:读 ...
- C#上位机与台达PLC通信,modbus TCP协议
C#上位机与台达PLC通信,modbus TCP协议. 1.真实使用项目,该程序框架完整,适合在此基础上开发项目. 2.使用VS2019开发. 3.项目还涉及到halcon视觉检测功能. YID:76 ...
- 如何使用python读取modbus/TCP协议数据
文章目录 前言 一.modbus_tk是什么? 二.modbus_tk的使用步骤 三.使用modscan测试 四.32位无符号短整型数据转为64位float数据 五.总结 前言 在做项目的时候,需要使 ...
- Mcgs跟转接小板(用电脑模拟)收发数据(通过Modbus Tcp协议)
1.Mcgs跟转接小板(用电脑模拟)收发数据(通过Modbus Tcp协议),转化为后台需要的数据格式 2.调试工具:Modbus Poll , 3. 所有端口配置为同一个,配置好本地和远程ip地址 ...
- C# Modbus TCP协议客户端设计工程源码带注释,开源 dll文件,支持访问多个服务器,多线程实现,西门子C# Simens PPI Master
西门子C# Simens PPI Master C# Modbus TCP协议客户端设计工程源码带注释,开源 dll文件,支持访问多个服务器,多线程实现 renfengli2010
- Modbus和Modbus/TCP协议
Modbus和Modbus/TCP协议 文章目录 Modbus和Modbus/TCP协议 一. 概述 二. 协议规范 (1) Modbus应用协议 (2)通用Modbus帧结构--协议数据单元(PDU ...
最新文章
- WIN7 任务栏放右侧 有个BUG
- 关闭Outlook自动完成功能
- pb怎么打开服务器上的文件夹,前台PB客户端怎么连接服务器上的SQL后台数据库...
- WCF 第八章 安全 客户端认证
- obs噪音抑制调多少合适_TVS瞬态抑制二极管的特性及应用
- 分享:TreeFrog 1.1 发布,C++ Web 应用开发框架
- android java tga转png_java 里.tga图片怎么用啊,是不是要导入一个包,真的找不到资源,希望来位大神帮帮我 小弟在此拜谢!...
- Python Cookbook(第3版)中文版:15.18 传递已打开的文件给C扩展
- 清华提出:用于细粒度实体分类的Prompt-Learning,并提出可训练Prompt模板
- 《Effective Java》,关于异常
- java教学视频_孔浩老师_孔浩老师JAVA WebService教程
- python launcher卸载后蓝屏_使用dump文件分析系统蓝屏原因
- Elastic Job定时任务
- 构造图片木马,绕过文件内容检测上传木马
- jenkins 并发构建Android 报错:Gradle build daemon disappeared unexpectedly (it may have been killed or may
- 知识小结------数据分析------Fisher‘s exact test(费希尔检测)
- 关于小米路由器的局域网内相互ping设备IP的解决方法
- FFmpeg教程【转】
- backtracking及其应用
- Git提交后,文件夹任然有红色叹号提示