2 监控系统功能模块软件设计
2. 1 防干扰和防冲突模块设计
在数据采集与传输过程中,数据的完整性主要存 在 2 个问题:信号干扰、信号冲突。 该系统基于循环 冗余校验(CRC)方法设计防干扰模块,采用防碰撞算 法解决信号冲突问题[8] 。
2. 1. 1 防干扰模块设计 CRC 校验码利用线性编码理论[9—12] 。 在发送端 根据要发送的信息字段 k 位,以约定的规则产生一个 校验用的检验字段(即 CRC 码)r 位,附在信息字段后 面构成新的二进制码序列数(k+r)位,将新的(k+r)位 发送出去;在接收端,根据约定的规则进行检验以确 定传送中是否出错。
在数据采集与传输过程中使用的接口通讯协议 (见表 1)中,SN(数据包自增量)在 CRC 校验过程中 用来过滤重复或丢失的数据包;Head(数据包头) 内 容固定为 0x02030405,用于识别标签身份的合法性; Length 为数据包长度;DeviceID 为上传数据包的读写 器 ID;CMD 为命令代码,范围是 0x000xff; data[ ] 为 参数域;CheckSum 为 CheckSum 字节前面所有字节的 累加和模 256 的值,与 Length 共同校验数据的完整 性。
2. 1. 2 防冲突模块设计 在读写器作用范围内存在多个标签,如果同时通 信,将同时占用信道,使发送数据发生冲突,导致电子 标签间数据产生碰撞。 系统采用二进制树形搜索算 法解决标签冲突问题[13—15] ,每张标签有一个独特的 序列号(UDI),解决标签冲突问题是建立在 UDI 基础 上完成的。
二进制树形搜索算法模型见图 3,首先记录冲突 位置,并将该位置处标签分成 0 和 1 两个子集;其次 查询 0 子集,若没有冲突,则正确识别标签,若仍有冲突则再分裂,把 0 子集分成 00 和 01 两个子集,依次 类推,直到识别出子集 0 中的所有标签,再按此步骤 查询子集 1。
二进制树形搜素算法采用曼彻斯特编码。 以标 签 1———11000001,标签 2———11101011,标签 3——— 11001001 为例,二进制树形搜素算法流程如下所述。 1) 读写器会发送 11111111 命令给标签要求应 答,编码后读写器译码结果为 11X0X0X1,D1,D3,D5 位发生碰撞。 2) 将碰撞最高位 D5 置 0,高于 D5 位的不变,低 于 D5 位的置 1。 3) 读写器再次发送 11011111 给标签命令,编码 后读写器译码结果为 1100X0X1。 4) 将碰撞最高位 D3 置 0,高于 D3 位不变,低于 D3 位置 0。 5) 读写器再次发送 11000111 命令给标签,此时 标签 2 未与其他标签发生碰撞,并应答阅读器,阅读 器对标签 2 进行读写操作。 6) 重复上述过程,直到所有标签均应答读写器。 在上述过程中,会遇到已完成应答的标签再次应 答的情况,系统设置判定机制禁止标签的重复应答, 编程为: