安全级DCS平台基本功能库软件V&V方法研究

2020-12-17 12:45冯素梅王少华陈日罡张志良
自动化仪表 2020年12期
关键词:功能块基本功能组态

冯素梅,王少华,陈日罡,张志良

(中国核电工程有限公司,北京 100840)

0 引言

核电站数字化仪表与控制(instrument and control,I&C)系统是核电站的重要组成部分,是核电机组安全、可靠、经济运行的关键。但是,基于计算机软件的仪控系统的很多功能由软件实现,如果软件失效可能会引起系统级失效,进而影响功能安全系统性能。因此,必须对核电数字化I&C系统按照核电相关标准执行验证和确认(verification and validation,V&V)活动,尤其是安全级软件。I&C系统软件包括操作系统软件和应用软件。应用软件一般由工程设计人员依据具体的工程配置数据对基本功能库进行配置和编译,运行于I&C系统的主处理模块。因此,基本功能块是组成应用软件的基本单元,其软件质量直接决定I&C系统的系统性能力。基本功能库一般由分布式控制系统(distributed control system,DCS)平台供货方提供,使用应用软件开发工具软件提供的面向应用的语言(如图形化组态语言)进行开发。对于不能完成的功能,由通用语言开发,DCS平台供货方应该对其执行软件V&V活动。

目前,国际和国内已有标准为安全级软件的V&V提供指导,如文献[1]~文献[7]。但是由于标准本身存在差异,所采用的核电技术也存在差异,对于软件的V&V方法和技术尚未统一。此外,标准主要针对新开发的系统软件和应用软件建立V&V要求,并无专门针对基本功能库开发的软件V&V方法指导。鉴于软件功能库开发的方式不同,对其执行V&V活动的方法存在差异。因此,基于以上问题,本文针对基本功能库,结合标准要求,以及实际工程经验,讨论了V&V方法,以及V&V过程中应重点关注的方面。

1 功能库介绍

1.1 功能库在安全级系统中的重要性

基于DCS平台实现的基于计算机的核电厂安全仪控系统,其软件主要包括操作系统软件(如通信、I/O管理、自监视等)与应用软件(如连锁逻辑、控制回路、报警逻辑等)[7-9]。应用软件一般是专门针对某个项目,由电厂设计人员利用应用软件开发工具,使用电厂工程数据对DCS平台提供的平台产品和基本功能库进行配置,以实现基于计算机的仪控系统分配给软件的安全功能。因此,对于一个使用设备族部件进行开发的典型I&C系统来说,基本软件功能库是作为预开发软件部件使用的,可供应用软件开发人员进行配置,并形成组态文件。组态文件经代码生成器转换以及编译器编译生成可执行文件,最终装载在目标系统执行在线运行任务。其功能和性能直接影响到系统的安全。因此,基本软件功能库的质量至关重要。作为实现I&C系统应用软件的基本单元,在对应用软件执行V&V活动的过程,必须包含对其使用到的软件功能块的鉴定。

一般基于计算机的安全级DCS平台软件包括平台产品单元软件(操作系统软件)、基本功能库和用于应用软件开发的软件工具(以下简称软件工具)。面向应用的基本功能库需求来源于典型核电安全系统实现安全功能的软件部分,常用基本功能单元需要具备安全、可靠、复用性好的特性。因此,DCS平台以一种经封装、界面友好、易于理解和易于操作的方式,为工程设计人员提供基本的功能库。在应用软件的开发过程中,基本功能块经组态、编译并下装到目标系统,直接执行在线运行时的安全功能。因此,作为安全级DCS平台的供货方,应该对基本功能库执行V&V活动,确保软件的质量。典型DCS平台和仪控系统软件架构如图1所示。

图1 典型DCS平台和仪控系统软件架构图

1.2 功能库的软件开发活动

基本功能库的开发活动如图2所示。

图2 基本功能库软件开发活动

基本功能库的开发活动与通常的基于计算机的软件开发生命周期[10]有所区别。基本功能库的开发活动在平台层面并不存在系统集成和系统确认的过程。只有在被用户经组态下装到目标系统之后的应用软件,才存在软硬件集成和系统集成的活动。因此,在平台开发的过程中,对基本功能库的开发和V&V都需要特殊处理。

基本功能库一般有两种开发方式:①使用带自动代码生成的面向应用的语言开发;②使用通用语言开发。通常,面向应用语言不能实现的功能或部分功能应作为独立的模块使用通用语言开发。这两种开发活动在实现阶段存在差别,但是最终代码需满足的质量要求是一致的。对IEC 60880关于软件安全生命周期的开发活动进行裁剪。

2 功能库的V&V方法

2.1 确定软件完整性等级及V&V任务

根据IEEE 1012—2004的要求,应对基本功能库预期用途所在领域作环境分析[4],结合软件完整性等级确定的方法,为基本功能库指定一个完整性等级,以确定需要执行的最小V&V任务集。

