当前位置: 首页 > 编程日记 > 正文

java modbus通讯协议_物联通讯协议一(Modbus)

d98cd7cbbadf5995f5bd8038595d1932.png

1、Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气 Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。

2、Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。 Modbus比其他通信协议使用的更广泛的主要原因有:

  1. 公开发表并且无版权要求

  2. 易于部署和维护

  3. 对供应商来说,修改移动本地的比特或字节没有很多限制

3、Modbus允许多个 (大约240个) 设备连接在同一个网络上进行通信,举个例子,一个由测量温度和湿度的装置,并且将结果发送给计算机。在数据采集与监视控制系统(SCADA)中,Modbus通常用来连接监控计算机和远程终端控制系统(RTU)。

4、Modbus协议目前存在用于串口、以太网以及其他支持互联网协议的网络的版本。大多数Modbus设备通信通过串口EIA-485物理层进行。

对于串行连接,存在两个变种,它们在数值数据表示不同和协议细节上略有不同。Modbus RTU是一种紧凑的,采用二进制表示数据的方式,Modbus ASCII是一种人类可读的,冗长的表示方式。这两个变种都使用串行通信(serial communication)方式。RTU格式后续的命令/数据带有循环冗余校验的校验和,而ASCII格式采用纵向冗余校验的校验和。被配置为RTU变种的节点不会和设置为ASCII变种的节点通信,反之亦然。

5、对于通过TCP/IP(例如以太网)的连接,存在多个Modbus/TCP变种,这种方式不需要校验和计算。

对于所有的这三种通信协议在数据模型和功能调用上都是相同的,只有封装方式是不同的。

6、Modbus有一个扩展版本Modbus Plus(Modbus+或者MB+),不过此协议是Modicon专有的,和Modbus不同。它需要一个专门的协处理器来处理类似HDLC的高速令牌旋转。它使用1Mbit/s的双绞线,并且每个节点都有转换隔离装置,是一种采用转换/边缘触发而不是电压/水平触发的装置。连接Modbus Plus到计算机需要特别的接口,通常是支持ISA(SA85),PCI或者PMCIA总线的板卡。

7、Modbus协议是一个master/slave架构的协议。有一个节点是master节点,其他使用Modbus协议参与通信的节点是slave节点。每一个slave设备都有一个唯一的地址。在串行和MB+网络中,只有被指定为主节点的节点可以启动一个命令(在以太网上,任何一个设备都能发送一个Modbus命令,但是通常也只有一个主节点设备启动指令)。

8、一个ModBus命令包含了打算执行的设备的Modbus地址。所有设备都会收到命令,但只有指定位置的设备会执行及回应指令(地址0例外,指定地址0的指令是广播指令,所有收到指令的设备都会运行,不过不回应指令)。所有的Modbus命令包含了检查码,以确定到达的命令没有被破坏。基本的ModBus命令能指令一个RTU改变它的寄存器的某个值,控制或者读取一个I/O端口,以及指挥设备回送一个或者多个其寄存器中的数据。

有许多modems和网关支持Modbus协议,因为Modbus协议很简单而且容易复制。它们当中一些为这个协议特别设计的。有使用有线、无线通信甚至短消息和GPRS的不同实现。不过设计者需要克服一些包括高延迟和时序的问题。

9、几乎所有的实现都是官方标准的某种变体。不同的供应商设备之间可能无法正确的通信。一些主要的变化有:

  • 数据类型

    • IEEE标准的浮点数

    • 32位整型数

    • 8位数据

    • 混合数据类型

    • 整数中的位域

    • multipliers to change data to/from integer. 10, 100, 1000, 256 ...

  • 协议扩展

    • 16位的从站地址

    • 32位的数据大小(1个地址 = 返回32位数据)

    • 字交换数据

  • 10、Modbus是在1970年末为可编程逻辑控制器通信开发的,这些有限的数据类型在那个时代是可以被PLC理解的,大型二进制对象数据是不支持的。

  • 对节点而言,没有一个标准的方法找到数据对象的描述信息,举个例子,确定一个寄存器数据是否表示一个介于30-175度之间的温度。

  • 由于Modbus是一个主/从协议,没有办法要求设备“报告异常”(构建在以太网的TCP/IP协议之上,被称为open-mbus除外)- 主节点必须循环的询问每个节点设备,并查找数据中的变化。在带宽可能比较宝贵的应用中,这种方式在应用中消耗带宽和网络时间,例如在低速率的无线链路上。

  • Modbus在一个数据链路上只能处理247个地址,这种情况限制了可以连接到主控站点的设备数量(再一次指出以太网TCP/IP除外)

  • Modbus传输在远端通讯设备之间缓冲数据的方式进行,有对通信一定是连续的限制,避免了传输中的缓冲区漏洞的问题

  • Modbus协议自身提供针对未经授权的命令或截取数据没有安全性。

