您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > ASD906通讯协议
ASD906通讯协议VR:0.9一、协议内容:该串行通讯协议定义了串行通讯传输的信息内容及使用格式。其中包括:主机轮询(或广播)格式;主机的编码方法,内容包括:要求动作的功能码,传输数据和错误校验等。从机的响应也是采用相同的结构,内容包括:动作确认,返回数据和错误校验等。如果从机在接收信息时发生错误,或不能完成主机要求的动作,将返回故障信息给主机。二、总线结构1,接口方式:TTL232(3.3V)硬件接口。2,传输方式:异步串行,半双工传输方式。在同一时刻主机和从机只能有一个发送数据而另一个只能接收数据。数据在串行异步通讯过程中,是以报文的形式,一帧一帧发送,通讯波特率:115200。3,拓扑结构:主机PC系统或嵌入式系统。从机ASD906ID地址默认为:0x01。三、协议说明该机型通讯协议是一种异步串行的主从Modbus通讯协议,网络中只有1个设备(主机)能够建立协议(称为“查询/命令”)。从机设备只能通过提供数据响应主机的“查询/命令”,或根据主机的“查询/命令”做出相应的动作。主机在此是指仪器控制面板、个人计算机(PC)或其它工业控制设备等。从机是指ASD906设备。四、通讯数据结构使用RTU模式,消息发送至少要以3.5个字符时间的停顿间隔开始。传输的第一个域是设备地址。可以使用的传输字符是十六进制的0…9,A….F。网络设备不断侦测网络总线,包括停顿间隔时间内。当第一个域地址接收到,每个设备都进行解码以判断是否发往自己的。在最后一个传输字符之后,一个至少3.5个字符时间的停顿标定消息的结束。一个新的消息要在此停顿后开始。整个消息帧必须作为一连续的流传输。如果一个新的消息在小于3.5个字符时间内接着前一个消息开始,接收的设备将认为它是前一消息的延续。这将导致一个错误,因为在最后的CRC域的值不可能是正确的。1、RTU帧格式:STARTAddressFunctionDataCRCCheckEnd3.5char8bits8bitsN*8bits16bits3.5char帧头(START)至少3.5个字符时间从机地址(ADDR)通讯地址:0-247命令码(CMD)03:读从机参数06:写从机参数数据内容(DATA)资料内容:功能码参数地址,功能码参数个数,功能码参数值等数据内容(DATA)……..数据内容(DATA)校对码低位(CRC_L)CRCCHK值(纵向冗余检查)校对码高位(CRC_H)帧尾(END)至少3.5个字符时间2、CMD(命令指令)及DATA(资料字描述)命令码:03H,读取N个字(Word)(最多可以读取12个字)。例如:从机地址为01的设备的起始地址F002读取连续的2个值从机地址(ADDR)01H命令码(CMD)03H起始地址高位F0H起始地址低位02H寄存器个数高位00H寄存器个数低位02H校对码低位(CRC_L)CRCCHK值校对码高位(CRC_H)从机正常回应信息(正常回复)从机地址(ADDR)01H命令码(CMD)03H字节个数04HF002H数据高位00HF002H数据低位00HF003H数据高位00HF003H数据低位01H校对码低位(CRC_L)CRCCHK值校对码高位(CRC_H)从机判断通讯错误回复信息(错误回复)从机地址(ADDR)01H命令码(CMD)83H(原命令码+0x80)通讯故障信息通讯故障代码通讯故障信息通讯故障代码校对码低位(CRC_L)CRCCHK值校对码高位(CRC_H)命令码:06H,写一个字(Word)例如:将5000(1388H)写到从机地址02H设备的F004H地址处。主机命令信息从机地址(ADDR)02H命令码(CMD)06H数据地址高位F0H数据地址低位04H数据内容高位13H数据内容低位88H校对码低位(CRC_L)CRCCHK值校对码高位(CRC_H)从机正常回应信息(正常回复)从机地址(ADDR)02H命令码(CMD)06H数据地址高位F0H数据地址低位04H数据内容高位13H数据内容低位88H校对码低位(CRC_L)CRCCHK值校对码高位(CRC_H)从机判断通讯错误回复信息(错误回复)从机地址(ADDR)01H命令码(CMD)86H(原命令码+0x80)通讯故障信息通讯故障代码通讯故障信息通讯故障代码校对码低位(CRC_L)CRCCHK值校对码高位(CRC_H)3、CRC(纵向冗余检查)校验方式:使用RTU帧格式,采用CRC方法计算错误校验码,CRC码为2个字节,16位的二进制值。由发送设备计算CRC值,并把它附到信息中去。接收设备在接收信息过程中再次计算CRC值并与CRC的实际值进行比较,若二者不一致,亦产生一个错误,校验开始时,把16位寄存器的各位都置为“1”,然后把信息中的相邻2个8位字节数据放到当前寄存器中处理,只有每个字符的8位数据用于CRC处理。起始位,停止位和校验位不参与CRC计算。CRC校验时,每个8位数据与该寄存器的内容进行异或运算,然后向最低有效位(LSB)方向移位,用零填入最高有效位(MSB)后,再对LSB检查,若LSB=1,则寄存器与预置的固定值异或,若LSB=0,不作异或运算。重复上述处理过程,直至移位8次,最后一次(第8次)移位后,下一个8位字节数据与寄存器的当前值异或,再重复上述过程。全部处理完信息中的数据字节后,最终得到的寄存器值为CRC值。CRC值附加到信息时,低位在先,高位在后。关于CRC的校验的实现方法可参考其他相关资料。产生CRC的过程:1)把16位CRC寄存器置成FFFFH;2)第一个8位数据与CRC寄存器低8位进行异或运算,把结果放入CRC寄存器;3)CRC寄存器向右移一位(向LSB方向),MSB填零,检查LSB;4)(若LSB为0):重复3,再右移一位;(若LSB为1):CRC寄存器与多项式值(0xA001)进行异或运算;5)重复3和4直至完成8次移位,完成8位字节的处理;6)重复2至5步,处理下一个8位数据,直至全部字节处理完毕;7)CRC寄存器的最终值为CRC值;8)把CRC值放入信息时,高8位和低8位应分开放置,低位在先,高位在后。CRC计算函数:unsignedintCRC(unsignedchar*data,unsignedcharnum){unsignedchari;unsignedintcrc=0xFFFF;while(num--){crc^=*data++;for(i=0;i8;i++){if(crc&0x0001){crc=1;crc^=0xA001;}elsecrc=1;}}return(crc);}五、参数定义1、ASD906参数定义:参数地址参数描述1000(只读)输出电压RMS值(单位:mV)1001(只读)输出电流RMS值(单位:mA)1002(只读)输出电压实时值(单位:mV)1003(只读)输出电流实时值(单位:mA)1004(只读)输出功率(单位:mW)1005(只读)输入电流实时值(单位:mA)1006(只读)输入电流RMS值(单位:mA)1007(只读)输入功率(单位:mW)1008(只读)工作温度(单位:0.1℃)设置参数地址参数描述2000(只写)设定输出电压值(单位:mV)2001(只写)设定最大输出电流值(单位:mA)2002(只写)设定最大输出功率值(ASD906为无效参数)2003(只写)设定最大输入电流值(单位:mA)2004(只写)设定最大输入功率值(ASD906为无效参数)命令地址命令功能3000(只写)00:初始化01:输出使能02:复位错误故障信息地址产品故障信息6000(只读)00:正常01:输出过流保护02:输入过流保护03:输出过功率保护04:输入过功率保护05:温度保护06:通讯故障6001(只读)通讯故障代码:01:密码错误通讯故障代码:02:CRC校验错误通讯故障代码:03:命令码错误通讯故障代码:04:无效地址通讯故障代码:05:无效参数通讯故障代码:06:系统锁定使用实例:1,设置电压为:3.0V,主机发出指令往从机0x2000单元写入3000(以mV为单位)即可。主机通讯指令:010620000BB88548ID写0x20003000CRC从机回复:010620000BB88548ID写0x20003000CRC2,设置电压为:3.5V,主机发出指令往从机0x2000单元写入3500(以mV为单位)即可。主机通讯指令:010620000DAC86E7ID写0x20003500CRC从机回复:010620000DAC86E7ID写0x20003500CRC3,读出输出电流RMS值,主机发出指令读从机0x1001单元即可。主机通讯指令:010310010001D10AID读0x1001读一个CRC从机回复:0103020000B844ID读2字节0000mACRCASD906改装通讯接口:注意:1,5V可对外供电,但不要超出100mA,否则可能导致内部供电电路损坏,若不需要供电该引脚可空置不接;2,RxD接主机(控制设备)的TxD端,TxD接主机(控制设备)的RxD端,该端口为TTL3.3V逻辑电平,若控制设备为5V逻辑建议电路中串联1K-2K电阻;3,该端口为标准GX12-4芯航空插座。RxDTxD5V100mA(Out)GND
本文标题:ASD906通讯协议
链接地址:https://www.777doc.com/doc-2901901 .html