安全级平台系统所提供的功能库主要是针对安全级I&C系统开发的,基本功能块经算法组态、代码转换和编译,下装到目标系统执行安全功能。一旦发生软件失效,将直接导致系统安全性问题。根据IEEE 1012—2004,对于安全完整性的确定方法,结合基本功能块失效导致的后果和出现这种后果的运行情况,以及功能块在应用环境下的使用情况,应指定软件完整性等级为4级。安全完整性等级为4级的软件,其最低限度的开发V&V任务包括文档评估、关键性分析、可追踪性分析、接口分析、安全保密分析、危险分析、风险分析以及测试。每个阶段需要执行的任务详见IEEE 1012—2004 的第5章。以上分析活动在本文中统称为“基本分析任务”。

由于功能库的开发活动与标准的软件开发存在差异,它的软件需求不是来源于某个确定的系统,不特别针对某个安全功能。因此,对于功能库的验证,应结合已有的典型安全系统及其工程算法逻辑涉及到的功能块要求,根据IEEE 1012—2012[5]的要求,对功能库执行复用性分析,以验证功能库与核电领域安全级I&C系统模型和架构是否一致。

为I&C系统工程算法开发的功能库,包含大量的算法、方程和数学公式。在V&V过程中,应验证系统和软件需求的算法、方程和公式是否正确,确认是否能够满足解决方案,确认由算法和方程导致的约束或限制条件是否正确,以及其是否能够满足工程应用要求。因此,功能库的V&V活动应包含算法分析。

功能库多为面向应用的语言开发的软件。其拥有系统、直观的图形化组态逻辑,即采用通用语言开发的功能块。为了便于工程人员组态,一般封装为图形的形式,方便在调试环境下进行仿真验证。另外,在平台层面不存在软硬件集成过程,对于功能库的关键性能以及软件对异常响应的验证宜采用仿真方法。因此,功能库在实现V&V阶段增加仿真分析。

另外,功能库作为一个可以复用的软件库,其并不存在软硬件集成的过程。因此,在对功能库的确认测试应基于标准的硬件环境,如DCS平台本身提供的硬件环境[11]。

基于以上分析,基本功能库软件V&V生命周期任务如图3所示。

图3 功能库软件V&V生命周期任务

2.2 V&V方法

根据IEC 60880和IEEE 1012—2004对于软件验证的要求,基本功能库V&V的总体目标应包括以下方面:充分验证软件需求规格书覆盖典型系统设计和工程算法需求中对基本功能库的要求;软件验证活动应充分验证基本功能库设计,以满足软件的需求;应验证代码与软件设计规格书一致;应确认最终源代码和可执行代码满足需求的功能和性能。

每个阶段的V&V目标、应该执行的V&V任务,以及需要重点验证的内容如下。

2.2.1 需求V&V

此阶段主要输出文件是需求规格书,针对需求规格书主要执行评估、基本分析任务、算法分析和复用性分析,以确保需求的正确性、完备性、准确性、可测试性和一致性。此阶段应重点注意以下方面的验证。

①结合平台所支持的、已有的安全系统,及其工程算法、预期的应用,识别出功能库通用的功能、性能和特性的要求,验证这些方面是否被软件需求覆盖。

②确保每个需求没有包含设计的内容,从而限制软件的可复用性。

③分析软件需求是否充分考虑了平台的约束,如数据类型、质量位定义、机器码表示方式等。

④评价功能块的安全保密性,确保功能块具有足够的防御措施,以防止非授权用户的恶意篡改。

针对不同的实现方式,应采取适当的验证手段。 功能库开发和V&V活动如图4所示。

图4 功能库软件开发和V&V活动

2.2.2 设计V&V

设计阶段包括软件结构设计和详细设计。由于功能库的开发方式不同,在此阶段的输出文件表现形式可能不同。如面向应用的语言开发的软件块的设计一般是图形化的方式,但是对于设计的要求是一致的。针对设计输出文件,执行评估、基本分析、算法分析和复用性分析等任务,以确保设计师软件需求的正确、准确和完备转化,而且没有引入非预期的特征。在此阶段,应注意以下方面的验证。

①评价所选择的程序语言是否是安全的,包括通用语言、面向应用的语言,以及经代码转换生成的高级语言。验证是否有文件对该语言的属性进行分析,包括可靠性、鲁棒性、可追踪性、维护性和可读性等方面的分析,可参考文献[12]中的语言要求;是否有文件描述编码规则,及其是否符合安全级软件编码规则的要求,可依据IEC 60880和IEC 61508-7。

②评价选择的软件开发工具的适用性,是否满足软件工程要求,是否有足够的证据证明其可信,尤其是代码生成器和编译器。

③评价每个功能块的接口的约束,验证设计的合理性,包括数据类型、范围、越界处理,以及参数设置的合理性、参数缺省值、输入错误的参数值是否有适当的措施予以提示或者报错等。

