CN102437903A - 一种适用于智能车的多节点协调通信方法 - Google Patents

一种适用于智能车的多节点协调通信方法 Download PDF

Info

Publication number
CN102437903A
CN102437903A CN2011102204743A CN201110220474A CN102437903A CN 102437903 A CN102437903 A CN 102437903A CN 2011102204743 A CN2011102204743 A CN 2011102204743A CN 201110220474 A CN201110220474 A CN 201110220474A CN 102437903 A CN102437903 A CN 102437903A
Authority
CN
China
Prior art keywords
forwards
packet
returns
data
node
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2011102204743A
Other languages
English (en)
Other versions
CN102437903B (zh
Inventor
曾虹
申兴发
赵备
刘鹏
张建辉
吴以凡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Dianzi University
Original Assignee
Hangzhou Dianzi University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Dianzi University filed Critical Hangzhou Dianzi University
Priority to CN201110220474.3A priority Critical patent/CN102437903B/zh
Publication of CN102437903A publication Critical patent/CN102437903A/zh
Application granted granted Critical
Publication of CN102437903B publication Critical patent/CN102437903B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Mobile Radio Communication Systems (AREA)

Abstract

本发明涉及一种适用于智能车的多节点协调通信方法。本发明包括一个中心节点和若干普通节点,其中每个节点都是由智能车主控芯片和射频收发芯片组成。中心节点是系统的控制中心,负责为新加入的节点分配一个独立的ID和定时检测系统内其他节点状态,其他功能用户可以根据需求自行设定。普通节点在刚刚进入系统时需要向中心节点申请ID,并以此设置自己的硬件地址,以便和系统内其他节点通信。将某个节点设置成中心节点或是普通节点,需要用户指定,并保证系统内有且只有一个中心节点。本发明中新加入系统的车辆能动态的分配ID,保证不会重复,无需用户手动设置每一个节点的地址,使用方便。

Description

一种适用于智能车的多节点协调通信方法
技术领域
本发明属于计算机应用技术领域,涉及一种适用于智能车的多节点协调通信方法。 
背景技术
在智能车的调试和运行过程中,需要对小车的参数进行实时采集处理,车与车之间、车与中心节点需要通信,传输相关数据。目前许多应用领域都采用无线的方式进行短距离数据传输,这些领域涉及小型无线网络、无线抄表、门禁系统、小区传呼、工业数据采集系统、无线遥控系统、无线标签身份识别、非接触RF智能卡等。同样,无线通信适用于位置、速度不断改变的智能车。
发明内容
本发明的目的在于针对智能车在运行中实时信息的传输、以及车辆不断进入或退出系统的动态性,设计一种能够为新来车辆分配ID、定时检测车辆状态并且保证可靠数据传输的通信协议。
本发明的系统包括:一个中心节点和若干普通节点,其中每个节点都是由智能车主控芯片和射频收发芯片组成。中心节点可以看作是系统的控制中心,负责为新加入的节点分配一个独立的ID和定时检测系统内其他节点状态,其他功能用户可以根据需求自行设定。中心节点一般不用于智能车,而是管理系统内的智能车运行情况。普通节点在刚刚进入系统时需要向中心节点申请ID,并以此设置自己的硬件地址,以便和系统内其他节点通信。将某个节点设置成中心节点或是普通节点,需要用户指定,并保证系统内有且只有一个中心节点。
本发明方法包括如下步骤:
步骤1:根据用户需求,将节点设置成中心节点或者普通节点,中心节点转到步骤2,普通节点转到步骤3。
步骤2:(中心节点)
步骤2-1:将自己的地址设置为控制节点的地址,设置检测定时器,转到步骤2-2。
步骤2-2:检测是否有数据中断,收到数据中断则转到步骤2-3,否则转到步骤2-5。
步骤2-3:检查是否是数据请求,是转到步骤6,处理完成后返回步骤2-2;否则转到步骤2-4。
步骤2-4:检查是否是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:检查数据包是否是ID是new_ID的节点发送的,是则表明ID设置成功,返回上一级,否则发送拒绝包,转到步骤8-5。
步骤8-7:counter减一,如果counter大于0,转到步骤8-4,否则设置失败,返回上一级。
相对于现有技术,本发明的有益效果:
新加入系统的车辆能动态的分配ID,保证不会重复,无需用户手动设置每一个节点的地址,使用方便。
通过几次握手保证了数据的可靠传输,避免了无线传输过程中的数据丢失。
中心节点定期进行车辆状态监测,随时更新系统内车辆状态,删除退出系统的车辆,可以减少不必要的通信。
使用缓冲区暂存数据并对其加锁,可以不影响用户的其他操作,只需要在空闲的时候去查看缓冲区状态即可。
中心节点不仅能为新来节点分配ID,监测系统内车辆状态,用户还可以根据需要,使之记录道路信息,对普通节点发出命令,从而控制系统的车流量。
附图说明
图1是本发明主流程图。
图2是中心节点工作流程图。
图3是普通节点工作流程图。
图4是发送方发送一个数据包的流程图。
图5是发送方发送多个数据包的流程图。
图6是接收方接收一个数据包的流程图。
图7是接收方接收多个数据包的流程图。
图8是新加入的节点申请ID流程图。
图9是中心节点回复ID的流程图。
具体实施方式
以下结合附图对本发明作进一步说明。
系统所采用的收发芯片是Nordic公司推出的无线收发一体芯片nRF2401,其具有外围电路简单、通信速率高、通信质量稳定可靠、成本低、开发周期短等优点。nRF2401具有两种收发模式,其中ShockBurstTM模式有三大好处:尽量节能;低的系统费用(低速微处理器也能进行高速射频发射);数据在空中停留时间短,抗干扰性高。同时还能减少软件开发周期。本协议采用nRF2401的ShockBurstTM模式,但是该模式下数据包的长度固定,一经配置就不方便改变,所以芯片每次收发以数据包为单位。
在此协议中,通信可以分成如下四种方式:
(1)发送数据,数据长度较小,一个数据包就可以完成发送
(2)发送数据,数据长度较大,需要发送多个数据包
(3)普通节点向中心节点申请ID
(4)控制节向普通节点发送检测信息
当发送方只需要发送一个数据包时,将数据放入该数据包,并向接受方发送请求,接收方收到数据后即进行确认;如果发送方不能收到接收方的确认回复,则继续发送,达到一定次数后仍收不到确认,即放弃发送;如果接收方此时正忙,需要接受其他节点的数据或者要发送数据,则拒绝发送方的请求。
当发送方需要发送多个包时,首先向接受方发送一个通知,告诉对方自己要发多少个包,如果接收方空闲,就立即回复,建立好连接,并拒绝其他节点的连接。接收方发出回复后,就等待发送方的数据,如果这期间收到其他节点的数据,就回复一个拒绝包,并丢弃当前接收到的数据包。接收方收到全部数据后回复一个确认包,若有数据包丢失,接收方回复一个重发申请,其中包含一个重发序号RS,发送方重发所以序号大于等于RS的数据,接收方收到全部数据后回复确认包。如果发送方没有收到确认包,则重发所有数据包。
当新加入的节点要申请一个ID时,向中心节点发送请求,中心节点收到请求后根据系统内车辆状态,回复一个ID,新节点收到这个ID后设置自己的硬件地址,然后必须再次回复一个确认包。
中心节点初始化之后,即开启定时器,每隔一定的时间,向系统内车辆发送检测信息,一旦受到回复即可认为该车正常运行,否则对于多次发送检测信息收不到回复的车辆,将其从系统中删除。
(二)数据包格式
在传输中,数据包分成三个部分,SRC_ADDR、CTL_INFO和DATA。SRC_ADDR用来保存发送方地址,CTL_INFO用来保存控制信息,DATA为有效数据,
SRC_ADDR CTL_INFO DATA
在每次发送数据报的时候,首先将自己的地址写入SRC_ADDR,以便接受一方能够判断通信者的身份并且有效回复。
(三)CTL_INFO格式
CTL_INFO占两个字节。最高位REQ置位时表示此数据包是请求包;次高位置位表示此数据包为应答包;第13位OK位,当发送方要发送多个数据包,向接受方发送请求时,OK代表此时接收方空闲,同意发送方发送,当接收方收到发送方的全部数据时,OK表示数据传输成功;第12位ID,表示该数据包与ID有关,申请ID或者回复ID;第11位CHECK,用于检测某个节点是否还在系统中;10~8位保留;第7到第0位NUM,当接收方发出请求时,NUM表示要发送数据的字节数,在多个数据包的发送过程中,NUM表示当前包中的首个字节的序号,如果接收方需要发送方重新发送,NUM表示要重新发送的首个字节的序号
Bit15 Bit14 Bit13 Bit12 Bit11 Bits10~8 Bits7~0
REQ ACK OK ID CHECK RESERVED NUM
(四)通信方法
在nRF2401的ShockBurstTM模式下,芯片一旦收到有效数据,就立即将DR引脚置高,可以利用该引脚触发外部中断,立即调用接收函数进行相应处理。在接收函数中,可能还需要接收数据包,所以屏蔽该中断,根据引脚状态判断数据到来。
发送方要发送数据时,则由用户自主调用发送函数进行发送。发送过程中需要接收接收方的确认,所以也要屏蔽DR引脚的中断,根据其状态判断是否有数据包收到。
当某个节点正在和其他节点连接过程中,为了不打乱时序,收到的任何请求都会拒绝,所以用户在设置普通节点和发送数据时应该注意函数的返回状态,避免不成功的设置和发送。
为了保证节点能够处理其他事务,而不是只能够进行数据传输,需要设置一个数据缓冲区buffer和一个数据标志data_ready,节点收到数据时将数据存到缓冲区,并将data_ready置1,微控制器在适当的时候去检查data_ready的状态,如果为1,则取数据。为了防止数据冲突,缓冲区需要加一把互斥锁lock,收到数据时将缓冲区加锁,并记录有效数据的长度,用户将数据取走之后解锁并清除data_ready;如果在用户取走数据之前收到其他的数据请求,由于缓冲区禁止访问,则拒绝请求。缓冲区大小不超过256字节,可以提高内存利用率,也方便处理。
结合附图进一步说明本发明方法
如图1所示,步骤1:根据用户需求,将节点设置成中心节点或者普通节点,中心节点转到步骤2,普通节点转到步骤3。
步骤2:(中心节点),参见图2
步骤2-1:将自己的地址设置为控制节点的地址,设置检测定时器,转到步骤2-2。
步骤2-2:检测是否有数据中断,收到数据中断则转到步骤2-3,否则转到步骤2-5。
步骤2-3:检查是否是数据请求,是转到步骤6,处理完成后返回步骤2-2;否则转到步骤2-4。
步骤2-4:检查是否是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
步骤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
步骤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
步骤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和图7
步骤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)参见图8
步骤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)参见图9
步骤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:检查数据包是否是ID是new_ID的节点发送的,是则表明ID设置成功,返回上一级,否则发送拒绝包,转到步骤8-5。
步骤8-7:counter减一,如果counter大于0,转到步骤8-4,否则设置失败,返回上一级。

