实现几种功能,全网唤醒自组网,物理加入,物理掉线,全网休眠,自我认知到无法建网(跛足)
令牌环拓扑结构,利用了can总线的仲裁,使id从小到大顺序发送。
虽然是令牌环,但物理上是单总线,其实每个节点都知道其他所有节点状态。
用环可以减少ecu的负载,不需要维护总表,因为设备可能很多。只需要维护几个状态,自己下家是谁,全网申请休眠。
can报文id为ecu自己的id,为4XX,can报文payload有两个字节,data[1]状态字节,有5个bit管用
0x01 Alive(上线,本ecu是新加入的,或者本ecu被人跳过了)
0x02 Ring(传递令牌)
0x04 LimpHome(跛足,网络无人响应无法建环)
0x10 SleepIndication(休眠申请,本ecu想休眠了)
0x20 SleepAcknowledege(应答申请,检测到一次回环中所有报文都SleepIndication,可以休眠了)
各个bit不能任意组合实际只有5种报文
01:代表Alive报文,在总线上声明自己的存在,请求其他节点与自己建环。
02:代表Ring报文;
12:代表当前节点已无通讯请求(睡眠标志位SleepIndication置位),即告知其他节点我已满足睡眠条件;
32:即将其睡眠应答位置1,当检测到其他节点都在发送12ring报文后,最后一个节点发送