打印
[开发工具]

控制器双冗余系统

[复制链接]
楼主: goodluck09876
手机看帖
扫描二维码
随时随地手机跟帖
21
goodluck09876|  楼主 | 2019-7-3 12:42 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
    在该方案中,两控制器均与接口模块连接,通过IO标志位来表示当前控制
器的身份(是主控制器还是备控制器),同时接口模块与CAN总线连接,两控
制器在每个工作周期都会将自身的数据处理结果通过串口发送给接口模块,由接
口模块决定哪个控制器输出的数据将发送到总线上,这样即使备用控制器判断失
误也不会导致数据重复发送到总线上。
    在此硬件基础上,本方案仍然采用软件编程的方式,即软冗余的方式来检测
对方控制器的工作状态,完成控制器的切换。与方案一类似,仍然采用热冗余的
方式工作,两个控制器同时工作,互相监测对方的工作状态,每个工作周期定时
交换数据,并且在数据后附加CRC校验码。若备用控制器检测到数据不完整或
校验结果不为O(CRC校验结果为0时表示数据传输正确,若不为0表示错误),
发送数据错误的通知给主控制器。主控制器接到此通知会将带有校验位的数据发
送给接口模块,由接口模块再进行一次校验。
    若校验结果为0,则表示主控制器的数据正确,而备用控制器判断失误,此
时,由接口模块将数据正常发送到CAN总线,备控制器在一定时间内未接到切
换命令,自动将错误计数器加8(数据判断正确时计数器减8)。若检验结果不为
0,则表示数据确实错误,立即发送切换指令,准备重新接收数据。此时原备用
控制器报警,并改为单机工作方式。
    若主控制器检测到备用控制器的错误计数器值大于等于16(即连续两次判
断错误),则由主控制器报警,使备用控制器停止工作,主控制器改为单机工作。

使用特权

评论回复
22
goodluck09876|  楼主 | 2019-7-3 12:42 | 只看该作者
    与方案一类似,并不是出现任何故障控制器都会切换,只有出现如下故障时
控制器才会切换或报警:
      (1)掉电;
      (2)控制器本身出现硬件故障;
      (3)控制器之间的链接出现故障。
    若备控制器检测出主控制器出现故障(1)或故障(2),则将此结果发送给
接口模块,由接口模块进行再一次的检测。当接口模块接收到备用控制器发送的
通知后,接口模块会询问当前主控制器目前的工作状态。若主控制器处于正常工
作状态,则接口模块将忽略备控制器的通知,而备控制器若在一定时间内没有收
到接口模块的回复的话,就认定自己判断失误,主控制器仍然处于正常工作状态,
将自身的错误计数器加8,如果判断正确此计数器的值将清零;若主接口模块真
的出现故障则由接口模块发送通知给备用控制器,通知其判断正确。如此便能防
止控制器的误切换。
    若检测出故障(3),则两控制器均会报警,备控制器也会切换为主控制器,
但是由于只是控制器之间的链接出现故障,而控制器本身并没有出现故障,则接
口模块仍然将原主控制器的输出发送到总线上,此状态一直维持到工作人员来维
修系统。

使用特权

评论回复
23
goodluck09876|  楼主 | 2019-7-3 12:46 | 只看该作者
    方案二基本符合设计要求,同时也兼顾了可能出现的某些问题,但是还有一
个方面有所欠缺,即如果接口模块坏掉将导致整个系统瘫痪,这种由于设计本身
所引入的潜在故障进而造成系统瘫痪的情况是设计者不乐于见到的,考虑到这个
问题,课题再一次改进了方案,在方案三中不仅兼顾了上面可能出现的各种问题,
同时也完善了整个系统的设计,确定为最终的方案。
    方案三的设计框图如图2-3所示,该方案中的硬件冗余如下:
    (1)控制器冗余;
    (2)最小系统及报警装置冗余;
    (3)接口模块冗余。

使用特权