aef8da023cc08d8070ead5a60486e993.png

相关文章:

hibernate3

hibernate3 &#xff08;整合到spring中的core核心配置中的hibernate3&#xff09; <!-- 基于hibernate的Session工厂 --><bean id"sessionFactory"class"org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"><!…

伦理困境:人工智能浪潮与“AI威胁论”之争

首先&#xff0c;何为伦理&#xff1f; 2018年1月份的《科学与社会》报刊中有如下阐述&#xff1a; 伦理一词&#xff0c;英文为ethics&#xff0c;一词源自于希腊文的“ethos”&#xff0c;其意义与拉丁文“mores”差不多&#xff0c;表示风俗、习惯的意思。西方的伦理学发展流…

在 ASP.NET 网页中不经过回发而实现客户端回调

一、使用回调函数的好处 在 ASP.NET 网页的默认模型中&#xff0c;用户会与页交互&#xff0c;单击按钮或执行导致回发的一些其他操作。此时将重新创建页及其控件&#xff0c;并在服务器上运行页代码&#xff0c;且新版本的页被呈现到浏览器。但是&#xff0c;在有些情况下&…

李宏毅机器学习笔记(三)——Regression: output a scalar amp;amp; Gradient Descent

视频来源&#xff1a; 李宏毅机器学习(2017)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili https://www.bilibili.com/video/av10590361/?p3机器学习的目的就是找到最优函数&#xff0c;而回归的目的就是我们要找的函数的输出是一个数值。例如下面的例子&#xff0c;不管是输入怎样的…

完整的虚幻引擎超级课程:从初学者到专家

通过这个循序渐进的课程&#xff0c;学习如何像专业人士一样开发游戏和设计&#xff01; 你会学到什么 如何使用虚幻引擎及其元素 电子游戏力学原理 平衡计分卡几何原理 蓝图脚本的原则 如何设计、开发和编写你的关卡来复制你最喜欢的游戏 流派:电子学习| MP4 |视频:h264&…

atitit.userService 用户系统设计 v5 q330

atitit.userService 用户系统设计 v5 q330 1. 新特性1 2. Admin login1 3. 用户注册登录2 3.1. <!-- 会员注册使用 --> 商家注册2 3.2. <!-- 会员登录使用 -->3 3.3. <!-- 会员退出登录 -->3 3.4. <!-- 进入会员首页 -->3 3.5. <!-- 进入会员信…

python打包为exe文件_Pyinstaller(python打包为exe文件)

需求分析&#xff1a; python脚本如果在没有安装python的机器上不能运行&#xff0c;所以将脚本打包成exe文件&#xff0c;降低脚本对环境的依赖性&#xff0c;同时运行更加迅速。 当然打包的脚本似乎不是在所有的win平台下都能使用&#xff0c;win7有一部分不能使用&#xff0…

从风投看中国IT行业的发展

创业相关电视剧中经常会出现一个词“风投”&#xff0c;例如主角创业艰辛&#xff0c;得到了风投的帮助&#xff0c;从而走向了人生巅峰。而“风投”并不是一家企业&#xff0c;它是由无数风险投资公司一同组成的行业&#xff0c;今天就带大家了解一下风投与中国IT行业的紧密联…

c++ 字母排序

