java modbus rtu_java modbus rtu通讯-程序员宅基地

技术标签: java modbus rtu  

本文章使用modbus4j和rxtxcomm进行modbus rtu通讯

串口通讯:rxtxcomm的使用:

下载地址:http://fizzed.com/oss/rxtx-for-java

rxtx解压包中的 rxtxParallel.dll,rxtxSerial.dll 这两个文件复制到 C:\Windows\System32 目录下

添加maven依赖

false

true

ias-snapshots

Infinite Automation Snapshot Repository

https://maven.mangoautomation.net/repository/ias-snapshot/

true

false

ias-releases

Infinite Automation Release Repository

https://maven.mangoautomation.net/repository/ias-release/

org.bidib.jbidib.org.qbang.rxtx

rxtxcomm

2.2

com.infiniteautomation

modbus4j

3.0.4

Modbus4j工具类

package com.example.modbus_rtu;

import java.util.ArrayList;

import java.util.List;

import com.serotonin.modbus4j.BatchRead;

import com.serotonin.modbus4j.BatchResults;

import com.serotonin.modbus4j.ModbusFactory;

import com.serotonin.modbus4j.ModbusMaster;

import com.serotonin.modbus4j.code.DataType;

import com.serotonin.modbus4j.exception.ErrorResponseException;

import com.serotonin.modbus4j.exception.ModbusInitException;

import com.serotonin.modbus4j.exception.ModbusTransportException;

import com.serotonin.modbus4j.ip.IpParameters;

import com.serotonin.modbus4j.locator.BaseLocator;

