操控器局域网( Contro llerA reaN etwo rk, CAN)是一种多主方法的串行通讯总线。CAN 总线具有较高的位速率, 很强的抗电磁搅扰性, 完善的过错检测机制, 在轿车、制造业以及航空工业范畴中得到广泛运用 。由于船只机舱环境极为恶劣, 且船只飞行过程中修理条件不如陆上, 对CAN 通讯的牢靠性要求很高, 采纳双CAN 冗余总线进步通讯牢靠性。本文提出一种依据STM32F105微操控器的双CAN 冗余规划计划。
1 硬件渠道组成
STM32F105是STM icroe lectron ics公司推出的一款依据ARM Co rtex- M3内核的32位微操控器, 其内核是专门规划于满意高性能、低功耗、实时运用的嵌入式范畴的要求。由于选用Thumb – 2指令集,与ARM7微操控器比较STM32运转速度最多可快35% 且代码最多节约45% 。较高的主频和代码履行功率使体系在进行CAN 总线数据收发的一起仍可运转总线冗余算法。STM32F105微操控器内部集成2路独立的CAN 操控器, 操控器集成在芯片内部, 防止了总线外扩引进的搅扰, 一起简化了电路规划、降低本钱。
体系运用两条彻底独立的CAN 总线, 两个CAN 总线收发器和总线操控器, 完结物理层、数据链路层的全面冗余。在初始化时两个操控器被一起激活, 一个作为主CAN, 另一个作为从CAN, 为主操控器的备份。正常运作时, 数据经过主CAN 优先发送; 当主CAN 总线繁忙时, 从CAN 总线分管部分通讯流量; 而当主CAN 总线产生毛病时, 数据转移至从CAN 操控器传输, 反之亦然。在任一总线产生毛病时,数据都能经由另一条总线传输, 而当两条总线都正常时, 运用两总线一起传输, 添加约1倍的通讯带宽,这样在确保了通讯牢靠性的一起进步了实时性。
CAN 总线接口电路规划如图1所示, 运用T JA1050作为总线收发器, 它完结CAN 操控器与物理总线之间的电平转化和差动收发。虽然TJA1050自身具有必定的维护才能, 但其与总线接口部分仍是选用必定的安全和抗搅扰办法; T JA1050的CANH 和CANL与地之间并联两只10pF的小电容, 能够滤除总线上的高频搅扰; 别的, 为了增强CAN 总线节点的抗搅扰才能, 总线输入端与地之间别离接入一只瞬态按捺二极管, 当两输入与地之间呈现瞬变搅扰时, 收发器输入端电压被钳位在安全规模。
为防止总线过压形成节点损坏, STM32F105内置CAN 操控器的数据收发引脚并不与TJA1050直接相连, 经过ADuM1201磁阻隔器完结信号阻隔传输。与传统光耦阻隔比较, 磁阻隔简化了阻隔电路规划, 而且磁阻隔芯片的功耗很低, 大约相当于光耦阻隔的1 /10。除了将CAN 数据信号阻隔外,TJA1050T运用的电源和地也有必要与体系彻底阻隔, 运用5V 阻隔输出的开关电源模块IB0505LS供给阻隔电源。由于CAN 总线数据传输率较高, 为了进步信号质量, 网络拓扑结构应尽量规划成单线结构以防止信号反射, 一起终端衔接120欧姆左右的匹配电阻。
图1 CAN 接口电路规划
2 软件规划
CAN 协议标准界说的数据链路层和部分物理层并不完好, 双CAN 冗余运用需求完结总线状况监控、网络毛病的确诊和标识, 这就要经过添加软件冗余模块来完结。冗余模块在程序主循环中调用, 依据不同总线过错状况履行收发通道切换。CAN 总线过错状况分为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所示。
图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.