Claims (1)

1.一种适用于智能车的多节点协调通信方法,其特征在于该方法包括以下步骤:
步骤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.检查数据包是否是ID是new_ID的节点发送的,是则表明ID设置成功,返回上一级,否则发送拒绝包,转到步骤8-5;
步骤8-7.counter减一,如果counter大于0,转到步骤8-4,否则设置失败,返回上一级。
CN201110220474.3A 2011-08-03 2011-08-03 一种适用于智能车的多节点协调通信方法 Expired - Fee Related CN102437903B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110220474.3A CN102437903B (zh) 2011-08-03 2011-08-03 一种适用于智能车的多节点协调通信方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110220474.3A CN102437903B (zh) 2011-08-03 2011-08-03 一种适用于智能车的多节点协调通信方法

Publications (2)

Publication Number Publication Date
CN102437903A true CN102437903A (zh) 2012-05-02
CN102437903B CN102437903B (zh) 2014-03-05

Family

ID=45985791

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110220474.3A Expired - Fee Related CN102437903B (zh) 2011-08-03 2011-08-03 一种适用于智能车的多节点协调通信方法

Country Status (1)

Country Link
CN (1) CN102437903B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113734194A (zh) * 2021-08-10 2021-12-03 杭州电子科技大学信息工程学院 智能车、控制系统、控制方法、计算机设备、智能终端

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101266716A (zh) * 2008-04-25 2008-09-17 港湾网络有限公司 一种基于Zigbee网络的智能车位引导系统和方法
CN101567823A (zh) * 2008-04-23 2009-10-28 三星电子株式会社 使用ZigBee的通信系统和控制该系统的方法
US20110072285A1 (en) * 2009-09-23 2011-03-24 Fischer Matthew J Method and System for No Buffered Traffic Indication for Wireless Local Area Network (WLAN) Power Save
CN102004478A (zh) * 2010-11-08 2011-04-06 湖北三江航天万山特种车辆有限公司 一种车辆多总线协调通信与控制系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101567823A (zh) * 2008-04-23 2009-10-28 三星电子株式会社 使用ZigBee的通信系统和控制该系统的方法
CN101266716A (zh) * 2008-04-25 2008-09-17 港湾网络有限公司 一种基于Zigbee网络的智能车位引导系统和方法
US20110072285A1 (en) * 2009-09-23 2011-03-24 Fischer Matthew J Method and System for No Buffered Traffic Indication for Wireless Local Area Network (WLAN) Power Save
CN102004478A (zh) * 2010-11-08 2011-04-06 湖北三江航天万山特种车辆有限公司 一种车辆多总线协调通信与控制系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113734194A (zh) * 2021-08-10 2021-12-03 杭州电子科技大学信息工程学院 智能车、控制系统、控制方法、计算机设备、智能终端
CN113734194B (zh) * 2021-08-10 2023-01-20 杭州电子科技大学信息工程学院 智能车、控制系统、控制方法、计算机设备、智能终端

