MODBUS通信协议.docx
《MODBUS通信协议.docx》由会员分享,可在线阅读,更多相关《MODBUS通信协议.docx(16页珍藏版)》请在冰豆网上搜索。
![MODBUS通信协议.docx](https://file1.bdocx.com/fileroot1/2022-11/29/e5fb231b-f5a1-4874-ab34-f1528b2e90eb/e5fb231b-f5a1-4874-ab34-f1528b2e90eb1.gif)
MODBUS通信协议
MODBUS通信协议
No.:
000000000000000293
☟☪R、☟☪C系列产品采用RS485、RS232、C✌☠、☜♦♒♏❒☠♏♦(❆CP✋P)等通信方式与当地监控系统或上一级调度自动化系统连接。
MODB✞S是应用层协议,可基于上述通信媒介进行系统互连。
MODB✞S采用直接内存访问的模式,其基本协议定义了内存访问的具体细节,各应用程序或系统互连时只须提供内存地址表即可。
一、☟☪R、☟☪C系列产品支持的MODB✞S命令
1、连续读⏹个字(功能码03☟)
下行:
设备地址(B✡❆☜):
01☟~☞☞☟
功能码(B✡❆☜):
03☟
起始地址(WORD):
0000☟~☞☞☞☞☟
读的字数(WORD):
0001☟~007D☟
校验码(WORD):
以上所有字节的CRC16校验和
上行:
设备地址(B✡❆☜):
01☟~☞☞☟
功能码(B✡❆☜):
03☟
数据长度(B✡❆☜):
01☟~☞✌☟
数据内容(B✡❆☜):
读到的具体数据
数据内容(B✡❆☜):
读到的具体数据
。
。
。
数据内容(B✡❆☜):
读到的具体数据
校验码(WORD):
以上所有字节的CRC16校验和
2、写1个字(功能码06☟)
下行:
设备地址(B✡❆☜):
01☟~☞☞☟
功能码(B✡❆☜):
06☟
起始地址(WORD):
0000☟~☞☞☞☞☟
写入数据(WORD):
0001☟~☞☞☞☞☟
校验码(WORD):
以上所有字节的CRC16校验和
上行:
设备地址(B✡❆☜):
01☟~☞☞☟
功能码(B✡❆☜):
06☟
起始地址(WORD):
0000☟~☞☞☞☞☟
写入数据(WORD):
0001☟~☞☞☞☞☟
校验码(WORD):
以上所有字节的CRC16校验和
3、连续写⏹个字(功能码10☟)
下行:
设备地址(B✡❆☜):
01☟~☞☞☟
功能码(B✡❆☜):
10☟
起始地址(WORD):
0000☟~☞☞☞☞☟
写的字数(WORD):
0001☟~007D☟
数据长度(B✡❆☜):
01☟~☞✌☟
数据内容(B✡❆☜):
写入的具体数据
数据内容(B✡❆☜):
写入的具体数据
。
。
。
数据内容(B✡❆☜):
写入的具体数据
校验码(WORD):
以上所有字节的CRC16校验和
上行:
设备地址(B✡❆☜):
01☟~☞☞☟
功能码(B✡❆☜):
10☟
起始地址(WORD):
0000☟~☞☞☞☞☟
写的字数(WORD):
0001☟~007D☟
校验码(WORD):
以上所有字节的CRC16校验和
CRC计算例程:
◆⏹♦♓♑⏹♏♎♦♒☐❒♦C♋●♍◆●♋♦♏CRC☎◆⏹♦♓♑⏹♏♎♦♒☐❒♦✉☐D♋♦♋,◆⏹♦♓♑⏹♏♎♦♒☐❒♦♦☹♏⏹♑♦♒✆
{
◆⏹♦♓♑⏹♏♎♦♒☐❒♦♦CRC;
♦CRC=0⌧♐♐♐♐;
♦♒♓●♏☎♦☹♏⏹♑♦♒--✆♦CRC=☎♦CRC>>8✆♈♍♉♦❆♋♌●♏CRC☯☎♦CRC♈✉☐D♋♦♋++✆&0⌧00♐♐];
❒♏♦◆❒⏹♦CRC;
❝
◆⏹♦♓♑⏹♏♎♦♒☐❒♦♍♉♦❆♋♌●♏CRC☯256]=
{
0⌧0000,0⌧♍0♍1,0⌧♍181,0⌧0140,0⌧♍301,0⌧03♍0,0⌧0280,0⌧♍241,
0⌧♍601,0⌧06♍0,0⌧0780,0⌧♍741,0⌧0500,0⌧♍5♍1,0⌧♍481,0⌧0440,
0⌧♍♍01,0⌧0♍♍0,0⌧0♎80,0⌧♍♎41,0⌧0♐00,0⌧♍♐♍1,0⌧♍♏81,0⌧0♏40,
0⌧0♋00,0⌧♍♋♍1,0⌧♍♌81,0⌧0♌40,0⌧♍901,0⌧09♍0,0⌧0880,0⌧♍841,
0⌧♎801,0⌧18♍0,0⌧1980,0⌧♎941,0⌧1♌00,0⌧♎♌♍1,0⌧♎♋81,0⌧1♋40,
0⌧1♏00,0⌧♎♏♍1,0⌧♎♐81,0⌧1♐40,0⌧♎♎01,0⌧1♎♍0,0⌧1♍80,0⌧♎♍41,
0⌧1400,0⌧♎4♍1,0⌧♎581,0⌧1540,0⌧♎701,0⌧17♍0,0⌧1680,0⌧♎641,
0⌧♎201,0⌧12♍0,0⌧1380,0⌧♎341,0⌧1100,0⌧♎1♍1,0⌧♎081,0⌧1040,
0⌧♐001,0⌧30♍0,0⌧3180,0⌧♐141,0⌧3300,0⌧♐3♍1,0⌧♐281,0⌧3240,
0⌧3600,0⌧♐6♍1,0⌧♐781,0⌧3740,0⌧♐501,0⌧35♍0,0⌧3480,0⌧♐441,
0⌧3♍00,0⌧♐♍♍1,0⌧♐♎81,0⌧3♎40,0⌧♐♐01,0⌧3♐♍0,0⌧3♏80,0⌧♐♏41,
0⌧♐♋01,0⌧3♋♍0,0⌧3♌80,0⌧♐♌41,0⌧3900,0⌧♐9♍1,0⌧♐881,0⌧3840,
0⌧2800,0⌧♏8♍1,0⌧♏981,0⌧2940,0⌧♏♌01,0⌧2♌♍0,0⌧2♋80,0⌧♏♋41,
0⌧♏♏01,0⌧2♏♍0,0⌧2♐80,0⌧♏♐41,0⌧2♎00,0⌧♏♎♍1,0⌧♏♍81,0⌧2♍40,
0⌧♏401,0⌧24♍0,0⌧2580,0⌧♏541,0⌧2700,0⌧♏7♍1,0⌧♏681,0⌧2640,
0⌧2200,0⌧♏2♍1,0⌧♏381,0⌧2340,0⌧♏101,0⌧21♍0,0⌧2080,0⌧♏041,
0⌧♋001,0⌧60♍0,0⌧6180,0⌧♋141,0⌧6300,0⌧♋3♍1,0⌧♋281,0⌧6240,
0⌧6600,0⌧♋6♍1,0⌧♋781,0⌧6740,0⌧♋501,0⌧65♍0,0⌧6480,0⌧♋441,
0⌧6♍00,0⌧♋♍♍1,0⌧♋♎81,0⌧6♎40,0⌧♋♐01,0⌧6♐♍0,0⌧6♏80,0⌧♋♏41,
0⌧♋♋01,0⌧6♋♍0,0⌧6♌80,0⌧♋♌41,0⌧6900,0⌧♋9♍1,0⌧♋881,0⌧6840,
0⌧7800,0⌧♌8♍1,0⌧♌981,0⌧7940,0⌧♌♌01,0⌧7♌♍0,0⌧7♋80,0⌧♌♋41,
0⌧♌♏01,0⌧7♏♍0,0⌧7♐80,0⌧♌♐41,0⌧7♎00,0⌧♌♎♍1,0⌧♌♍81,0⌧7♍40,
0⌧♌401,0⌧74♍0,0⌧7580,0⌧♌541,0⌧7700,0⌧♌7♍1,0⌧♌681,0⌧7640,
0⌧7200,0⌧♌2♍1,0⌧♌381,0⌧7340,0⌧♌101,0⌧71♍0,0⌧7080,0⌧♌041,
0⌧5000,0⌧90♍1,0⌧9181,0⌧5140,0⌧9301,0⌧53♍0,0⌧5280,0⌧9241,
0⌧9601,0⌧56♍0,0⌧5780,0⌧9741,0⌧5500,0⌧95♍1,0⌧9481,0⌧5440,
0⌧9♍01,0⌧5♍♍0,0⌧5♎80,0⌧9♎41,0⌧5♐00,0⌧9♐♍1,0⌧9♏81,0⌧5♏40,
0⌧5♋00,0⌧9♋♍1,0⌧9♌81,0⌧5♌40,0⌧9901,0⌧59♍0,0⌧5880,0⌧9841,
0⌧8801,0⌧48♍0,0⌧4980,0⌧8941,0⌧4♌00,0⌧8♌♍1,0⌧8♋81,0⌧4♋40,
0⌧4♏00,0⌧8♏♍1,0⌧8♐81,0⌧4♐40,0⌧8♎01,0⌧4♎♍0,0⌧4♍80,0⌧8♍41,
0⌧4400,0⌧84♍1,0⌧8581,0⌧4540,0⌧8701,0⌧47♍0,0⌧4680,0⌧8641,
0⌧8201,0⌧42♍0,0⌧4380,0⌧8341,0⌧4100,0⌧81♍1,0⌧8081,0⌧4040
❝;
通讯数据的类型及格式说明:
信息传输为异步方式,并以字节为单位。
在主站和从站之间传递的通讯信息是11位的字格式:
字格式(串行数据)
11位二进制
起始位
1位
数据位
8位
奇偶校验位
1位:
有奇偶校验位/无:
无奇偶校验位
停止位
1位:
有奇偶校验位/2位:
无奇偶校验位
●通讯数据(信息帧)格式
数据格式:
地址码
功能码
数据区
错误校检
数据长度:
1字节
1字节
☠字节
16位CRC码(冗余循环码)
★注:
1、1个字节由8位二进制数组成(既8♌♓♦)。
2、M☐♎B◆♦是M☐♎♓♍☐⏹公司的注册商标。
3、❽从机❾在本文件中既为PDM。
一、通讯信息传输过程:
当通讯命令由发送设备(主机)发送至接收设备(从机)时,符合相应地址码的从机接收通讯命令,并根据功能码及相关要求读取信息,如果CRC校验无误,则执行相应的任务,然后把执行结果(数据)返送给主机。
返回的信息中包括地址码、功能码、执行后的数据以及CRC校验码。
如果CRC校验出错就不返回任何信息。
1.1地址码:
地址码是每次通讯信息帧的第一字节(8位),从1到255。
这个字节表明由用户设置地址的从机将接收由主机发送来的信息。
每个从机都必须有唯一的地址码,并且只有符合地址码的从机才能响应回送信息。
当从机回送信息时,回送数据均以各自的地址码开始。
主机
发送的地址码表明将发送到的从机地址,而从机返回的地址码表明回送的从机地址。
相应的地址码表明该信息来自于何处。
1.2功能码:
是每次通讯信息帧传送的第二个字节。
M☐♎B◆♦通讯规约可定义的功能码为1到127。
PDM系列仪表/变送器仅用到其中的一部分功能码。
作为主机请求发送,通过功能码告诉从机应执行什么动作。
作为从机响应,从机返回的功能码与从主机发送来的功能码一样,并表明从机已响应主机并且已进行相关的操作。
表8.1MODB✞S部分功能码
功能码
定义
操作(二进制)
02
读开关量输入
读取一路或多路开关量状态输入数据
01
读开关量输出
读取一路或多路开关量输出状态数据
03
读寄存器数据
读取一个或多个寄存器的数据
05
写开关量输出
控制一路继电器❽合/分❾输出
06
写单路寄存器
把一组二进制数据写入单个寄存器
10
写多路寄存器
把多组二进制数据写入多个寄存器
1.3数据区:
数据区包括需要由从机返送何种信息或执行什么动作。
这些信息可以是数据(如:
开关量输入/输出、模拟量输入/输出、寄存器等等)、参考地址等。
例如,主机通过功能码03告诉从机返回寄存器的值(包含要读取寄存器的起始地址及读取寄存器的长度),则返回的数据包括寄存器的数据长度及数据内容。
对于不同的从机,地址和数据信息都不相同(应给出通讯信息表)。
二、MODB✞S功能码简介
2.1功能码❽02❾:
读1路或多路开关量状态输入
例如:
主机要读取地址为01,开关量D✋1D✋4的输入状态。
从机(PDM)数据寄存器的地址和数据为:
起始位地址
D✋寄存器数据(16进制)
备注
0000
0B
D✋1/D✋2/D✋4状态为❽1❾,D✋3状态为❽0❾
主机发送的报文格式:
主机发送
字节数
发送的信息
备注
从机地址
1
01
发送至地址为01的从机
功能码
1
02
读开关量输入状态
起始B✋❆位
2
0000
起始B✋❆位地址为0000
读数据长度
2
0004
读取4路开关量输入状态位
CRC码
2
79C9
由主机计算得到CRC码
从机(PDM)响应返回的报文格式:
从机响应
字节数
返回的信息
备注
从机地址
1
01
来自从机01
功能码
1
02
读开关量输入状态
数据长度
1
01
1个字节(8个B✋❆位)
D✋状态数据
1
0B
D✋寄存器内容
CRC码
2
☜04☞
由从机计算得到CRC码
2.2功能码❽01❾:
读1路或多路开关量输出状态
例如:
主机要读取地址为01,开关量DO1,DO2的输出状态。
从机(PDM)数据寄存器的地址和数据为:
起始位地址
DO寄存器数据☎16进制✆
备注
0000
02
DO2输出状态为❽1❾,DO1输出状态为❽0❾
主机发送的报文格式:
主机发送
字节数
发送的信息
备注
从机地址
1
01
发送至地址为01的从机
功能码
1
01
读开关量输出状态
起始B✋❆位
2
0000
起始B✋❆位地址为0000
读数据长度
2
0002
读取2路继电器输出状态位
CRC码
2
BDCB
由主机计算得到CRC码
从机(PDM)响应返回的报文格式:
从机响应
字节数
返回的信息
备注
从机地址
1
01
来自从机01
功能码
1
01
读开关量输出状态
数据长度
1
01
1个字节(8个B✋❆位)
DO状态数据
1
02
DO寄存器内容
CRC码
2
D049
由从机计算得到CRC码
2.3功能码❽03❾:
读多路寄存器输入
例如:
主机要读取地址为01,起始地址为0116的3个从机寄存器数据。
从机(PDM)数据寄存器的地址和数据为:
寄存器地址
寄存器数据(16进制)
对应PDM电量
0116
1784
✞✌
0117
1780
✞B
0118
178✌
✞C
主机发送的报文格式:
主机发送
字节数
发送的信息
备注
从机地址
1
01
发送至地址为01的从机
功能码
1
03
读取寄存器
起始地址
2
0116
起始地址为0116
数据长度
3
0003
读取3个寄存器(共6个字节)
CRC码
2
☜5☞3
由主机计算得到CRC码
从机(PDM)响应返回的报文格式:
从机响应
字节数
返回的信息
备注
从机地址
1
01
来自从机01
功能码
1
03
读取寄存器
读取字
1
06
3个寄存器共6个字节
寄存器数据1
2
1784
地址为0116内存的内容
寄存器数据2
2
1780
地址为0117内存的内容
寄存器数据3
2
178✌
地址为0118内存的内容
CRC码
2
5847
由从机计算得到CRC码
2.4功能码❽05❾:
写1路开关量输出(❽遥控❾)
例1:
开关量输出点DO1,其当前状态为❽分❾,主机要控制该路继电器❽合❾。
控制命令为:
❽☞☞00❾为控制继电器❽合❾;
❽0000❾为控制继电器❽分❾;
主机发送的报文格式:
主机发送
字节数
发送的信息
备注
从机地址
1
01
发送至地址为01的从机
功能码
1
05
写开关量输出状态
输出B✋❆位
2
0000
对应输出继电器B✋❆位(DO1)
控制命令
2
☞☞00
控制该路继电器输出为❽合❾状态位
CRC码
2
8C3✌
由主机计算得到CRC码
从机(PDM)响应返回的报文格式:
与主机发送的报文格式及数据内容完全相同。
例2:
开关量输出点DO2,其当前状态为❽合❾,主机要控制该路继电器❽分❾。
主机发送的报文格式:
主机发送
字节数
发送的信息
备注
从机地址
1
01
发送至地址为01的从机
功能码
1
05
写开关量输出状态
输出B✋❆位
2
0001
对应输出继电器B✋❆位(DO2)
控制命令
2
0000
控制该路继电器输出为❽合❾状态位
CRC码
2
9C0✌
由主机计算得到CRC码
从机(PDM)响应返回的报文格式:
与主机发送的报文格式及数据内容完全相同。
2.5功能码❽06❾:
写单路寄存器
例如:
主机要把数据07D0,保存到地址为002C的从机寄存器中去(从机地址码为01)。
通讯数据保存结束后,地址为002C的PDM表原存储信息为:
地址
原来存储数据(16进制)
002C
04B0
主机发送的报文格式:
主机发送
字节数
发送的信息
举例
从机地址
1
01
发送至地址为01的从机
功能码
1
06
写单路寄存器
起始地址
2
002C
要写入的寄存器地址
写入数据
2
07D0
对应的新数据
CRC码
2
4B✌☞
由主机计算得到的CRC码
从机(PDM)响应返回的报文格式:
与主机发送的报文格式及数据内容完全相同。
2.6功能码❽10❾:
写多路寄存器
主机利用这个功能码把多个数据保存到PDM表的数据存储器中去。
M☐♎♌◆♦通讯规约中的寄存器指的是16位(即2字节),并且高位在前。
这样PDM的存储器都是二个字节。
由于M☐♎♌◆♦通讯规约允许每次最多保存60个寄存器,因此PDM一次也最多允许保存60个数据寄存器。
例如:
主机要把0064,0010保存到地址为002C,002D的从机寄存器中去(从机地址码为01)。
通讯数据保存结束后,地址为002C/002D的PDM表内存储信息为:
地址
原来存储数据(16进制)
002C
04B0
002D
1388
主机发送的报文格式:
主机发送
字节数
发送信息
举例
从机地址
1
01
发送至从机01
功能码
1
10
写多路寄存器
起始地址
2
002C
要写入的寄存器的起始地址
保存数据字长度
2
0002
保存数据的字长度(共2字)
保存数据字节长
1
04
保存数据的字节长度(共4字节)
保存数据1
2
04B0
数据地址002C
保存数据2
2
1388
数据地址002D
CRC码
2
☞C63
由主机计算得到的CRC码
从机(PDM)响应返回的报文格式:
从机响应
字节数
字节数
举例
从机地址
1
01
来自从机01
功能码
1
10
写多路寄存器
起始地址
2
002C
起始地址为002C
保存数据字长度
2
0002
保存2个字长度的数据
CRC码
2
8001
由从机计算得到的CRC码
三、错误校验码(CRC校验):
主机或从机可用校验码进行判别接收信息是否正确。
由于电子噪声或一些其它干扰,信息在传输过程中有时会发生错误,错误校验码(CRC)可以检验主机或从机在通讯数据传送过程中的信息是否有误,错误的数据可以放弃(无论是发送还是接收),这样增加了系统的安全和效率。
MODB✞S通讯协议的CRC(冗余循环码)包含2个字节,即16位二进制数。
CRC码由发送设备(主机)计算,放置于发送信息帧的尾部。
接收信息的设备(从机)再重新计算接收到信息的CRC,比较计算得到的CRC是否与接收到的相符,如果两者不相符,则表明出错。
在进行CRC计算时只用8个数据位,起始位及停止位,如有奇偶校验位也包括奇偶校验位,都不参与CRC计算。
●CRC码的计算方法是:
1.预置1个16位的寄存器为十六进制☞☞☞☞(即全为1);称此寄存器为CRC寄存器;
2.把第一个8位二进制数据(既通讯信息帧的第一个字节)与16位的CRC寄存器的低
8位相异或,把结果放于CRC寄存器;
3.把CRC寄存器的内容右移一位(朝低位)用0填补最高位,并检查右移后的移出位;
4.如果移出位为0:
重复第3步(再次右移一位);
如果移出位为1:
CRC寄存器与多项式✌001(1010000000000001)进行异或;
5.重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理;
6.重复步骤2到步骤5,进行通讯信息帧下一个字节的处理;
7.将该通讯信息帧所有字节按上述步骤计算完成后,得到的16位CRC寄存器的高、低
字节进行交换;
8.最后得到的CRC寄存器内容即为:
CRC码。
四、通讯错误信息及数据的处理:
当PDM表检测到除了CRC码出错以外的错误时,必须向主机回送信息,功能码的最高位置为1,即从机返送给主机的功能码是在主机发送的功能码的基础上加128。
以下的这些代码表明有意外的错误发生。
PDM从主机接收到的信息如有CRC错误,则将被PDM表忽略。
PDM返送的错误码的格式如下(CRC码除外):
地址码:
1字节
功能码:
1字节(最高位为1)
错误码:
1字节
CRC码:
2字节。
PDM响应回送如下错误码:
81.非法的功能码。
接收到的功能码PDM表不支持。
82.非法的数据位置。
指定的数据位置超出PDM表的范围。
83.非法的数据值。
接收到主机发送的数据值超出PDM相应地址的数据范围。
用户注册服务协议
【提示条款】
为了更好地为您提供服务,请您仔细阅读《用户注册协议》(以下简称“本协议”)。
在您开始使用“XX”软件及相关服务之前,请您务必认真阅读并充分理解本协议,特别是涉及免除或者限制责任的条款、权利许可和信息使用的条款、同意开通和使用特殊单项服务的条款、法律适用和争议解决条款等。
其中,免除或者限制责任条款等重要内容将以加粗形式提示您注意,您应重点阅读。
如您未满18周岁,请您在法定监护人陪同下仔细阅读并充分理解本协议,并征得法定监护人的同意后使用平台提供的服务。
当您按照注册页面提示填写信息、阅读并同意本协议且完成全部注册程序后,即表示您已充分阅读、理解并接受本协议的全部内容,承诺作为本协议的一方当事人接受协议的约束。
阅读本协议的过程中,如果您不同意本协议或其中任何条款约定,您应立即停止注册程序。
您应自行准备如下设备和承担如下开支:
(1)上网设备,包括并不限于电脑或者其他上网终端、调制解调器及其他必备的上网装置;
(2)上网开支,包括并不限于网络接入费、上网设备租用费、手机流量费等。
一、定义
1.本协议是您与平台的运营商XXXX有限公司及其关联公司(在本协议中简称为“公司”)之间就您下载、安装、注册、登录、使用“XX”软件,并获得“XX”软件提供的相关服务所订立的协议。
2.“用户”指所有直接或间接获取和使用“XX”软件及相关服务的使用者,包括自然人、法人或其他组织等。
在本协议中称为“用户”或称“您”。
3.“XX”软件指由公司合法拥有并运营的、标注名称为“XX”的网站和客户端应用程序,向用户提供商户信息、点评信息、消费信息、优惠信息、电子刊物等网络服务。
在本协议中称为“平台”或“软件”。