关 闭

新闻中心

EEPW首页>工控自动化>设计应用> 基于STM32F105微控制器的双CAN冗余设计方案

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

作者: 时间:2011-06-08 来源:网络 收藏

本文引用地址://m.amcfsurvey.com/article/161991.htm

  2 软件

协议规范定义的数据链路层和部分物理层并不完整, 双冗余应用需要实现总线状态监控、网络故障的诊断和标识, 这就要通过添加软件冗余模块来实现。冗余模块在程序主循环中调用, 根据不同总线错误状态执行收发通道切换。总线错误状态分为3类: 错误激活、错误认可、总线关闭。总线正常工作时处于错误激活状态,检测到错误后将发送/接收错误计数器的值递增, 当值大于127时进入错误认可, 大于255时总线关闭状态, CAN 总线错误检测模块通过读取错误状态寄存器作为总线故障的测试条件, 在错误状态发生改变时调用冗余算法, 执行总线切换操作。

  通过实际调试发现, 总线连接断开且只有1个节点不断发送报文时产生发送错误,进入错误认可状态, 但不进入总线关闭状态; 其它错误均使错误计数器增加, 依次进入错误认可状态、总线关闭状态, 后两种状态表明总线被严重干扰, 需要采取相应措施。为简化控制逻辑将错误认可和总线关闭合并为总线故障。

  冗余算法使用状态机实现发送模式的切换, 根据不同总线故障选择发送使用的总线。状态切换流程图如图2所示, 程序首先读取错误状态寄存器获得总线错误状态, 判断当前总线是否处于错误激活模式, 若检测到总线故障程序置相应标志位向其他程序模块指示错误。为提高报文发送效率, 发送程序一次将多个报文写入发送邮箱由硬件控制自动发送, 在切换总线时, 需先把故障总线发送邮箱中的报文中回读, 通过备份总线优先发送, 这一机制保证报文不会因总线切换而丢失。向故障总线发送数据域为空的测试报文, 每成功发送1报文, 总线发送错误计数器的值递减, 直至其值小于128总线恢复到错误被动状态; 每隔一定时间冗余程序读取错误状态寄存器, 检测故障总线是否恢复正常。

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

总线状态切换流程图

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

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

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

CAN 总线可靠性模型图

图3 CAN 总线可靠性模型图

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

pid控制器相关文章:pid控制器原理




评论


相关推荐

技术专区

关闭