Modbus学习总结
来源:互联网 发布:怎么开淘宝充值店 编辑:程序博客网 时间:2024/06/05 10:00
一、Modbus协议
MODBUS是OSI模型第7层上(TCP/IP模型第5层)的应用层报文传输协议,它在连接至不同类型总线或网络的设备之间提供客户机/服务器通信。
MODBUS 是一个请求/应答协议,并且提供功能码规定的服务。MODBUS 功能码是MODBUS请求/应答PDU 的元素。
二、Modbus 与 Modbus TCP
Modbus协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如串行链路子网、以太网)和其它设备之间可以通信。Modbus有两种传输模式:ASCII和RTU。
而Modbus TCP则是将Modbus数据信息封装在TCP协议报文中进行基于TCP/IP无差错端到端传输的协议。
在进行主从设备通信时有以下两种情况:
- 每一个连接到TCP/IP网络的设备都有一个单独的IP地址;
- 多个Modbus设备共享一个IP(大多这种情况)。
在上述的第二种情况中,Modbus TCP包括一个额外的地址叫做单元号(也就是从设备地址),当以太网卡接收到从远程主机传来的Modbus TCP信息时,单元号就被转化为Modbus RTU信息的从设备地址。本文主要以介绍Modbus TCP为主。
三、Modbus TCP数据帧
Modbus TCP默认使用502端口进行数据的访问。
MBAP报文头(MBAP、Modbus Application Protocol、Modbus应用协议)分4个域,共7个字节,如下所示:
1、事务处理标识符
事务处理标识符用于将请求与未来响应之间建立联系。因此,对 TCP 连接来说,在同一时刻,这个标识符必须是唯一的。有几种使用此标识符的方式:
- -例如:可以作为一个带有计数器的简单“TCP 顺序号”,在每一个请求时增加计数器;
- -也可以用作智能索引或指针,来识别事务处理的内容,以便记忆当前的远端服务器和未处理的请求。
2、单元标识符
在 MODBUS 或 MODBUS+串行链路子网中对设备进行寻址时,这个域是用于路由的目的。在这种情况下,“Unit Identifier”携带一个远端设备的 MODBUS 从站地址。
- -如果MODBUS服务器连接到MODBUS+或MODBUS串行链路子网,并通过一个桥或网关配置地址标识这个服务器,MODBUS单元标识符对识别连接到网桥或网关后的子网的从站设备是必需的。目的IP地址识别了网桥本身的地址,而网桥则使用MODBUS单元标识符将请求转交给正确的从站设备。
- -分配串行链路上MODBUS从站设备地址为1~247(10进制),地址0作为广播地址。
对Modbus TCP/IP 来说,利用 IP 地址寻址 MODBUS 服务器;因此,MODBUS 单元标识符是无用的。必需使用值 0xFF。
Modbus功能码
共有3种类型分别为:
1、公共功能代码:已定义好的功能码,保证其唯一性,由Modbus.org认可;
2.、用户自定义功能代码有两组,分别为65~72和100~110,无需认可,但不保证代码使用的 唯一性。如变为公共代码,需交RFC认可;
3.、保留的功能代码,由某些公司使用在某些传统设备的代码,不可作为公共用途。
四、Modbus数据模型
MODBUS模型实现的实例(每个设备根据其应用都有它自己的数据结构):
实例1:有4 个独立块的设备
下例实例示出了设备中的数据结构,这个设备含有数字量和模拟量、输入量和输出量。由于不同块中的数据不相关,每个块是相互独立。按不同MODBUS 功能码访问每个块。
实例2:仅有1 个块的设备
在这个实例中,设备仅有1 个数据块。通过几个MODBUS 功能码可能得到一个相同数据,或者通过16 比特访问或1 个访问比特。
- Modbus学习总结
- Modbus学习总结
- modbus 学习
- Modbus初步总结
- Modbus协议简单总结
- Modbus通讯资料总结
- 树莓派 linux下modbus总结(TCP-modbus,RS232-modbus)
- Modbus通讯协议学习
- Modbus通讯协议学习
- Modbus通讯协议学习
- Modbus协议学习
- Modbus通讯协议学习
- Modbus学习笔记
- MODBUS协议数据测试总结
- 485+MODBUS总结 第一章(完)
- freemodbus modbus TCP 学习笔记
- freemodbus modbus TCP 学习笔记
- freemodbus modbus TCP 学习笔记
- 对于JAVA实现SFTP实例-SSH-2.0-OpenSSH_5.3等报错解决
- LINUX 安装中文字体(.ttf)
- [leetcode]Unique Substrings in Wraparound String
- matplotlib安装“is not a supported wheel"问题解决
- 史上最全WebView使用,附送Html5Activity一份
- Modbus学习总结
- centos7.2安装mysql
- deepin--eclipse安装与配置
- cmos和ccd的区别
- windows下用gcc命令行编译并运行oc程序
- 我开通了博客
- IDEA下使用maven集成Struts2和Spring
- python导入第三方库方法网站
- Fiddler抓包7-post请求(json)