char a[123] {Z, s, p, l, j, r, q, v, n, m, C, F, D, B, A, 2, 0, Z, };for (int i 0; i < strlen(a); i){//字母排序for (int j i 1; j < strlen(a); j){if (a[j] < a[i]){char pTem a[j];a[j] a[i];a[i] pTem;}}}printf("%s\n", a); 版权声明&a…

李宏毅笔记机器学习(四)——Regression——Demo

视频来源&#xff1a; 李宏毅机器学习(2017)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili https://www.bilibili.com/video/av10590361/?p4 重点&#xff1a; &#xff08;1&#xff09;调节lr&#xff08;learning rate步长&#xff09;&#xff0c;lr参数的调节。迭代次数为1000次…

Blender 3.0机器人硬面建模材质渲染全流程学习课程

学习在Blender中建模硬表面机器人角色 你会学到什么 Blender 3.0建模工具 Blender 3.0硬面人物造型 机器人角色的UV展开 如何在Blender中渲染 MP4 |视频:h264&#xff0c;1280720 |音频:AAC&#xff0c;44.1 KHz&#xff0c;2 Ch 语言&#xff1a;英语中英文字幕&#xff08;…

python抓包工具_「docker实战篇」python的docker爬虫技术-fiddler抓包软件详细配置(七)...

挑选常用的功能给各位老铁介绍下。 fiddler第一次进入fiddlerfiddler会请求fiddler的官网&#xff0c;检查更新操作布局分布 工具栏File -capture traffic开启爬虫File -new Viewer新建立一个窗口File - save保存all session&#xff0c;request方式&#xff0c;reponse的方式z…

loadrunner支持https协议的操作方法-经验总结

问题&#xff1a;用户portal支持https协议&#xff0c;用loadrunner录制登陆脚本时发现未录制到用户名和密码 录制到的脚本如下&#xff1a; login() { lr_think_time(10); web_url("verifycode.jsp", "URLhttps://192.168.211.246:56661/portal/common/jsp/ver…

初试linux编译(ubuntu+vim)+玩转智能蛇

一.初试linux编译&#xff08;ubuntuvim&#xff09; 步骤&#xff1a; ①下载vmware15ubuntu桌面版映像 ②安装ubuntu ③下载vimgcc 在ubuntu终端输入&#xff1a; sudo apt-get install vim-gtk sudo apt-get install gcc④安装完毕后进行编译测试 1&#xff09;新建hellow…

shell学习之路:流程控制(if)

1.单分支if条件语句 1 if [ 条件判断式 ];then 2 程序 3 fi 4 或者 5 if [ 条件判断式 ] 6 then 7 程序 8 fi 注意事项: 1.if语句使用fi结尾&#xff0c;和一般语言使用大括号结尾不同 2.[ 条件判断式 ]就是使用test命令判断&#xff0c;所以中括号和条件判断式…

李宏毅机器学习笔记(五)-----Where does the error come from

视频来源&#xff1a; 李宏毅机器学习(2017)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili https://www.bilibili.com/video/av10590361/?p5 function set model error来源&#xff1a; &#xff08;1&#xff09;baise &#xff08;2&#xff09;variance问题一&#xff1a; 怎么…

Blender三维建筑场景动画制作学习教程

一起在Blender中创建一个三维低多边形场景动画 你会学到什么 这门课程是为那些喜欢在工作流程中成长的艺术家设计的 初学者 想学会让自己的资产活起来的艺术家。 希望扩展其技能集的游戏开发人员。 MP4 |视频:h264&#xff0c;1280720 |音频:AAC&#xff0c;44.1 KHz&#x…

springcloud 组件_SpringCloud组件mica 2.0.5发布,添加对sentinel、undertow指标收集

一、mica&#xff08;云母&#xff09;mica 由如梦技术内部的 lutool&#xff08;撸秃&#xff09; 演变而来。lutool 诞生于 2017 年&#xff0c;受 jhipster 启发逐步形成一个微服务的核心集。因 lutool 名称与功能不太符合&#xff0c;故在2019年开源时将其改名为 mica&…

access order by 判断是否除数为0

order by IIF(dz>0,yj/dz,0) desc转载于:https://www.cnblogs.com/slyzly/p/5379482.html

vm无网络解决方法

编辑-虚拟网络编辑器-还原默认

十五天精通WCF——第八天 对“绑定”的最后一点理解

转眼已经中断10几天没有写博客了&#xff0c;也不是工作太忙&#xff0c;正好碰到了端午节&#xff0c;然后最近看天津台的爱情保卫战入迷了。。。太好看了&#xff0c;一直都是回味无穷。。。而且 涂磊老师话说的真是tmd的经典&#xff0c;然后就这样耽搁了&#xff0c;好了&a…

2018年目标

2018年又一个新的开始2018年的学习目标&#xff1a; &#xff08;1&#xff09;每天学习算法和Python。尝试用Python写出不同的算法 &#xff08;2&#xff09;每天完成一篇CSDN专栏大数据相关 &#xff08;3&#xff09;每天进步一点点的打卡完成 &#xff08;4&#xff09;集…

GameMaker Studio从头开始学习设计和开发3款游戏

从头开始学习设计和开发3款游戏(无需经验) 你会学到什么 如何塑造令人敬畏的角色 如何使用GameMakerStudio 2 视频游戏编程 基本二维动画 如何查找和修复bug 如何给你的游戏编故事 从哪里获得游戏资产(免费) 如何添加声音效果 如何发展你的游戏理念 游戏设计力学 如何制作有趣…

商淘多b2b2c商城系统怎么在个人电脑上安装_社交电商系统开发是否有价值?

​电商平台已经呈现出平稳发展之势&#xff0c;再加上近年来星期的社交&#xff0c;让社交电商平台蓬勃发展&#xff0c;不仅是小平台&#xff0c;京东、唯品会、小米等纷纷有了自己的社交电商平台&#xff0c;说明了社交电商是发展的大趋势&#xff0c;开发社交电商系统也是创…

AngularJS中的按需加载ocLazyLoad

欢迎大家讨论与指导 : &#xff09; 初学者&#xff0c;有不足的地方希望各位指出 一、前言 ocLoayLoad是AngularJS的模块按需加载器。一般在小型项目里&#xff0c;首次加载页面就下载好所有的资源没有什么大问题。但是当我们的网站渐渐庞大起来&#xff0c;这样子的加载策略让…

简单介绍互联网领域选择与营销方法

在我看来&#xff0c;互联网领域的选择是“安家”&#xff0c;而营销方法的不同则表现了“定家”的方式多种多样&#xff0c;只有选对了&#xff0c;“家”才得以“安定”。 下面不妨简单总结一下互联网近年来的热点领域和经典营销方法。 一、热点领域 人工智能 人工智能&#…

ZZCustomAlertView - 一个高度自定义的iOS模态弹窗

2019独角兽企业重金招聘Python工程师标准>>> 这是一个可以高度自定义的iOS模态弹窗 (modal alert view)。 项目地址&#xff1a;https://github.com/zzdjk6/ZZCustomAlertView Github 项目里包含一个 Example 的 Demo 示例。 使用Cocoapod&#xff1a; pod "ZZ…

2018-3-1 算法学习部分

1&#xff1a;算法的Python实现 数据结构以及算法的基本概念 通过小甲鱼论坛中的数据结构部分进行理解基本的概念的自我理解&#xff1a; 数据结构官方&#xff1a;数据结构是一门研究非数值计算的程序设计问题中的操作对象&#xff0c;以及它们之间的关系和操作等相关问题…

国内第三方移动推送对接调查:Android、IOS、Flutter,各种云推送、个推、极光、统一推送联盟

第三方移动推送对接,刚开始是移动端发起的。在开会讨论这个对接时,心里突然很迷茫,为什么要做第三方移动推送对接?我们自己为什么不能做移动推送?话说,项目里目前所使用的推送就是自己做的。但是在App离线情况下,消息就收不到了。想起来了,这是最最重要的问题,是为了在离线的情况下,App还能收到通知和消息。如果不是因为这个,这个对接可以不做。因为手机端的app层不出穷太多了,为了给手机省电,用户会主动把运行在前端的app给咔嚓掉…虽然咔嚓掉,但是在有信息的情况下,用户还是希望能够收到信息。

云计算的三种服务模式:IaaS、PaaS和SaaS

租赁 IaaS 云服务,对租户而言,最大优点是其灵活性,由租户自己决定安装什么操作系统、需不需要数据库且安装什么数据库、安装什么应用软件、安装多少应用软件、要不要中间件、安装什么中间件等,相当于购买了一台计算机,要不要使用、何时使用以及如何使用全由自己决定。① 相比于 IaaS 云服务提供商,PaaS 云服务提供商要做的事情增加了,他们需要准备机房、布好网络、购买设备、安装操作系统、数据库和中间件,即把基础设施层和平台软件层都搭建好,然后在平台软件层上划分“小块”(习惯称之为容器)并对外出租。