本发明涉及自动控制领域,具体而言涉及一种双CPU的冗余控制器。
背景技术:
20世纪90年代以来,随着自动化技术的发展,现代战争对系统的可靠性要求变的越来越高,武器系统的高可靠性也成为了现代武器研制的关键技术之一。冗余技术是提高系统可靠性的最有效的方法之一。冗余技术就是通过增加同等功能的冗余部件,使得当系统出现故障时,其冗余部件可以接替工作,减少系统停机时间,保证系统正常工作。冗余技术的使用使得系统运行时不受到局部故障的影响,因此广泛应用于航空、航天和工业控制领域。根据冗余度不同,冗余技术分为双冗余技术和多余度冗余技术;根据冗余部件不同,分为处理器冗余、通信冗余、I/O冗余、电源冗余等;根据冗余实现方式不同,可以分为硬件冗余和软件冗余等。随着微电子技术和大规模集成电路制造技术的发展,微控制器在军事和工业控制等各个领域内的应用日益广泛和成熟。目前,国内外各类工业控制更是广泛应用微控制器芯片代替系统传统控制模式。但由于环境恶劣、电磁干扰等环境因素,使得按照工作环境要求设计的微控制器也难以保证控制系统的长期可靠运行,因此可采用双CPU冗余技术。
技术实现要素:
本发明目的在于提供一种双CPU的冗余控制器,采用热备份的冗余技术,保证系统故障时刻不间断运行。
本发明的上述目的通过独立权利要求的技术特征实现,从属权利要求以另选或有利的方式发展独立权利要求的技术特征。
为达成上述目的,本发明提出一种双CPU的冗余控制器,包括电源电路、主工作电路和冗余电路,电源电路用于向主工作电路和冗余电路提供工作电压 供应,主工作电路与冗余电路之间通过CAN总线进行通信并使用跳线连接,其中:
主工作电路包括主CPU、第一A/D转换芯片、第一D/A转换芯片、第一CAN收发器以及第一以太网控制器,A/D转换芯片、D/A转换芯片、CAN收发器以及以太网控制器均与主CPU连接,一A/D转换接口与第一A/D转换芯片连接,一D/A转换接口与第一D/A转换芯片连接;
冗余电路包括从CPU、第二A/D转换芯片、第二D/A转换芯片、第二CAN收发器以及第二以太网控制器,冗余电路采用与前述主工作电路相同的结构和连接;
主工作电路和冗余电路具有相同的系统输入,并且当主工作电路正常运行时,冗余电路处于“热备份”的冗余状态,仅由主工作电路产生系统输出,而冗余电路不产生系统输出;该冗余电路通过CAN总线实时监控主CPU的工作状态,并且检测到主CPU出现故障时,冗余电路自动接管主工作电路的主CPU的工作,产生系统输出。
进一步的例子中,前述的主工作电路和冗余电路具有相同的多路模拟输入,并且进行相同的数据运算操作,并且在主工作电路正常工作时,从CPU中处理得到的多路模拟输出数据并不对外输出,只是用来监测主CPU处理得到的多路模拟输出数据。
进一步的例子中,前述冗余电路中,从CPU通过将自身运算得到的多路模拟输出数据与通过CAN通信得到的主CPU运算得到的多路模拟输出数据相比较的结果是否超过设定的误差阈值来决定是否接管主工作电路。
进一步的例子中,前述冗余电路中,响应于前述比较结果超出设定的误差阈值,前述从CPU通过CAN通信向主CPU发送中断指令使其停机,并同时接管主CPU的工作,由该从CPU进行系统输出。
进一步的例子中,前述冗余电路中,从CPU按照设定的采样频率来读取主CPU运算得到的多路模拟输出数据,以与从CPU的运算数据进行比较。
进一步的例子中,前述主工作电路中,各电路具体包括:
主CPU STM32F107,A/D转换芯片A/D7606BSTZ,D/A转换芯片D/AC8544,CAN收发器SN65HVD230/231D,以太网控制器ENC28J60A;
冗余电路采用与前述主工作电路相同的芯片。
进一步的例子中,主工作电路采用两路8位A/D采集电路和两路8位D/A转换电路,使用数据锁存器对主CPU STM32F107端口复位使用。
本实用发明与现有技术相比,其显著优点:
1)原理简单,体积重量小。整块控制板的大小为80*80mm。
2)本发明采用“热备份”冗余技术,就是两个CPU模块同时在线工作,一个主CPU模块,一个从CPU,主CPU按照系统要求正常工作,从CPU模块处于热备份状态,实时监控主CPU模块工作状态,一旦检测到主CPU模块出现故障,从CPU模块便可自动接管主CPU模块工作,系统可不受停机损失。该冗余技术中,从CPU模块和主CPU模块拥有完全相同的系统输入,唯一区别在于从CPU模块不具备系统输出功能,只有当主CPU模块出现故障时,从CPU模块才接替主CPU模块并产生系统输出。“热备份”省去了系统停机时间,系统故障时可无间断运行,可靠性高。
3)本发明具有以太网接入功能,可以进行远程的数据传输,实时监测以及控制功能。
应当理解,前述构思以及在下面更加详细地描述的额外构思的所有组合只要在这样的构思不相互矛盾的情况下都可以被视为本公开的发明主题的一部分。另外,所要求保护的主题的所有组合都被视为本公开的发明主题的一部分。
结合附图从下面的描述中可以更加全面地理解本发明教导的前述和其他方面、实施例。本发明的其他附加方面例如示例性实施方式的特征和/或有益效果将在下面的描述中显见,或通过根据本发明教导的具体实施方式的实践中得知。
附图说明
附图不意在按比例绘制。在附图中,在各个图中示出的每个相同或近 似相同的组成部分可以用相同的标号表示。为了清晰起见,在每个图中,并非每个组成部分均被标记。现在,将通过例子并参考附图来描述本发明的各个方面的实施例,其中:
图1为本发明冗余控制器的系统总体结构图。
图2为本发明主工作电路CPU外围线路图。
图3为本发明主工作电路A/D芯片外围线路图。
图4为本发明主工作电路D/A芯片外围线路图。
图5为本发明冗余电路A/D芯片外围线路图。
图6为本发明冗余电路D/A芯片外围线路图。
图7为本发明中以太网的外围线路图。
图8为本发明主工作电路CAN通信电路图。
图9为本发明冗余电路CAN通信电路图。
具体实施方式
为了更了解本发明的技术内容,特举具体实施例并配合所附图式说明如下。
在本公开中参照附图来描述本发明的各方面,附图中示出了许多说明的实施例。本公开的实施例不必定意在包括本发明的所有方面。应当理解,上面介绍的多种构思和实施例,以及下面更加详细地描述的那些构思和实施方式可以以很多方式中任意一种来实施,这是因为本发明所公开的构思和实施例并不限于任何实施方式。另外,本发明公开的一些方面可以单独使用,或者与本发明公开的其他方面的任何适当组合来使用。
结合图1所示,根据本发明的实施例,一种双CPU的冗余控制器,包括电源电路、主工作电路和冗余电路,电源电路用于向主工作电路和冗余电路提供工作电压供应。
主工作电路与冗余电路之间通过CAN总线进行通信并使用跳线连接。
结合图1,主工作电路包括主CPU、第一A/D转换芯片、第一D/A转换芯片、第一CAN收发器以及第一以太网控制器,A/D转换芯片、D/A转换芯片、 CAN收发器以及以太网控制器均与主CPU连接,一A/D转换接口与第一A/D转换芯片连接,一D/A转换接口与第一D/A转换芯片连接。
冗余电路包括从CPU、第二A/D转换芯片、第二D/A转换芯片、第二CAN收发器以及第二以太网控制器,冗余电路采用与前述主工作电路相同的结构和连接。
主工作电路和冗余电路具有相同的系统输入,并且当主工作电路正常运行时,冗余电路处于“热备份”的冗余状态,仅由主工作电路产生系统输出,而冗余电路不产生系统输出;该冗余电路通过CAN总线实时监控主CPU的工作状态,并且检测到主CPU出现故障时,冗余电路自动接管主工作电路的主CPU的工作,产生系统输出。
前述的主工作电路和冗余电路具有相同的多路模拟输入,并且进行相同的数据运算操作,并且在主工作电路正常工作时,从CPU中处理得到的多路模拟输出数据并不对外输出,只用来监测主CPU处理得到的多路模拟输出数据。
尤其是作为优选的方案,前述冗余电路中,从CPU通过将自身运算得到的多路模拟输出数据与通过CAN通信得到的主CPU运算得到的多路模拟输出数据相比较的结果是否超过设定的误差阈值来决定是否接管主工作电路。
前述冗余电路中,响应于前述比较结果超出设定的误差阈值,前述从CPU通过CAN通信向主CPU发送中断指令使其停机,并同时接管主CPU的工作,由该从CPU进行系统输出。
前述冗余电路中,从CPU按照设定的采样频率来读取主CPU运算得到的多路模拟输出数据,以与从CPU的运算数据进行比较。
结合图2-图9所示,下面结合前述主工作电路和冗余电路的一些具体设计,更加具体地说明本发明前述实施例提出的双CPU冗余控制器的实现。
作为可选的方案,前述主工作电路中,各电路具体包括:
主CPU STM32F107,A/D转换芯片A/D7606BSTZ,D/A转换芯片D/AC8544,CAN收发器SN65HVD230/231D,以太网控制器ENC28J60A;
冗余电路采用与前述主工作电路相同的芯片。
主工作电路采用两路8位A/D采集电路和两路8位D/A转换电路,使用数据锁存器74HC573对主CPU STM32F107端口复位使用。结合图1,以及图2-9所示的具体电路,芯片STM32F107[U1]的97脚PE0/TIM4_ETR接芯片A/D7606BSTZ[U11]的3脚OS0_L,芯片STM32F107[U1]的98脚PE1接芯片A/D7606BSTZ[U11]的4脚OS1_L,芯片STM32F107[U1]的1脚PE2/TRACECK接芯片A/D7606BSTZ[U11]的5脚OS2_L,芯片STM32F107[U1]的2脚PE3/TRACED0接芯片A/D7606BSTZ[U11]的9脚CONVSTA_L,芯片STM32F107[U1]的3脚PE4/TRACED1接芯片A/D7606BSTZ[U11]的10脚CONVSTB_L,芯片STM32F107[U1]的4脚PE4/TRACED2接芯片A/D7606BSTZ[U11]的11脚RESET,芯片STM32F107[U1]的5脚PE4/TRACED3接芯片A/D7606BSTZ[U11]的12脚XRD_L,芯片STM32F107[U1]的38脚PE7接芯片A/D7606BSTZ[U11]的13脚XZCD_L。
芯片STM32F107[U1]的35脚PB0接芯片D/AC8544[U12]的24脚A0,芯片STM32F107[U1]的36脚PB1接芯片D/AC8544[U12]的23脚A1,芯片STM32F107[U1]的96脚PB9接芯片D/AC8544[U12]的26脚芯片STM32F107[U1]的51脚PB12接芯片D/AC8544[U12]的27脚LD/AC,芯片STM32F107[U1]的52脚PB13接芯片D/AC8544[U12]的25脚芯片STM32F107[U1]的53脚PB14接芯片D/AC8544[U12]的29脚RST,芯片STM32F107[U1]的54脚PB15接芯片D/AC8544[U12]的30脚
结合图1以及图2-9,主工作电路还包含8个数据锁存器74HC573[U3]、[U4]、[U5]、[U6]、[U7]、[U8]、[U9]、[U10]和一个DM74ALS138SJ[U13]译码器。
主工作电路和冗余电路之间通过CAN进行通信,并用跳线进行连接。
芯片SN65HVD230/231D[U20]的1脚D接芯片STM32F107[U1]的71脚CAN1_TX,芯片SN65HVD230/231D[U20]的4脚R接芯片STM32F107[U1]的70脚CAN1_RX。芯片SN65HVD230/231D[U20]的7脚CANH接跳线W1的左 侧,芯片SN65HVD230/231D[U20]的6脚CANL接跳线W2的左侧。
芯片SN65HVD230/231D[U41]的1脚D接芯片STM32F107[U22]的71脚CAN1_TX,芯片SN65HVD230/231D[U41]的4脚R接芯片STM32F107[U22]的70脚CAN1_RX。芯片SN65HVD230/231D[U41]的7脚CANH接跳线W1的右侧,芯片SN65HVD230/231D[U41]的6脚CANL接跳线W2的右侧。
如图1,主工作电路连接一以太网控制器,用于数据的传输。在另一些例子中,还可在PC上做一个上位机,经过互联网远程监控下位机的运行状态。
芯片STM32F107[U1]的67脚PA8接芯片ENC28J60A[U14]的4脚芯片STM32F107[U1]的29脚PA4接芯片ENC28J60A[U14]的9脚芯片STM32F107[U1]的30脚PA5接芯片ENC28J60A[U14]的8脚SCK,芯片STM32F107[U1]的31脚PA6接芯片ENC28J60A[U14]的6脚SO,芯片STM32F107[U1]的32脚PA7接芯片ENC28J60A[U14]的7脚SI,芯片STM32F107[U1]的77脚PA15接芯片ENC28J60A[U14]的10脚
结合图1的系统总体结构图,给主CPU上电,进行复位,各寄存器恢复到初始状态。只有经过初始化后,才可以开始工作。
对STM32F107[U1]的串口24脚、25脚、68脚、69脚、72脚、76脚、35脚、36脚、92脚、93脚、95脚、96脚、47脚、48脚、51脚、52脚、53脚、54脚,97脚、98脚、1脚、2脚、3脚、4脚、5脚、38脚、39脚、40脚、41脚、42脚进行初始化。
芯片AT24C02[U19]的5脚SD/A接芯片STM32F107[U1]的93脚IC1_SD/A,芯片AT24C02[U19]的6脚SCL接芯片STM32F107[U1]的92脚IC1_SCL。
对STM32F107[U1]的CAN口70脚、71脚进行初始化。
对STM32F107[U1]的I/O口15脚、16脚、17脚、18脚、33脚、34脚、63脚、64脚、65脚、66脚、78脚、79脚、80脚、7脚、8脚、9脚、81脚、82脚、83脚、84脚、85脚、86脚、87脚、88脚、55脚、56脚、57脚、58脚、 59脚、60脚、61脚、62脚进行初始化。
对STM32F107[U1]的以太网接口26脚、29脚、30脚、31脚、32脚、67脚、77脚进行初始化。
对冗余电路的从CPU的初始化和主工作电路的初始化是一样的。
结合图3,控制器开始工作时,采集的模拟信号通过HeA/Der 11X2[P4]送给主CPU芯片A/D7606BSTZ[U11]的模拟输入引脚49脚、51脚、53脚、55脚、57脚、59脚、61脚、63脚进行模数转换。
转换完成的数据由芯片A/D7606BSTZ[U11]的并行输出引脚16脚、17脚、18脚、19脚、20脚、21脚、22脚、24脚、25脚、27脚、28脚、29脚、30脚、31脚、32脚、33脚输出到数据锁存器74HC573[U3]、74HC573[U4]进行锁存。
当芯片STM32F107[U1]需要数据输入时,就会通过其39脚、40脚、41脚、42脚使能片选芯片DM74ALS138SJ[U13],让数据锁存器[U3]、[U4]中的数据输入到芯片STM32F107[U1]的并行输入引脚81脚、82脚、83脚、84脚、85脚、86脚、87脚、88脚。
结合图4,采集的模拟数据经A/D转换,输入到芯片STM32F107[U1]进行数据处理,然后由其引脚55脚、56脚、57脚、58脚、59脚、60脚、61脚、62脚输出到数据锁存器74HC573[U5]、[U6]中进行锁存。
当芯片STM32F107[U1]给片选芯片DM74ALS138SJ[U13]发送使能信号后,锁存器74HC573[U5]、[U6]就会把数据输送给芯片D/AC8544[U12]的并行输入引脚20脚、19脚、18脚、17脚、16脚、15脚、14脚、13脚、12脚、11脚、10脚、9脚、8脚、7脚、6脚、5脚进行数模转换。
转换完的数据通过芯片D/AC8544[U12]的模拟电压输出引脚45脚、41脚、37脚、33脚输出至HeA/Der 11X2[P4]上。这样就完成了一次数据采集、处理、传输的整个过程。
同样,结合图5,图6,冗余电路的数据采集和处理与主工作电路原理一样。
结合图6,以太网控制器ENC28J60A[U14]通过4脚、6脚、7脚、8脚、9 脚、10脚与芯片STM32F107[U1]连接,通过HR911105A[U21]向外输出数据。
结合图7和8,主CPU芯片STM32F107[U1]和从CPU芯片STM32F107[U22]通过CAN进行通信。主CPU和从CPU具有相同的多路模拟输入,进行相同的数据运算操作,所以两者也具有相同的多路模拟输出。但是在本控制电路中,从CPU中处理得到的多路模拟输出数据并不对外输出,只是用来监测主CPU处理得到的多路模拟输出数据。
通过事先设置误差范围,这里的误差范围设置需要根据实际使用情况来定。当主CPU和从CPU都对相同的多路模拟输入数据进行运算操作后,从CPU通过CAN通信读取主CPU的多路模拟输出量,与自己处理得到的多路模拟输出量进行比较,比较结果在正常误差范围内,则主CPU工作正常,从CPU不动作。如果比较结果超出正常误差范围,则从CPU就会判定主CPU出现故障,从CPU通过CAN通信发送中断指令给主CPU,然后从CPU就会立刻“接手”主CPU的工作,省去了系统停机时间,系统故障时可无间断运行,实现了冗余控制。
当然,在上述从CPU通过CAN通信读取主CPU的多路模拟量的时候,需要通过软件设置一下采集的频率,这个频率是可调的,在以后的使用过程中,可以根据实际情况,再做更改。
在某位置伺服控制系统中,位置平台处于100mil的空中,需要将其调整至150mil的位置处,首先上位机中的RDC模块先将初始位置信息,为16位I/O电平信号1011001001011101(注:1表示高电平,0表示低电平),分别传入到HeA/Der P3和HeA/Der P8,然后分别通过74LVX4245U15、U16和74LVX4245U32、U33进行电平转化,将5V电平转成3.3V之后再分别输入到主CPU和从CPU的15、16、17、18、33、34、63、64、65、66、78、79、80、7、8、9共16位I/0管脚中。
当人工手动设定了150mil的目标量后,即16位I/O信号为1011101101101111。刚开始主CPU和从CPU由外部读入16位I/O信号是100mil位置处的,通过内部算法程序,判断其与预定目标150mil相差很大,于是通过相应程序,主CPU 就会通过其81、82、83、84、85、86、87、88、55、56、57、58、59、60、61、62管脚输出一组16位数据给D/A转换器,由D/A转换成模拟量后来控制伺服电机动作,调高平台的角度。在这个过程中,主CPU输出的这一组16位数据同样会被从CPU通过CAN接收,然后与从CPU中通过同样程序得到的一组16位数据进行比较,如果比较结果在预定误差范围内,则认为主CPU工作正常,从CPU继续监测。如果不在预定误差范围内,从CPU就会判定主CPU出现故障,然后从CPU就会立刻“接手”主CPU的工作。
之后每20ms,主CPU和从CPU都会从外部读入相同的16位表示平台位置的I/O信息,通过芯片内部设定的循环程序算法,判断其与预定目标150mil的误差,当误差小于0.5mil时,就停止循环和对外输出,认为动作完成。
虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明。本发明所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可作各种的更动与润饰。因此,本发明的保护范围当视权利要求书所界定者为准。