DLT645协议

2017-11-18  本文已影响248人  Savior2016

1 帧格式

帧格式.png

1.1 帧起始符 68H

每一帧的开始固定为0x68

1.2 地址域 A0~A5

对应电表地址,需要将地址反转,地位在前,高位在后
例如,电表地址为:NO.102030405060
则发送控制指令时,应该发送的地址域为0x60,0x50,0x40,0x30,0x20,0x10

1.3 控制码 C

控制码.png
一般使用的控制码为0x11,即(00010001),表示读数据。

1.4 数据长度 L

表示数据域的字节数,读数据时L≤200,写数据时L≤50,L=0表示无数据域。

1.5 数据域

传输时,发送方需要加0x33,接收方减0x33.例如需要传输0x00,x11,0x22,则应发送0x33,0x44,0x55
一组查询指令和数据返回:

68 29 61 30 00 16 00 68 11 04 34 34 37 38 8c 16
68 29 61 30 00 16 00 68 91 08 34 34 37 38 9c 33 33 33 45 16

1.6 CS校验码

计算方法如下:

void getCS_uchar()
{
    unsigned char CS_DATA[16] = { 0x68,0x29,0x61,0x30,0x00,0x16,0x00,0x68,0x11,0x04,0x35,0x34,0x37,0x38,0xc2,0x16 };
    int CS_LEN = 16;
    int tmp = 0;
    for (int i = 0; i<CS_LEN - 2; i++)
    {
        tmp = tmp + CS_DATA[i];
    }
    tmp %= 256;
    printf("cs result:%2x",tmp);

}

1.7 结束符 16H

指令以0x16结束。

2 应答帧

应答帧

应答帧与上面类似,只是数据块前一部分为数据标识。

上一篇 下一篇

猜你喜欢

热点阅读