MODBUS协议说明文档
MODBUS协议说明文档

MODBUS通讯协议说明1、概述Modbus 协议是应用于电子控制器上的一种通用语言。
通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。
它已经成为一通用工业标准。
有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。
本文档通信协议说明详细地描述了MODBUS设备的输入和输出命令、信息和数据,以便第三方使用和开发。
1.1通信协议的作用使信息和数据在上位机(主站)和MODBUS设备之间有效地传递,允许访问MODBUS设备的所有测量数据。
MODBUS设备可以实时采集现场各种数据值,具备一个RS485通讯口,能满足MODBUS监控系统的要求。
MODBUS设备通信协议采用MODBUS RTU协议,本协议规定了应用系统中主机与MODBUS 设备之间,在应用层的通信协议,它在应用系统中所处的位置如下图所示:本协议所处的位置从机:1.2 物理接口:连接上位机的主通信口,采用标准串行RS485通讯口,使用压接底座。
信息传输方式为异步方式,主要配置参数,一般默认:起始位1位,数据位8位,停止位1位,无校验,数据传输缺省速率为9600b/s2、MODBU通信协议详述2.1 协议基本规则以下规则确定在回路控制器和其他串行通信回路中设备的通信规则。
1)所有回路通信应遵照主/从方式。
在这种方式下,信息和数据在单个主站和从站(监控设备)之间传递。
2)主站将初始化和控制所有在通信回路上传递的信息。
3)无论如何都不能从一个从站开始通信。
4)所有环路上的通信都以“打包”方式发生。
一个包裹就是一个简单的字符串(每个字符串8位),一个包裹中最多可含255个字节。
组成这个包裹的字节构成标准异步串行数据,并按8位数据位,1位停止位,无校验位的方式传递。
串行数据流由类似于RS232C 中使用的设备产生。
5)所有回路上的传送均分为两种打包方式:A) 主/从传送B) 从/主传送6)若主站或任何从站接收到含有未知命令的包裹,则该包裹将被忽略,且接收站不予响应。
标准MODBUS通信协议说明书

标准MODBUS协议说明书一.我公司现有产品中需要和组态软件进行通信的有二种产品:①总线探头②控制器主机。
三种产品分别使用了二种不格式的MODBUS协议。
但是其都符合MODBUS的通信格式:1.1接口标准:接口标准:TIA/EIA-485硬件连接:2线模式(非4线模式)1.2通讯格式:传输方式是指一个数据帧内一系列独立的数据结构以及用于传输数据的有限规则,下面定义了与MODBUS 协议RTU方式相兼容的传输方式。
每个字节的位:•1个起始位•8个数据位(低有效位在前)•无奇偶校验位•1个停止位错误检测(Error checking):CRC(循环冗余校验)1.3通讯速率:9600bps。
1.4通讯方式:主从方式。
1.5 要求通信波特率可以从9600 4800 1200 600中任意选择。
二.总线探头通信格式说明2.1主机发送格式地址编码功能码寄存器地址数据个数CRC高位CRC低位Address Function AddrH AddrL NumH NumL CRCH CRCL 2.2从机应答格式地址编码功能码字节数数据CRC高位CRC低位CRCH CRCL Address Function byte Data0H,Data0L………………………………………………………. DataNH,DataNL2. 3 格式说明实例假设总线探头地址为01 探头采用值为1组态软件发送数据:01 03 00 65 00 01 CRCL CRCH探头返回数据:01 03 02 00 01 CRCL CRCH3.协议使用说明:3.1关于设置:○1仪器地址设置由按键在菜单设置完成,设置范围1到247,一般默认为1。
.具体操作详见具体仪器使用说明书。
○2传输波特率设置由按键在菜单设置完成,设置范围600、1200、2400、4800、9600、一般默认为9600。
具体操作详见相关仪器使用说明书。
Modbus协议中文版【完整版】