评论回复
24
goodluck09876|  楼主 | 2019-7-3 12:46 | 只看该作者
    在方案三中,每个控制器都连接一个接口模块,接口模块都连接到总线上,
控制器之间会定时发送心跳信号以确保对方是否处于正常工作状态,每个工作周
期都会进行数据传输,在数据的末端会添加CRC校验符,确保数据传输的正确
性与完整性。与前面几个方案类似,本方案是在上述的硬件冗余基础上,采用对
软件程序的编写的方式来实现冗余技术的关键,即监测对方控制器的状态和完成
控制器的切换。
    如前所述,并不是出现任何故障控制器都会切换,只有当出现如下故障时控
制器会切换或报警:
    (1)掉电;
    (2)控制器本身出现硬件故障;
    (3)接口模块出现故障。
    当备控制器与主控制器的通讯出现问题时,备控制器将通过与主控制器之间
的所有连接进行最终的确认,若所有通讯方式均无效,则可以认定主控制器目前
可能掉电,备控制器将报警并将相应的故障指示灯点亮。若通过检测发现接口模
块工作正常而控制器工作不正常,则说明可能出现故障(2),此时备控制器将报
警并点亮相应的故障指示灯。两个接口模块通讯或接口模块检测总线数据时,如
若备用接口模块发现主接口模块出现问题,将通知备用控制器,备用控制器再请
求主控制器做判断。
    除此之外,还存在一些设计本身可能引入的潜在故障,对于此类故障的处理
也都将通过软件的方式检测及处理。
    至此,本文的最终设计方案选定为方案三,在下文中将对该方案进行详尽的
介绍。

使用特权

评论回复
25
goodluck09876|  楼主 | 2019-7-3 12:47 | 只看该作者
    就目前国内控制器应用领域来看,属可编程逻辑控制器FPGA, CPLD, ARM
系列控制器和AV R单片机等占主导地位,本设计的重点是软件部分的设计,而
硬件只是用于验证软冗余功能,故在成本上可以尽量缩减。由于FPGA和CPLD
价格较贵,暂时不作为选择。ARM系列控制器和AV R单片机各有优缺点,笔者
更青睐于ARM系列的控制器,故本设计选择的是ARM系列的控制器。
    综合各方面因素,最终选择ST(意法半导体)公司的STM32F103系列的微
控制器,该系列控制器具有丰富的片上资源,如CAN, USART,  SPI, DMA及
丰富的IO口,足够满足需求。

使用特权

评论回复
26
goodluck09876|  楼主 | 2019-7-3 12:47 | 只看该作者
    接口模块的核心是控制器,该控制器的主要任务是负责CAN总线通信,将
从总线接收到的数据发送给本地的控制器,将从本地控制器接收到的数据发往
CAN总线上。在芯片的选择上仍然是在FPGA和STM32微控制器之间抉择,由
于FPGA成本较高,且其在本设计中能实现的功能STM32微控制器均能实现,
且成本相差悬殊,在设计难度上也有所降低。故接口模块的核心控制器仍然选择
STM32F103系列控制器。如2.4.1所述,该控制器内部集成了CAN控制器,所
以本设计中的CAN控制器选用该芯片内部集成的,不仅简化硬件设计而且节省
成本。

使用特权

评论回复
27
goodluck09876|  楼主 | 2019-7-3 12:49 | 只看该作者
    CAN总线的标准化协议有两种,包括IS011898标准和ISO 11 _519-2标准两
种,IS011898是通信速度为12_SKbps-1Mbps的高速通信标准,IS O 11 _519-2是
CAN低速通信标准,其通信速度在12_SKbps以下。这两种标准虽然在数据链路
层上的定义相同,但是物理层上的定义却不同。
    这两种标准在物理层上的定义不同点如表2-1所示。根据不同标准所列出的
