《RS485-MODEBUS通讯协议资料.docx》由会员分享,可在线阅读,更多相关《RS485-MODEBUS通讯协议资料.docx(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1.字元结构精品word 可编辑资料 - - - - - - - - - - - - -RS485-MODEBU通S讯协议1.1 10 bit 字元框( FORASCII模式)资料格式 7. N .2START0123456BIT7-data bits 10-bits character fram1 位起始位、 7 位数据位 (低位在前,高位在后)、2 位停止位 (无校验时 )资料格式7. E .1STOP BITSTOP BITSTART BIT01234567-data bits 10-bits character framEven ParitySTOP BIT1 位起始位、 7 位数据位
2、 (低位在前,高位在后)、1 位偶校验位、1 位停止位 (有校验时 )资料格式7. O. 1START BIT01234567- data bits 10-bits character framOdd ParitySTOP BIT1 位起始位、 7 位数据位 (低位在前,高位在后)、1 位奇校验位、1 位停止位 (有校验时 )1.2 11 bit 字元框( FORRTU 模式)资料格式8. N .2START BIT012345678- data bits 11-bits character framSTOP BITSTOP BIT1 位起始位、 8 位数据位 (低位在前,高位在后)、2 位停
3、止位 (无校验时 )资料格式8. E .1START01234567BIT8-data bits 11-bits character framEven ParitySTOP BIT1 位起始位、 8 位数据位 (低位在前,高位在后)、1 位偶校验位、1 位停止位 (有校验时 )资料格式8. O. 1START BIT012345678-data bits 11-bits character framOdd ParitySTOP BIT1 位起始位、 8 位数据位 (低位在前,高位在后)、1 位奇校验位、1 位停止位 (有校验时 )波特率: 1200, 2400,4800, 9600, 1920
4、0, 384002.通信资料格式第 1 页,共 8 页 - - - - - - - - - -精品word 可编辑资料 - - - - - - - - - - - - -2.1 ASCII格式起始字符STX起始字元: (:的 ASCII 码为 3AH )从机地址高字节AdressHigh从机地址低字节AdressLow功能码高字节Function High功能码低字节Function Low数据链最高字节DATA(n-1)数据链中间字节数据链最低字节DATA 0LRC 高字节LRC Check HighLRC 低字节LRC Check Low通讯地址: 8- bits ,由 2 个 ASCII
5、 码组成; 0为广播地址功能码: 8- bits ,由 2 个 ASCII 码组成资料内容: N8- bits 资料内容,由2N 个 ASCII 码组成( N 18)LRC 检查码:由2 个 ASCII 码组成终止字符高字节ENDHigh终止字元, ENDHigh = CR ( 0DH ),ENDLow = LF ( 0AH )终止字符低字节ENDLow2.2 RTU 格式注: CR 和 LF 分别表示回车和换行的ASCII 码 0x0D 、0x0A起始标志START保持无输入讯号20ms从机地址Adress通信位址: 8-bits二进制位址;00H 为广播地址功能码Function功能码:
6、8-bits二进制位址数据链最高字节DATA(n-1)数据链中间字节数据链最低字节DATA0CRC 低字节CRC Check LowCRC 高字节CRC Check High资料内容: N8-bits 资料内容( N 17)CRC检查码:由2 个 8-bits 二进制码组成终止标志END保持无输入讯号20ms2.3 功能码:03H :读出暂存器内容06H :写入一个WORD 至暂存器08H :回路侦测2.3.1 功能码 03H :读出暂存器内容例如: 主机 (如 PC)对地址 01H 处的从机 (如外表 )进行数据读取操作:将从机起始暂存器地址为2000H 处的两个连续地址空间中的数据读取出来
7、,表示方法如下RTU 模式:主机询问从机格式:从机回应主机格式:从机地址Address01H从机地址Address01H功能码Function03H功能码Function03H从机起始Data Addr Hight20H返回字节总数(一个Number of data04H暂存器地址Data Addr Low00H字 Word 为两个字节 )(count by byte)读地址总个数(一个Number of data00H返回暂存器第一个地Content of data01H字 Word 为两个字节 )(count by word)02H址中的两个字节数据( Address 0000)F4HCR
8、C 低字节CRC Check LowCFH返回暂存器其次个地Content of data00HCRC 高字节CRC Check HightCBH址中的两个字节数据( Address 0001)64HASCII 模式:CRC 低字节CRC CHK LowBBHCRC 高字节CRC CHK HightD6H第 2 页,共 8 页 - - - - - - - - - -精品word 可编辑资料 - - - - - - - - - - - - -主机询问从机格式:从机回应主机格式:起始字符STX:( 3AH )起始字符STX:( 3AH )从机地址Address 0从机地址Address 0 1 1
9、功能码Function 0功能码Function 0 3 3 2返回字节总数(一个 0从机起始暂存器地址Sub-Func-HiSub-Func-Lo 0 0Data(任意)字 Word 为两个字节 ) 4 0读地址总个数 0 0返回暂存器第一个地址中的两个字节数据Content of data( Address 0000) 1F(一个字 WordData(任意) 0 4为两个字节 ) 0 2返回暂存器其次个Content of data 0 0LRC 高字节LRC CHK Hi D 地址中的两个字节数据( Address 0001) 6LRC 低字节LRC CHK Lo A 4终止字符高字节E
10、NDHighCR ( 0DH )LRC 高字节LRC CHK Hi 9终止字符低字节ENDLowLF ( 0AH )LRC 低字节LRC CHK LoF终止字符高字节ENDHighCR ( 0DH )终止字符低字节ENDLowLF ( 0AH )2.3.2 功能码 06H :写入一个WORD至暂存器例如:主机 (如 PC)对地址01H 处的从机 (如外表 )进行数据写入操作:主机将数据03E8H 写入到从机暂存器2005H 地址中,表示方法如下RTU 模式:主机询问从机格式:从机回应主机格式:从机地址Address01H从机地址Address01H功能码Function06H功能码Functi
11、on06H从机暂存器地址Data Addr Hight20H返回被写入的Data Addr Hight20HData Addr Low05H从机暂存器地址Data Addr Low05H写入的数据 (一个字Data Content Hight03H返回被写入的数据内容Data Content Hight03HWord 为两个字节 )Data Content LowE8H( 一个字 Word 为两个字节 )Data Content LowE8HCRC 低字节CRC Check Low92HCRC 低字节CRC Check Low92HCRC 高字节CRC Check HightB5HCRC 高字
12、节CRC Check HightB5HASCII 模式:主机询问从机格式:从机回应主机格式:起始字符STX:(3AH )起始字符STX:( 3AH )从机地址Address 0从机地址Address 0 1 1功能码Function 0功能码Function 0 6 6从机暂存器地址Sub-Func-Hi 2返回被写入的Sub-Func-Hi 2第 3 页,共 8 页 - - - - - - - - - -精品word 可编辑资料 - - - - - - - - - - - - - 0从机暂存器地址 0Sub-Func-Lo 0 5 0返回被写入的数Sub-Func-Lo 0 5 0写入的数据
13、 (一个字 3 3Data(任意)据内容 (一个字Data(任意)Word 为两个字节 ) E EWord 为两个字节 ) 8 8LRC 高字节LRC CHK Hi ELRC 高字节LRC CHK Hi ELRC 低字节LRC CHK Lo 9LRC 低字节LRC CHK Lo 9终止字符高字节ENDHighCR ( 0DH )终止字符高字节ENDHighCR ( 0DH )终止字符低字节ENDLowLF (0AH )终止字符低字节ENDLowLF ( 0AH )2.3.3 功能码 08H :回路侦测RTU模式:主机询问从机格式:从机回应主机格式:从机地址Address01H从机地址Addre
14、ss01H功能码Function08H功能码Function08H从机暂存器地址Sub-Func-Hi00H ( 任意 )返回被写入的Sub-Func-Hi00HSub-Func-Lo00H ( 任意 )从机暂存器地址Sub-Func-Lo00H写入的数据 (一个字Data Content Hight12H ( 任意 )返回被写入的数据内容Data Content Hight12HWord 为两个字节 )Data Content Low34H ( 任意 )(一个字 Word 为两个字节 )Data Content Low34HCRC 低字节CRC Check LowEDHCRC 低字节CRC
15、Check LowEDH CRC 高字节CRC Check Hight7CHCRC 高字节CRC Check Hight7CHASCII 模式:主机询问从机格式:从机回应主机格式:起始字符STX:( 3AH )起始字符STX:( 3AH )从机地址Address0从机地址Address 01 1功能码Function0功能码Function 08 8从机暂存器地址Sub-Func-Hi写入的数据 (一个字Word 为两个字节 )Data(任意)0123返回被写入的数据内容 (一个字Word 为两个字Data(任意) 0 1 2 34节) 4LRC 高字节LRC CHK Hi B LRC 高字节
16、LRC CHK Hi B LRC 低字节LRC CHK Lo1LRC 低字节LRC CHK Lo 1终止字符高字节ENDHighCR ( 0DH )终止字符高字节ENDHighCR ( 0DH )终止字符低字节ENDLowLF ( 0AH )终止字符低字节ENDLowLF ( 0AH )Sub-Func-Lo000返回被写入的从机暂存器地址Sub-Func-HiSub-Func-Lo 0 0 0第 4 页,共 8 页 - - - - - - - - - -精品word 可编辑资料 - - - - - - - - - - - - -2.4 .错误通讯时的额外回应:当掌握器 ( 从机如外表 ) 做
17、通信连接时,假如产生错误,此时掌握器( 从机如外表 ) 会回应错误码且将Functioncode AND 80H 回应给主控系统义请参考“错误码的意义”表格(主机如PC),让主控系统(主机如 PC)知道有错误产生;错误通信时错误码具体涵RTU 模式:从机回应主机格式:ASCII 模式:从机回应主机格式:从机地址Address01H功能码Function86H错误码Except code02HCRC 低字节CRC Check LowC3HCRC 高字节CRC Check HightA1H起始字符STX: 0从机地址Address 1 8功能码Function 6 0LRC高字节LRC CHK H
18、i 2 7LRC低字节LRC CHK Lo 7终止字符高字节ENDHighCR终止字符低字节ENDLowLF错误码Except code注:其中将原功能码AND 80H后返回,并在Except code 中返回错误码(见下表格)错误码的意义:错误码说明1 功能码错误:掌握器可以辨识的功能码为03H 、06H 、08H2 寄存器地址错误:从机地址处的掌握器无法辨识此寄存器地址3 资料内容值错误:资料内容值太大或者太小,不是掌握器所能辨识的内容值4 掌握器无法处理:掌握器对此命令,无法执行9 CRC 或者 LRC 校验错误10 奇偶校验错误12 接收数据低于规定长度13 接收数据超过规定长度2.5
19、 ASCII模式检查码(LRC Check )将从 Address 开头到Data Content 终止之间的数进行相加,再对相加的和值取其补码就得出检查码;例如:用“错误通讯时的额外回应”来运算LRC 检查码,具体运算方法如下01H+08H+00H+00H+12H+34H=4FH,再对 4FH 取补码后的值=B1H4FH 的原码值为01001111B, 4FH 的反码值为10110000B, 4FH 的补码值为10110001B原码与补码的运算规章是:补码=原码取反 +12.6 RTU 模式的检查码(CRC Check )检查码运算数据由Address 开头到 Data content 终止
20、;其运算规章如下:步骤 1:令 16-bit 暂存器( CRC 暂存器) =FFFFH步骤 2:将第一个8-bite byte 的讯息指令与16-bite CRC 暂存器中的数据按位做Exclusive OR( 异或 ),将异或后的结果存入到16-biteCRC 暂存器内;一个8-bitebyte 讯息指令为8 位,在参加运算时高八位补充为00H ,讯息指令数据从Address Data content步骤 3:将 CRC 暂存器中的数据向右移出一位,空出 CRC 暂存器的最高位,将 0 补入到 CRC 暂存器的最高位第 5 页,共 8 页 - - - - - - - - - -精品word
21、可编辑资料 - - - - - - - - - - - - -步骤 4:检查 CRC 暂存器向右移出的一位值:假如是 0,将步骤 3 操作后的新值存入到 CRC 暂存器内; 假如是 1 就将步骤 3 操作后得到的新值与 A001H 进行按位做 Exclusive OR( 异或 )操作, 将异或后的结果存入到 CRC 暂存器内步骤 5:重复上述步骤3步骤 4,将 8-bit 全部运算完毕步骤 6:重复步骤2步骤 5,取下一个8-bit 的讯息指令,直到全部讯息指令全部运算完毕;最终得到的CRC 暂存器的值, 即是 CRC 的检查码; 值得留意的是CRC 的检查码必需分低八位和高八位分别 放置于讯
22、息指令的CRC 检查码暂存器中,低八位=CRC 检查码 %256,高八位 =CRC 检查码 /256注:Exclusive OR( 异或 )运算是实现 “不同为1,同就为 0”这种规律关系的一种运算,其规律运算符为 “ ”,其运算规章如下:00 = 0, 0 1 = 1, 1 0 = 1, 1 1 = 0 ,在 C语言中有“按位异或”运算“ ”以下程序为用C 语言所写的CRC 检查码运算范例:unsigned char *data; /定义一个指针用于存放讯息指令数据链的首地址unsigned char length; /定义一个长度变量用于存放讯息指令的长度即字节长度unsigned int
23、 crc_chk(unsigned char *data,unsigned char length) / 此函数中的两个变量功能在上面已说明int j; / 定义一个变量j 用于储备每个讯息指令向右移动到了第几位unsigned int reg_crc=0xffff;/ 给 CRC 暂存器赋初值0xffffwhile(length-) / 每次将讯息指令的长度数值减一,即操作完一个讯息指令就将总的讯息指令数减一reg_crc = *data+; / 将指针变量data 中的讯息指令数据与CRC 暂存器中的数据进行按位异或操 作,将操作后的结果存放到reg_crc 暂存器中, 操作过后指针变量d
24、ata 指向下一个讯息指令的地址 for(j = 0; j 1) 0xa001;else/假如 CRC 暂存器中的数据最低位为0 就将 CRC 暂存器中的数据向右移动一位后的结果存放到CRC 暂存器中reg_crc = reg_crc 1;return reg_crc; / 返回操作后CRC 暂存器中的数据例如:用“错误通讯时的额外回应”来运算CRC 检查码,具体步骤如下Address = 01H , Function = 86H , Except code = 02H ,令 CRC Check = FFFFH第 6 页,共 8 页 - - - - - - - - - -精品word 可编辑资
25、料 - - - - - - - - - - - - -序位讯息指令CRC 暂存器号号CRC 右移一位的数据CRC 右移一位后的数据是否异或操作是否与 A001H进行异或操作异或后的数据说明一:下面第一步执行Address 中的数据与CRC 暂存器中的数据进行异或操作121324354657687981111 11111111 11111111 11111111 11100111 11111111 1111Address1001 1111=1111 111001H0100 1111=1111 111100001000 01110001B1111 11100100 00111111 1111100
26、0 00011111 11100100 00001111 111100111 11111111 11111111 11111111 111010011 11111111 111100100 11111111 111110010 01111111 111100100 00111111 111110010 00011111 111100100 00001111 111110010 00000111 11111010 00000000 00011111 11101010 00001000 01110000 00011111 11101010 00001001 11111000 00010000 00
27、011111 11101010 00001000 00000000 00010111 1110说明二:下面第一步执行Function 中的数据与CRC 暂存器中的数据进行异或操作101111221331441551661771881000 00000111 11101000 00001111 10000100 0000Function0111 1100=0010 000086H0011 1110=0001 000010000001 11110110B1010 10000000 11100101 01000000 01111000 10100000 00100100 01010000 00010
28、0100 00000111 110000010 00001000 00001111 10000011 111000001 00000001 111110000 10000000 111100101 01000000 011110010 10100000 001100100 01010000 000110010 00101000 00001010 00000000 00011010 00001010 10000000 11101000 10100000 00010000 00101010 00001000 00100000 00011000 0001说明三:下面第一步执行Except code
29、中的数据与CRC 暂存器中的数据进行异或操作19Except1000 00101000 0010第 7 页,共 8 页 - - - - - - - - - -精品word 可编辑资料 - - - - - - - - - - - - -code1000 00011000 0011201212223234245256267278= 02H= 00000010B1000 001011000 001101110 00010100 00000111 000001010 000000011 10000101 000000001 11000010 100000000 11100001 01000000 01
30、1100000 101010000 00111000 01010100 00010100 00010111 00001010 00000011 10000101 00000001 11000010 10000000 11100001 01000000 01110000 10100000 00111000 01010000 00011100 00101010 00000000 00011010 00000000 00011110 00010100 00001010 00011100 0011结果附:通讯参数修改按 Set 键进入以下参数CRC 暂存器中的数据=1010 0001 1100 001
31、1=A1C3HCRC Check Low = C3HCRC Check Hight =A1H意义参数名说明通讯地址Ad1 128( 注: 0为广播地址)0: 12001: 24002: 4800通讯波特率Bn通讯格式Fo3: 96004: 192005: 384000: MODBUS-ASCII( 7, N, 2)1: MODBUS- ASCII ( 7, E,1)2: MODBUS- ASCII ( 7, O,1)3: MODBUS-RTU ( 8,N , 2)4: MODBUS-RTU ( 8, E, 1)5: MODBUS-RTU ( 8,O, 1)第 8 页,共 8 页 - - - - - - - - - -