数据
差错校验
启 动请求
功能码
数 据 请求
执行操作 启动响应
接 收 响应 操 作码 数据响应
图 4:MODBUS 事务处理(无差错) 对于异常响应,服务器返回一个与原始功能码等同的码,设置该原始功能码的最高有效位为逻 辑 1。
4
GB/T ××××—××××
客户机
服务器
启动请求
功能码
数据请求
MODBUS 应用层
基于 TCP 的 Modbus TCP IP
其它 其它
MODBUS+/HDL 物理层
主站/从站 EIA/TIA-232 或 EIA/TIA-485
以太网 II/802.3 以太网物理层
图 1:MODBUS 通信栈 2 缩略语 ADU
2
应用数据单元
GB/T ××××—××××
HDLC HMI IETF I/O IP MAC MB MBAP PDU PLC TCP 3
5
l
GB/T ××××—××××
16 – 比特 0x1234 F 注释:更详细的信息参见[1]。 4.3 MODBUS 数据模型
发送的第有不同特征表格上的数据模型为基础。四个基本表格为:
基本表格 离散量输入 线圈 输入寄存器 保持寄存器 对象类型 单 个比 特 单 个比 特 16-比特字 16-比特字 访问类型 只读 读写 只读 读写 内容 I/O 系统提供这种类型数据 通过应用程序改变这种类型数据 I/O 系统提供这种类型数据 通过应用程序改变这种类型数据
等待 MB 指示
[接收 MB 指示] 确认操作码 [无效的]
异常码_1
[有效的] 确认数据地址 [无效的]
异常码_2
modbus通信协议书

modbus通信协议书甲方(以下简称甲方):地址:法定代表人:乙方(以下简称乙方):地址:法定代表人:鉴于甲方需要在其自动化控制系统中采用Modbus通信协议进行数据交换,乙方拥有提供Modbus通信解决方案的专业能力,双方本着平等互利的原则,经友好协商,就Modbus通信协议的实施达成如下协议:第一条定义1.1 Modbus通信协议:指由Modicon公司(现为施耐德电气的一部分)开发的用于工业自动化领域的通信协议,包括Modbus RTU、Modbus ASCII和Modbus TCP/IP等。
第二条协议内容2.1 乙方将根据甲方的需求,提供符合Modbus通信协议标准的设备和技术支持。
2.2 甲方应按照乙方提供的技术规范和操作手册,正确使用Modbus通信协议进行数据交换。
2.3 双方应共同遵守Modbus通信协议的相关标准和规定,确保数据交换的准确性和安全性。
第三条技术支持与服务3.1 乙方负责提供Modbus通信协议的技术支持,包括但不限于设备调试、故障排除和技术咨询。
3.2 甲方在遇到技术问题时,应首先联系乙方寻求帮助。
乙方应在接到请求后及时响应并提供解决方案。
第四条保密条款4.1 双方应对在合作过程中知悉的商业秘密和技术秘密予以保密,未经对方书面同意,不得向第三方披露。
第五条知识产权5.1 乙方提供的Modbus通信协议解决方案及相关技术文档的知识产权归乙方所有,甲方应尊重乙方的知识产权。
第六条违约责任6.1 如一方违反本协议的任何条款,应承担违约责任,并赔偿对方因此遭受的损失。
第七条协议的变更和解除7.1 本协议的任何变更和补充,应由双方协商一致,并以书面形式确定。
7.2 如一方严重违约,另一方有权解除本协议,并要求违约方承担相应的违约责任。
第八条争议解决8.1 本协议在履行过程中如发生争议,双方应首先通过友好协商解决;协商不成时,任何一方可向甲方所在地人民法院提起诉讼。
第九条其他9.1 本协议自双方授权代表签字盖章之日起生效。
MODBUS协议说明文档

MODBUS协议说明文档MODBUS协议主要分为两种模式:RTU(远程终端单元)和ASCII(美国标准代码交换)。
在RTU模式下,数据以二进制形式传输,而在ASCII模式下,数据以ASCII码的形式传输。
两种模式各有优势,可以根据实际需求选择合适的模式。
MODBUS协议定义了一种简单的通信格式,包括请求帧和响应帧。
请求帧中包含设备地址、功能码、数据字段等信息,而响应帧中包含设备地址、功能码、数据字段以及错误码等信息。
通过这种方式,可以实现设备之间的数据通信。
MODBUS协议支持多种功能码,例如读取线圈状态、读取输入状态、读取保持寄存器、写单个寄存器等。
这些功能码可以满足不同的应用需求。
通过使用这些功能码,可以对设备进行读取和写入操作,实现数据的采集和控制。
MODBUS协议还定义了一种称为CRC(循环冗余校验)的错误校验机制,用于检测数据传输过程中的错误。
发送方在发送数据时计算CRC值,并在数据末尾添加该校验值。
接收方收到数据后也计算CRC值,并将计算结果与接收数据的CRC值进行比对,以确定数据是否传输正确。
1.简单易用:MODBUS协议的通信格式简单,容易实现,可以在不同的平台上进行交互。
2.高效可靠:MODBUS协议使用CRC校验机制来确保数据传输的可靠性,减少传输错误的概率。
3.灵活性强:MODBUS协议支持多种功能码,适用于不同的应用场景,扩展性强。
4.兼容性好:MODBUS协议可以与各种设备进行通信,包括传感器、执行器、PLC等。
总结而言,MODBUS协议是一种简单、可靠且易于实现的通信协议,广泛应用于工业控制领域。
通过使用MODBUS协议,可以实现设备之间的数据通信、数据采集和控制,提高自动化系统的效率和可靠性。
(完整word版)MODBUS通讯协议以及应用

