标准modbus协议文本样本
- 格式:doc
- 大小:19.28 KB
- 文档页数:9
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 rut协议报文格式协议双方1.1 卖方姓名/名称:____________________________身份证号/公司注册号:____________________________联系地址:____________________________1.2 买方姓名/名称:____________________________身份证号/公司注册号:____________________________联系地址:____________________________房屋信息2.1 房屋位置房屋位于____________________________(具体地址或位置描述)。
2.2 房屋面积房屋总面积为____________________________平方米。
2.3 房屋性质房屋性质为____________________________(如商品房、二手房等)。
2.4 房屋所有权证号房屋所有权证号为____________________________。
车位信息3.1 车位位置车位位于____________________________(具体地址或位置描述)。
3.2 车位面积车位面积为____________________________平方米。
3.3 车位所有权证号车位所有权证号为____________________________(如有)。
买卖价格4.1 房屋价格房屋的买卖价格为____________________________元。
4.2 车位价格车位的买卖价格为____________________________元。
4.3 总价格房屋与车位的总价格为____________________________元。
4.4 付款方式买方应通过____________________________(如银行转账、支票等)支付房屋及车位款项。
4.5 付款时间买方应于____________________________(付款时间)之前支付全部款项。
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协议,可以实现设备之间的数据通信、数据采集和控制,提高自动化系统的效率和可靠性。
MODBUS 标准通讯协议(简版)(基于Modbus 应用协议RTU 通讯模式)1. 前言本协议适用于符合MODBUS 标准通讯协议的规定以及在Modbus 网络上以RTU 模式通信运行的设备和应用软件。
本协议按照Modbus 应用协议标准制定。
2. 波特率可选范围代码678910 11 12 13 14 波特率 2400 4800 9600 14400192002880038400576001152003. RTU 通讯数据传输模式3.1 RTU 模式每个字节( 11 位 )的格式为 :通讯传输为异步方式,并以字节(数据帧)为单位。
在主站和从站之间传递的每一个数据帧都是11位的串行数据流。
编码系统: 8–位二进制,报文中每个8 位字节含有两个4 位十六进制字符(0–9, A –F) 数 据 位: 1个 起始位8个 数据位, 首先发送最低有效位1个 奇偶校验(注:偶校验是要求的,其它模式( 奇校验,无校验 )也可以使用) 1个 停止位 (注 :使用无校验时要求2个停止位)帧校验域:循环冗余校验(CRC) 3.2 字符的串行传送方式:每个字符或字节按如下顺序发送(从左到右):最低有效位 (LSB) . . . 最高有效位 (MSB)通过配置,设备可以接受奇校验、偶校验或无校验。
如果无奇偶校验,那么传送一个附加的停止位来填充数据帧使其成为完整的11位异步字符:3.3 数据编码:Modbus 处理的所有数据按照存储数据的类型可以分为位寄存器(容量为1位)和16位寄存器(容量为16位)两种,它们的宽度都是16位(Data is packed as two bytes per register),协议允许单个选择65536个数据项,而且其读写操作可以越过多个连续数据项直到数据大小规格限制,这个数据大小规格限制与事务处理功能码有关。
在Modbus PDU 中从0~65535寻址每个数据。
Modbus 使用一个‘big-Endian ’表示地址和数据项,即最高有效字节在低地址存储,最低有效字节在高字节存储。
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网络协议发送出去即可。
上海安标电子有限公司
——PC39A接地电阻仪通信协议
通信协议:
波特率:9600数据位:8校验位:无停止位:1
上位机(计算机):
注:1 ID:1个字节,由单机来定(0~255)
2 Command:1个字节,读:3或4,写:6
3 数据地址:2个字节,寄存器地址,读从100开始,写从200开始
4 Value:2个字节,读:个数(以整型为单位),写:命令/ 数据(以整型为单位)
5 CRC:计算出CRC
下位机(PC39A):
注:1 ID:1个字节,由单机来定(0~255)
2 Command:1个字节,收到的上位机命令
3数据个数:1个字节,返回数据个数(以字节为单位)
4 Value:N个字节,是返回上位机的数据
5 CRC:计算出CRC
写命令,若正确
返回收到的数据:
若错误
注:1 ID:1个字节,由单机来定(0~255)
2 Command:1个字节,收到的上位机命令或上0x80,
如收到3,返回0x83
3数据:1个字节,错误的指令
错误指令
1:表示command不存在
2:表示数据地址超限
4 CRC:计算出CRC
例如读PC39A电流数据:
机器地址为12,电流的数据地址100,数据为15.45(A) (一个整型数据)
从机返回
如正确:
如错误:
例如发PC39A启动命令:
机器地址为12,命令的地址200,数据为25000(25000表示启动)
主机:
从机返回。
Modbus协议范本
一、通信协议
Modbus是一种串行通信协议,用于连接工业电子设备。
它定义了主从设备之间的通信方式和数据格式,使得不同厂商生产的设备能够相互通信。
二、数据格式
Modbus协议采用ASCII码或二进制码进行数据传输。
在ASCII码格式中,每个字节都表示为一个ASCII字符,而在二进制码格式中,每个字节都表示为8位二进制数。
三、命令与应答
Modbus协议采用命令/应答的方式进行通信。
主设备发送一个命令,从设备接收并执行该命令,然后返回一个应答。
命令和应答都遵循一定的格式和协议。
四、校验方式
Modbus协议提供了两种校验方式:奇偶校验和CRC校
验。
奇偶校验方式通过在数据字节后添加一个校验位来确保数据的正确性。
CRC校验方式则使用一个循环冗余检查算法来确保数据的正确性。
五、数据通信方式
Modbus协议支持两种数据通信方式:同步通信和异步通信。
同步通信要求主设备和从设备在通信时保持同步,而异步通信则不需要同步。
六、连接方式
Modbus协议支持多种连接方式,包括RS-485、RS-422、RS-232等。
这些连接方式适用于不同的应用场景和设备配置。
七、传输速率
Modbus协议支持多种传输速率,包括9.6kbps、19.2kbps、4800bps等。
根据不同的应用场景和设备配置,可以选择合适的传输速率来确保通信的稳定性和可靠性。
HLP_SV Modbus RTU 标准通讯协议格式通信资料格式Address Function Data CRC check8 bits 8 bits N×8bits 16bits1)Address通讯地址:1-2472)Function:命令码8-bit命令01 读线圈状态上位机发送数据格式:ADDRESS 01 ADDRH ADDRL NUMH NUML CRC注: ADDR: 00000 --- FFFF(ADDR=线圈地址-1);NUM: 0010-----0040 (NUM为要读线圈状态值的二进制数位数)正确时变频器返回数据格式:ADDRESS 01 BYTECOUNT DA TA1 DA TA2 DA TA3 DA TAN CRC注: BYTECOUNT:读取的字数错误时变频器返回数据格式:ADDRESS 0X81 Errornum CRC注: Errornum为错误类型代码如:要检测变频器的输出频率应发送数据:01 01 00 30 00 10 3D C9(16进制)变频器返回数据:01 01 02 00 20 B8 24(16进制)发送数据:0030hex(线圈地址49)返回的数据位为“0020”(16进制),高位与低位互换,为2000。
即输出频率为303(Max Ref)的50%。
关于2000对应50%,具体见图1。
03读保持寄存器上位机发送数据格式:ADDRESS 03 ADDRH ADDRL NUMH NUML CRC注:ADDR: 0 --- 0XFFFF;NUM: 0010-----0040 (NUM为要读取数据的字数)ADDR=Parameter Numbe r×10-1正确时变频器返回数据格式:ADDRESS 03 BYTECOUNT DA TA1 DA TA 2 DA TA 3 DA TAN CRC 注: BYTECOUNT:读取的字节数错误时变频器返回数据格式:ADDRESS 0X83 Errornum CRC如:要读变频器参数303的设定值应发送数据:01 03 0B D5 00 02 95 BC (16进制)Parameter 303(3029)=0BD5HEX变频器返回数据:“:”01 03 04 00 00 EA 60 B5 7B返回的数据位为“00 00 EA 60”(16进制)转换为10进制数为60000,表示303设置值为60.000※当参数值为双字时,NUM的值必须等于2。
Modbus是一种串行通信协议,用于工业自动化系统中。
以下是Modbus标准写法的示例:
1. 读取线圈状态
功能码:01
请求:01 01 00 00 00 19 FD C0
接收:01 01 04 0F 03 80 01 A8 C5
解释:请求中的第一个字节为功能码,接下来的两个字节是线圈的数量,后面的字节是起始地址和校验码。
接收的第一个字节是功能码和地址码,第二个字节是线圈状态的字节数,后面跟着的是线圈状态,最后一个字节是校验码。
2. 读取输入状态
功能码:02
请求:01 02 00 00 00 19 B9 C0
接收:01 02 04 00 00
解释:请求和接收的格式与读取线圈状态类似,只是功能码和地址码不同。
3. 读取保持寄存器
功能码:03
请求:01 03 00 00 00 19 F8 C1
接收:01 03 04 3F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
解释:请求和接收的格式与读取线圈状态类似,只是功能码和地址码不同。
Modbus通讯协议下表是Modbus的功能格式:1、读可读写数字量寄存器(线圈状态):计算机发送命令:[设备地址] [命令号01] [起始寄存器地址高8位] [低8位] [读取的寄存器数高8位] [低8位] [CRC校验的低8位] [CRC校验的高8位]例:[11][01][00][13][00][25][CRC低][CRC高]意义如下:<1>设备地址:在一个485总线上可以挂接多个设备,此处的设备地址表示想和哪一个设备通讯。
例子中为想和17号(十进制的17是十六进制的11)通讯。
<2>命令号01:读取数字量的命令号固定为01。
<3>起始地址高8位、低8位:表示想读取的开关量的起始地址(起始地址为0)。
比如例子中的起始地址为19。
<4>寄存器数高8位、低8位:表示从起始地址开始读多少个开关量。
例子中为37个开关量。
<5>CRC校验:是从开头一直校验到此之前。
在此协议的最后再作介绍。
此处需要注意,CRC校验在命令中的高低字节的顺序和其他的相反。
设备响应:[设备地址] [命令号01] [返回的字节个数][数据1][数据2]...[数据n][CRC 校验的低8位] [CRC校验的高8位]例:[11][01][05][CD][6B][B2][0E][1B][CRC低][CRC高]意义如下:<1>设备地址和命令号和上面的相同。
<2>返回的字节个数:表示数据的字节个数,也就是数据1,2...n中的n的值。
<3>数据1...n:由于每一个数据是一个8位的数,所以每一个数据表示8个开关量的值,每一位为0表示对应的开关断开,为1表示闭合。
比如例子中,表示20号(索引号为19)开关闭合,21号断开,22闭合,23闭合,24断开,25断开,26闭合,27闭合...如果询问的开关量不是8的整倍数,那么最后一个字节的高位部分无意义,置为0。
(完整版)MODBUS协议(功能码及报文解析)(可编辑修改word版)MODBUS 协议Modbus 是一种串行通信协议,是Modicon 于 1979 年,为使用可编程逻辑控制器(PLC)而发表的。
事实上,它已经成为工业领域通信协议标准,并且现在是工业电子设备之间相当常用的连接方式。
Mod bus 比其他通信协议使用的更广泛的主要原因有:公开发表并且无版税要求相对容易的工业网络部署对供应商来说,修改移动原生的位或字节没有很多限制Modbus 允许多个设备连接在同一个网络上进行通信,举个例子,一个由测量温度和湿度的装置,并且将结果发送给计算机。
在数据采集与监视控制系统(SCADA)中,Modbus 通常用来连接监控计算机和 rem ote terminal unit (RTU)。
Modbus 协议目前存在用于串口、以太网以及其他支持互联网协议的网络的版本。
大多数 Modbus 设备通信通过串口EIA-485 物理层进行[1]。
对于串行连接,存在两个变种,它们在数值数据表示不同和协议细节上略有不同。
Modbus RTU 是一种紧凑的,采用二进制表示数据的方式,Modbus ASCII 是一种人类可读的,冗长的表示方式。
这两个变种都使用串行通讯(serial communication)方式。
RTU 格式后续的命令/数据带有循环冗余校验的校验和,而ASCII 格式采用纵向冗余校验的校验和。
被配置为 RTU 变种的节点不会和设置为 ASCII 变种的节点通信,反之亦然。
对于通过TCP/IP(例如以太网)的连接,存在多个 Modbus/TCP 变种,这种方式不需要校验和的计算。
对于所有的这三种通信协议在数据模型和功能调用上都是相同的,只有封装方式是不同的。
Modbus 有一个扩展版本 Modbus Plus(Modbus+或者 MB+),不过此协定是Modicon 专有的,和 Modbus 不同。
它需要一个专门的协处理器来处理类似HDLC 的高速令牌旋转。
HLP_SV Modbus RTU 标准通讯协议格式通信资料格式Address Function Data CRC check8 bits 8 bits N×8bits 16bits1)Address通讯地址:1-2472)Function:命令码8-bit命令01 读线圈状态上位机发送数据格式:ADDRESS 01 ADDRH ADDRL NUMH NUML CRC注: ADDR: 00000 --- FFFF(ADDR=线圈地址-1);NUM: 0010-----0040 (NUM为要读线圈状态值的二进制数位数)正确时变频器返回数据格式:ADDRESS 01 BYTECOUNT DA TA1 DA TA2 DA TA3 DA TAN CRC注: BYTECOUNT:读取的字数错误时变频器返回数据格式:ADDRESS 0X81 Errornum CRC注: Errornum为错误类型代码如:要检测变频器的输出频率应发送数据:01 01 00 30 00 10 3D C9(16进制)变频器返回数据:01 01 02 00 20 B8 24(16进制)发送数据:0030hex(线圈地址49)返回的数据位为“0020”(16进制),高位与低位互换,为2000。
即输出频率为303(Max Ref)的50%。
关于2000对应50%,具体见图1。
03读保持寄存器上位机发送数据格式:ADDRESS 03 ADDRH ADDRL NUMH NUML CRC注:ADDR: 0 --- 0XFFFF;NUM: 0010-----0040 (NUM为要读取数据的字数)ADDR=Parameter Numbe r×10-1正确时变频器返回数据格式:ADDRESS 03 BYTECOUNT DA TA1 DA TA 2 DA TA 3 DA TAN CRC 注: BYTECOUNT:读取的字节数错误时变频器返回数据格式:ADDRESS 0X83 Errornum CRC如:要读变频器参数303的设定值应发送数据:01 03 0B D5 00 02 95 BC (16进制)Parameter 303(3029)=0BD5HEX变频器返回数据:“:”01 03 04 00 00 EA 60 B5 7B返回的数据位为“00 00 EA 60”(16进制)转换为10进制数为60000,表示303设置值为60.000※当参数值为双字时,NUM的值必须等于2。
HLP A+ Modbus标准通讯协议格式注:BYTECOUNT = 2 * NUM错误时变频器返回数据格式:“ : ”ADDRESS 0X83 01 or02 or 03 0r 04LRC 0X0D 0X0A如:要读变频器功能码CD000中的设定值(假如为30.00HZ)(CD160=CD161=1 CD162=0)应发送数据:“:”03 00 00 00 01 FC 0D 0A (16进制),转为ASCII码格式为3A 30 33 30 30 30 30 30 30 30 31 46 43 0D 0A(ASCII)变频器返回数据:“:”01 03 02 0B B8 37 0D 0A(16进制),转为ASCII码格式为:3A 30 31 30 33 30 32 30 42 42 38 33 37 0D DA返回的数据位为“0BB8”(16进制)转换为10进制数为3000表示CD000设置值为30.0004 读取输入寄存器上位机发送数据格式:“: “ADDRESS 04 ADDRH ADDRL NUMH NUML LRC 0X0D0X0A注:ADDR: 0 ---- 0XFFFF;NUM: 0001 ---- 0004 (NUM为要读的输入寄存器的数量) 正确时变频器返回数据格式:“: “ADDRESS 04 BYTECOUNT DATAH1 DATAL1 ---- DA TAHN DA TALN注:BYTECOUNT = NUM * 2错误时变频器返回数据格式:“ : “ADDRESS 0X84 01 or 02 or 03 or 04 LRC 0X0D 0X0A如:要读变频器温度显示值(假如温度为36.2)(CD160=CD161=1 CD162=0)应发送数据:“:”01 04 00 06 00 01 F4 0D 0A(16进制),转为ASCII格式为:3A 30 31 30 34 30 30 30 36 30 30 30 31 46 34 0D 0A(ASCII)变频器返回数据:“:”01 04 02 01 6A 8E 0D 0A(16进制),转为ASCII码格式为3A 30 31 30 34 30 32 30 31 36 41 38 45 0D 0A(ASCII)返回的数据位为“016A”(16进制)转换为10进制为“362”表示温度为36.205 写单个线圈状态上位机发送数据格式:“: “ADDRESS 05ADDRH ADDRL DA TAH DATAL LRC 0X0D0X0A注:ADDR: 0 ---- 0XFFFF DATA: 0X0000 or 0XFF00(16进制数)正确时变频器返回数据格式:“: “ADDRESS 05 ADDRH ADDRL DA TAH DATAL LRC 0X0D0X0A错误时变频器返回数据格式:“ : ”ADDRESS 0X85 01 or02 or 03 0r 04 LRC 0X0D 0X0A06 写单个保持寄存器值上位机发送数据格式:“: “ADDRESS 06 ADDRH ADDRL DA TAH DA TAL LRC 0X0D0X0A注:ADDR: 0 ---- 0XFFFF正确时变频器返回数据格式:“: “ADDRESS 06 ADDRH ADDRL DA TAH DA TAL LRC 0X0D0X0A错误时变频器返回数据:“ : ”ADDRESS 0X86 01 or02 or 03 0r 04 LRC 0X0D 0X0A如:要对变频器功能码CD000写入30.00(CD160=CD161=1 CD162=0),应发送数据:“:”01 06 00 00 0B B8 36 0D 0A(16进制),转为ASCII格式为3A 30 31 30 36 30 30 30 30 30 42 42 38 33 36 0D 0A(ASCII)变频器返回数据:“:”01 06 00 00 0B B8 36 0D 0A(16进制),转为ASCII 格式为3A 30 31 30 36 30 30 30 30 30 42 42 38 33 36 0D 0A(ASCII)返回的数据位为“0BB8”(16进制)转换为10进制为“3000”表示CD000设置值为30.000F 写多个线圈状态上位机发送数据格式“: “ADDRESS 0F ADDRH ADDRL NUMH NUML COUNTDATAH1 DATAL1 DATA2H DATA2L ------- DA TANH DA TANL LRC0X0D 0X0A注:ADDR: 0 -------- 0XFFFF ; NUM: 1 ------- 1968 / 0X7B0 ; COUNT: NUM / 8或NUM/ 8 + 1 (NUM为要写的线圈的数量)正确时变频器返回数据格式:“: “ADDRESS 0F ADDRH ADDRL NUMH NUML LRC 0X0D0X0A错误时变频器返回数据格式:“ : ”ADDRESS 0X8F 01 or02 or 03 0r 04 LRC 0X0D 0X0A如:要使变频器正转(CD160=CD161=1 CD162=0),应发送数据:“:”01 0F 00 48 00 08 01 02 LRC 0D 0A(16进制),转为ASCII 格式为3A 30 31 30 46 30 30 34 38 30 30 30 38 30 31 30 30 30 32 LRC 0D 0A(ASCII)“0002”即0000 0010; 即线圈0x49置为1,给变频器发正转命令。
前言-----------串行链路和TCP/IP上的MODBUS标准介绍该标准包括两个通信规程中使用的MODBUS应用层协议和服务规范:·串行链路上的MODBUSMODBUS串行链路取决于TIA/EIA标准:232-F和485-A。
·TCP/IP上的MODBUSMODBUS TCP/IP取决于IETF标准:RFC793和RFC791有关。
串行链路和TCP/IP上的MODBUS是根据相应ISO层模型说明的两个通信规程。
下图强调指出了该标准的主要部分。
绿色方框表示规范。
灰色方框表示已有的国际标准(TIA/EIA和IETF标准)。
MODBUS标准分为三部分。
第一部分(“Modbus协议规范”)描述了MODBUS事物处理。
第二部分(“MODBUS报文传输在TCP/IP上的实现指南”)提供了一个有助于开发者实现TCP/IP上的MODBUS应用层的参考信息。
第三部分(“MODBUS报文传输在串行链路上的实现指南”)提供了一个有助于开发者实现串行链路上的MODBUS 应用层的参考信息。
第一部分:Modbus协议第一部分:Modbus协议1 引言1.1 范围MODBUS是OSI模型第7层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备之间提供客户机/服务器通信。
自从1979年出现工业串行链路的事实标准以来,MODBUS使成千上万的自动化设备能够通信。
目前,继续增加对简单而雅观的MODBUS结构支持。
互联网组织能够使TCP/IP栈上的保留系统端口502访问MODBUS。
MODBUS是一个请求/应答协议,并且提供功能码规定的服务。
MODBUS功能码是MODBUS 请求/应答PDU的元素。
本文件的作用是描述MODBUS事务处理框架内使用的功能码。
1.2 规范性引用文件1.RFC791,互联网协议,Sep81 DARPA2.MODBUS协议参考指南 Rev J,MODICON,1996年6月,doc#PI_MBUS_300MODBUS是一项应用层报文传输协议,用于在通过不同类型的总线或网络连接的设备之间的客户机/服务器通信。
标准modbus协议文本样本标准s modbus协议文本本文档所提供的信息仅供参考之用,不能作为科学依据,请勿模仿。
文档如有不当之处,请联系本人或网站删除。
ISCS与与子接口协议版本:V南京南瑞集团公司修订记录版本日期起草审阅交叉审阅备注V1.0-07-27陆艮峰初稿本文档所提供的信息仅供参考之用,不能作为科学依据,请勿模仿。
文档如有不当之处,请联系本人或网站删除。
1通信接口基于以太网的P MODBUS TCP/IP协议S ISCS系统的P FEP(前端处理器)配置为主机,子系统的通讯设备配置为从机。
S ISCS系统每s500ms向子系统发送一次轮询报文。
2MODBUS TCP/IP协议协议概述P MODBUSTCP/IP协议在应用层采用S MODBUS信息定义,在传输层和网络层采用用TCP/IP,用于以太网通讯。
P MODBUSTCP/IP协议和I OSI各层之间的对应关系由下图表示::(::参考OSI模型的应用层模型)1199世纪070年代S MODBUS协议初次发布,至今已经在工业自动化领域广泛应用。
S MODBUS协议获取简便(),且便于实现。
S MODBUS协议本身没有变化,但对报文的发送方式和速率作了改变,以满足工业应用的实时性需求。
P MODBUS/TCP由此产生。
MODBUS TCPP/IP就是简单地将S MDOBUS帧嵌入到P TCP帧中。
P TCP/IP的请求//应答机制能和S MODBUS本身的主//从机制很好的配合工作。
本文档所提供的信息仅供参考之用,不能作为科学依据,请勿模仿。
文档如有不当之处,请联系本人或网站删除。
报文格式组成(标准MODBUSTCP/IP)报文格式组成::报头功能码数据报头描述::字段客户端服务端事务标识由客户端初始化服务端从接收到的请求中拷贝协议标识由客户端初始化服务端从接收到的请求中拷贝长度由客户端初始化服务端初始化((应答))单元标识由客户端初始化服务端从接收到的请求中拷贝事务标识::用于事务配对。
S MODBUS服务端在应答时拷贝客户端请求的事务标识。
请求和应答通过事务标识相对应。
因此,在同一时间,P TCP连接的事务标识必须是唯一的。
有几种方式应用事务标识。
比如简单计数P“TCP顺序号”,每次请求时加11。
协议标识::用于系统内的多元标识。
S MODBUS协议用‘0’标识。
长度::长度字段以字节计数,包括单元标识和数据字段。
单元标识::该字段用于系统内路由。
其典型应用为请求和服务器应答报文返回值在该字段值必须相同。
在某些情况下,单元标识携带远程设备的S MODBUS从机地址。
但在P TCP/IP层,S MODBUS服务端用其P IP地址寻址,因此S MODBUS单元标识就没有实际意义。
此时该字段值为0xFF。
顺序号的应用::本文档所提供的信息仅供参考之用,不能作为科学依据,请勿模仿。
文档如有不当之处,请联系本人或网站删除。
?对于每个信息,MODBUS MASTER(ISCS FEP)会给MODBUS SLAVE(子系统))初始化//制造顺序号;?MODBUS SLAVE(子系统))的响应信息应使用从MODBUS MASTER(ISCS FEP)发出的相同的顺序号;?P ISCS FEP 应确认从子系统收到的顺序号与之前发送给子系统;的顺序号相同;ISCSFEP增加顺序号数值的原则::?顺序号应用两个字节来储存;?顺序号的范围应是(0--65535)或(0x0000to0xFFFF);?顺序号的初始数值应是00;?对于每个发出的信息,,包括用于正常轮询、故障轮询、重试信息或控制,ISCS PFEP应把顺序号数值增加11;?如果P ISCSFEP 发现子系统的响应信息的顺序号有错误,应不理会该信息,并宣布通讯状态欠佳。
2.3报文详述本文中定义的寄存器地址将根据子系统供应商最终提供的IO点类表作相应的修改。
功能码0x04(读输入寄存器))例如::S ISCS向子系统发送查询帧,获取子系统设备状态::Description描述Size(Byte))长度(字节)n Definition含义r Header报头Transaction Identifier事务标识22TCP SEQUENCENUMBER TCP顺序号r Protocol Identifier协议标识220x0000(p ModbusTcp为为00)h Length长度220x0006r Unit Identifier单元标识110xFF(p ModbusTcp总为0xFF)Modbus Data s Modbus数据e Function Code功能码110x04s Starting Address 起始地址220x XXXX((根据实际情况定义))s Numberof Registers寄存器数量22N N(最大为5125个寄存器)本文档所提供的信息仅供参考之用,不能作为科学依据,请勿模仿。
文档如有不当之处,请联系本人或网站删除。
子系统向向S ISCS返回响应n Description描述Size(Byte)长度(字节)n Definition含义Header报头Transaction Identifier 事务标识22TCP顺序号(从客户端请求中拷贝)r Protocol Identifier协议标识220x0000(从客户端请求中拷贝)h Length长度222*N+33Unit Identifier单元标识110xFF Modbus Data s Modbus 数据Function Code功能码110x04Byte Count字节个数112*N(N N 最大为5125个寄存器)子系统发送到S ISCS的数据如果超过125个寄存器,S ISCS能够轮询多次。
Data(as requested)请求的数据22*N0xXX???XX(根据实际点表定义)注::中本表中N N、X X出现的部分将根据实际点表定义。
功能码0x10(预置多寄存器))例如::S ISCS向子系统发送信息::Description描述Size(Byte)长度(字节)n Definition含义r Header报头Transaction Identifier事务标识22TCP SEQUENCENUMBER TCP顺序号Protocol Identifier协议标识220x0000Length长度222*N+7(最大为5125个寄存器)UnitIdentifier单元标识110xFF Modbus Data s Modbus数据Function Code功能码110x10Write StartingAddress写起始地址220x XXXX (根据实际点表定义)NUMBER OFREGISTERS寄存器个数22N N(最大为5125个寄存器)本文档所提供的信息仅供参考之用,不能作为科学依据,请勿模仿。
文档如有不当之处,请联系本人或网站删除。
Byte Count字节个数112*N(N N最大为5125个寄存器)子系统到发送到S ISCS的数据如果超过5125个寄存器,S ISCS能够轮询多次。
Data数据2*N N0xXX???XX(根据实际点表定义)子系统向向S ISCS 返回响应::Description描述Size(Byte)Definition含义Header r报头Transaction Identifier事务标识22TCP顺序号(从客户端请求中拷贝)ProtocolIdentifier协议标识220x0000(从客户端请求中拷贝)Length长度220x0006Unit Identifier单元标识110xFF(从客户端请求中拷贝)Modbus Data s Modbus数据Function Code功能码110x10Write StartingAddress写起始地址220x XXXX(和客户端请求地址一致)NUMBER OFREGISTERS寄存器个数22N N(和客户端请求寄存器数一致)注::中本表中N N、X X出现的部分将根据实际点表定义。
异常处理的目的是::当通讯故障时,向客户端提供与故障相关的信息。
?响应功能码=请求功能码+0x80;?错误功能码用于提示错误原因。
当前使用的异常码是:01,02,303和和04。
异常码名称含义01ILLEGAL FUNCTIAON服务端不支持请求报文所要求的功能。
原因可能是::此功能仅仅适用于新型设备,当前使用的设备不具备此功能。
此功能码也表明::服务端((从站))处于故障状态,无法处理客户端请求。
比如,服务端尚未被初始化,就被要求返回数据。
02ILLEGAL ADDRESS服务端不支持请求报文中数据地址。
本文档所提供的信息仅供参考之用,不能作为科学依据,请勿模仿。
文档如有不当之处,请联系本人或网站删除。
在某些特定条件下,数据个数和数据长上度有可能不对应,从而产生此错误。
如果一个控制器总共有0100个寄存器。
客户端请求数据包中,如果寄存器的起始地址是96,数据长度为44,这是允许的。
但是,如果寄存器的起始地址是96,是数据长度是55,异常发生。
因为,96+5=101,已经超过了控制器最大寄存器的数量。
03ILLEGAL DATAVALUE服务端发现::客户端发送的数据中,包含有无效数据。
此异常表明::服务端接收到的数据包含错误。
此异常并不一定意味着::,服务端接收的数据包中的,某个数据越限。
因为,Modbus协议对特定寄存器的含义不作处理。
04SLAVE DEVICEFAILURE当服务端执行相应的功能时::发生了无法恢复的错误。
((读输入寄存器))异常响应例如::S ISCS向子系统发送查询帧,获取子系统设备状态::Description描述Size(Byte))长度(字节)n Definition含义r Header报头Transaction Identifier事务标识22TCP SEQUENCENUMBER TCP顺序号r ProtocolIdentifier协议标识220x0000(p ModbusTcp为为00)h Length长度220x0006r Unit Identifier单元标识110xFF(p ModbusTcp总为0xFF)ModbusDatasModbus数据e Function Code功能码110x04s StartingAddress起始地址220x XXXX((假设起始地址++寄存器数量超出了服务端的最大地址))s Numberof Registers寄存器数量22N N (最大为5125个寄存器)子系统向向S ISCS返回异常响应n Description描述Size(Byte)长度(字节)n Definition含义本文档所提供的信息仅供参考之用,不能作为科学依据,请勿模仿。