水表通信协议V2.2(DZ)综述此协议是基于188协议进行整理的,适用于一般远传水表。传输时波特率为2400bps、偶校验、数据位为8位、停止位为1位。同一帧数据中无特殊说明时一般为低字节在前,高字节在后。一、帧格式68HTA0A1A2A3A4A5A6CLDATACS16H帧前导符:在发送数据帧前,先发送1-4个0XFE。帧起始符68H:标识一帧信息的开始,其值为68H=01101000B。仪表类型T在此协议中全固定为10H,表示水表。地址域A0---A6地址域(A0--A6)由7字节BCD码组成。低在前,高在后。控制码C控制码的格式如下所示。D7D6D5D4D3D2D1D0D7=0:由主站发出的命令帧D7=1:由从站发出的应答帧D6=0:从站正确应答D6=1:从站对异常信息的应答D5~D0:000001:读数据000100:写数据000011:读地址(表号)010101:写地址(表号)1XXXXX:厂商自定义.其他:暂保留未用数据长度L:L为数据域的字节数。L=0表示无数据域。数据域DATA:数据域包括数据标识、序列号和数据等,其结构随控制码的功能而改变。校验码CS:从帧起始符开始到校验码之前的所有各字节的模256的和,即各字节二进制算术和,不计超过256的溢出值。结束符16H:标识一帧信息的结束,其值为16H=00010110B二、协议帧2.1读数据2.1.1主站请求帧功能:请求读数据控制码:C=CTR_0数据长度:L=03H数据标识:DI0,DI1;序列号:SER帧格式:68HTA0…A6CTR_003HDI0DI1SERCS16H2.1.2从站正常应答帧功能:从站正常应答控制码:C=CTR_1数据长度:L=03H+m(数据长度)数据标识:DI0,DI1;序列号:SER帧格式:68HTA0…A5CTR_1LDI0DI1SERN1…NmCS16H2.1.3从站异常应答帧功能:从站收到非法的数据请求或无此数据控制码:C=CTR_2数据长度:L=03H序列号:SER帧格式:68HTA0…A5CTR_2LSERST0ST1CS16H注:序列号SER,状态ST0,ST1见备注1。2.1.4主站请求读控制字功能控制码CTR_0正常应答控制码CTR_1异常应答控制码CTR_2备注读数据01H81HC1H读表号03H83HC3H广播命令读校表数据31HB1HF3H厂商自定义2.1.5主站请求读数据标识说明序号名称数据标识DI0,DI1数据长度从站应答报文备注1读计量数据901FH16HDI0,DI1,SER,累积流量,当月流量,实时时间,状态ST2读定义数据902FH2EHDI0,DI1,SER,累积流量,剩余量,未次购量,用户号,系统号,囤积量,报警量,允许透支量,购买次数,子表号(表类型)、校验方式,其他1字节,累积工作时间,实时时间,状态ST备注33广播读表号810AH03HDI0,DI1,SER只能单机操作3.1写数据3.1.1主站请求帧功能:请求读数据控制码:C=CTR_3数据长度:L=03H+m(数据域长度)数据标识:DI0,DI1;序列号:SER帧格式:68HTA0…A6CTR_3LDI0DI1SERN1…NmCS16H3.1.2从站正常应答帧功能:从站正常应答控制码:C=CTR_4数据长度:L=03H+m(数据长度)数据标识:DI0,DI1;序列号:SER帧格式:68HTA0…A5CTR_4LDI0DI1SERN1…NmCS16H3.1.3从站异常应答帧功能:从站收到非法的数据请求或无此数据控制码:C=CTR_5数据长度:L=03H序列号:SER帧格式:68HTA0…A5CTR_5LSERST0ST1CS16H3.1.4主站请求写控制字功能控制码CTR_3正常应答控制码CTR_4异常应答控制码CTR_5备注写数据04H84HC4H写表号15H95HD5H收到出厂启用后不再响应厂商写数据34HB4HF4H3.1.5主站请求写数据标识说明序号名称数据标识DI0,DI1主站从站备注数据长度发送报文数据长度应答报文1写时间A015H0AHDI0,DI1,SER,实时时间03HDI0,DI1,SER2写出厂启用A019H03HDI0,DI1,SER03HDI0,DI1,SER3写表号A018H0AHDI0,DI1,SER,新地址A0--A603HDI0,DI1,SER出厂启用后不再响应4设置参数A0A4H05HDI0,DI1,SER,P1,P203HDI0,DI1,SER见备注25阀门控制A0A8H08HDI0,DI1,SER,MC,MX03HDI0,DI1,SER见备注46远传充值A0B8H2EHDI0,DI1,SER,系统号2,表类型1,命令2EH和902F的回复类似,增备注54.数据表达格式说明名称数据格式单位代号数据长度备注流量XXXX.XXXX有(m3/h)5BCD码结算日累积流量XXXXXX.XX有(m3)5BCD码当前累积流量XXXXXX.XX有(m3)5BCD码累积工作时间XXXXXX无(h)3BCD码实时时间YYYYMMDDhhmmss无7BCD码序列号SERHH无1HEX数据标识DIXXXX无2HEX5.单位代号表单位代号单位代号kWh05Hm3/h35HkW17Hm32CH状态ST0定义表D0D1D2D3D4D5D6D7定义电池电压说明00:开阀01:关阀0:正常1:欠压保留保留保留保留保留状态ST1定义表D0D1D2D3D4D5D6D7定义强制开强制关常开故障开户报警强磁废表透支说明字1,用户号4,次数2,购买量4,报警2,透支2,囤积4,备用10,时间6,加一个读卡结果备注1:SER固定为00。备注2:P1:参数模式02:(出厂启用解除)(P2=A2)备注3:累积流量,剩余量,未次购量均为4字节BCD码,低在前。带2位小数;用户号,4字节BCD码低在前。系统号,2字节BCD码囤积量为4字节BCD码,带1位小数报警量,2字节BCD,带1位小数允许透支量:2字节BCD,带1位小数购买次数:2字节BCD;(远传充值时:卡次数,远程充值次数各占1个字节)子表号(表类型,代码号):1字节;校验方式:1字节其他,1字节(远传充值结果,为0表示正确)特殊说明:抄单复费率水表时,‘表类型’字节需判断,‘5AH’表示水量版,‘A5H’表示金额版。当为金额版时,剩余量,未次购量、囤积量、报警量、允许透支量的单位均调整为‘元’,所带的小数个数不变。备注4:MC:一字节HEX,A1H:强制开阀;A2H:强制关阀;A3H:取消强制,表恢复正常状态(当表已经处于以下状态时,强制开阀无效:低电关死,强磁,已废表)MX:4字节HEX,保留。重新上电后,表恢复为正常状态。备注5:(充值命令)测试版写卡充值时,上位机软件要配置好表号、次数和购买量。未特殊说明,数据均为低在前的BCD码。购买量单位为0.001m3;报警2,透支2,单位为0.1m3;囤积4单位为0.001m3表类型固定为0x5A.开户时第一次次数为1,成功后依次累加。范围为0~255循环。命令字:0x8A:充值命令0x1A:清零命令加密:组通讯帧前,数据区,XOR‘AA’然后XOR‘地址’。第1个字节地址为0。关于自定义的命令的命令字(188协议的扩展)3-1,读命令为31H,写命令为34H.3-2,读写数据命令中,在DI0,DI1,后增加SER.3-3,数据区的内容均改为低在前,高在后.3-4,A5H为地址通配符。关于写命令时SER的加密。(适用于远传充值,远传控阀等写操作)1,读命令时SER固定为0即可,写命令时需要进行加密计算。2,先在SER位置赋0XAA的初值,即帧数组中的第13个字节(从0开始算)。3,CRC8的btInitValue参数为帧格式中的数据长度L,即帧数组中的第10个字节。4,校验的数据总长度范围从帧头0x68(含)算起.到校验和之前结束;即L+11。5,数据加密,SER计算完成后,最后在计算帧格式中的CS。C代码示例UartBuf[13]==0xAA;LenBuf=UartBuf[10];CrcBuf=Cal_Crc8Frame(UartBuf,LenBuf,LenBuf+11);INT8UCal_Crc8Frame(INT8U*lpBuffer,INT8UbtInitValue,INT8UiCount){INT8Ui,j;for(i=0;iiCount;i++){btInitValue=btInitValue^(*lpBuffer);for(j=0;j8;j++){if(btInitValue&0x80){btInitValue=(btInitValue1)^0x1D;}else{btInitValue=btInitValue1;}}lpBuffer++;}btInitValue^=0x1A;returnbtInitValue;}