摘要:欧洲核子研究中心技术基础设施和加速器复合体的工业控制系统由分布在CERN设施周围的大量设备和组件组成。围绕着CERN设施在干预这种系统的情况下,呼叫中工程师或系统专家需要关于问题性质的详细信息,例如, 什么设备,什么问题,干预程序,以及设备位置的上下文数据,当前对这个地方的访问条件,所需的访问权限列表以及他/她是否被授予这些权限。当负责干预的人对控制系统仅有有限的了解时,这是特别相关的,因为某些呼叫服务是这样的。在CERN,这些信息分散在许多数据源中。 本文介绍了MARS(维护和资产管理),这是一个基于网络的工具,旨在联合来自异构资源的数据,旨在为干预和维护活动提供支持。 这些信息可以显示在单个网页中,也可以通过REST API访问。
1、引言
CERN Beams Department的工业控制和安全系统集团(BE-ICS)为控制系统提供交钥匙解决方案,以及用于实验,加速器综合体和技术基础设施的安全和访问控制系统。 在工业控制领域,BE-ICS开发全面控制系统,包括执行实时任务的PLC或前端计算机,以及使用西门子/ ETM的商用SCADA软件包WinCC Open Architecture(OA)[1]的监控应用。 所有这些控制应用程序都是使用在WinCC OA,JCOP(联合控制项目)[2]和UNICOS [3]之上开发的两个工业控制框架中的通用构建块完成的。
尽管所有这些应用程序都是从标准组件构建而成的,但它们可能会根据所需的功能和部署它们的域而有所不同。 这也适用于从BE-ICS目录中选择的技术来实现这些应用,例如, 西门子与施耐德PLC,Modbus与OPC统一架构,Oracle归档与文件归档等。通常,控制系统的不同技术或层中的专家 PLC和SCADA开发人员共同协作开发这些应用程序。
这些应用中的大多数具有很长的使用寿命,通常是LHC的一生,这给了CERN人员大量更新,在某些情况下,确保详细了解应用程序可能是一个挑战。
BE-ICS目前负责开发和维护在大约100台Linux服务器上运行的200多个SCADA应用程序。 这些应用程序包括来自西门子和施耐德的400多台PLC以及大约40台前端计算机。 这些控制设备在地理上分布在欧洲核子研究中心的场地周围。
大量的应用程序,所使用的各种技术以及它们的地理分布是必须覆盖所有这些应用程序和控制设备的电话服务的主要挑战。 工业控制备用服务由BE-ICS的成员组成,他们专门从事一套特定的技术,并参与开发一些应用程序。 了解BE-ICS提供的每一个应用程序及其开发所涉及的所有技术都是不可能的。 此外,除了技术知识之外,还需要许多上下文信息才能在控制应用程序中执行干预。 以下是干预前要解决的一些最常见的问题:
l 什么是受影响的设备,是什么问题?
l 遵循什么程序? 哪里可以找到它们?
l 设备位于何处? 我怎样才能访问这个位置? 我拥有所有必要的访问权限吗?
l 与其他系统的依赖关系是什么?
l 此设备上运行什么软件? 什么版本的程序? 我从哪里得到一份副本?
l 设备由什么组成? 我从哪里得到备件?
然而,回答这些问题所需的信息分散在多个来源之间,它们之间没有明确的关系,因为它将在下一节中介绍。
2、资产信息管理
CERN的技术基础设施由许多不同领域的专家和专家维护,如冷却和通风,电力,低温技术和计算基础设施。 每个专家组负责文件,配置和处理他们的设备。 不同的系统和数据库被用于特定的任务,从而导致分散在不同数据源中的资产,功能和使用信息。 每个数据源都用于详细描述资产的特定方面,但只有所有数据的组合才能为设备提供完整的画面。
以下列表简要介绍了最重要的数据来源及其中包含的信息:
l LANDB - 包含可以连接到CERN网络的所有设备的数据库。
l InforEAM - 资产管理和维护数据库(功能位置,资产,备件,维护计划等)。
l EDMS--电子文档管理系统(文档,图片,技术图纸等)。
l ICESAS - 工业控制设备配置数据库(应用布局,软件配置等)。
l Layout - 包含有关设备物理组成数据的数据库(物理安装数据,位置层次结构等)。
l GIS - 地理信息系统(地理坐标,地图)。
l IMPACT - 干预管理计划和活动协调工具(工作计划和授权)。
l ADAMS - 访问分配和管理系统(访问授权,安全培训要求等)。
l LASER / PHOENIX - CERN控制中心的报警控制台服务(现场和历史报警数据)。
l HelpAlarm - 有关警报的其他信息和文档(干预程序)。
l MOON - 监控工业控制系统(控制系统设备的详细报警)。
这些数据源是独立的实例,只有少数使用公共密钥字段来链接它们之间的数据。 另外,命名约定和实现约束防止数据源之间的直接链接。但是,通过一些经验和数据挖掘,可以找到相关性,这些相关性可用于查找MARS中显示的有用数据。
3、MARS
BE-ICS小组开发了一种名为MARS的工具,以便在干预期间协助备用服务和设备负责小组的成员。 MARS访问前一节中提到的所有数据源,向用户提供设备问题,位置,当前访问条件以及替换设备所需的所有信息(例如当前PLC组成)的全面视图, 在哪里获得备件以及指向托管设备所需程序版本的软件库的指针。
MARS允许通过使用设备的功能位置(名称绑定到物理位置和目的)或资产代码(绑定到实际物理设备的ID)来查询不同的数据源。 即使资产被替换,功能位置也不会改变。在大多数情况下,查询将使用功能位置,但是,在特殊情况下用户只能访问资产代码,例如, 在许多情况下,只有资产名称会打印在物理设备上并以条形码编码。 出于这个原因,概念验证移动应用程序还允许扫描设备条形码访问MARS收集的信息。 该功能对于用户在开始干预之前验证设备的身份非常重要。
在下面的章节中,描述了用于实施MARS的体系结构和技术及其主要功能。
结构:MARS被设计成符合后端即服务方法的现代应用程序,前端和用户界面与业务逻辑部分分离。 通过REST API可以像访问外部服务一样访问业务逻辑。 这使得多个独立的前端可以连接到后端和第三方工具,以将MARS用作数据源。 图1显示了MARS的体系结构以及访问的不同数据源。
图1:显示工具访问的主要数据源的MARS架构。
后端联合来自不同来源的所有数据,并作为这些系统的代理。 MARS不会将查询产生的任何数据存储到数据源中。 此外,MARS不直接与任何运营设备进行通信。 这种方法的缺点是强烈依赖外部数据源的可用性。
MARS的前端基于Angular JS [4]和Bootstrap [5]等现代Web技术。
成就:该应用程序正在开发为Maven [6]作为基础构建技术的多模块项目,以提供不同功能的明确分离并简化并发开发。
业务逻辑分为模块基于数据源 - 每个数据源都有自己的专用模块。 模块是独立的,它们的结构遵循相同的模式:
l 数据传输对象定义 - 映射到JSON作为MARS后端输出的POJO类,以及从外部系统接收的输入数据定义。
l 域逻辑(Domain logic) - 所有域数据处理,相关信息和从外部收集数据。
l REST端点定义 - 实现Spring Model View Controller www.biyezuopin.vipREST控制器,将URL与适当的服务调用进行匹配。
尽管目前所有模块都部署在单个Web容器中,但设计遵循微服务方法,其中每个模块都可以单独部署。 尽管模块之间存在一定程度的依赖关系,但Maven在封装模块以包含所有必需的库时会跟踪和解决这些依赖关系。
应用程序的启动由Spring Boot处理,它允许创建独立的构建,只需要运行Java 8,而不需要任何额外的应用程序服务器或外部Web容器。 Spring IoC容器处理最初的应用程序设置,并通过Java CDI注解建立所有服务器端服务.REST端点是为了简单而使用Spring MVC创建的,并避免引入与其他包的依赖关系。
前后端相互作用:MARS的响应时间及其可用性和提供的功能取决于外部数据源的可用性。当从MARS到远程源的连接被卡住而完全没有响应时,这是特别相关的,例如,如果远程服务负载很重,并且只会在延迟后才做出响应。这个问题在后端和前端都会得到缓解。后端对外部服务的调用在预定义的超时时间内执行,并且如果在达到超时后没有收到数据,连接将自动中断。但是,这还不足以提供良好的用户体验,因为如果达到多个超时,服务响应可能会过长。如果服务的响应时间比预期的要长,那么缩短超时可能会限制收集的数据量。为了避免这种情况,每个数据源分别访问数据。通过这种方式,当通过AJAX调用将查询发送到每个端点时,前端会立即加载,一旦出现响应,数据将被放置在各自的占位符中。通过这种方式,数据一收到即递增呈现给用户。
通信协议:MARS访问的数据源和服务是在不同的时间,由不同的团队和使用不同的技术开发的。 这就强制使用多种协议与它们进行通信,如图1所示。在某些情况下,没有API可以访问数据源,或者API非常有限,并且不公开与干预有关的数据。 在这些情况下,使用JDBC直接从底层数据库查询信息。 对于那些通过REST API公开数据的数据源,Spring REST Template用于数据交换。 最后,有些源使用SOAP Web服务公开数据,但即使在这里,它们也使用不同版本的SOAP标准,因此客户端使用Apache Axis和Apache CXF。 作为输出,MARS后端为标准REST API端点提供了启用了跨源访问的功能,以便任何经过身份验证的用户都可以访问数据。
用户界面:由于MARS也可以访问移动设备(即在干预的情况下扫描PLC条码),用户界面被设计为响应式,尽可能简单,以节俭的方式提供重要信息。 MARS用户界面的一些片段在图2-5中。 打开MARS会导致向后端的相应REST端点分派多个AJAX请求。
MARS的主要Web用户界面遵循与后端服务相同的信息组织。 如果在数据源中发现查询设备的信息,则其数据将放置在各个模块中。 每个模块对应于一个AngularJS指令。
在下面,我们将假设用户不得不介入PLC的情况来描述MARS的用户界面中显示的信息。
网络信息连接到CERN网络的每件设备都在网络数据库中注册。 这些数据库包含设备类型,制造商和型号,IT插座的地理位置以及设备负责人等信息。 图2显示了由MARS从CERN网络数据库收集的信息。
图2:MARS UI的片段显示来自CERN网络数据库的设备信息。
控制应用程序的结构PLC通常连接到承载SCADA应用程序的数据服务器。 这些应用程序的结构存储在JCOP框架的系统配置数据库中[7]。 从这个数据源中,MARS检索PLC的物理链接,以及监控应用程序的名称和用于生成应用程序的组件版本。 图3显示了数据服务器以及PLC连接到的WinCC OA应用程序以及用于设计应用程序的不同版本的软件包。
图3:MARS用户界面的片段,显示了PLC和Supervisory应用程序之间的链接,以及用于自动生成的不同版本的封装。
设备组成从InforEAM中检索组成设备的硬件元素列表及其分层依赖关系。 对于PLC,MARS Web界面显示I / O,内存和通信卡及其电源。
监测和诊断BE-ICS组提供一项服务,以使用MOON监测控制应用[参考]。 特别是,对于PLC,显示了配置的不同报警的状态以及设备诊断缓冲区的内容。 这些信息首先给出了PLC经历的问题类型。 图4显示了MARS中用于PLC的诊断信息。
图4:显示PLC诊断信息的MARS UI片段。
工作指令通过工作指令在InforEAM中追踪过去对设备的干预。 MARS显示设备最近10个工单的列表。 这使用户可以了解设备上最后一次干预的性质,以及发现重现性故障。
设备位置CERN布局数据库用于解决托管设备的机架。 使用CERN GIS地图,MARS的用户界面显示了该机架的确切位置。 当架子信息在布局数据库中不可用时,例如 该信息尚未输入到数据库中,GIS地图将显示设备网络插座的位置。 图5显示了PLC位于的GIS地图中的确切机架位置。
图5:MARS UI的片段,显示了将PLC放置在GIS地图中的机架位置。
访问控制大多数设备位于限制区域。 没有正确权限的情况下无法访问的区域。 MARS使用CERN,ADAMS的访问控制数据库来显示设备位置的不同接入点,以及当前的访问条件以及授予用户的访问权限。 如果访问不被授权,MARS也会尝试解决原因,例如, 一项特殊访问请求仍有待批准。
4、前景
今天,MARS工具可用于显示关于定义明确的设备类型的信息,例如PLC及其硬件模块。 来自不同数据源的现有数据还将允许扩展该信息以显示位于安装层次结构中较高位置的相关系统或设备的状态,例如, 在发生PLC故障时受影响的冷却系统。
进一步的计划包括建立与CERN电子文档管理系统[8]和BE-ICS运行的PLC软件库Gitlab [9]或VersionDog [10]等软件库的链接。 这样可以向用户提供指向特定设备的技术文档的链接,以及使用直接指针下载运行在故障设备上的程序的确切版本。
设想的另一个扩展是将操作员使用的帮助报警程序整合到CERN控制中心。 相关的这些程序描述了要采取的步骤,例如, 请致电的人,可能导致问题的原因,以及如何在警报发生时解决问题。 此外,MARS也将从对CERN地图的持续改进中获益,例如,MARS可以通过将MARS连接到备件目录来告知用户有关替换模块和设备的可用性和位置。 通过添加接入点和地下设施的照片。 最后,由于许多不同的服务为其系统增加了在线功能,因此可以提供与预填充数据字段的直接链接,以实现数据更正并直接记录MARS的干预措施。 例如,可以直接使用MARS移动应用程序将干预期间拍摄的照片上传到EDMS。
参考文献:
[1] WinCC Open Architecture, http://www.etm.at/
[2] O. Holme, M. Gonzalez Berges, P. Golonka, S.Schmeling, “The JCOP Framework”, ICALEPCS2005, Geneva, Switzerland.
[3] H. Milcent et al., “UNICOS: An open Framework”,ICALEPCS 2009, Kobe, Japan
[4] Angular JS, https://angularjs.org/
[5] Bootstrap, http://getbootstrap.com/
[6] Maven, https://maven.apache.org/
[7] F. Varela, “Software management of the LHC Detector Control Systems”, ICALEPCS, 2007, Knoxville,Tennessee, USA.
[8] CERN Electronics Document Management System,http://www.cern.ch/edms/
[9] Gitlab, https://about.gitlab.com/
[10] VersionDog,https://www.versiondog.com/home.html