ModBus通讯协议分为RTU协议和ASCII协议,我公司的多种仪表都采用ModBus RTU通讯协议,如:YD2000智能电力监测仪、巡检表、数显表、光柱数显表等。
下面就ModBus RTU协议简要介绍如下:一、通讯协议(一)、通讯传送方式:通讯传送分为独立的信息头,和发送的编码数据。
以下的通讯传送方式定义也与MODBUS RTU 通讯规约相兼容:初始结构 = ≥4字节的时间地址码 = 1 字节功能码 = 1 字节数据区 = N 字节错误校检 = 16位CRC码结束结构= ≥4字节的时间地址码:地址码为通讯传送的第一个字节。
这个字节表明由用户设定地址码的从机将接收由主机发送来的信息。
并且每个从机都有具有唯一的地址码,并且响应回送均以各自的地址码开始。
主机发送的地址码表明将发送到的从机地址,而从机发送的地址码表明回送的从机地址。
功能码:通讯传送的第二个字节。
ModBus通讯规约定义功能号为1到127。
本仪表只利用其中的一部分功能码。
作为主机请求发送,通过功能码告诉从机执行什么动作。
作为从机响应,从机发送的功能码与从主机发送来的功能码一样,并表明从机已响应主机进行操作。
如果从机发送的功能码的最高位为1(比如功能码大与此同时127),则表明从机没有响应操作或发送出错。
数据区:数据区是根据不同的功能码而不同。
数据区可以是实际数值、设置点、主机发送给从机或从机发送给主机的地址。
CRC码:二字节的错误检测码。
(二)、通讯规约:当通讯命令发送至仪器时,符合相应地址码的设备接通讯命令,并除去地址码,读取信息,如果没有出错,则执行相应的任务;然后把执行结果返送给发送者。
返送的信息中包括地址码、执行动作的功能码、执行动作后结果的数据以及错误校验码。
如果出错就不发送任何信息。
1.信息帧结构地址码:地址码是信息帧的第一字节(8位),从0到255。
这个字节表明由用户设置地址的从机将接收由主机发送来的信息。
每个从机都必须有唯一的地址码,并且只有符合地址码的从机才能响应回送。
(完整word版)modbus通讯协议

Modbus通讯协议图片:图片:图片:Modbus协议最初由Modicon公司开发出来,在1979年末该公司成为施耐德自动化(Schneider Automation)部门的一部分,现在Modbus已经是工业领域全球最流行的协议。
此协议支持传统的RS-232、RS-422、RS-485和以太网设备。
许多工业设备,包括PLC,DCS,智能仪表等都在使用Modbus协议作为他们之间的通讯标准。
有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。
当在网络上通信时,Modbus协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。
如果需要回应,控制器将生成应答并使用Modbus协议发送给询问方。
Modbus协议包括ASCII、RTU、TCP等,并没有规定物理层。
此协议定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的。
标准的Modicon控制器使用RS232C实现串行的Modbus。
Modbus的ASCII、RTU 协议规定了消息、数据的结构、命令和就答的方式,数据通讯采用Maser/Slave 方式,Master端发出数据请求消息,Slave端接收到正确消息后就可以发送数据到Master端以响应请求;Master端也可以直接发消息修改Slave端的数据,实现双向读写。
Modbus协议需要对数据进行校验,串行协议中除有奇偶校验外,ASCII模式采用LRC校验,RTU模式采用16位CRC校验,但TCP模式没有额外规定校验,因为TCP协议是一个面向连接的可靠协议。
另外,Modbus采用主从方式定时收发数据,在实际使用中如果某Slave站点断开后(如故障或关机),Master端可以诊断出来,而当故障修复后,网络又可自动接通。
因此,Modbus协议的可靠性较好。
下面我来简单的给大家介绍一下,对于Modbus的ASCII、RTU和TCP协议来说,其中TCP和RTU协议非常类似,我们只要把RTU协议的两个字节的校验码去掉,然后在RTU协议的开始加上5个0和一个6并通过TCP/IP网络协议发送出去即可。
ModbusRTU协议文档(中文)

