modbustcp协议定义.docx
- 文档编号:11088720
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:11
- 大小:21.19KB
modbustcp协议定义.docx
《modbustcp协议定义.docx》由会员分享,可在线阅读,更多相关《modbustcp协议定义.docx(11页珍藏版)》请在冰豆网上搜索。
modbustcp协议定义
竭诚为您提供优质文档/双击可除
modbus,tcp协议定义
篇一:
modbustcp简介
一以太网的标准
以太网是一种局域网。
早期标准为ieee802.3,数据链路层使用csma/cd,10mb/s速度物理层有:
(1)10base5粗同轴电缆,Rg-8,一段最长为500m;
(2)10base2细同轴电缆,Rg-58,一段最长为185m;
(3)10baset双绞线,utp或stp,一段最长为100m。
快速以太网为100mb/s,标准为802.3a,介质为100basetx双绞线、100baseFx光纤。
目前10/100m以太网使用最为普遍,很多企事业用户已实现100m到以太网桌面,确实体验到高速“冲浪”的快感,另外从距离而言,非屏蔽双绞线(utp)为100m,多模光纤可达2~3km,单模光纤可大于100km。
千兆以太网1000mb/s为802.3z/802.3ab,万兆以太网10gb/s为802.3ae,将为新一轮以太网的发展带来新的机遇与冲击。
二工业以太网与商用以太网的区别
什么是工业以太网?
技术上,它与ieee802.3兼容,故从逻辑上可把商用网和工业网看成是一个以太网,而用户可根据现场情况,灵活装配自己的网络部件,但从工业环境的恶劣和抗干扰的要求,设计者希望采用市场上可找到的以太网芯片和媒介,兼顾考虑下述工业现场的特殊要求:
首先要考虑高温、潮湿、振动;二是对工业抗电磁干扰和抗辐射有一定要求,如满足en50081-2、en50082-2标准,而办公室级别的产品未经这些工业标准测试,表1列出了一些常用工业标准。
为改善抗干扰性和降低辐射,工业以太网产品多使用多层线路板或双面电路板,且外壳采用金属如铸铝屏蔽干扰;三是电源要求,因集线器、交换机、收发器多为有源部件,而现场电源的品质又较差,故常采用双路直流电或交流电为其供电,另外考虑方便安装,工业以太网产品多数使用din导轨或面板安装;四是通信介质选择,在办公室环境下多数配线使用utp,而在工业环境下推荐用户使用stp(带屏蔽双绞线)和光纤。
三tcp/ip
1.为什么使用tcp/ip?
最主要的一个原因在于它能使用在多种物理网络技术上,包括局域网和广域网技术。
tcp/ip协议的成功很大程度上取决于它能适应几乎所有底层通信技术。
20世纪80年代初,先在x.25上运行tcp/ip协议;而后又在一个拨号语音网络(如电话系统)上使用tcp/ip协议,又有tcp/ip在令牌环网上运行成功;最后又实现了tcp/ip远程分组无线网点与其他internet网点间tcp/ip通信。
所以tcp/ip协议极其灵活,具备连接不同网络的能力。
另外,使用tcp/ip也简化了osi模型,因为它省略了表示层和会话层。
如果现在把以太网的物理层和数据链路层加到osi模型就构成了基于以太网的tcp/ip网,如图1所示。
用以太网实现tcp/ip也是经济的一种方式。
2.internetprotocol(ip)
ip是internet最基本的协议,用户可从www.ietf.org下载RFc79来得到其文件,(要求评论RFc:
RequestForcomments:
一系列备忘录的名称,包括概述、评价、意见、技术和研究,以及所提出的和被接受的互联网标准)。
ip层主要目的是找到ip报文的“下一个连接点”,它可以是路由器、计算机、控制器甚至i/o,关键该设备须有自己的ip地址。
凡在网络层使用ip协议的网络,都通过ip地址寻址,所以使用时首先要进行复杂的设置,每个节点至少需一个“ip地址”、一个“子网掩码”、一个“默认网点”和一个“主机名”,如此复杂的设置,对于一些初识网络的用户来说的确带来不便,不过随着对网络熟悉,有许多ip地址配置工具,可方便进行ip设置,甚至是自动设置。
ip是面向报文的协议,它独立处理每个报文包,每个报文包必须含有完整的寻址信息。
ip报文包的格式如图2所示。
ip地址的类型共有4种(如图3所示):
a类用于处理超大型网络,最多16387064个主机(1~126);b类网络最多可有64516个主机(网络地址的第一段为128~191);c类用于小型网络,最多可有254个主机(网络地址的第一段为192~223);d类用于多点播送,用于多目的信息的传输。
全零(“0.0.0.0”)地址对应于当前主机,全1地址(“255.255.255.255”)是当前子网的广播地址。
3.transmissioncontrolprotocol(tcp)
tcp是基于传输层的协议(如图4所示),协议文件可从RFc793得到,使用广泛,面向连接的可靠协议。
它能把报文分解为数段,在目的站再重新装配这些段,支持重新发送未被收到的段,提供两台设备间的全双工连接,允许它们高效地交换大量数据。
tcp使用滑动窗口协议来高效使用网络。
由于tcp很少干预底层投递系统的工作,它适应各种投递系统;且提供流量控制,能使各种不同速率的系统进行通信。
报文段是tcp所使用的基本传输单元,用于传输数据或控制信息。
4.tcp端口
tcp是使用端口(socket)号把信息传到上层,为用户提供不同服务,端口号跟踪同一时间内通过网络的不同会话。
RFc1700中定义了众所周知的特殊端口号,常用端口如表2所列。
其中502端口是自动化公司唯一所拥有的端口号码。
5.协议(protocal)的功能
组建网络时,必须选择一种网络通信协议,使得用户之间能相互进行“交流”。
协议是网络设备用来通信的一套规则,可理解为一种彼此都能听懂的公用语言。
如在网络层使用ip协议,在传输层使用tcp协议,就构成了目前常用的tcp/ip协议,现在几乎所有厂商和操作系统都支持它。
同时,tcp/ip也是internet的基础协议。
篇二:
开放型modbus-tcp规范(中文版)
开放型modbus-tcp规范(中文版)
作为公共评论的草案。
再版1999年3月29日,即修订版1.0。
没有大的技术改动,仅作了补充说明。
增加了附录a和b作为对一些常用执行问题的回应。
该modbus/tcp规范在万维网上公开发行。
它表明开发者的意愿是把它作为工业自动化领域具有互用性的标准。
既然modbus和modbus/tcp作为事实上的“实际”标准,而且很多生产商已经实现了它的功能,此规范主要是阐述在互连网上具有普遍可用性的基于tcp通讯协议的modbus报文的特殊编码。
2.概述
modbus/tcp是简单的、中立厂商的用于管理和控制自动化设备的modbus系列通讯协议的派生产品。
显而易见,它覆盖了使用tcp/ip协议的“intranet”和“internet”环境中modbus报文的用途。
协议的最通用用途是为诸如plc’s,i/o模块,以及连接其它简单域总线或i/o模块的网关服务的。
modbus/tcp协议是作为一种(实际的)自动化标准发行的。
既然modbus已经广为人知,该规范只将别处没有收录的少量信息列入其中。
然而,本规范力图阐明modbus中哪种功能对于普通自动化设备的互用性有价值,哪些部分是modbus作为可编程的协议交替用于plc’s的“多余部分”。
它通过将配套报文类型“一致性等级”,区别那些普遍适用的和可选的,特别是那些适用于特殊设备如plc’s的报文。
2.1面向连接
在modbus中,数据处理传统上是无国界的,使它们对由噪音引起的中断有高的抵抗力,而且在任一端只需要最小的维护信息。
编程操作,另一方面,期望一种面向连接的方法。
这种方法对于简单变量通过唯一的“登录”符号完成,对于modbusplus变量,通过明确的“程序路径”容量来完成,而“程序路径”容量维持了一种双向连接直到被彻底击穿。
modbus/tcp处理两种情况。
连接在网络协议层很容易被辨认,单一的连接可以支持多个独立的事务。
此外,tcp允许很大数量的并发连接,因而很多情况下,在请求时重新连接或复用一条长的连接是发起者的选择。
熟悉modbus的开发者会感到惊讶:
为什么面向连接tcp协议比面向数据报的udp要应用广泛。
主要原因是通过封装独立的“事务”在一个连接中,此连接可被识别,管理和取消而无须请求客户和服务器采用特别的动作。
这就使进程具有对网络性能变化的适应能力,而且容许安全特色如防火墙和代理可以方便的添加。
类似的推理被最初的万维网的开发者所采用,他们选用tcp及端口80去实现一个作为单一事务的最小的环球网询问。
2.2数据编码
modbus采用“big-endian”来表示地址和数据对象。
这就意味着当一个数字表示的数量大于所传输的单一字节,最大有效字节将首先被发送。
例如:
16-bits0x1234将为0x120x34
32-bits0x12345678l将为0x120x340x560x78
2.3参考编号的解释modbus将其数据模型建立在一系列具有不同特征的表的基础之上。
这四个基本表如下离散输入单比特,由i/o系统提供,只读离散输出单比特,由应用程序更改,读写输入寄存器16比特,数值,由i/o系统提供,只读输出寄存器16比特,数值,由应用程序更改,读写
输入和输出之间以及可寻址位和可寻址代码的数据对象之间的差别并不意味着任何应用性能的不同。
如果这是我们所讨论的目标机械的最自然的解释,那么认为所有的四个基本表是相互覆盖的看法也是非常普通而完全可以接受的。
对于每一个基本表,协议允许单独选择65536个数据对象中的任何一个,而且对那些对象的读写操作可以跨越多个连续的数据对象,直到达到基于处理事务功能代码的数据大小限制。
这儿没有假定数据对象代表一种真正邻接的数据阵列,而这是大多数简单plc’s的解释。
“读写常用参考”功能代码被定义为携带32位的参考值并且能允许在“非常”大的空间里可以直接访问数据对象。
现在没有可以利用这一特点的plc设备。
一个易造成混乱的潜在来源是用于modbus功能的参考值和用于modiconplc’s的“寄存器值”之间的关系。
由于历史原因,用户参考值使用从1开始的十进制数表示。
而modbus采用更普通的从0开始的无符号整数进行软件数据整理分析。
于是,请求从0读取寄存器的modbus消息将已知值返回建立在寄存器4:
00001(存储类型4=输出寄存器,参考值00001)中的应用程序。
2.4隐含长度基本原则
所有的modbus请求和响应都被设计成在此种方法下工作,即接收者可确认消息的完整性。
对于请求和响应为固定长度的功能代码,仅发送功能代码就足够了。
对于在请求和响应中携带不定长数据的功能代码,数据部分前将加上一个字节的数据统计。
当modbus通过tcp运送,
前缀中携带附加的长度信息以便接收者识别消息的边界,甚至消息被分成若干组进行传输。
外在的和隐含的长度准则的存在,以及cRc-32检错代码(以太网)的使用使请求和响应消息中发生未被识别的错误的机率减至无限小。
3.一致性等级概述
当从草稿开始定义一种新的协议,有可能加强编码方式和阐述的一致性。
modbus由于其先进的特性,已经在很多地方得到了实施,必须避免破坏它已经存在的实施。
因此,已经存在的成套的处理类型被划分出一致性等级:
等级0代表普遍使用且总体上一致的功能;等级2代表有用的功能,但带有某些特性。
现存装置的不适应于互用性的功能也已确认。
必须注意到,将来对该标准的扩充将定义附加的功能代码来处理现存事实标准不适用的情形。
然而,被提议扩充的详细资料出现在本手册中将会另人误解。
通过将代码“随机的”发送或者即便是通过检查异常响应的类型来确定特别的目标装置是否支持特别的功能代码总是可能的,而且该方法将保证引入这些扩充的现使用的modbus设备的连续的互用性。
事实上,这就是当前功能代码的分级原则。
3.1等级0这是最小的有用功能,对主站和从站来说。
读乘法寄存器(fc3)写乘法寄存器(fc16)
3.2等级1
这是附加的被普遍实现的和能共同使用的成套功能,正如前面介绍过的,许多从站把输入,输出,离散值和寄存器值作为同等的进行处理。
读线圈(fc1)
读离散输入(fc2)
读寄存器输入(fc4)写线圈(fc5)写单一寄存器(fc6)读异常状态字(fc7)
此功能对于每一个从站系列显然具有不同的含义。
3.3等级2
这些是需要hmi和管理等例行操作的数据传送功能。
强制型多路线圈(fc15)
读一般参考值(fc20)
该功能可以处理并发的多个请求,而且能接收32位的参考数值。
当前的584和984plc’s仅使用此功能接收类型6的参考值(扩展的寄存器文件)。
该功能最适于扩充以处理大的寄存器空间和缺少诸如“未定位”变量的参考值的数据对象。
写一般参考值(fc21)
此功能可以处理并发的多个请求,也可接收32位的参考数值。
当前的584和984plc’s仅使用此功能接收类型6的参考值(扩展的寄存器文件)。
该功能最适于扩充以处理大的寄存器空间和缺少诸如“未定位”变量的参考值的数据对象。
掩膜写寄存器(fc22)
读/写寄存器(fc23)
此功能把一定范围的寄存器输入和输出当作单一的处理事务。
使用modbus是执行规则的带有i/o模块的状态影象交换的最好办法。
如此,高性能的通用的数据采集装置可以执行功能3,16和23,从而把快捷的数据规则交换(23)和执行特殊数据对象的需求询问或更新的能力结合起来(3和16)。
读FiFo队列(fc24)
一个有点专用的功能,打算将表结构的数据象FiFo(用到584/984上的Fin和Fout功能模块)一样传送到主机。
对于某种事件录入软件很有用。
3.4机器/厂家/网络的特殊功能
以下所有的功能,虽然在modbus协议手册中提到,但由于它们有很强的机器依赖性,因而不适于互用性的目的。
诊断(fc8)
编程(484)(fc9)
轮询(484)(fc10)
获取通讯事件计数器值(modbus)(fc11)
获取通讯事件记录(modbus)(fc12)编程(584/984)(fc13)
轮询(584/984)(fc14)
通告从站id(fc17)
编程(884/u84)(fc18)恢复通讯连接(884/u84)(fc19)编程(原理)(fc40)
固件置换(fc125)
编程(584/984)(fc126)
通告本地地址(modbus)(fc127)
4.协议结构
本部分阐述了通过modbus/tcp网络携带的modbus请求和或响应封装的一般格式。
必须注意到请求和响应本体(从功能代码到数据部分的末尾)的结构和其它modbus变量具有完全相同的版面格式和含义,如:
modbus串行端口-ascii编码
modbus串行端口-Rtu(二进制)编码
篇三:
modbustcpip协议规范详细介绍
modbustcp/ip协议规范详细介绍
1.该规范的发展概况
原始版本1997年9月3日作为公共评论的草案。
再版1999年3月29日,即修订版1.0。
没有大的技术改动,仅作了补充说明。
增加了附录a和b作为对一些常用执行问题的回应。
该modbus/tcp规范在万维网上公开发行。
它表明开发者的意愿是把它作为工业自动化领域具有互用性的标准。
既然modbus和modbus/tcp作为事实上的“实际”标准,而且很多生产商已经实现了它的功能,此规范主要是阐述在互连网上具有普遍可用性的基于tcp通讯协议的modbus报文的特殊编码。
2.概述
modbus/tcp是简单的、中立厂商的用于管理和控制自动化设备的modbus系列通讯协议的派生产品。
显而易见,它覆盖了使用tcp/ip协议的“intranet”和“internet”环境中modbus报文的用途。
协议的最通用用途是为诸如plc’s,i/o模块,以及连接其它简单域总线或i/o模块的网关服务的。
modbus/tcp协议是作为一种(实际的)自动化标准发行的。
既然modbus已经广为人知,该规范只将别处没有收录的少量信息列入其中。
然而,本规范力图阐明modbus中哪种功能对于普通自动化设备的互用性有价值,哪些部分是modbus作为可编程的协议交替用于plc’s的“多余部分”。
它通过将配套报文类型“一致性等级”,区别那些普遍适用的和可选的,特别是那些适用于特殊设备如plc’s的报文。
2.1面向连接
在modbus中,数据处理传统上是无国界的,使它们对由噪音引起的中断有高的抵抗力,而且在任一端只需要最小的维护信息。
编程操作,另一方面,期望一种面向连接的方法。
这种方法对于简单变量通过唯一的“登录”符号完成,对于modbusplus变量,通过明确的“程序路径”容量来完成,而“程序路径”容量维持了一种双向连接直到被彻底击穿。
modbus/tcp处理两种情况。
连接在网络协议层很容易被辨认,单一的连接可以支持多个独立的事务。
此外,tcp允许很大数量的并发连接,因而很多情况下,在请求时重新连接或复用一条长的连接是发起者的选择。
熟悉modbus的开发者会感到惊讶:
为什么面向连接tcp协议比面向数据报的udp要应用广泛。
主要原因是通过封装独立的“事务”在一个连接中,此连接可被识别,管理和取消而无须请求客户和服务器采用特别的动作。
这就使进程具有对网络性能变化的适应能力,而且容许安全特色如防火墙和代理可以方便的添加。
类似的推理被最初的万维网的开发者所采用,他们选用tcp及端口80去实现一个作为单一事务的最小的环球网询问。
2.2数据编码
modbus采用“big-endian”来表示地址和数据对象。
这就意味着当一个数字表示的数量大于所传输的单一字节,最大有效字节将首先被发送。
例如:
2.3参考编号的解释
modbus将其数据模型建立在一系列具有不同特征的表的基础之上。
这四个基本表如下l离散输入单比特,由i/o系统提供,只读
l离散输出单比特,由应用程序更改,读写
l输入寄存器16比特,数值,由i/o系统提供,只读
l输出寄存器16比特,数值,由应用程序更改,读写
输入和输出之间以及可寻址位和可寻址代码的数据对象之间的差别并不意味着任何应用性能的不同。
如果这是我们所讨论的目标机械的最自然的解释,那么认为所有的四个基本表是相互覆盖的看法也是非常普通而完全可以接受的。
对于每一个基本表,协议允许单独选择65536个数据对象中的任何一个,而且对那些对象的读写操作可以跨越多个连续的数据对象,直到达到基于处理事务功能代码的数据大小限制。
这儿没有假定数据对象代表一种真正邻接的数据阵列,而这是大多数简单plc’s的解释。
“读写常用参考”功能代码被定义为携带32位的参考值并且能允许在“非常”大的空间里可以直接访问数据对象。
现在没有可以利用这一特点的plc设备。
一个易造成混乱的潜在来源是用于modbus功能的参考值和用于modiconplc’s的“寄存器值”之间的关系。
由于历史原因,用户参考值使用从1开始的十进制数表示。
而modbus采用更普通的从0开始的无符号整数进行软件数据整理分析。
于是,请求从0读取寄存器的modbus消息将已知值返回建立在寄存器4:
00001(存储类型4=输出寄存器,参考值00001)中的应用程序。
2.4隐含长度基本原则
所有的modbus请求和响应都被设计成在此种方法下工作,即接收者可确认消息的完整性。
对于请求和响应为固定长度的功能代码,仅发送功能代码就足够了。
对于在请求和响应中携带不定长数据的功能代码,数据部分前将加上一个字节的数据统计。
当modbus通过tcp运送,前缀中携带附加的长度信息以便接收者识别消息的边界,甚至消息被分成若干组进行传输。
外在的和隐含的长度准则的存在,以及cRc-32检错代码(以太网)的使用使请求和响应消息中发生未被识别的错误的机率减至无限小。
3.一致性等级概述
当从草稿开始定义一种新的协议,有可能加强编码方式和阐述的一致性。
modbus由于其先进的特性,已经在很多地方得到了实施,必须避免破坏它已经存在的实施。
因此,已经存在的成套的处理类型被划分出一致性等级:
等级0代表普遍使用且总体上一致的功能;等级2代表有用的功能,但带有某些特性。
现存装置的不适应于互用性的功能也已确认。
必须注意到,将来对该标准的扩充将定义附加的功能代码来处理现存事实标准不适用的情形。
然而,被提议扩充的详细资料出现在本手册中将会另人误解。
通过将代码“随机的”发送或者即便是通过检查异常响应的类型来确定特别的目标装置是否支持特别的功能代码总是可能的,而且该方法将保证引入这些扩充的现使用的modbus设备的连续的互用性。
事实上,这就是当前功能代码的分级原则。
3.1等级0
这是最小的有用功能,对主站和从站来说。
读乘法寄存器(fc3)
写乘法寄存器(fc16)
3.2等级1
这是附加的被普遍实现的和能共同使用的成套功能,正如前面介绍过的,许多从站把输入,输出,离散值和寄存器值作为同等的进行处理。
l读线圈(fc1)
l读离散输入(fc2)
l读寄存器输入(fc4)
l写线圈(fc5)
l写单一寄存器(fc6)
l读异常状态字(fc7)
此功能对于每一个从站系列显然具有不同的含义。
3.3等级2
这些是需要hmi和管理等例行操作的数据传送功能。
l强制型多路线圈(fc15)
l读一般参考值(fc20)
该功能可以处理并发的多个请求,而且能接收32位的参考数值。
当前的584和984plc’s仅使用此功能接收类型6的参考值(扩展的寄存器文件)。
该功能最适于扩充以处理大的寄存器空间和缺少诸如“未定位”变量的参考值的数据对象。
l写一般参考值(fc21)
此功能可以处理并发的多个请求,也可接收32位的参考数值。
当前的584和984plc’s仅使用此功能接收类型6的参考值(扩展的寄存器文件)。
该功能最适于扩充以处理大的寄存器空间和缺少诸如“未定位”变量的参考值的数据对象。
l掩膜写寄存器(fc22)
l读/写寄存器(fc23)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- modbustcp 协议 定义