不同的CAN收发器如表2-2所示,由表可见,基于高速标准的CAN收发器明显
多于低速标准的收发器,由于本设计是近距离的CAN总线传输,且要求通讯速
度不得低于2_SOkbps,所以需要选择告诉高速标准的CAN收发器,在高速标准
的收发器中,通过斟酌各收发器的特点,最终选择了CTM 10_50收发器。

使用特权

评论回复
28
goodluck09876|  楼主 | 2019-7-3 12:52 | 只看该作者

使用特权

评论回复
29
goodluck09876|  楼主 | 2019-7-3 12:54 | 只看该作者
    该控制器采用Cortex-M3内核,有三条总线将内核与外设相连接。
Cortex-M3闪存的指令总线与内核的指令总线通过ICode总线相连接,在该总线
上将完成指令的预取。Cortex-M3闪存的数据接口与内核的DCode总线通过
DCode总线相连接,用于常量加载和调试访问。Cortex-M3内核的总线矩阵与系
统总线通过系统总线相连接,其中总线矩阵协调着内核与DMA的访问。AHB
外设与系统总线通过总线矩阵相连接,AHB通过两个AHB桥和两个APB总线
之间相连接,APB1总线上的设备最高时钟为36MHz,而APB2总线上的设备可
以全速运行,即以系统的时钟为准,最高时钟可达72MHz o

使用特权

评论回复
30
goodluck09876|  楼主 | 2019-7-3 12:55 | 只看该作者
      (1)电源设计STM32F103RBT6控制器的工作电压(VDD)是2.0}3.6V o
所需的1.8V电源可以通过内置的电压调节器提供。如果主电源掉电,则备份寄
存器和实时时钟的时钟将通过VBaT脚提供。根据单片机的供电需求,设计中为
单片机提供3.3 V的供电电压,考虑到板上其他设备的供电和电源的通用性,整
个电路板采用_5 V的输入电源,通过电压转换芯片AS 1117-3.3转换成3.3 V电压
供给单片机,实际验证通过该电路给单片机供电,单片机运行正常,具体电路如
图3-2所示。

使用特权

评论回复
31
goodluck09876|  楼主 | 2019-7-3 12:55 | 只看该作者

使用特权

评论回复
32
goodluck09876|  楼主 | 2019-7-3 12:56 | 只看该作者
STM32的时钟可以由3种不同的时钟源为其提供系统时
钟。HSI振荡器时钟、HSE振荡器时钟和PLL时钟。HSI时钟是由芯片内部的
RC震荡电路产生的8MHz的时钟信号,在此模式下不需要采用任何的外部时钟
源,同时启动时间也较外部时钟短,但是HSI的时钟频率精度即使在校准后也
仍然很差。在采用外部时钟源的模式下,用户必须提供外部时钟,最高频率可达
2_SMHz o PLL时钟需要HSI或HSE时钟为其提供时钟源,PLL时钟可经过2一16
倍的倍频输出作为系统时钟,但是倍频后的时钟不能超过72MHz}22}。在本设计
中选择的是采用外部时钟源的模式,再通过PLL进行倍频输出作为系统时钟。
外部时钟源采用8MHz晶振,直接作为PLL的输入时钟,经PLL的9倍频后产
生72MHz的系统时钟。故该系统的系统时钟为72MHz o

使用特权

评论回复
33
goodluck09876|  楼主 | 2019-7-3 12:56 | 只看该作者
    由于两控制器之间需要交换数据,定期发送心跳信号。所以在硬件上两个控
制器的串口1互相对接,串口2也互相对接。串口1用于每个工作周期的数据同
步,串口2用于发送心跳信号。在发送心跳信号时,双方之间采用应答的模式,
若本地接收到心跳信号,需要给对方一个回应,此回应信号通过串口2传递。若
两控制器中有一个控制器进入故障诊断模式,需要通知另一个控制器也进入故障
诊断模式,该消息通过IO口传递,收到通知的一方也需要回复,所以将两控制
器之间的PC 10和PC 11对接。具体链接如图3-3所示。

使用特权

