java 借助modbus协议实现与硬件之间的通讯
首先咱们先讲一下通讯的基础知识:
通讯有模拟通讯和数字通讯,数字量通讯传输的是二进制脉冲信号,抗干扰能力强,数字量信号加密比较安全。
模拟量通讯:比如广播,发送的是一种波,收音机收到广播之后,进行解调,然后再经过扬声器放大,这个过程就是模拟量通讯。
按照传送方式进行分类:串行通讯和并行通讯
串行通讯:是以二进制(bit位)为单位进行传输,每次只传输一位,需要的线少,信号线是一根,另外一个跟线是信号定线,因为电压是2个点之间的电压,最少两根线(适用距离较远的)
并行通讯:并行通讯按字或者字节为单位整体进行传输,n位 必须N跟线,其特点是传送速度快,通讯线多,成本高,只用于短距离传输,比如机箱里面的并行线传送,计算机里面的内部传输
串行通讯中接收方和发送方,传送速率相同,这叫做同步,
同步传送:以字节为单位,每次传送1~2个字节,若干个数据字节又叫做数据包或者叫做数据块(信息帧),2个字符之间没有间隔,传送完毕之后,告诉接收方传了多少个
异步传送:在传送过程中,发送方可随时传送字符,两个字符之间的时间间隔是不固定的,接收方必须时刻做好准备,字符由二进制位进行接收,简单可靠,效率低,
传送方向:单工,半双工,全双工
单工:单向通讯,只有甲向乙 单向传送,计算机向打印机通讯,打印机不能向电脑发送信息
半双工:甲和乙都可以讲话,通过同一根进行,在某个时刻只能单线传送,对讲机就是一种半双工通讯
全双工:甲方和乙方同时进行发送和接收,同一时刻可以同时进行讲话
通讯格式(波特率,停止位,数据长度,校验位)
在串行异步通讯中,通讯双方必须就通讯数据传送方式,传送的数据长度,校验方式,传送速率进行统一设置,才能保证双方通讯的正确
字符传送的基本格式:
起始位:一个字符开始信息,用逻辑0表示,起始位不用约定,规定就是0,没有选择
停止位:一个字符结束信息,用逻辑为1表示(停止位可以选择一个停止位或者两个停止位)
空闲位:两个字符间的空闲,用逻辑为1表示
数据位:一个字符信息的内容,数据位的个数可以是7位或者8位
校验位:校验数据传输的正确性,也可以没有(有的话可以是奇校验,也可以是偶校验)
通讯之前必须告诉对方,波特率,数据位长度,停止位,校验位信息,这些规定起来就叫做通讯格式
波特率:双方要相同
下面是通过java代码进行调测:
测试之间需要的jar包:modbus4J.jar RXTXcomm.jar seroUtils.jar
rxtxParallel.dll rxtxSerial.dll 这两个dll文件放到JDK的bin目录下
// 创建串口参数对象SerialParameters serialParameters = new SerialParameters();//设定MODBUS通讯的串行口serialParameters.setCommPortId("COM15");//设定成无奇偶校验serialParameters.setParity(0);//设定成数据位是8位serialParameters.setDataBits(8);//设定为1个停止位serialParameters.setStopBits(1);//串行口上的波特率serialParameters.setBaudRate(9600);//创建modbus工厂ModbusFactory modbusFactory = new ModbusFactory();//获取modbus工厂,获取modbus协议对象ModbusMaster master = modbusFactory.createRtuMaster(serialParameters);//设置超时时间master.setTimeout(300);//打开串口master.init();
// 6 表示设备地址,3表示功能码,0表示寄存器地址(所要读取设备信号的地址),4表示读取设备信号的字节长度,ModbusLocator locator = new ModbusLocator(6, 3, 0, 4);
// 读取到数据,Object value = master.getValue(locator);// 遍历字节数组if(value instanceof byte[]){System.out.println("属于字节数组");byte[] b = (byte[]) value;System.out.println("字节数组的个数:"+b.length);for (int i = 0; i < b.length; i++) {System.out.print(b[i]+" ");}System.out.println();}
java 借助modbus协议实现与硬件之间的通讯相关推荐
- java借助modbus协议实现与设备的通讯,收发信息,实现对设备信息的采集
2018-07-27 4tr 转自 会飞的李小浩 修改微信分享: 扫盲:什么是modbus? Modbus是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于 ...
- plc通讯的握手信号_基于Modbus协议实现PLC与智能仪表的通讯
1 引言 Modbus 协议是法国施耐德公司推出的一个全开放的"主从式(Master/Slave)"通讯协议,其本意在于实现上位机(主设备)对PLC(从设备)内部存储区域的&quo ...
- SQL Server数据库转MySQL_关于Modbus协议转SQL数据库,实现双向通讯
IGT-SER智能网关模块,支持各种PLC.智能仪表.远程IO与数据库之间双向通讯,既可以读取设备的数据上报到SQL数据库,也可以从数据库查询数据后写入到设备: 网关安装在设备侧,随设备启动.停止,不 ...
- java netty modbus协议接收iot数据
IoTserver 源代码开源在gitee上 : IoT netty java gitee server sample c++ libuv 的IoT tcp server IoT c++ libuv ...
- java des加密解密_JAVA和c# 之间数据通讯时通过DES进行加密解密
c#开发前端时调用java开发的接口,需要数据加密后通讯.两边都需要同时通过DES(BASE64)进行加解密. 代码如下 c#端: 加密 public static String Encrypt(St ...
- java modbus协议
概念 Modbus是一种串行通信协议,Modbus协议目前存在用于串口.以太网以及其他支持互联网协议的网络的版本. 大多数Modbus设备通信通过串口EIA-485物理层进行. 通讯格式 地址域 功能 ...
- 协议篇之Modbus协议入门
目录 引言 Modbus协议介绍 1.Modbus协议是不是开源的,免费的? 2.怎么传输,有线还是无线? 3.Modbus的数据格式? 4.Modbus和RS485什么关系? 5.什么是主从机? 6 ...
- Modbus协议在串行链路上的实现
目录 1.串行链路通信简介 2.串行链路通信协议原理 3.串行链路通信帧描述 4.RTU.ASCII串行传输模式 4.1.RTU传输模式 4.2.ASCII传输模式 1.串行链路通信简介 Modbus ...
- 【物联网毕设基础】单片机:RS485 通信与 Modbus 协议
文章目录 RS485 通信与 Modbus 协议 单片机 RS485 通信接口.控制线.原理图及程序实例 RS485 通信与 Modbus 协议 在工业控制.电力通讯.智能仪表等领域,通常情况下是采用 ...
最新文章
- python pillow 图片处理
- 心疼啊今天在四季青买衣服的时候在试衣服的时候,竟然有个小偷把我的n73手机给偷去了,...
- vivado中的rtl中电路图无发生成_FPGA零基础学习:数字电路中的组合逻辑
- Cuckoo WIndows 安装
- Oracle 中文分词CHINESE_VGRAM_LEXER与CHINESE_LEXER比较
- 图像处理——图像边缘检测
- java随机抽题系统_为什么要使用考试系统的随机组卷功能?
- mybatis 取查询值_MyBatis-SELECT基本查询
- GetURL (java)
- SQL Reverse函数
- xcode模拟器不显示键盘解决方案
- Linux服务器开发初步
- WinSAT 系统评估工具使用
- AI伪原创混剪软件脚本,短视频伪原创剪辑工具必备神器
- 老哥教你如何将springboot打包成exe程序
- MySQL 快速入门之DATE_FORMAT() 函数详解
- STM32f429 CubeMx FreeRTOS emWin (Cubemx有BUG)
- Stay Hungry,Stay Foolish的解读
- 载着 AI 梦想向前奔跑!2022 Amazon DeepRacer 自动驾驶联赛未完待续!
- 和数软件新增9项计算机软件著作权登记证书