RS485-MODEBUS通讯协议资料_第1页
RS485-MODEBUS通讯协议资料_第2页
RS485-MODEBUS通讯协议资料_第3页
RS485-MODEBUS通讯协议资料_第4页
RS485-MODEBUS通讯协议资料_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、RS485-MODEBUS 讯协议1 .字元结构1.1 10 bit 字元框(FOR ASCII 模式)资料格式7. N .2STARTBIT0123456STOPBITSTOPBIT7L 7-data bits 4 h 10-bits character fram 1位起始位、7位数据位(低位在前,高位在后 卜2位停止位(无校验时)资料格式7. E .1STARTBIT0123456EvenParitySTOPBIT47 7-data bits 10-bits character fram1位起始位、7位数据位(低位在前,高位在后 卜1位偶校验位、1位停止位(有校验时)资料格式7. O. 1

2、STARTBIT0123456OddParitySTOPBIT7L 7-data bits 1位起始位、7位数据位(低位在前,高位在后 卜1位奇校验位、1位停止位(有校验时)1.211-bit 字元框(FOR RTU 模式)资料格式8. N .2STARTBIT01234567STOPBITSTOPBIT,8 8-data bits 11-bits character fram 1位起始位、8位数据位(低位在前,高位在后 卜2位停止位(无校验时)资料格式8. E .1STARTBIT01234567EvenParitySTOPBIT4 8-data bits 11-bits character

3、 fram1位起始位、8位数据位(低位在前,高位在后 卜1位偶校验位、1位停止位(有校验时)资料格式8. O. 1STARTBIT01234567OddParitySTOPBIT4.8-data bits 11-bits character fram .A1位起始位、8位数据位(低位在前,高位在后 卜1位奇校验位、1位停止位(有校验时) 波特率:1200, 2400, 4800, 9600, 19200, 384002 .通信资料格式2.1 ASCII 格式起始字符STX起始字元:的ASCII码为3AH)从机地址高字节Adress High通讯地址:8- bits,由2个ASCII码组成。0为

4、广播地址从机地址低字节Adress Low功能码图字下Function High功能码:8- bits,由2个ASCII码组成功能码低字节;Function Low数据链最高字节DATA(n-1)资料内容:N 8- bits资料内容,由 2 N个ASCII码组成(N 18)数据链中间字节一数据链最低字节DATA 0LRC高字节LRC Check HighLRC检查码:由2个ASCII码组成LRC低字节LRC Check Low制字END High结束字元,END High = CR (0DH), END Low = LF (0AH ) 注:CR和LF分别表示回车和换行的 ASCII码0x0D、

5、0x0A结束字符低字节END Low2.2 RTU格式起始标志START保持无输入讯号20ms从机地址Adress通信位址:8-bits 二进制位址。00H为广播地址功能码Function功能码:8-bits 二进制位址数据链最高字节DATA(n-1)资料内容:N 8-bits资料内容(NW17)数据链中间字节数据链最低字节DATA 0CRC低字节CRC Check LowCRC检查码:由2个8-bits二进制码组成CRC高字节CRC Check High结束标志END保持无输入讯号20ms2.3功能码:03H:读出暂存器内容06H:写入一个 WORD至暂存器08H :回路侦测2.3.1功能码

6、03H :读出暂存器内容例如:主机(如PC)对地址01H处的从机(如仪表)进行数据读取操作: 将从机起始暂存器地址为2000H处的两个连续地址空间中的数据读取出来,表示方法如下RTU模式:主机询问从机格式:从机地址Address01H功能码Function03H从机起始 暂存器地址Data Addr Hight20HData Addr Low00H读地址总个数(一个 字Word为两个字节)Number of data (count by word)00H02HCRC低字节CRC Check LowCFHCRC高字节CRC Check HightCBHASCII模式:从机回应主机格式:从机地址A

7、ddress01H功能码Function03H返回字节总数(一个 字Word为两个字节)Number of data (count by byte)04H返回暂存器第一个地 址中的两个字节数据Content of data (Address 0000)01HF4H返回暂存器第二个地 址中的两个字节数据Content of data (Address 0001)00H64HCRC低字节CRC CHK LowBBHCRC高字节CRC CHK HightD6H起始字符STX:(3AH )从机地址Address01功能码Function03,从机起始暂存器地址Sub-Func-Hi20Sub-Func

8、-Lo00读地址总个数(一个字Word 为两个字节)Data (任思)0002LRC高字节LRC CHK HiDLRC低字节LRC CHK LoA结束字符高字节END HighCR (0DH)结束字符低字节END LowLF (0AH)主机询问从机格式:2.3.2功能码06H:写入一个 WORD至暂存器起始字符STX:(3AH )从机地址Address01功能码Function03,返回字节总数(一个 字Word为两个字节)Data (任思)04返回暂存器A个地址中的两个字节数据Content of data(Address 0000)01F4返回暂存器第二个 地址中的两个字节数据Conten

9、t of data(Address 0001)0064LRC高字节LRC CHK Hi9LRC低字节LRC CHK LoF结束字符高字节END HighCR (0DH)结束字符低字节END LowLF (0AH)从机回应主机格式:例如:主机(如PC)对地址01H处的从机(如仪表)进行数据写入操作:主机将数据 03E8H写入到从机暂存器 2005H地址中,表示方法如下RTU模式:主机询问从机格式:从机回应主机格式:从机地址Address01H功能码Function06H从机暂存器地址Data Addr Hight20HData Addr Low05H写入的数据(一个字Word为两个字节)Data

10、 Content Hight03HData Content LowE8HCRC低字节CRC Check Low92HCRC高字节CRC Check HightB5HASCII模式:从机地址Address01H功能码Function06H返回被写入的Data Addr Hight20H从机暂存器地址Data Addr Low05H返回被写入的数据内容Data Content Hight03H(一个字Word为两个字节)Data Content LowE8HCRC低字节CRC Check Low92HCRC高字节CRC Check HightB5H起始字符STX(3AH )从机地址Address0

11、1功能码Function06从机暂存器地址Sub-Func-Hi2,主机询问从机格式:从机回应主机格式:起始字符STX:(3AH )从机地址Address01功能码Function06返回被写入的Sub-Func-Hi2,0Sub-Func-Lo0写入的数据(一个字Word为两个字节)Data (任思)03,E8LRC高字节LRC CHK HiELRC低字节LRC CHK Lo9结束字符高字节END HighCR (0DH)结束字符低字节END LowLF (0AH)从机暂存器地址0Sub-Func-Lo0返回被写入的数 据内容(一个字Word为两个字节)Data (任思)03,E8LRC高字

12、节LRC CHK HiELRC低字节LRC CHK Lo9结束字符高字节END HighCR (0DH)结束字符低字节END LowLF (0AH)2.3.3功能码08H:回路侦测RTU模式:主机询问从机格式:从机地址Address01H功能码Function08H从机暂存器地址Sub-Func-Hi00H (任意)Sub-Func-Lo00H (任意)写入的数据(一个字Word为两个字节)Data Content Hight12H (任意)Data Content Low34H (任意)CRC低字节CRC Check LowEDHCRC高字节CRC Check Hight7CH从机回应主机格

13、式:从机地址Address01H功能码Function08H返回被写入的 从机暂存器地址Sub-Func-Hi00HSub-Func-Lo00H返回被写入的数据内容(一个字Word为两个字节)Data Content Hight12HData Content Low34HCRC低字节CRC Check LowEDHCRC高字节CRC Check Hight7CHASCII模式:主机询问从机格式:起始字符STX:(3AH )从机地址Address01功能码Function08从机暂存器地址Sub-Func-Hi00Sub-Func-Lo00写入的数据(一个字Word为两个字节)Data (任意)

14、12,3,4LRC高字节LRC CHK HiBLRC低字节LRC CHK Lo1结束字符高字节END HighCR (0DH)结束字符低字节END LowLF (0AH)从机回应主机格式:起始字符STX:(3AH )从机地址Address01功能码Function08返回被写入的从机暂存器地址Sub-Func-Hi00Sub-Func-Lo00返回被写入的数 据内容(一个字 Word为两个字节)Data (任意)12,3,4LRC高字节LRC CHK HiBLRC低字节LRC CHK Lo1结束字符高字节END HighCR (0DH)结束字符低字节END LowLF (0AH)2.1 .错误

15、通讯时的额外回应:当控制器(从机如仪表)做通信连接时,如果产生错误,此时控制器(从机如仪表)会回应错误码且将 Functioncode AND 80H回应给主控系统(主机如PC),让主控系统(主机如PC)知道有错误产生。错误通信时错误码具体涵 义请参考“错误码的意义”表格RTU模式:ASCII模式:从机回应主机格式:从机回应主机格式:从机地址Address01H功能码Function86H错误码Except code02HCRC低字节CRC Check LowC3HCRC高字节CRC Check HightA1H起始字符STX从机地址Address01功能码Function86错误码Excep

16、t code02,LRC高字节LRC CHK Hi7LRC低字节LRC CHK Lo7结束字符高字节END HighCR结束字符低字节END LowLF注:其中将原功能码 AND 80H后返回, 并在Except code中返回错误码(见下表格) 错误码的意义:错误码说明01功能码错误:控制器可以辨识的功能码为03H、06H、08H02寄存器地址错误:从机地址处的控制器无法辨识此寄存器地址03资料内容值错误:资料内容值太大或者太小,不是控制器所能辨识的内容值04控制器无法处理:控制器对此命令,无法执行09CRC或者LRC校验错误10奇偶校验错误12接收数据低于规定长度13接收数据超过规定长度2

17、.2 ASCII 模式检查码(LRC Check )将从Address开始到Data Content结束之间的数进行相加,再对相加的和值取其补码就得出检查码。例如:用“错误通讯时的额外回应”来计算 LRC检查码,具体计算方法如下01H+08H+00H+00H+12H+34H=4FH ,再对 4FH 取补码后的值 =B1H4FH的原码值为 01001111B, 4FH的反码值为10110000B, 4FH的补码值为10110001B原码与补码的运算规则是:补码=原码取反+12.3 RTU模式的检查码(CRC Check )检查码计算数据由 Address开始到Data content结束。其运算

18、规则如下:步骤1 :令16-bit暂存器(CRC暂存器)=FFFFH步骤2:将第一个8-bite byte的讯息指令与16-bite CRC暂存器中的数据按位做Exclusive OR(异或),将异或后的结果存入到 16-bite CRC暂存器内。一个8-bite byte讯息指令为8位,在参与运算时高八 位补充为00H ,讯息指令数据从 AddressData content步骤3:将CRC暂存器中的数据向右移出一位,空出CRC暂存器的最高位,将0补入到CRC暂存器的最高位步骤4:检查CRC 暂存器向右移出的一位值:如果是0,将步骤3 操作后的新值存入到 CRC 暂存器内;如果是 1 则将步

19、骤 3 操作后得到的新值与A001H 进行按位做Exclusive OR( 异或 )操作,将异或后的结果存入到 CRC 暂存器内步骤5:重复上述步骤 3步骤4,将8-bit全部运算完毕步骤6:重复步骤2步骤5,取下一个8-bit的讯息指令,直到所有讯息指令全部运算完毕。最后得到的CRC 暂存器的值, 即是 CRC 的检查码。 值得注意的是CRC 的检查码必须分低八位和高八位分别放置于讯息指令的 CRC 检查码暂存器中,低八位=CRC 检查码%256 ,高八位=CRC 检查码 /256注:Exclusive OR(异或)运算是实现“不同为1,同则为0”这种逻辑关系的一种运算,其逻辑运算符为“”其

20、运算规则如下:00 = 0, 01 = 1,10=1,11 = 0 ,在C语言中有“按位异或”运算“ 八以下程序为用 C 语言所写的 CRC 检查码运算范例:unsigned char *data; /定义一个指针用于存放讯息指令数据链的首地址unsigned cha门ength;定义一个长度变量用于存放讯息指令的长度即字节长度unsigned int crc_chk(unsigned char *data,unsigned char length) /此函数中的两个变量功能在上面已说明int j; /定义一个变量j 用于存储每个讯息指令向右移动到了第几位unsigned int reg_cr

21、c=0xffff; /给 CRC 暂存器赋初值0xffffwhile(length-) / 每次将讯息指令的长度数值减一,即操作完一个讯息指令就将总的讯息指令数减一reg_crc A= *data+; 将指针变量data中的讯息指令数据与 CRC暂存器中的数据进行按位异或操作, 将操作后的结果存放到 reg_crc 暂存器中, 操作过后指针变量data 指向下一个讯息指令的地址for(j = 0; j 1) A 0xa001;else如果CRC暂存器中的数据最低位为0则将CRC暂存器中的数据向右移动一位后的结果存放到 CRC 暂存器中reg_crc = reg_crc 1;return reg

22、_crc; / 返回操作后CRC 暂存器中的数据例如:用“错误通讯时的额外回应”来计算CRC 检查码,详细步骤如下Address = 01H , Function = 86H , Except code = 02H ,令 CRC Check = FFFFH序 号位 号讯息指令CRC暂存器CRC右移一位的数据CRC右移一位后的数据是否异 或操作是否与A001H进行异或操作异或后 的数据说明一:卜面步执行Address中的数据与CRC暂存器中的数据进行异或操作11111 11111111 11111111 11111111 1110211111 11111111 111000111 1111111

23、1 1111320111 11111111 111110011 11111111 11111010 00000000 00011001 11111111 111043Address1001 11111111 111000100 11111111 11115401H0100 11111111 111110010 01111111 11111010 00000000 00011000 01111111 11106500000001B1000 01111111 111000100 00111111 1111760100 00111111 111110010 00011111 11111010 000

24、00000 00011000 00011111 1110871000 00011111 111000100 00001111 1111980100 00001111 111110010 00000111 11111010 00000000 00011000 00000111 1110说明二:-卜面步执行Function中的数据与CRC暂存器中的数据进行异或操作101000 00000111 11101000 00001111 10001111000 00001111 100000100 00000111 1100122Function0100 00000111 110000010 000000

25、11 111013386H0010 00000011 111000001 00000001 111114410000001 00000001 111110000 10000000 11111010 00000000 0001101010000000 11101550110B101010000000 111000101 01000000 01111660101 01000000 011110010 10100000 00111010 00000000 00011000 10100000 00101771000 10100000 001000100 01010000 00011880100 01010000 000110010 00101000 00001010 00000000 0001100

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论