public class ModbusUtils {

/**

* 工厂。

*/

static ModbusFactory modbusFactory;

static {

if (modbusFactory == null) {

modbusFactory = new ModbusFactory();

}

}

/**

* 获取master

*

* @return

* @throws ModbusInitException

*/

public static ModbusMaster getMaster(String host, int port) throws ModbusInitException {

IpParameters params = new IpParameters();

params.setHost(host);

params.setPort(port);

//

// modbusFactory.createRtuMaster(wapper); //RTU 协议

// modbusFactory.createUdpMaster(params);//UDP 协议

// modbusFactory.createAsciiMaster(wrapper);//ASCII 协议

ModbusMaster master = modbusFactory.createTcpMaster(params, false);// TCP 协议

master.init();

return master;

}

public static ModbusMaster getRtuIpMaster(String host, int port) throws ModbusInitException {

IpParameters params = new IpParameters();

params.setHost(host);

params.setPort(port);

//这个属性确定了协议帧是否是通过tcp封装的RTU结构,采用modbus tcp/ip时,要设为false, 采用modbus rtu over tcp/ip时,要设为true

params.setEncapsulated(true);

ModbusMaster master = modbusFactory.createTcpMaster(params, false);

try {

//设置超时时间

master.setTimeout(1000);

//设置重连次数

master.setRetries(3);

//初始化

master.init();

} catch (ModbusInitException e) {

e.printStackTrace();

}

return master;

}

public static ModbusMaster getRtuComMaster(String com,int port) throws ModbusInitException {

//

// modbusFactory.createRtuMaster(wapper); //RTU 协议

// modbusFactory.createUdpMa

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_29469949/article/details/114360314

智能推荐

菜鸡学习day24-程序员宅基地

文章浏览阅读97次。菜鸡学习day24package day24;import java.util.*;import java.util.stream.Stream;/*Stream流jdk1.8之后出现的,关注的是做什么,不是怎么做遍历流式思想Stream接口 不是函数式接口获取流1.所有的Collection集合都可以通过默认方法stream获取流 default Stream<E> stream()2.静态方法of 可以获取对应数组的流 static <T&

OBS屏幕录制黑屏问题解决_英伟达录制全黑-程序员宅基地

文章浏览阅读3.2k次。问题描述打开OBS后,新建场景、新建显示器捕获后,黑屏没有显示,即使点击开始录制,然后结束录制后,录制的视频仍然是黑屏系统描述Windows10 家庭中文版 1909显卡0 集成显卡显卡1 RTX2060 6GB尝试解决1.桌面右击,选中NVIDIA控制面板,跳出下面所示的界面,选择程序设置2.在选择要自定义的程序中选择OBS,在为此程序选择首选图形处理器中选择第二项或者第三项,建..._英伟达录制全黑

MongoDB常用命令大全_mongodb命令-程序员宅基地

文章浏览阅读4.4w次,点赞49次,收藏291次。一、数据库相关1.连接(1)完整mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]](2)使用默认端口mongodb://localhost(3)使用shellmongo2.查询数据库(1)查询所有数据库show dbs3.创建数据库use database_name如果数据库不存在,则创_mongodb命令

瀑布流的几种实现方式(纯js,css)_瀑布流如何实现-程序员宅基地

文章浏览阅读294次。瀑布流的几种实现方式各大框架都有很多瀑布流的插件,下面说的是纯js和css实现瀑布流废话不多说,直接上代码,有注释,需要的小伙伴自行观看1.js通过监听window的滚动,图片加载完时会模拟ajax继续获取数据<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8">..._瀑布流如何实现

自定义配置ros arduino bridge功能包集_ros_arduino_bridge-程序员宅基地

文章浏览阅读5.8k次,点赞10次,收藏47次。写在前面首先我对未及时分享自己的配置及源码向各位网友道歉。本文是对博文ros_arduino_bridge功能包集的使用的拓展,主要是对如何修改ros arduino bridge功能包集,使其兼容其他硬件做一些简要的说明。在这里我以自己的配置为例为大家讲解,如有疑问可以通过csdn私信我或者通过邮箱联系我,我的email:[email protected],欢迎大家为我纠错。..._ros_arduino_bridge

多模块依赖mybatis扫描不到xml文件_mybatis扫描另一个module的xml-程序员宅基地

文章浏览阅读541次。分了多个模块,查询xml报错org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.zjp.mapper.UserMapper.selectAll没有找到xml原来配置成下图:最终还是扫描不到xml解决:原来在配置mybatis:mapper-locations:classpath:xxxxx时,需要在classpath后加个号(classpath:),表示扫描所有模块下指定扫_mybatis扫描另一个module的xml

随便推点

JOptionPane.showInputDialog-程序员宅基地

文章浏览阅读1.4k次。[code="java"]import javax.swing.JOptionPane;public class AreaAndCircumferenceProgram { public static final double PI=3.14; public static void main(String args[]) throws ArrayIndexOutOfBoundsExce..._joptionpane.showinputdialog点叉号怎么处理

oracle面试题及其答案-程序员宅基地

文章浏览阅读2.7k次。一、基础概念1. 列举几种表连接方式Answer:等连接(内连接)、非等连接、自连接、外连接(左、右、全)Or hash join/merge join/nest loop(cluster join)/index join ??ORACLE 8i,9i 表连接方法。 一般的相等连接: select * from a, b where a.id = b.id; 这个就属于内连_oracle面试

Beckfoff控制器与伟肯变频器通过CANopen通讯_变频器can通信控制-程序员宅基地

文章浏览阅读1.5k次。Beckhoff PLC与VACON变频器通过CANopen通讯CANopen通讯主控设备准备配置分站坑1,多出的RxPDO和TxPDO坑2,TxPDO和RxPDO的COB-ID设置正确的link to变量实现通讯总结CANopen通讯工业上采用CANopen通讯协议进行通讯非常常见。Beckhoff的PLC(其实是基于PC的嵌入式控制器)控制驱动装置来实现位置控制非常方便,而主控制器和变频器之间通过CANopen进行通讯有许多不能替代的优势:现场总线通讯方式,一台主机可以用126个分站抗干扰能力_变频器can通信控制

Jaspersoft Studio 报表模板设计_jaspersoft studio条形码-程序员宅基地

文章浏览阅读2.4k次,点赞4次,收藏10次。Jaspersoft Studio 报表模板设计前言  近期业务增加,需要给很多实施人员培训报表模板设计,以方便给不同的客户定制化打印模板.所以就把常用到的一些记录一下.方便使用一、安装  官方下载地址:https://community.jaspersoft.com/project/jaspersoft-studio/releases     选择合适的版本,进行下载.目前个人使用的..._jaspersoft studio条形码

Mac上Homebrew的使用 (Homebrew 使 OS X 更完整)_homebrew `ensure in mktmpdir-程序员宅基地

文章浏览阅读10w+次。2014-02-22 wcdj0 Homebrew是啥?“Homebrew installs the stuff you need that Apple didn’t.——Homebrew 使 OS X 更完整”。Homebrew的官网[1](多语言版本)简单明了地介绍了如何安装和使用这个工具,并提供了自己的Wiki。1 安装Homebrewbrew的安装很简单,使用一_homebrew `ensure in mktmpdir

docker构建openrety + lua + mysql + rediscluster_docker openresty 添加ngx_cache_purge模块-程序员宅基地

文章浏览阅读447次。1,构建前准备名称 说明 地址 openresty-1.17.8.1.tar.gz openresty 安装包 OpenResty - 中文官方站 ngx_cache_purge-2.3.tar.gz 清理nginx缓存模块(不用可不装) FRiCKLE Labs / nginx / ngx_cache_purge lua-resty-redis-cluster-master.zip rediscluster模块,redis集群使用 GitH_docker openresty 添加ngx_cache_purge模块

推荐文章

热门文章

相关标签