1. GDA简介

1.1. 框架的目标

通用数据采集框架(GDA)是一个开源项目,它为运行同步加速器和中子束线实验提供了一个可配置的平台。该软件的目的是为来访的科学家提供一个以科学为中心的环境,而不是以硬件为中心的环境来进行实验。

有一个带有嵌入式命令行界面(CLI)的图形界面(GUI)。GUI包含用于数据可视化和分析的工具。

硬件可以直接从GDA操作,也可以通过诸如EPICS或探戈之类的控制系统进行操作。

该软件具有可配置性和可扩展性。这使得软件可以灵活地满足不同光束线和设施的要求,并最大限度地实现代码共享。

1.2. 设计概述

Java是GDA代码中使用的主要语言。Jython是嵌入在GDA服务器中的脚本解释器。

GDA采用客户端-服务器设计。服务器提供到光束线控制系统和硬件的连接。服务器通过CORBA服务器分发表示硬件的对象。这些对象是使用以下工具配置的 Spring XML文件。

服务器还包含Jython解释器,在其中运行数据收集扫描和脚本。这称为命令服务器。命令服务器还为该光束线上的GDA提供中央服务,例如基于角色的访问控制。

客户机是一种Eclipse RCP产品,它通过CORBA与服务器通信(用于远程过程调用和事件)。它执行实时数据的数据可视化,并浏览旧数据文件。

代码库被拆分成Eclipse插件。GUI代码、特定于设施的代码和特定于技术的代码从一组通用的“核心”插件中分离出来。服务器和客户端都使用相同的代码。但是,服务器作为常规(非OSGi)Java进程运行,而客户端是Eclipse RCP(OSGi)产品。

数据主要写入 Nexus 格式化文件,但GDA安装可以配置为写入任何格式。

1.3. 主要设计概念

扫描

收集数据的主要上下文。通用步骤扫描在Jython环境中从单个命令运行。扫描操作一系列扫描对象,并在每个点之后将其数据广播到客户端以供显示和文件写入器。主步进扫描有几种变体。可以编写实现扫描接口的其他类型的扫描类。或者,也可以编写脚本,只需操作Scanables和检测器,并在脚本中创建ScanDataPoint。

ScanDataPoint

一个可序列化的对象,它保存扫描中单个点的数据,以及元数据(如扫描中该点的编号)。这些对象被传递给客户端,以便在图形中显示,并传递给数据编写器,以便记录在文件中。

设备

表示硬件的对象的接口。设备是Scanable的超级接口。设备具有用于不同类型硬件的大量子接口。通过通过设备接口操作设备类型,而不是拥有独立的对象,GDA使用的底层控制系统被抽象化。这使得更高级别的GDA对于控制系统或硬件类型的品牌是不可知的。

可扫描的

希望参与STEP扫描的对象的接口。大多数可供光束线用户使用的对象都是可扫描的。可扫描对象是表示数字或数字数组的高级对象。这些数字可以简单到电机位置、保存在文件中的值,也可以是计算结果。

探测器

Scanable的子接口。检测器与扫描仪不同,因为在步进扫描期间,扫描中的每个节点(点)具有两个阶段:操作非检测器扫描仪的移动阶段,然后操作检测器的数据收集阶段。

对象服务器

GDA服务器端进程的名称。它包含在Spring XML文件中定义的对象(主要是Devices)的列表。对象通过CORBA或RMI分发,以供GDA客户端(或可能的其他对象服务器)访问。其中一个服务器端对象是Command Server,它包含用于操作排序的GDA Jython解释器。向对象服务器添加了基于角色的访问控制层,以限制设备的某些操作。

取景器

提供按名称定位对象(本地的或通过CORBA分布的)的服务的Singleton类。

命令服务器

GDA的Jython环境和相关服务。这些服务包括基于角色的访问控制、脚本和扫描状态、扫描数据点广播。

InterfaceProvider

为命令服务器提供的服务提供资源的Singleton类。