一种控制器冗余及切换方法一种控制器冗余及切换方法一种控制器冗余及切换方法,该方法用于工业控制器主机和备机之间的冗余切换逻辑,保证主备机之间的运算及输出同步性,在主机故障时实现快速无扰切换切换电路由两对GPIO控制线和一路百兆以太网构成,通过对IO低电平、脉冲信号、高电平三种状态的识别来获取对端控制器主机或者备机、正常或者故障状态,并且可以在硬件切换电路故障时以通信的方式获取对端控制器主机或者备机、正常或者故障状态,从而实现主备仲裁和切换;采用状态机的设计方法,将控制器的运行状态总结为主机正常、主机故障、备机正常、备机故障、对端断电五种状态,通过状态机矩阵实现主备的仲裁处理;本发明同时使用硬件切换电路和冗余通信作为冗余设备之间的连接信号,极大的增强了冗余切换控制的可靠性,可以有效地保证工业控制系统的稳定运行专利说明】一种控制器冗余及切换方法【技术领域】[0001]本发明属于工业自动控制【技术领域】,具体涉及分散控制系统(DCS)的控制器主备 冗余及切换方法,适用于各类具有冗余配置的工业自动控制系统背景技术】[0002]在工业自动控制领域,由于通信故障和设备故障导致设备停机造成的代价极其昂 贵,热备冗余是提高系统可靠性的最有效技术之一,如电源冗余、控制器冗余、网络冗余、月艮 务器冗余等。
[0003]控制器的热备冗余由硬件和工程配置完全一致的两个控制器组成,控制器实现切 换通常采用两种方式:1)通过冗余切换硬件电路;2)通过冗余通信通道交互信息来实现快 速切换在冗余切换逻辑的控制下,一个控制器运行在工作状态(主控制器),另外一个运 行在热备用状态(备控制器)在任一时刻,只有主控制器承担接收遥控和遥调指令、控制 输出及过程信息发布的工作,备控制器实时跟踪主控制器执行状态,当主控制器发生通信 故障或硬件故障时,实现主备控制器的无扰动切换,从而提高系统的可靠性[0004]现有控制器冗余切换技术中,有三种实现方式应用较为广泛:1)复用主备控制器 与监控系统(HMI)之间的以太网通道进行冗余信息的交互,该方法组网及配置相对简单,但 主备切换的实时性较低,由于与HMI共网,使得主备机之间只能交互少量信息,不能严格保 证无扰切换;2)使用专用的冗余通信通道(如HDLC、百兆以太网等),同时兼顾切换和同步功 能,该方法主备切换的实时性较低,不能保证快速逻辑任务情况下的无扰切换,另一方面, 当冗余通信通道故障时,系统将会出现控制器双主的情况,对系统运行造成致命影响;3)使 用专用的主备切换电路,例如基于FPGA设计的同步互锁电路等,外部电路设计较复杂,故 障率较高。
发明内容】[0005]本发明的目的是提供一种工业控制器主备机冗余及切换的实现方法,在主控制器 通信故障或者硬件故障时,能够可靠的切换到备控制器,切换过程对系统无扰动,避免由于 主控制器通信故障或者硬件故障造成控制系统停止运行,提高控制系统的可靠性[0006]本发明具体采用以下技术方案:一种控制器冗余及切换方法,其特征在于,所述方 法包括以下步骤:[0007](I)主备控制器使用完全相同的硬件,通过控制器物理地址区分控制器A还是控 制器B,奇地址为控制器A,偶地址为控制器B ;[0008](2)在控制器A和控制器B之间设置硬件切换电路,所述切换电路由两对GPIO(通 用输入输出)控制线组成,均可设置为输入或者输出型,每个IO控制线都自带上拉电阻,控 制器A的四个IO依次设置为DOl、DI1、D02、DI2,控制器B设置有与控制器A的上述四个 IO对应连接的四个10,依次为DI1、D01、DI2、D02 ;[0009](3)控制器A和/或控制器B分别实时检测本控制器的DIl和DI2电平状态,本控制器DIl上检测到低电平、脉冲信号、高电平三种状态分别表示对端控制器为备控制器、主 控制器、断电状态,本控制器DI2上检测到低电平、脉冲信号、高电平三种状态分别表示对 端控制器处于故障、正常、断电三种状态;[0010](4)主备控制器之间另通过一路专用的以太网进行数据通信,实现主备控制器之 间信息和数据的交互,同时也作为硬件切换电路的备用方式,在硬件切换电路故障时承担 主备仲裁的通道,数据通道交换的信息包含本机主/备、正常/故障、程序循环冗余校验CRC 值、逻辑工程CRC值、配置CRC值等信息;[0011](5)根据步骤(3)和步骤(4)检测的控制器的主备状态以及控制器的故障、正常和 断电状态,将控制器A和/或控制器B的运行状态总结为主机正常、主机故障、备机正常、备 机故障、对端断电五种状态,对应0、1、2、3、4五种状态编码,控制器A和控制器B的状态编 码组成一个二维状态矩阵;[0012](6)根据所述二维状态矩阵,通过状态机的方法实现主备的仲裁处理,主备控制器 的切换遵守以下原则:正常状态的主控制器不能切换为故障状态的备用控制器;主控制器 故障,而备控制器不可用,即断电或故障时,当前主控制器继续运行;主控制器故障,而备控 制器正常,则将备控制器切换为主控制器;当控制器A和控制器B显示同时为备控制器并且 都正常或者都故障时,则选择控制器A为主控制器;当控制器A和控制器B同时为主控制器 并且都正常或者都故障时,则先进入当前主控制器状态的控制器继续为主控制器,另一个 切换为备控制器。
[0013](7)当本控制器为主控制器时,该控制器的DOl输出固定频率的脉冲信号,当本控 制器为备控制器时,该控制器的DOl输出低电平;当本控制器运行正常时,该控制器的D02 输出固定频率的脉冲信号,本控制器故障时,该控制器的D02输出低电平[0014]本发明还进一步包括但不限于以下优选技术方案:[0015]控制器A和控制器B之间对应的IO 口分别通过背板或者外部接线连接在一起控 制器A和控制器B之间互联的以太网通信通道通过背板或者直连网线或光纤连接在一起[0016]主备控制器切换逻辑采用状态机的设计方法,将控制器的运行状态总结为主机正 常、主机故障、备机正常、备机故障、对端断电五种状态,主备机状态组成一个二维状态矩 阵,通过状态函数实现主备的仲裁处理主备切换的告警等级分为正常、告警、故障三种级 另IJ,告警状态不影响系统运行,视为正常状态,仅上送监控系统;正常状态或者告警状态主 控制器不能自动切换至故障状态备用控制器,当主控制器故障,而备控制器不可用(断电或 故障)时,则当前主控制器继续运行;当控制器AB同时为主并且都正常或者都故障时,先进 入当前状态的控制器为主控制器;当控制器AB同时为备并且都正常或者都故障时,控制器 A为主控制器;[0017]与现有技术相比,本发明的优点是:[0018]1、设计专用的切换电路,使得主机故障时切换时间可以达到百微秒级,对于控制 精度要求非常高的冗余系统也能满足要求。
切换电路仅由两对GPIO控制线构成,对于机架 式安装的冗余控制器系统,可通过控制器背板相连,对于分离安装的冗余控制器系统,可以 通过外部接线相连,具有极大的灵活性[0019]2、采用冗余通信通道作为切换电路的备用,在硬件故障时也能保证冗余系统的正 常运行,不会导致双主的情况出现,同时,该方法也适用于主备控制器安装距离较远,不适合使用硬件切换的环境中;冗余通道采用以太网物理层协议通信,数据包接收和发送不经 过TCP/IP协议解析,极大的减少了站控层通信对冗余通信的干扰,有效地保证主备机之间 冗余通信的可靠性专利附图】【附图说明】[0020]图1为冗余切换电路示意图;[0021]图2为主备仲裁状态矩阵;[0022]图3为控制器冗余及切换流程示意图具体实施方式】[0023]下面结合附图对本发明的技术方案作进一步详细说明[0024]如图3所示,本发明公开了一种控制器冗余及切换方法,所述方法包括以下步骤:[0025]步骤1:主备控制器使用完全相同的硬件,通过控制器物理地址区分控制器A还是 控制器B,奇地址为控制器A,偶地址为控制器B对于机架式安装结构,物理地址与槽位一 致,对于分体式安装结构,根据拨码开关设置物理地址。
[0026]步骤2:在控制器A和控制器B之间设置切换电路,如图1所示,主备控制器通过四 个通用输入输出GPIO和相应的外围电路实现硬件切换电路,每个IO都自带上拉电阻,GPIO 通过背板或者外部硬接线相连四个通用输入输出GPIO均可设置为输入或者输出型,控制 器A的四个IO依次设置为DOl、Dll、D02、DI2,控制器B设置有与控制器A的上述四个IO 对应连接的四个10,依次为DI1、D01、DI2、D02[0027]在控制器A和控制器B启动时,根据AB机状态对切换电路所用的4个GPIO进行 方向设置,如果本机是控制器A,则将4个GPIO依次初始化为DO、D1、DO、DI,如果本机是控 制器B,则将4个IO依次初始化为D1、DO、DKDO0[0028]步骤3:控制器A和/或控制器B分别实时检测本控制器的DIl和DI2电平状态, 本控制器DIl上检测到低电平、脉冲信号、高电平三种状态分别表示对端控制器为备控制 器、主控制器、断电状态,本控制器DI2上检测到低电平、脉冲信号、高电平三种状态分别表 示对端控制器处于故障、正常、断电三种状态;[0029]控制器在I毫秒中断服务程序中读取DIl和DI2电平状态并存储,与前三次记录 的电平值进行组合,生成一组连续4次电平采样的序列,比如1010、0000、1111、0101、1100 等。
如果DIl电平序列的值为1111,判为DIl断电状态,如果DIl电平序列为0000,判对端 控制器为备机,如果DIl电平序列的值为1010或者0101,判为对端控制器为主机,如果DIl 电平序列为其它值,判为过渡状态,不做处理;如果DI2电平序列的值为1111,判为DI2断 电状态,如果DI2电平序列为0000,判对端控制器处于故障状态,如果DI2电平序列的值为 1010或者0101,判为对端控制器运行正常,如果DI2电平序列为其它值,判为过渡状态,不 做处理[0030]当DIl和DI2同时为断电状态时判断对端控制器断电,当DIl或D2只有一个处于 断电状态时判定为硬件切换电路故障[0031]步骤4:主备控制器之间另通过一路专用的以太网进行数据通信,如图1所示,该 通信通道实现主备控制器之间信息和数据的交互,通过物理层协议进行,无需进行TCP/IP协议的解析,可极大的提高通信效率和可靠性[0032]硬件切换电路工作正常时,冗余数据通道只进行程序CRC值、逻辑工程CRC值、配 置CRC值的比较,以及控制器主机对控制器备机的运行数据同步,当硬件切换电路故障时, 控制器根据接收到的对端控制器主/备标志和正常/故障标志生成对端控制器的状态编码。
[0033]步骤5:如果对端控制器为主机并且运行正常,设置其状态编码为0,如果对端控 制器为主机并且故障,设置其状态编码为1,如果对端控制器为备机并且运行正常,设置其 状态编码为2,如果对端控制器为备机并且故障,设置其状态编码为3,如果对端控制器处 理断电状态,设置其状态编码为4[0034]步骤6:主备控制器的切换逻辑根据图2所示为主备仲裁状态机矩阵实现将本 地控制器和对端控制器的状态编码0、1、2、3、4,设计一个5X5的二维矩阵,行下标表示本 机状态编码,列下标表示对端状态编码,比如[0][1]表示本机为主机、工作正常,对端为备 机、工作正常二维矩阵的元素为根据25种组合进行主备仲裁的函数指针,在处理函数中 进行主备仲裁,处理结果为升主、降备、维持当前状态仲裁策略为:正常状态的主控制器不 能切换至故障状态的备用控制器;主控制器故障,而备控制器不可用(断电或故障)时,当前 主控制器继续运行;当控制器AB同时为备并且都正常或者都故障时,控制器A为主机根 据仲裁策略总结出在控制器状态出现变化时,需要处理的情况有10个,据此定。