在2总线同时传输模式, 发送程序优先写入总线1邮箱, 当总线1邮箱满时写入总线2的邮箱, 由于报文按优先级仲裁发送, 若某一路发送邮箱经常为空, 说明该路总线通信流量较小, 发送程序将较多报文转由空闲总线发送, 实现报文的负载均衡。

基于STM32F105微控制器的CAN接口电路设计

图2 总线状态切换流程图。

3 双总线冗余的可靠性分析与测试

对双CAN 冗余系统的可靠性进行定量分析, 引入平均无故障运行时间(M ean T ime To Fa ilure, MTTF)的概念。MTTF描述一个系统从开始工作到发生故障的时间间隔, 也即平均寿命。为简化分析作如下假设: 每路CAN总线的故障率相同; CAN 总线的损坏属于物理损坏, 即不可修复的损坏。指数分布可以很好地用来描述电子元器件的寿命, 假设CAN总线的寿命分布服从指数分布, CAN 总线的可靠性模型如图3所示。

基于STM32F105微控制器的CAN接口电路设计

图3 CAN 总线可靠性模型图

模型1为单总线的可靠性模型, 因为总线寿命服从指数分布, 根据单一CAN总线无故障运行时间MTTF1 = 1 /λ。模型2为双CAN总线冗余可靠性模型, 系统由两条独立的总线并联而成, 即只有当这2条总线都失效时系统通信才会失败, 于是系统的平均寿命MTTF2 = 3 /2。采用双线冗余设计使CAN 通信的平均无故障时间增加了50%。

双线CAN 冗余系统的另一关键指标是总线切换时间, 它等于检测错误所需时间与处理故障总线未发送报文所需时间之和, 切换时间越短, 总线故障对报文传输造成的延迟就越小。检测错误所需时间,即从总线错误出现到被冗余程序检测到所需的时间。以总线断开故障为例, 发送器每发送一个报文产生一次应答错误, 错误计数器每次加8, 需连续进行16次发送, 使错误计数器值达到128引起总线切换。在位速率125kbps情况下, 发送最长为128位的报文, 若忽略控制器重发间隔时间, 从故障发生到被检测到的响应时间为:

为避免在总线切换时丢失报文, 冗余算法需回读故障控制器中未发送报文, 由此产生额外的故障处理时间, 因为每个发送邮箱最多存储3个报文, 假定位速率125kbps不变, 备份总线发送时即取得仲裁,最长故障处理时间为:

因此总线切换时间为16. 38+ 3. 07= 19. 45m s。