微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于STM32F105微控制器的双CAN冗余的方案设计

基于STM32F105微控制器的双CAN冗余的方案设计

时间:11-11 来源:互联网 点击:

总线发送错误计数器的值递减, 直至其值小于128总线恢复到错误被动状态; 每隔一定时间冗余程序读取错误状态寄存器, 检测故障总线是否恢复正常。

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

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

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

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

图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。

通过实验测得在125kbps位速率下连续发送不同报文长度的总线切换时间如表1所示:

表1 总线切换时间

在125kbps位速率下切换时间为22. 80ms, 比理论计算值稍长, 这是由总线切换时运行冗余算法及读取控制器错误寄存器( ESR)所额外消耗的, 但在实际应用中, 发送报文获取仲裁所需的等待时间远大于切换时间, 总线故障并不频繁发生, 冗余切换算法对系统的运行并无显着影响。

4 结束语

与传统单片机总线外扩两片CAN 控制器的冗余方案相比, 本设计充分利用STM32F105微控制器内置的两路CAN 控制器, 简化电路设计, 相对降低了成本, 同时双CAN 冗余通信系统的采用提高了系统整体可靠性。所使用双总线负载均衡技术, 可以提高总线带宽, 平衡通信负荷。系统船舶机舱监控系统的图像和数据信号的传输中取得很好的效果。

参考文献:

[1].TJA1050datasheethttp://www.dzsc.com/datasheet/TJA1050_649182.html.
[2].ADuM1201datasheethttp://www.dzsc.com/datasheet/ADuM1201_125006.html.
[3].TJA1050Tdatasheethttp://www.dzsc.com/datasheet/TJA1050T_649183.html.

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top