《超声波测距传感器MODBUS通讯协议V5版.docx》由会员分享,可在线阅读,更多相关《超声波测距传感器MODBUS通讯协议V5版.docx(19页珍藏版)》请在第一文库网上搜索。
1、超声波测距传感器MODBUS通讯协议V1.5版modbusrtu方式通讯协议1、硬件采用RS485,主从式半双工通讯,主机呼叫从机地址,从机应答方式通讯。2、数据帧10位,1个起始位,8个数据位,1个停止位,无校验。波特率:24004800960019200(默认为9600)3、功能码03H:读寄存器值主机发送:12345678ADR03H起始寄存器高字节起始寄存器低字节寄存器数量高字节寄存器数量低字节CRC码低字节CRe码高字节当从机接收正确时,从机回送:1234、56、7M-1、MM+1M+2ADR03H字节总数寄存器数据1寄存器数据2OOO寄存器数据MCRC码低字节CRC码高字节第1字节
2、ADR:从机地址码(=001-254)第2字节03H:返回读功能码第3字节:从4到M(包括4及M)的字节总数第4到M字节:寄存器数据第M+1、M+2字节:从字节1到M的CRCI6校验当从机接收错误时,从机回送:12345ADR83H信息码CRC码低字节CRCI1马高字节第1字节ADR:从机地址码(=001-254)第1字节83H:读寄存器值出错第3字节信息码:见信息码表第4、5字节:从字节1到3的CRCI6校验4、功能码06H:写单个寄存器值主机发送:12345678ADR06寄存器地址高字节寄存器地址低字节数据高字节数据低字节CRC码低字节CRC码高字节当从机接收正确时,从机回送:12345
3、678ADR06寄存器高字节寄存器低字节数据高字节数据低字-HjCRC码低字节CRC码高字节当从机接收错误时,从机回送:12345ADR86H错误信息码CRC码低字节CRC码高字节第1字节ADR:从机地址码(=001-254)第1字节86H:写寄存器值出错功能码第3字节信息码:见信息码表第4、5字节:从字节1到3的CRC16校验5、功能码10H:连续写多个寄存器值主机发送:1234567ADRIOH起始寄存器地址高字节起始寄存器地址低字节寄存器数量高字节寄存器数量低字节数据字节总数8、910、11N、N+1N2N+3寄存器数据寄存器数据寄存器数据CRC码低字CRC码高字12M节节当从机接收正确
4、时,从机回送:12345678ADRIOH起始寄存器地址高字节起始寄存器地址低字节寄存器数量高字节寄存器数量低字节CRC码低字节CRC码高字节当从机接收错误时,从机回送12345ADR90H错误信息码CRC码低字节CRC码高字节第1字节ADR:从机地址码(=001-254)第1字节90H:写寄存器值出错功能码第3字节信息码:见信息码表第4、5字节:从字节1到3的CRCI6校验6、寄存器定义表:(注:寄存器地址编码为16进制)寄存器地址内容说明只读寄存器地址内容说明只读OOOO距离/物位瞬时值(2字节高位在前)0001模拟输出瞬时值(2字节高位在前)0002温度瞬时值(2字节高位在前)0003保
5、留0004保留0005保留0006保留0007保留0008保留0009保留OOOA保留OOOB保留OOOC保留OOOD保留OOOE保留OOOF保留0010保留0011保留0012保留0013保留0014保留0015保留0016保留0017保留0018保留0019保留OO1A保留OO1B保留OO1C保留OO1D保留OO1E保留OO1F保留0020保留0021保留0022报警1值(2字节高位在前)0023报警1回差值(2字节高位在前)0024报警2值(2字节高位在前)0025报警2回差值(2字节高位在前)0026报警3位(2字节高位在前)0027报警3回差值(2字节高位在前)0028报警4值(2字
6、节高位在前)0029报警4回差值(2字节高位在前)002A参考零点(2字节高位在前)002B量程高点(2字节高位在前)002C量程低点(2字节高位在前)002D设定电流(2字节高位在前)OO2E盲区设置(2字节高位在前)002F保留0030保留0031保留0032保留0033保留0034保留0035保留0036保留0037保留0038保留0039保留003A保留003B保留003C保留003D保留003E保留003F保留0040保留0041保留0042保留0043保留0044保留0045保留0046保留0047保留0048保留0049保留004A保留004B保留004C保留004C保留004E
7、保留004F保留0050保留0051保留0052保留0053保留0054保留0055保留0056保留0057保留0058保留0059保留005A保留005B保留005C报警1模式报警2模式005D报警3模式报警4模式005E测量模式单位选择005F算法选择安全物位0060探头类型响应速度0061出厂复位系统复位0062波特率工作方式0063保留0064保留0065保留0066保留0067保留0068保留0069保留006A006B表型字仪表地址注:2字节16进制表示,高位在前:(注:浮点数都是乘IOO取整后,用16进制表示)(1)举例:当前仪表地址为1发送:01030000000184OA返回
8、:0103020010b988红色的两个字节表示:当前测量值为0.16米(OXOOIo=160单位为C1n)注意:正负标识位:测量值和温度为正数时,高字节的最高位是0;为负数时,高字节的最高位是1;举例:当前测量是-0.16米时,则返回:0103028010E806测量模式:o测量距离;1测量物位安全物位:二0,保持;=55,最小值;=AA,最大值;=5,设定值报警i、2、3、4模式:0关闭;1底彳立报警;2一高位报警单位选择:=0,mm;=1,cm;=2,m算法选择:0特殊环境一;1一特殊环境二;2一特殊环境三;3一特殊环境四;4一特殊环境五;5一特殊环境六;6一特殊环境七探头类型:0一选择
9、1;1一选择2;2一选择3;3一选择4;4一选择5;5一选择6;6一选择7;7一选择8;8一选择9;响应速度:O-慢速;1一中速;2一快速;J复位:0否;1是;系统复位:0否;1是;波拈率:02400;14800;29600;319200工作方式:。一自动报告模式;1一查询模式寄存器分区域执行读写操作第一区域00100021只读第二区域0022005B读写第三区域005C004B读写同一区域内,可单次读(或写)某一参数,也可以批读(或写)本区域内所有参数,不允许跨区域进行读写操作。所有保留寄存器目前无定义,保留将来升级兼容。7、信息码表信息码表示意义O1H非法的功能码02H非法的数据地址03H
10、非法的数据值04HCRCI6校验错05H接收正确9、CRe校验码程序/*- 功能描述:计算一个数据串的16位CRC值- 隶属模块:公开函数模块- 函数属性:- 参数说明:puchMsg:数据串byte1en:是数据串长度uchCRCHi:CRC效验和高8位uchCRC1o:CRC效验和低8位- 返回说明:- 注:*/voidCRCbyte(UCHAR8puchMsg,UINT16byte1en,UCHAR8*uchCRCHi,UCHAR8*uchCRC1o)INT16u1ndex;UCHAR8tempBYTE;UINT16i;WatchDogO;*uchCRCHi=255;*uchCRC1o=
11、255;for(i=0;ibyte1en;i+)(tempBYTE=puchMsgi;/2011.7.12修改,以前的高低位反了u1ndex=(*uchCRC1o)tempBYTE);*UchCRC1o=(*uchCRCHi)auchCRCHiuIndex;*uchCRCHi=auchCRC1o1uIndex;)10、详细代码操作以下指令都是以当前仪表她址为1进行操作(即首个字节为01);读寄存器值(第二个为功能码,功能码为03)(1)读取距离/物位瞬时值(默认以Cm为单位)当前仪表地址为1(即首个字节为01);读寄存器的功能码为03(即第二个字节为03);距离/物位瞬时值的寄存器地址为OOO
12、o(即第三第四字节为0000);读取寄存器个数为1(即第五第六字节为OoO1);CRC校验码为840A(即第七第八字节为840A);发送:01030000000184OA返回:01030200CCB811红色的两个字节表示:当前测量值为2.04米(OXoOCC)(2)读取温度瞬时值发送:01030002000125CA返回:010302OABE3E94红色的两个字节表示:当前温度值为27.50C(OxOABE)(3)读取参考零点发送:01O3OO2A0001A5C2返回:010302012CB809红色的两个字节表示:当前参考零点为3.0Om(0x0120(4)读取量程高点发送:0103002B000