肖辉 崔刚 吴翔虎
摘要: 在实时嵌入式工控领域中,系统的实时性和高可靠性尤为重要。针对实时嵌入式领域中的工业现场分布式控制系统,设计了双冗余热备份PROFIBUS主站仲裁模块,提出了双冗余主站工作保持数据一致性问题以及双冗余PROFIBUS总线的工作与切换方案,并且设计了虚拟双端口存储器通信协议,提高了系统的可用性和可靠性。
关键词:
中图分类号:TP302.8文献标识码:A文章编号:2095-2163(2012)05-0013-03
0 引言
实时嵌入式系统是计算机应用领域的一个重要分支,被广泛应用于工业过程控制领域中。工业过程控制系统需要进行实时数据采集,不仅对系统的实时性要求高,同时,要求系统不间断运行、可靠性高?眼1-2?演。PROFIBUS总线是一种应用于工业现场控制的总线标准,提供了高速低成本的通信解决方案,保证了系统的实时性。
工业现场控制系统常采用双冗余容错设计。与以前容错研究和设计中使用的多模冗余系统相比,双冗余系统实现不如多模冗余系统复杂,实现成本更低。在单机稳定性不断提高,平均无故障时间不断延长的今天,使用多模容错系统的代价太高,因此对双冗余容错系统的研究具有重要意义。PROFIBUS主站使用双冗余热备份,在单个主站出现故障时,可以无缝切换,系统保持连续运行,提高了系统的可靠性?眼3-4?演。同时,双冗余PROFIBUS总线设计,可以在保证系统实时性的基础之上,提供了总线故障检测和无缝故障切换功能?眼5?演。
本文重点分析了基于PROFIBUS总线的分布式控制系统中的关键容错技术,包括仲裁模块的原理和设计,双冗余热备份PROFIBUS主站数据一致性问题,双冗余PROFIBUS总线切换技术以及虚拟双端口存储器通信协议设计。
1 基本原理
1.1双冗余PROFIBUS总线
PROFIBUS总线是一种广泛应用于工业现场控制系统的现场总线技术,提供高速度低成本的解决方案。使用双冗余PROFIBUS总线,在保持PROFIBUS总线的高速度低成本的基础之上,为系统增加了无缝总线切换,无故障延迟特点,从而保证了系统的可靠性。
1.2 双冗余热备份PROFIBUS主站
PROFIBUS主站由通信板和上位机构成,通信板负责主站和从站的PROFIBUS数据通信,上位机负责数据请求和数据处理。通信板和上位机之间通过虚拟双端口存储器通信。通信板包含四个任务,上位机命令处理任务、双网控制任务以及双网独立的两个通信任务。在收到上位机命令后,双网控制任务负责选择PROFIBUS网络与从站进行数据通信。
仲裁模块是双冗余热备系统的关键组成部分,双冗余热备份主站通过仲裁模块来裁决工作状态,当活动站出现工作故障后,仲裁模块立即将备份站切换为活动站,系统无缝运行。双冗余PROFIBUS热备份容错分布式控制系统整体框图如图1所示。
2 容错技术研究
2.1 仲裁模块
仲裁模块裁决双冗余PROFIBUS主站的工作状态,一个作为活动站,一个作为备份站,并将备份站从PROFIBUS总线中切出。活动站进行正常PROFIBUS通信工作,同时通过心跳线与备份站互检工作状态。仲裁模块的工作状态有以下三种状态,上电识别、故障切换和故障恢复。对其分析如下:
(1)上电识别。系统刚上电时,仲裁模块需要对双冗余PROFIBUS主站的工作状态进行裁决,两个PROFIBUS主站对仲裁模块产生的仲裁信号加以识别,并分别进入活动站和备份站状态。
(2)故障切换。当活动PROFIBUS主站出现故障时,需要进行切换。备份站从接管成为活动站,活动站被仲裁模块从PROFIBUS总线中切出。活动站和备份站的切换分为两种类型。一是主动让出,活动站故障后,看门狗溢出报警,仲裁模块检测到报警信号后,进行仲裁切换。二是被动抢占,双机在通过心跳线互检工作状态时,备份站发现活动站出现故障,自动向仲裁模块发送控制信号,抢占PROFIBUS控制器,成为活动站。
(3)故障恢复。修复后的故障站重新加入系统中,首先通过仲裁模块的仲裁信号判断工作状态。当前另一主站已处于活动站状态,则自己进入备份站状态,系统正常工作。
2.2 双冗余PROFIBUS主站数据一致性分析
在系统出现故障时,进行主备切换,备份站需要快速接管活动站的工作与从站进行通信,这就需要备份站在热备过程中,与活动站的状态保持一致。
(1)双主站同时进入PROFIBUS总线,通过PROFIB-
US总线同步数据。活动站与备份站同时进入PROFIBUS网络,分别设置不同的站地址。活动站收到从站数据后,通过PROFIBUS总线与备份站同步数据。该方案充分利用了PROFIBUS总线进行通信,但是备份站的站地址设置与活动站不同,在活动站出现故障,进行切换时,备份站需要重新进行初始化,切换时间较慢。
(2)备份主站监听PROFIBUS总线,但屏蔽其PROF-
IBUS数据包发送。开始通信前,需要将其总线地址设置为与活动站相同,当活动站与从站进行通信时,备份站也能接收总线上的数据,从而保证双模主站的数据一致。当活动站出现故障时,备份站在规定时间内收不到活动主站发来的心跳数据,即进行故障切换,发送控制信号改变仲裁板的仲裁信号,进入活动站状态,继续与从站通信。当故障站恢复后,通过检测仲裁结果,进入备份状态,并继续与活动主站发送心跳数据。该方案能够减轻活动主站的工作负载,并且避免心跳线成为系统性能瓶颈。但该方案需要修改PROFIBUS总线协议,实现较复杂。
(3)双主站通过心跳线同步数据。备份站在初始化完成后,从PROFIBUS总线中切出,不进行任何PROFIBUS通信,每个周期通过心跳线来接收活动站发来的从站数据。该方案实现更为简单,但是心跳数据周期必须小于PROFIBUS轮询所有从站一圈的通信周期,活动站的工作负载较大。
2.3双冗余PROFIBUS总线切换
PROFIBUS总线是主从式令牌环网络,采用双网设计可以保证系统的高可靠性。为了保证从站采集数据的实时性,双冗余PROFIBUS总线同时工作,活动站能从两条总线上同时发送和接收从站数据,当某个从站或某条总线出现故障时,都能立刻从另外一条总线上获得数据,无需任何切换操作,系统能够保持继续运行。同时,通过双网控制,对上位机隐藏双冗余总线设计,简化上位机软件设计。双冗余PROFIBUS总线的双网控制设计方案如图2所示。
通信任务0和1分别通过双冗余PROFIBUS的0网和1网与从站通信,当通信任务收到从站数据包以后,直接将其转发给双网控制任务。然后双网控制任务通过数据包的状态,判断通信是否出错,如果出错,则标记数据包来源从站在对应网络上通信错误。如果数据包状态正确,则判断其来源,这里假设0网的优先级高于1网,即0网收到的数据正确时,就抛弃1网上接收的数据,只有当0网出错时,才从1网接收数据。
当数据包出错时,根据双网上接收的数据状态来报警,如果只有一个网络上出现错误,则可判断另一网络故障,如果两个网络上都没法收到数据,则可判断是相应从站故障。
2.4 虚拟双端口存储器通信协议