图 2 – 3 读 DO1~DO6 状态的响应数据帧
2.2 读数字输入状态(功能码 02)
查询数据帧
此功能允许用户获得 DI 的状态 ON / OFF(1 = ON , 0 = OFF),除了从机地址和功能 域,数据帧还需要在数据域中包含将被读取 DI 的初始地址和要读取的 DI 数量。SRTU510 中 DI 的地址从 0000H 开始(DI1=0000H,DI2=0001H 依此类推)。具体地址请查看第三章。
以便通过协议正确地建立与它们通讯的特定应用程序。
本章所述协议将尽可能的使用如图 2 – 1 所示的格式,(数字为 16 进制)。
Addr 06H
Fun
Data
Data Data #of Data #of CRC16
CRC16
start
start regs hi regs lo
Hi
Lo
reg hi reg lo
行为 获得数字(继电器)输出的当前状态(ON/OFF) 获得数字输入的当前状态(ON/OFF) 获得一个或多个寄存器的当前二进制值 控制数字(继电器)输出状态(ON/OFF) 设定二进制值到一系列多寄存器中
1.2.4 数据(Data)域
数据域包含了终端执行特定功能所需要的数据或者终端响应查询时采集到的数据。这 些数据的内容可能是数值、参考地址或者设置值。例如:功能域码告诉终端读取一个寄存器, 数据域则需要指明从哪个寄存器开始及读取多少个数据,内嵌的地址和数据依照类型和从机 之间的不同内容而有所不同。
图 2 – 4 的例子是从地址为 17 的从机读取 DI1 到 DI16 的状态。 (例如:SRTU510 有 16 个 DI,DI 的数量为 1~16)
Addr 11H
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MODBUS通讯协议说明
1、概述
Modbus 协议是应用于电子控制器上的一种通用语言。
通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。
它已经成为一通用工业标准。
有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。
本文档通信协议说明详细地描述了MODBUS设备的输入和输出命令、信息和数据,以便第三方使用和开发。
1.1通信协议的作用
使信息和数据在上位机(主站)和MODBUS设备之间有效地传递,允许访问MODBUS设备的所有测量数据。
MODBUS设备可以实时采集现场各种数据值,具备一个RS485通讯口,能满足MODBUS监控系统的要求。
MODBUS设备通信协议采用MODBUS RTU协议,本协议规定了应用系统中主机与MODBUS 设备之间,在应用层的通信协议,它在应用系统中所处的位置如下图所示:
本协议所处的位置
从机:
1.2 物理接口:
连接上位机的主通信口,采用标准串行RS485通讯口,使用压接底座。
信息传输方式为异步方式,主要配置参数,一般默认:起始位1位,数据位8位,停止位1位,无校验,数据传输缺省速率为9600b/s
2、MODBU通信协议详述
2.1 协议基本规则
以下规则确定在回路控制器和其他串行通信回路中设备的通信规则。
1)所有回路通信应遵照主/从方式。
在这种方式下,信息和数据在单个主站和从站(监控设备)之间传递。
2)主站将初始化和控制所有在通信回路上传递的信息。
3)无论如何都不能从一个从站开始通信。
4)所有环路上的通信都以“打包”方式发生。
一个包裹就是一个简单的字符串(每个字符串8位),一个包裹中最多可含255个字节。
组成这个包裹的字节构成标准异步串行数据,并按8位数据位,1位停止位,无校验位的方式传递。
串行数据流由类似于RS232C中使用的设备产生。
5)所有回路上的传送均分为两种打包方式:
A) 主/从传送
B) 从/主传送
6)若主站或任何从站接收到含有未知命令的包裹,则该包裹将被忽略,且接收站不予响应。
2.2 ModBus的传输方式
在ModBus系统中有2种传输模式可选择。
这2种传输模式与从机PC通信的能力是同等的。
选择时应视所用ModBus主机而定,每个ModBus系统只能使用一种模式,不允许2种模式混用。
一种模式是ASCII(美国信息交换码),另一种模式是RTU(远程终端设备)这两种模式的定义见下面
ASCII可打印字符便于故障检测,而且对于用高级语言(如Fortan)编程的主计算机及主PC很适宜。
RTU则适用于机器语言编程的计算机和PC主机。
用RTU模式传输的数据是8位二进制字符。
如欲转换为ASCII模式,则每个RTU字符首先应分为高位和低位两部分,这两部分各含4位,然后转换成十六进制等量值。
用以构成报文的ASCII字符都是十六进制字符。
ASCII模式使用的字符虽是RTU模式的两倍,但ASCII 数据的译玛和处理更为容易一些,此外,用RTU模式时报文字符必须以连续数据流的形式传送,用ASCII模式,字符之间可产生长达1s的间隔,以适应速度较快的机器。
2.3 Modbus的数据校验方式
CRC-16(循环冗余错误校验)
CRC-16错误校验程序如下:报文(此处只涉及数据位,不指起始位、停止位和任选的奇偶校验位)被看作是一个连续的二进制,其最高有效位(MSB)首选发送。
报文先与X↑16相乘(左移16位),然后看X↑16+X↑15+X↑2+1除,X↑16+X↑15+X↑2+1可以表示为二进制数 11000000000000101。
整数商位忽略不记,16位余数加入该报文(MSB先发送),成为2个CRC校验字节。
余数中的1全部初始化,以免所有的零成为一条报文被接收。
经上述处理而含有CRC字节的报文,若无错误,到接收设备后再被同一多项式(X↑16+X↑15+X↑2+1)除,会得到一个零余数(接收设备核验这个CRC字节,并将其与被传送的CRC比较)。
全部运算以2为模(无进位)。
习惯于成串发送数据的设备会首选送出字符的最右位(LSB-最低有效位)。
而在生成CRC 情况下,发送首位应是被除数的最高有效位MSB。
由于在运算中不用进位,为便于操作起见,计算CRC时设MSB在最右位。
生成多项式的位序也必须反过来,以保持一致。
多项式的MSB略去不记,因其只对商有影响而不影响余数。
生成CRC-16校验字节的步骤如下:
a)装如一个16位寄存器,所有数位均为1。
b)该16位寄存器的高位字节与开始8位字节进行“异或”运算。
运算结果放入这个16
位寄存器。
c)把这个16寄存器向右移一位。
d)若向右(标记位)移出的数位是1,则生成多项式1010000000000001和这个寄存器进
行“异或”运算;若向右移出的数位是0,则返回③。
e)5重复3和4,直至移出8位。
f)6另外8位与该十六位寄存器进行“异或”运算。
g)7重复3~6,直至该报文所有字节均与16位寄存器进行“异或”运算,并移位8次。
h)8这个16位寄存器的内容即2字节CRC错误校验,被加到报文的最高有效位。
另外,在某些非ModBus通信协议中也经常使用CRC16作为校验手段,而且产生了一些CRC16的变种,他们是使用CRC16多项式X↑16+ X↑15+X↑2+1,单首次装入的16位寄存器为0000;使用CRC16的反序X↑16+X↑14+X↑1+1,首次装入寄存器值为0000或 FFFFH。
LRC(纵向冗余错误校验)
LRC错误校验用于ASCII模式。
这个错误校验是一个8位二进制数,可作为2个ASCII 十六进制字节传送。
把十六进制字符转换成二进制,加上无循环进位的二进制字符和二进制补码结果生成LRC错误校验(参见图)。
这个LRC在接收设备进行核验,并与被传送的LRC 进行比较,冒号(:)、回车符号(CR)、换行字符(LF)和置入的其他任何非ASCII十六进制字符在运算时忽略不计。
LRC生成范例--读取02号从机的前8个线圈
3、传输格式
(1)命令报文格式
读数据:
(2)功能码说明
下表ModBus
各功能码对应的数据类型。
(3)、异常应答返回
非法功能:
非法数据地址:
注意:每一个数据用两个字节整数表示,高位在前,低位在后
如:带符号整数范围 -32768---32767
上传数据需除十,如湿度上传16进制 &H0311,对应十进制00785,表示78.5%
上传数据需除十,如温度上传16进制 &H00FFH,对应十进制00255,表示25.5℃
上传数据需除十,如温度上传16进制 &H8064,高位为1,表示负数,对应的数高位取反,表示-10.0℃
5、网络采样定时
MODBUS设备中,上位机读取数据每次间隔时间不小于500ms,推荐值1s。
6、命令举例:
MODBUS设备的地址为1,读所有数据为:
下发命令:(CRC校验低位在前)
01 04 00 00 00 02 71 CB (读从数据起始地址为0000H开始的2个模拟量)
SMARTTH MODBUS设备返回命令如下:
01 04 04,温度H,温度L,湿度H,湿度L,CRCL,CRCH。
地址为2时:(CRC校验低位在前)
上位机发送: 02 04 00 00 00 02 71 F8(读从数据起始地址为0000H开始的2个模拟量)下位机返回: 02 04 04,温度H,温度L,湿度H,湿度L,CRCL,CRCH。
串口设置:异步通讯,起始位1位,数据位8位,无校验,停止位1位。
数据传输速率缺省为:9600b/s
自动下发命令时间间隔:100ms---10s可选,默认1s
Windows窗口参考以前的程序增加必要的选择项,其他不变。
7、串口调试截图
读取设备信息
写入设备信息。