评论回复
34
goodluck09876|  楼主 | 2019-7-3 12:57 | 只看该作者
    在接口模块的硬件设计上,由于其核心控制芯片与系统控制器是同一种型号
的控制器,所以其最小系统设计完全相同,两个控制器芯片公用电源。设计此处
复位电路时做了两方面的准备,由于担心一个复位芯片不能同时给两个芯片复位,
所以原理图上画了两路复位,一路是两个STM32公用复位芯片,另一路是每个
STM32都接有自己的复位芯片。在时钟电路的设计上,为了防止一个晶振同时
给两个单片机提供时钟源时单片机不起振,接口模块的STM犯接有自己的晶振。
如图3-4所示。

使用特权

评论回复
35
goodluck09876|  楼主 | 2019-7-3 14:53 | 只看该作者
    接口模块与本地控制器的通讯链接如图3-4所示,通过串口3进行数据传输。
当本地控制器确认完身份(以主控制器工作还是备控制器工作)将相应标志位置
位(高电平有效)。MAS标志位置“1”表示本地控制器是主控制器,RES标志
位置“1”表示本地控制器是备控制器,ALONE标志位置“1”表示本地控制器将
以单机工作模式工作,单机工作模式是指另一个控制器未工作,只有当前一套系
统工作。

使用特权

评论回复
36
goodluck09876|  楼主 | 2019-7-3 14:54 | 只看该作者
STM犯内部集成了双CAN控制器,CAN 1是主
CAN, CAN2是从CAN, CAN1主要负责管理从CAN与SRAM之间通信,CAN2
不能直接访问SRAM,这两个CAN将共享SRAM存储器。在接口模块中只需要
一个CAN控制器,所以只用CAN 1。关于CAN收发器的选择,如2.4.3小节所
述,CAN收发器选用的是符合IS011898高速标准的CTM10_SOCAN收发器,其
实物图和内部结构如图3-_5所示。由于此收发器内部集成了隔离的电路,所以不
需要增加额外的隔离电路,只需将收发器的数据收、发端分别与CAN控制器的
收、发引脚相连即可,具体链接如图3-6所示。

使用特权

评论回复
37
goodluck09876|  楼主 | 2019-7-3 14:54 | 只看该作者
    接口模块除了具有上述功能外,两个接口模块之间还需互相检测对方的运行
状态,确保对方接口模块工作正常也是接口模块的一项任务。每个工作周期两个
接口模块之间也需互相通信,当接收到本地控制器传输的数据时,主控制器所链
接的接口模块会发送通知给备用的接口模块,之后主控的接口模块将数据传输到
总线,而备用的接口模块在接收到本地控制器传输的数据后,等待主接口模块的
通知,若收到通知,则回应对方一个信号,该信号是将相应的IO标志位置“1"
对方接收到该信号时,认为备用接口模块目前也是工作正常的。具体的硬件链接
电路如图3-7所示。串口1用于接口模块之间监测信号的传输和故障诊断时指令
的传输,PB 12和PB 13用于监测信号的应答。

使用特权

评论回复
38
goodluck09876|  楼主 | 2019-7-3 14:57 | 只看该作者

使用特权

评论回复
39
goodluck09876|  楼主 | 2019-7-3 14:59 | 只看该作者

使用特权

评论回复
40
goodluck09876|  楼主 | 2019-7-3 15:01 | 只看该作者
    控制器双冗余系统中故障诊断与处理是其关键技术之一,也是本设计的重点
之一。在出现故障后,能否准确定位故障所在是故障诊断的难点所在,只有准确
定位故障才能做出正确的反应,并将此信息直观的反应给用户。
    报警及故障指示电路的主要作用是当故障诊断程序确定故障后,进行报警并
将相应的故障指示灯点亮,使用户知道是何种故障造成系统出现问题。为了验证
出现故障时故障诊断及处理程序能够准确定位故障,并做出正确指示,在电路上
相应位置设置了断点,用以模拟故障。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则