发明名称 一种适用于智能车的多节点协调通信方法
摘要 本发明涉及一种适用于智能车的多节点协调通信方法。本发明包括一个中心节点和若干普通节点,其中每个节点都是由智能车主控芯片和射频收发芯片组成。中心节点是系统的控制中心,负责为新加入的节点分配一个独立的ID和定时检测系统内其他节点状态,其他功能用户可以根据需求自行设定。普通节点在刚刚进入系统时需要向中心节点申请ID,并以此设置自己的硬件地址,以便和系统内其他节点通信。将某个节点设置成中心节点或是普通节点,需要用户指定,并保证系统内有且只有一个中心节点。本发明中新加入系统的车辆能动态的分配ID,保证不会重复,无需用户手动设置每一个节点的地址,使用方便。
申请公布号 CN102437903B 申请公布日期 2014.03.05
申请号 CN201110220474.3 申请日期 2011.08.03
申请人 杭州电子科技大学 发明人 曾虹;申兴发;赵备;刘鹏;张建辉;吴以凡
分类号 H04L1/16(2006.01)I;H04L29/12(2006.01)I 主分类号 H04L1/16(2006.01)I
代理机构 杭州求是专利事务所有限公司 33200 代理人 杜军
主权项 一种适用于智能车的多节点协调通信方法,其特征在于该方法包括以下步骤:步骤1.根据用户需求,将节点设置成中心节点或者普通节点,如果是中心节点,则转到步骤2,如果是普通节点,则转到步骤3;步骤2.中心节点处理,包括以下步骤:步骤2‑1.将自己的地址设置为控制节点的地址,设置检测定时器,转到步骤2‑2;步骤2‑2.检测是否有数据中断,收到数据中断则转到步骤2‑3,否则转到步骤2‑5;步骤2‑3.检查是否是数据请求,有数据请求转到步骤6,处理完成后返回步骤2‑2;否则转到步骤2‑4;步骤2‑4.检查是否是ID请求,有ID请求转到步骤8,处理完成后返回步骤2‑2;否则丢弃数据包,直接返回步骤2‑2;步骤2‑5.检查是否有数据需要发送,需要数据转到步骤2‑6,否则转到步骤2‑7;步骤2‑6.发送一个数据包转到步骤4,发送多个数据包转到步骤5,处理完成后返回步骤2‑2;步骤2‑7.检测是否收到检测定时中断,收到检测定时中断则进行车辆检测,更新车辆状态信息完成后返回步骤2‑2,否则直接返回步骤2‑2;步骤3.普通节点处理,包括以下步骤:步骤3‑1.转到步骤7,申请ID成功后转到步骤3‑2,否则根据用户需求进行相应操作或停止运行;步骤3‑2.检测是否有数据中断,收到数据中断则转到步骤3‑3,否则转到步骤3‑5;步骤3‑3.检查是否是数据请求,是转到步骤6,处理完成后返回步骤3‑2;否 转到步骤3‑4;步骤3‑4.检查是否是中心节点的检测请求,是则回复确认包,处理完成后返回步骤3‑2;否则丢弃数据包,直接返回步骤3‑2;步骤3‑5.检查是否有数据需要发送,有转到步骤3‑6,否则转到步骤3‑2;步骤3‑6.发送一个数据包转到步骤4,发送多个数据包转到步骤5,处理完成后返回步骤3‑2;步骤4.发送一个数据包,包括以下步骤:步骤4‑1.将控制信息和数据写入数据包,计数器counter初始化为10,转到步骤4‑2;步骤4‑2.向目的节点发送数据包,转到步骤4‑3;步骤4‑3.在规定的时间间隔内收到向目的节点发送的数据包则转到步骤4‑4,否则转到步骤4‑6;步骤4‑4.检查数据包是否来自目的节点,是转到步骤4‑5,否则发送拒绝信息,转到步骤4‑3;步骤4‑5.检查数据包的控制信息,如果目的节点确认发送成功则发送成功,否则发送失败,返回发送状态;步骤4‑6.counter减一,如果counter大于0,返回步骤4‑2,否则发送失败,返回发送状态;步骤5.发送多个数据包,包括以下步骤:步骤5‑1.将控制信息写入数据包,计数器counter初始化为10,转到步骤5‑2;步骤5‑2.向目的节点发送数据包,转到步骤5‑3;步骤5‑3.在规定的时间间隔内收到向目的节点发送的数据包则转到步骤5‑4,否则转到步骤5‑6;步骤5‑4.检查数据包是否来自目的节点,是转到步骤5‑5,否则发送拒绝信息,转到步骤5‑3;步骤5‑5.检查数据包的控制信息,如果目的节点确认发送,则转到步骤5‑7;否则发送失败,返回发送状态;步骤5‑6.counter减一,如果counter大于0,返回步骤5‑2,否则发送失败,返回发送状态;步骤5‑7.counter设置为10,start_num设置为0,转到步骤5‑8;步骤5‑8.分包发送序号在start_num以后的数据转到步骤5‑9;步骤5‑9.在规定时间内收到数据包转到步骤5‑10,否则转到步骤5‑13;步骤5‑10.数据包是否来自目的节点,是则转到步骤5‑11,否则发送拒绝信息,转到步骤5‑9;步骤5‑11.如果接收方确认发送成功,则发送成功,返回发送状态;否则转到步骤5‑12;步骤5‑12.根据目的节点的回复,设置start_num,转到步骤5‑8;步骤5‑13.counter减一,如果counter大于0,返回步骤5‑8,否则发送失败,返回发送状态;步骤6.接收数据,包括以下步骤:步骤6‑1.检查缓冲区状态,如果缓冲区加锁,回复发送方一个拒绝包,返回上一级,否则转到步骤6‑2;步骤6‑2.检查要接收多少个数据包,接收一个数据包转到步骤6‑3,否则转到步骤6‑4;步骤6‑3.回复发送节点,接收成功,将数据保存到缓冲区,缓冲区加锁,data_ready置为1,返回上一级;步骤6‑4.回复发送节点,确认可以发送,转到步骤6‑5;步骤6‑5.设置counter为10,转到步骤6‑6;步骤6‑6.在规定的时间间隔内收到数据包,转到步骤6‑7,否则转到步骤6‑11;步骤6‑7.检查是否是发送方发送的数据包,是则转到步骤6‑8,否则发送拒绝包,转到步骤6‑6;步骤6‑8.根据数据包控制字段的序号,将数据存到缓冲区相应的位置,转到步骤6‑9;步骤6‑9.判断是否收到全部数据,是则转到步骤6‑10,否则返回步骤6‑6;步骤6‑10.回复发送方,确认收到全部数据,将缓冲区加锁,将data_ready置1,接收成功,返回上一级;步骤6‑11.counter减一,如果counter大于0,向发送方发送需要重新发送的首个字节的序号,转到步骤6‑6;否则接收失败,返回上一级;步骤7.申请ID,具体包括以下步骤:步骤7‑1.检查自己是否是初始节点,是则转到步骤7‑2,否则设置失败,返回申请状态;步骤7‑2.将counter置为10,转到步骤7‑3;步骤7‑3.向中心节点发送ID申请;步骤7‑4.在规定的时间内收到数据中断则转到步骤7‑5,否则转到步骤7‑8;步骤7‑5.判断是否是中心节点的回复,是则转到步骤7‑6,否则回复一个拒绝包,返回步骤7‑4;步骤7‑6.判断中心节点是否同意设置ID,是则转到步骤7‑7,否则设置失败,返回设置状态;步骤7‑7.根据收到的数据包设置自己的地址,设置完成后向中心节点回复确认包,返回设置状态;步骤7‑8.counter减一,如果counter大于0,转到步骤7‑3;否则发送失败,返回发送状态;步骤8.回复ID,具体包括以下步骤:步骤8‑1.检查自己是不是中心节点,是则转到步骤8‑2;否则发送拒绝包,返回上一级;步骤8‑2.检查系统中车辆数有没有超过限制,是则拒绝申请方的申请,返回上一级;否则转到步骤8‑3;步骤8‑3.counter设为10,根据系统内车辆状态确定新来节点的ID为new_ID,转到步骤8‑4;步骤8‑4.向新来节点发送ID数据,转到步骤8‑5;步骤8‑5.在规定的时间内收到数据包则转到步骤8‑6,否则转到步骤8‑7;步骤8‑6.检查数据包是否是new_ID的节点发送的,是则表明ID设置成功,返回上一级,否则发送拒绝包,转到步骤8‑5;步骤8‑7.counter减一,如果counter大于0,转到步骤8‑4,否则设置失败,返回上一级。
地址 310018 浙江省杭州市下沙高教园区2号大街