Also Published As

Publication number Publication date
CN102437903B (zh) 2014-03-05

Similar Documents

Publication Publication Date Title
CN105491084B (zh) 基于ota协议的车联网系统及其控制方法
CN103064815B (zh) 一种单spi总线控制多can接口的控制方法
CN103259632B (zh) 基于续采单传模型的无线传感网络数据可靠汇聚方法
CN102946376B (zh) 一种异步通讯的实现方法
CN102098113B (zh) 基于aloha和tdma的水声传感器网络mac层协议的实现方法
EP2852101B1 (en) Method and device for data transmission in wireless local area network
CN112491842B (zh) 一种面向智慧工地的多协议物联网网关
CN102567125A (zh) 一种浏览器页面间通信的方法
CN102006322A (zh) 基于互联网实现远程抄表的方法及系统
CN109587023A (zh) 一种LoRa自组网方法及系统
CN101222430A (zh) 一种高速多协议数据传输系统和方法
CN107567107A (zh) 一种传输数据的方法及装置
CN102752720A (zh) 一种短距离无线接入冲突的避让方法
CN103517318B (zh) 一种数据发送方法、装置和系统
CN101779415A (zh) 防止对移动装置的基于tcp的拒绝服务攻击的方法
CN104202806A (zh) 发送端启动的异步无线传感器网络mac协议
CN108112086A (zh) 交互式信道通信方法
CN109922537B (zh) 无线模块及其实现方法
CN209608868U (zh) 应用于无线通信的数据链路层
CN102929830A (zh) 一种软件模拟快速通信协议
CN104080185A (zh) 一种适用于tcp/ip业务的无线资源调度方法
CN102984814A (zh) 一种大规模的gprs终端设备联网方法
CN201594284U (zh) 一键停车交费器和一键停车交费系统
CN105282785B (zh) 媒介配置时间的方法与其无线传输系统
CN102437903B (zh) 一种适用于智能车的多节点协调通信方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20140305

Termination date: 20150803

EXPY Termination of patent right or utility model