④分析所选择的算法和方程是否能够解决实际工程问题。如比例积分微分(propertional integral differential,PID)控制器初始化阶段输出质量位和输出值的处理,输入信号无效时输出值与质量位的处理,手自动切换时刻的处理等。

⑤对于重要的算法和方程,应根据基本的工程原则和数学理论进行推导,验证其正确性。如传递函数的推导、数值计算算法的正确性验证。

⑥分析所选用的算法和方程,以及其导致的约束条件或限制条件是否满足工程需求,如舍去误差、截断误差、表达式简化、估计误差、数值解等;分析所产生的约束是否满足工程要求,注意是否在安全手册(或者用户手册)里声明这些约束。

⑦分析面向应用的语言的约束对于功能块设计的影响,如变量类型、溢出、除零问题。

⑧分析算法设计及相关的数据要素是否引入危险。如分析所有影响质量位改变的情况,应避免非预期改变导致的误动作。

⑨分析程序设计的确定性,包括存储确定性和时间确定性。

2.2.3 实现V&V

实现阶段主要验证代码是否正确、准确、完备地转化了设计。由于实现方式不同,此阶段的输出文件也不同,V&V方式如下。

(1)采用通用语言实现的软件验证。

利用此实现方式,输出文件主要有源代码和可执行代码。执行V&V任务有:基本分析、复用性分析、算法分析、仿真分析、源代码走查和单元测试。对于功能块简单且与其他模块不存在耦合的功能块,执行单元测试即可;对于复杂的或者存在调用其他功能块的情况,补充执行集成测试。

(2)面向应用的语言实现的软件验证。

首先,利用图形编辑器,编辑组态逻辑,生成图形化的组态文件;然后,经代码生成器转化为由高级语言表示的源代码,再经编译器生成可执行代码。因此,V&V的对象文件有图形化的组态文件、源代码以及可执行代码。

如果所使用的代码生成器和编译器是经过验证的可信工具、有足够的证据保证代码转换过程、保持了语义的一致性、生成的代码满足标准的要求且未引入不安全的因素,则可以仅针对输入文件,即图形化的设计文件,执行基本分析任务、复用性分析、算法分析和仿真分析。

事实上,并不存在完全被证明了的代码生成器和编译器。为确保功能块的正确性和安全性,应对源代码和可执行代码作进一步验证。由于经代码生成器生成的代码,其生成框架的固定性,导致可读性较差,因此只执行测试任务。

实现阶段的V&V应注意以下方面。

①验证每个功能块是否正确实现了设计。

②分析每个功能块对所有输入和参数处理的正确性,包括参数值和输入的所有取值。

③与时间相关的功能块,重点验证输出随输入变化的同步性是否与需求一致。

④重点验证边界值的正确性。

⑤针对特殊情况进行验证,如溢出、计数复位、除零、中间计算溢出或者越界时计算结果和质量位的处理,对输出变量计算结果越界情况下输出值和质量位的处理等。

2.2.4 测试V&V

此阶段主要针对源代码和可执行代码的执行确认测试,以确保实现满足软件需求。一般是将可执行代码下装在目标真实环境下进行测试。测试应满足如下要求。

①全面覆盖逻辑。

②覆盖所有的输入信号范围以及参数范围。

③确保精度与最大执行时间得到证实,确保对所有的异常及组合采取正确的响应。

④重点针对直接影响反应堆安全的功能块(例如表决)进行验证与测试。对于表决功能块,重点验证对信号有效性的判断。

⑤验证与应用有关的功能块实际实现的功能是否满足电厂运行的需求。

3 结论

本文探讨了安全级平台功能库不同的角色及其重要性,对IEC 60880软件安全生命周期的框架进行裁剪,明确功能库开发生命周期;在符合核电相关标准的框架下,确定软件完整性等级及需要执行的最小V&V任务集。为进一步验证功能库质量,本文提出,除了执行V&V最小任务集之外,还应在不同阶段选择可选的V&V任务,包括可复用性分析、算法分析和仿真分析,并进一步明确每个V&V阶段的目标、手段以及需要重点验证的方面。本文所提供的方法为功能库的V&V活动提供实际的应用指导,有重要的工程应用价值。

猜你喜欢
功能块基本功能组态
基于PLC及组态技术的恒温控制系统开发探讨
Rh XIII—Cd XVI 离子4s24p3—4s4p4 能级与跃迁的理论计算*
基于IEC61131-3标准运动控制器的设计与应用*
基于PLCopen的六轴工业机器人运动控制功能块设计
组态软件技术现状与发展
自定义功能块编程在反渗透膜自动清洗设备中的应用
Ovation系统FIRSTOUT和FIFO跳闸首出比较
基于PLC和组态的智能电动拧紧系统
Analysis of Strategies and Procedures Employed in Translating Literary and Non—literary Texts from the Perspective of Functionalist Theory
水果的新家