这一期见一下M序列的校验规则与M序列的交互示例,更加直观看一看主从之间的交互,方便各位读者更好地理解M序列。
M序列的校验和是一种连续字节与位异或压缩校验方式,将校验和从8bit压缩至6bit。 其规则如下图,IOL拥有一个异或种子“0x52”,首先这个种子连续与序列中的非校验和数据(CKT字节先将校验和的6位置0)进行异或,得到一个异或后的8bit数值,接着这个8bit数据内部进行位异或拼装。最后字节内部的异或拼装方式为,bit7-5-3-1异或结果放在最终6bit校验和的bit5上,bit6-4-2-0异或的结果放在最终6bit校验和的bit4上,bit7-6异或结果放在校验和bit3上,bit5-4异或结果放在校验和的bit2上,bit3-2异或结果房子啊校验和的bit1上,bit1-0异或结果放在校验和的bit0上。这样就计算得到了序列的校验和,将其写入到CKT或者CKS的对应位置上。
以一串M序列类型为Type_2_2主站序列(非准确的交互数据)举例子:0x39,0x80,0xDB。其解释是,主站通过页通信通道,向直接参数页2的0x09地址内写入数据0xDB,主站使用的M序列类型为Type2。
0x52 xor 0x39 = 0x6B
0x6B xor 0x80 = 0xEB
0xEB xor 0xDB = 0x30
0x30 = 0011 0000
b5_ck = 0 xor 1 xor 0 xor 0 = 1
b4_ck = 0 xor 1 xor 0 xor 0 = 1
b3_ck = 0 xor 0 = 0
b2_ck = 1 xor 1 = 0
b1_ck = 0 xor 0 = 0
b0_ck = 0 xor 0 = 0
checksum = 110000 = 0x30
最后将checksum6位与M序列类型的2位组合成CKS字节:0xB0。因此,最终的M序列内容为:0x39,0xB0,0xDB。从站在验证时步骤相同,也是从异或种子执行异或开始,需要注意点是,需要将CKS字节中的checksum6位清零,得到有效的M序列类型0x80数值进行计算。
因为还没有介绍更加复杂的ISDU传输,所以这里所有示例全都是基于直接参数页2的读写交互,这样交互信息也更加简洁清晰。 指定向直接参数页2的第9个地址写入数据0xDB与获取数据。假设PD为单字节0x35或双字节0x2766。可变长度PD从0x01开始每次加0x05。从站无事件且PD有效(0x00)
以Type_0类型为例:
主站写:0x39,0x18,0xDB 从站回:0x2D 主站读:0xB9,0x06 从站回:0xDB,0x1B
以Tyoe_1_2类型为例:
主站写:0x39,0x40,0xDB,0x00 从站回:0x2D 主站读:0xB9,0x6E 从站回:0xDB,0x00,0x1B
以Type_1_1类型为例:
主站写:0x39,0x7F,0x27,0x66 从站回:0x2D 主站读:0xB9,0x6E 从站回:0x27,0x66,0x24
以Type_2_1类型为例:
主站写:0x39,0xB0,0xDB 从站回:0x35,0x1E 主站读:0xB9,0xAE 从站回:0xDB,0x35,0x28
以Type_2_2类型为例: 主站写:0x39,0xB0,0xDB 从站回:0x27,0x66,0x24 主站读:0xB9,0xAE 从站回:0xDB,0x27,0x66,0x22
以Type_1_v类型为例,8个字节OD
主站写:0x39,0x40,0xDB,0x00,0x00,0x00,0x00,0x00,0x00,0x00 从站回:0x2D 主站读:0xB9,0x06 从站回:0xDB,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1B 以Type_2_v类型为例,8个字节OD,8字节PD 主站写:0x39,0xB6,0x01,0x06,0x0B,0x10,0x15,0x1A,0x1F,0x24,0xDB,0x00,0x00,0x00,0x00,0x00,0x00,0x00 从站回:0x01,0x06,0x0B,0x10,0x15,0x1A,0x1F,0x24,0x2B 主站读:0xB9,0xAE 从站回:0xDB,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x06,0x0B,0x10,0x15,0x1A,0x1F,0x24,0x1D
以上是本节的全部内容,如果各位读者仍然存在疑惑可以私信发送问题,笔者会一一解答并积累一期文章的内容更新出来。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。