徐国雄,杨永祥
(Doosan HF Control集团,德克萨斯 卡罗尔顿 75006)
在过去的二十年里,Doosan HF Control集团(HFC)开发并生产了一系列的控制系统,用于控制断路器、电机起动器和电磁阀以及监控其控制过程的状态。这些控制系统已被广泛应用于各种工业系统,包括在核电站中的控制系统。
HFC为韩国蔚珍(Ulchin)核电站制造了全厂控制系统(plant control system,PCS)。该系统被用于该核电站的5号和6号机组,以及一个独立分离的核废料控制单元(0号单元)。由HFC的PCS概览如图1所示。
其中,附带I/O卡的AFS回路控制器和附带MUX I/O卡的ECS-05控制器能监控和调节过程变量,如温度、压力和流量等。AFS控制器中的受控参数可通过控制器卡与M/A站或控制开关模块(control switch module,CSM)之间的通信进行手动调节。AFS控制器还能与ECS-05控制器(又称远程控制器),通过异步消息传递交换状态信息,实现通信。当AFS回路控制器以这种方式进行通信时,某个回路控制器的故障不会引发其他控制器或整个PCS的故障[1]。
图1 HFC的PCS概览
AFS回路控制器在与远程控制器通信时,通过冗余RS-485串行通信端口执行内部通信链路(inter communication link,ICL)的、HFC专有的通信协议。类似地,MUX I/O卡通过HFC专有的MUX通信链路(MUX communication link)协议与它的远程控制器进行通信。一个远程控制器最多可包含14个ICL。每个ICL最多可以支持32个回路与该远程控制器通信。回路状态信息也可以在远程控制器之间传递。远程控制器之间的通信由一种HFC专有的通信链路(communication link,CL)实现。该通信链路作为PCS的高速通信通道,是利用确定性的传输令牌以太网专有协议实现的。工程师操作站可以利用PCS中的以太网协议,通过主机接口控制器连接到CL。在这种PCS中,AFS回路控制器本身即构成一个单回路子系统。该单回路控制器与其他回路保持独立,能够自行连接外部设备进行回路控制。这种单回路的完整性,对安全级关键应用是必不可少的。
本文通过如图2所示的模拟回路,对单回路控制器的一般工作原理进行简单说明。
图2 简单模拟回路原理图
该回路用于控制给水流量。其中,给水流量为输入信号。I/O卡先获取输入信号,范围为4~20 mA;再将其转换为12位的计数,范围为819~4 095;最后再将计数通过AIC模块按比例转化为0~100%的百分比。此百分比的最初设定值由EXT模块提供(默认值= 30%),且可利用M/A站或CRT进行手动调整。CRT通过串行通信链路直接连至控制器。在确定百分比后,控制器执行PID模块,设定一组控制器参数(增益=1,积分=100,导数=0),从而生成一个输出信号,调整代表过程变量的输入(给水流量)与所需设定值之间存在的差异。PID模块的输出通过ANO模块按比例转化为计数。转化的计数在I/O卡中又转变为电流信号,转变的电流信号再通过控制阀门调节给水流量。PID的输出值可通过M/A站或CRT进行手动调整。
为执行上述算法,图2中所示的逻辑原理图被转换为如下的逻辑方程。
BL, 501 = VA, 30, IF (BL, 501 EQ VA, 0.0)
(1)
MAGRP(BL, 3, BL, 1, BL, 501, BL, 3, BL, 3)
(2)
AIC(BL, 1, 100)
(3)
PID(BL, 3, 100)
(4)
ANO(BL, 31, 100)
(5)
这些逻辑方程被编译为二进制文件,并被编程到控制器的板载EPROM中执行。
对具有很多I/O点的大型回路来说,将逻辑图转换为等价的逻辑方程是十分费力和繁冗的。One-Step工具的开发就是为了将这个手动执行的过程自动化,将CAD逻辑图自动转换为逻辑方程,并最终转换为可执行的二进制文件,以便控制器处理回路算法。该过程不仅能取代人工操作,还可以追溯出现的各种错误。而在没有One-Step自动化工具时,这些错误是很难甚至无法发现的。此工具在实施和执行回路控制算法时可以实现零失误。这与核工业对关键回路控制的要求是一致的。
One-Step软件工具还可以为CAD图表创建动态图像,在操作站中进行展示,从而实现对逻辑图的在线动态监控。
One-Step软件工具的开发过程遵守了IEEE Std 1074-2006[2]定义的生命周期过程。该过程已获得美国核管会导则1.173[3]的认可。
首先,需要生成One-Step工具需求规格说明书,对One-Step的功能、性能和局限加以定义和说明。在此基础上,生成One-Step工具设计说明书。设计说明书应描述该工具是如何构建以满足需求规格说明书中确定的需求。设计说明书对该工具的结构、模块组件、接口,以及实现该工具所需的数据进行详细说明。下一步,工具将根据工具设计说明书提供的详细设计信息来实现。
One-Step软件工具的开发还进行了需求追踪分析,将设计说明书中每个可识别的设计单元追踪至工具的需求;同时,还将每个可识别的需求一一列举出来,以便能够向前追踪到后续的设计输出。每项需求均可对应单个或多个设计实体。需求规格说明书前向追踪可关联的文件,包括验证与确认(verification & validation,V&V)材料。每一个在需求规格说明书中的需求都可以向前追踪到具体的检查、分析或者测试,由此确认工具的需求已在设计中得到满足。
One-Step自动化工具架构由两个软件模块组成,各模块发挥不同的作用:一个模块用于生成方程(FPGA应用中的HDL)逻辑文件,编译目标微处理器或FPGA芯片的可下载文件;另一个模块用于生成图形文件,以便静态和动态展示。
两个软件模块是采用不同方式实现的。具体而言,生成方程(或FPGA应用中的HDL)文件模块采用的是面向对象的编程技术,而静态和动态图形展示模块采用的是自顶向下的方法。
虽然生成输出方程(或HDL)文件的程序模块与生成动态图形文件的程序模块相互独立,但其在One-Step工具中是作为整体存在的。One-Step工具架构过程控制流程如图3所示。
图3 One-Step工具架构过程控制流程图
One-Step工具是使用Visual C++在Windows 7环境中开发完成的,是一个独立的程序,只要在HFC程序列表中点击按钮(或选择某个菜单项)即可激活。自动化工具开始运行时会弹出一个对话框,提示用户选择要转换的控制回路。
方程(或HDL)文件生成模块基于面向对象的编程技术,采用了用户自定义类型类的概念,因而模块中的数据都是私有的。类不仅有助于软件的重复使用,还有利于容错。因为错误可以被限制到具体类中。控制系统被定义为项目。一个项目包含一定数量的、表示控制回路的装置。方程(或HDL)文件生成模块具有层次结构。其中:表示控制器系统的项目类中包含表示回路数量的装置类;装置类中又包含了表示图纸的页面类;其下是最低层次的符号类。符号类定义了CAD图表和连接链路中的所有控制逻辑符号,包括符号和端子ID(控制器卡、I/O卡和逻辑数据类型)之间的连接信息;而符号类型(逻辑门AND、OR和NOT等)即为该类的属性。
方程(或HDL)文件生成模块对从Promis-E数据库提取的数据进行扫描,并使用被定义了属性的层次类结构生成符号阵列。然后,模块使用该符号阵列来创建方程(或HDL)文件,方程(或HDL)逻辑最终被编译为可下载文件。此模块还将报告文本文件写入项目数据库。
在基于微处理器的One-Step工具中,其生成的逻辑方程可以使用HFC专有的方程解释器编译成二进制文件。与之不同的是,基于FPGA的One-Step工具在编译过程中要依赖制造商的库。这些库可能来自于第三方,然后被整合到制造商的编译过程中。这些工具或库的开发人员可能既无法提供他们对其工具/库的配置管理的详细证据,又无法提供支持和维持其工具/库作为核电站应用的安全级软件所需的错误跟踪和质量保证级别。因此,必须对应用逻辑及其转换的HDL文件进行严格的代码审查,并对最终的FPGA可下载文件进行全面测试,才能确保安全级应用程序最终结果(可下载文件)的正确性。
静态和动态图像显示生成模块采用自顶向下的程序设计方法,把Promis-E生成的图形报告文件生成输出文件。此图形文件的显示格式与CAD逻辑图的布局相匹配。图形中包含与逻辑功能的输入和输出相对应的动态数据。
静态和动态图像显示生成模块从提取的图形报告文件中生成静态和动态图形显示。图形报告输入的线、折线、圆、弧、椭圆和文本等属性被重新格式化,以便进行图形的静态和动态表示。模块明确定义了状态参数,以便HFC MCRT进行精确的静态和动态显示。
其生成的图形与应用逻辑图形一样,并且添加了动态特性,便于参数的显示和监控,以及系统诊断。
One-Step图形生成流程如图4所示。
图4 图形生成流程图
10 CFR 50附录B中第十二条准则(测量和测试设备的控制)要求:“应建立措施,以确保在影响质量的相关活动中所使用的工具、量具、仪器和其他测量和测试设备在特定时期得到适当控制、校准和调整,从而保持其必要限度内的准确性。”虽然数字化仪控在核应用方面的推广进程比较慢,且这一要求并未特别针对软件工具,但它应适用于软件工程和数字化仪控中的软件工具鉴定。
IEEE Std 1012-2004[4]和IEEE Std 7-4.3.2-2003[5]为软件和V&V工具的使用提供了一般性的指导。IEEE Std 1012-2004得到了美国核管会导则1.168 -2013[6]的认可,IEEE Std 7-4.3.2得到了美国核管会导则1.152-2011[7]的认可。同时,NUREG/CR-7006[8]在FPGA设计工具的选择上提供了指导。
国际原子能机构(IAEA)近期在其核能系列丛书中发布了一篇编号为 No.NP-T-3.17的报告[9]。此报告在软件工具使用方面提供了类似的指导。两个可行的工具鉴定方法如图5所示。
IAEA的技术报告提出:绝大多数的国家监管机构要求,用于执行安全功能的所有工具,或在执行安全功能的硬件、软件或固件的开发工程中所使用的所有工具,都应被视为安全级软件(见图5中的方法2)。这将会对数字化系统开发周期中使用到的、之前开发的软件工具带来沉重的取证负担。工具开发人员通常不提供他们对工具进行配置管理的详细证据,也不能提供为支持和维持其工具作为核电站应用的安全级软件所需的错误跟踪和质量保证的级别。另一种被绝大多数监管机构所认可和接受的方法是,把对工具输入和输出进行的独立审查作为开发过程质量保证计划的一部分,以确保工具能正常工作且不会在最终数字化系统中引发任何可能的其他错误;此外,还要确保带有错误检测功能的工具能够正常检测错误。
由于方法2存在巨大困难,所以目前本方法(图5中的方法1)更为常用。事实证明,当在开发过程的特定部分有明确界定的部分使用工具时,方法1是有效的。
图5 可行的工具鉴定方法
软件工具鉴定问题已在其他涉及安全的行业得到解决。相关法规要求,在涉及安全的行业中使用的工具需要进行鉴定。美国联邦航空管理局(FAA)和食品药品监督管理局(FDA)[10]对用于软件开发和验证的工具的鉴定方法和支持性人工产品提出了监管要求。
根据全球空中交通管理(GATM),所有的商用飞行系统,以及所有的用于军事和空间的飞行系统(美国空军2001),都需遵守美国联邦航空管理局关于航空电子设备必须获得DO-178B鉴定的规定。DO-178B[11]对应用程序开发过程中的软件工具使用作了明确规定,并对工具鉴定概念进行了介绍。
ISO/FDIS 26262[12]“道路车辆-功能安全”对IEC 61508[13]加以改编,以适应道路车辆内部电气/电子系统应用领域的特定需求。对于由电气、电子和软件单元构成并提供相关安全功能的系统而言,该改编适用于其生命周期的全部活动。
根据ISO/FDIS 26262,在以下两种情况下,需要对在安全生命周期中使用的软件工具(或软件工具链)进行评估、分类以及可能需要的鉴定。一是ISO 26262要求的这些活动或任务能够依赖于该工具正确运行。二是该工具的相关输出未能得到全面检查或检验。ISO/FDIS 26262-8提供了确定软件工具是否符合所需置信水平的相关标准,旨在进行工具鉴定,从而为工具适用于安全相关软件开发提供证明[14]。
以上所有标准的共同目标是确保工具不会影响产品的安全性。换言之,工具不应存在任何潜在错误。即使存在潜在错误,也不会影响安全性。因此,在对安全性有很高要求的行业,需要对工具进行鉴定。目前的工具鉴定方法是“验证”和“确认”,旨在提供充足的证据证明工具不存在潜在错误。
One-Step工具的鉴定方法符合IEEE Std 7-4.3.2-2003中提供的指导,IEEE Std 1012-2004中规定的V&V方法,以及第3.1节中列举的其他相关的、在工具使用前用于评估和鉴定工具的行业标准。作为鉴定方法的一部分,One-Step工具的开发包括以下六个步骤。
(1)开发工具的需求规格,包括预期的工作流程、工具功能以及工作流程中使用的属性。此步骤必须对工具的使用方式,以及该工具与其他相关工具的关系进行明确定义。
(2)分析工具的鉴定需求,以及软件安全生命周期对工具的相关特定需求。此步骤验证工具符合规格或遵循用户手册。部分需求可能需要根据其他适用的标准要求进行分析和调整。
(3)开发符合工具需求的设计规格书。在此步骤中,将会生成工具的设计规格说明书。
(4)根据工具设计规格说明书实现工具。在此步骤中,按照设计规格书建立编码并实现工具。
(5)测试工具,确保功能相符,设计实现正确。在此步骤中,执行代码覆盖测试(对所有需要的逻辑门和宏)和工具功能测试(对所有逻辑功能)验证工具的设计和实现。
(6)执行额外的安全确认测试(特别是故障注入)。在此步骤中,对软件工具施加异常输入,评价工具的响应和异常输入处理情况。使用多种极端情况和故障注入测试来对软件工具进行确认。
(7)工具应用于集成仪控系统测试(针对指定的典型应用以及在核电站运行的回路逻辑)。在此步骤中,在实际的物理和运行条件下对软件工具作进一步确认。
同时,有独立的V&V团队进行验证和确认,具体包括以下任务。
①审查和验证工具需求规格和设计实现。
②工具代码审查和试运行。
③工具代码覆盖测试(对所有需要的逻辑门和宏)。
④工具功能测试(对所有的逻辑功能)。
⑤工具应用于集成仪控系统测试(针对指定的典型应用程序以及用于核电站运行的回路逻辑)。
运行历史记录可进一步提高工具的置信水平。所有修改历史,包括错误修正历史和工具运行中生成的异常报告,均按照IEEE Std 7-4.3.2-2003和IEEE Std 1012-2004规定的配置控制和管理要求进行了记录。
One-Step自动化工具是使用面向对象和过程化的编程方法开发的。One-Step完成了在实现和执行回路控制逻辑的过程中,从CAD图表到文本方程的逻辑转化的自动化。One-Step还可创建CAD图表,并自动保存。它一方面取代了逻辑转换和逻辑CAD图表存储的人工操作,还能消除人工操作可能带来的错误;另一方面,使用自上而下方法,它还能创建可以在操作站显示的CAD图表的动态图像,从而实现对系统逻辑的在线动态监控。
One-Step工具的鉴定过程包括工具的需求规格开发、工具的详细设计与实现、工具的验证与确认、工具的版本控制,以及工具在核安全级仪控应用中的使用历史。V&V可保证工具的正确性。
One-Step的开发和鉴定遵循了行业导则和标准规定的生命周期开发过程和工具鉴定方法。当One-Step自动化工具被集成到用于工业控制的控制系统(特别是用于核工业的关键回路控制)时,它的安全性和可靠性可以得到保证。