老王手把手教您多功能电表设置通讯的具体步骤。
1.要设置的电表地址处pBuf[10]~pBuf[15],按规约加33H,不知道是否这么写
2.规约中提到校验和pBuf[16]的算法是否正确,另外这个校验和,在规约中说从帧起始符开始,可这里有两个帧起始符pBuf[0]和pBuf[7],zhezh这个校验和到底从哪里开始计算呢?从哪个位置到哪个位置呢?
DWORD dwToWrite=18;
char *pBuf=new char[19];
memset(pBuf,0,19);
pBuf[0]=0x68; //
pBuf[1]=0x99; //
pBuf[2]=0x99;
pBuf[3]=0x99;
pBuf[4]=0x99;
pBuf[5]=0x99;
pBuf[6]=0x99;
pBuf[7]=0x68; //
pBuf[8]=0x0A; //
pBuf[9]=0x06; //
pBuf[10]=0x04+0x33; //
pBuf[11]=0x01+0x33;
pBuf[12]=0x01+0x33;
pBuf[13]=0x01+0x33;
pBuf[14]=0x01+0x33;
pBuf[15]=0x01+0x33;
int Sum=0;
for(int i=0;i<16;i++)
{
Sum+=pBuf[i];
}
pBuf[16]=Sum%256;
pBuf[17]=0x16; //
m_Port.WriteBlock(pBuf,dwToWrite);
delete [] pBuf;
3、帧格式
帧是传送信息的基本单元。帧格式如图8 所示。
1 .帧起始符68H:标识一帧信息的开始,其值为68H=01101000B。
2 .地址域A0~A5:地址域由6 个字节构成,每字节2 位BCD 码。地址长度可达12 位
十进制数,可以为表号、资产号、用户号、设备号等。具体使用可由用户自行决定。当使用
的地址码长度不足6 字节时,用十六进制AAH 补足6 字节。低地址位在先,高地址位在后。
当地址为999999999999H 时,为广播地址。
3 .控制码C:控制码的格式如下所示。
D7=0:由主站发出的命令帧
D7=1:由从站发出的应答帧
D6=0:从站正确应答
D6=1:从站对异常信息的应答
D5=0:无后续数据帧
D5=1:有后续数据帧
D4~D0:请求及应答功能码
00000:保留
00001:读数据
00010:读后续数据
00011:重读数据
00100:写数据
01000:广播校时
01010:写设备地址
01100:更改通信速率
01111:修改密码
10000:最大需量清零
4 .数据长度L:L 为数据域的字节数。读数据时L≤200,写数据时L≤50,L=0 表示无
数据域。
5 .数据域DATA:数据域包括数据标识和数据、密码等,其结构随控制码的功能而改变。
传输时发送方按字节进行加33H 处理,接收方按字节进行减33H 处理。
6 .校验码CS:从帧起始符开始到校验码之前的所有各字节的模256 的和,即各字节二
进制算术和,不计超过256 的溢出值。
7.结束符16H:标识一帧信息的结束,其值为16H=00010110B。
8、 写设备地址
1. 写设备地址请求命令帧
功能:设置某从站的地址码
控制码:C=0AH
地址域:99...99H
数据长度:L=06H
数据域:A0-A5(设备地址码)
帧格式:
68H 99H ... 99H 68H 0AH 06H A0 ... A5 CS 16H
注:本请求命令采用广播地址发布,要求被设置的从站有相应的按键(开关)与该命令配
合,在命令发布的全部时间内按下按键者响应,其它不响应。
2. 从站正常应答帧
功能:正确执行命令的设备应答
控制码:C=8AH
地址域:A0?A5(新设置的设备地址码)
数据长度:L=00H
帧格式:
68H A0 ... A5 68H 8AH 00H CS 16H
十几年的商海遨游,我们始终坚持“一切为了客户”这一初心,让我们拥有了智能电表10万+的用户,多次被集团评为“十佳供应商”“售后服务标兵”等荣誉。成绩属于昨天,明天,我们将砥砺前行。
冰冷的系统是数字化工具,暖人的抄表,万里挑一。