
想象你走进一个超级酷炫的科学实验室,里面有像粒子加速器、同步辐射光源或核聚变装置这样的"科学巨无霸"。这些庞然大物是怎么被精准控制的呢?答案就藏在一个叫EPICS(实验物理与工业控制系统)的神奇软件里。它就像我们身体里的神经系统,让这些大机器能够协调工作。
EPICS已经30岁啦!在2017年,它迎来了重大升级——EPICS 7诞生了!这个新版本不仅保留了前辈的可靠性能,还带来了超厉害的数据传输技术,让科学机器的控制变得更聪明。
以前的控制系统就像用老式传真机发文件——哪怕只改了一个字,也要重传整张纸。EPICS 7引入的pvAccess(PVA)协议则完全不同,它就像智能快递:
这项技术让控制系统处理复杂数据的能力大大提升。比如在欧洲散裂中子源(ESS),PVA协议能轻松应对每秒数百万个数据点的传输,就像在数据洪流中建了一座智能立交桥。
在SLAC国家加速器实验室,科学家们用EPICS 7把Python编写的人工智能算法接入控制系统。这就像给显微镜装上了AI眼睛,能实时发现实验样品中的异常,还能自动调整实验参数。
ITER国际热核聚变实验堆用EPICS 7同时控制74个磁场控制器。想象一下一个乐队指挥同时协调几十种乐器——EPICS 7确保每个"乐器"(控制器)都能完美配合,误差不超过百万分之一秒!
疫情期间,多个实验室通过EPICS 7的远程功能进行"云实验"。科学家们就像通过视频会议一起操作实验室设备,而且数据传输非常安全,这要归功于正在开发的TLS加密技术。
EPICS 7就像一个会说多种语言的天才,支持C++、Java、Python等编程语言。这样不同背景的科学家都能用自己熟悉的语言开发控制程序。
考虑到很多老设备还在使用,EPICS 7设计了"双协议并行"模式。就像手机同时支持4G和5G,老设备可以继续用旧的CA协议,新设备则能享受PVA的高速通道。
现代科学装置越来越复杂,就像由数百万个小零件组成的精密钟表。EPICS 7的价值在于:
随着人工智能和物联网的发展,EPICS正在成为"科学物联网"的核心平台。想象一下未来的实验室:
这些场景正在通过EPICS 7逐步实现。正如一位开发者所说:"我们不是在写代码,而是在为科学发现搭建数字高速公路。"
从控制一台显微镜到协调整个粒子对撞机,EPICS 7正在改变科学研究的协作方式。它可能不会出现在科学论文的作者名单
附录:原文
摘要
自2017年首次发布以来,EPICS 7版本已在多个站点投入生产应用。EPICS 7的核心特性——通过新型pvAccess网络协议支持结构化数据——已在大规模生产系统中得到验证。EPICS 7促进了新功能的实现,包括在控制系统中开发AI/ML应用、管理海量数据、与中层服务接口等。其他功能如IPv6协议支持和访问控制增强也已实现。未来工作包括将重构后的API集成到核心发行版、增加现代网络安全特性,以及开发或增强利用这些新功能的服务。本报告将概述部署现状、EPICS核心的新功能,并介绍其未来发展规划。
引言
EPICS 7
实验物理与工业控制系统(EPICS)软件工具包已定期更新其3.x主版本系列超过30年[1]。2017年12月,下一代EPICS Base为期十年的初始开发阶段以一次大型繁琐的合并操作告终。经过测试验证后,首个结合现有EPICS V3代码与新模块(工作代号"EPICS V4")的版本作为"EPICS 7"发布[2]。
pvAccess协议
pvAccess(PVA)网络协议随EPICS 7引入,扩展了经典EPICS协议Channel Access(CA)的功能。PVA支持传输用户自定义的任意结构体,无需重新编译客户端或服务器代码。其相较于类似工业协议标准的显著优势在于高效的订阅机制:服务器和客户端拥有完全相同的结构体副本,当数据更新时,仅传输结构体中发生变化的元素并在目标端更新。
初始目标
EPICS 7从一开始就确立了若干核心目标(作为"EPICS V4"开发计划的一部分):
发展与成就
规范类型体系
EPICS成功的核心因素之一是过程数据库中的标准记录类型和CA网络协议的编译内置结构。基于此,通用EPICS应用可跨多个安装环境运行。为保持这一优势,PVA引入了称为规范类型(NT)的明确定义结构,这是CA标准结构的超集。
规范类型支持高效创建通用应用,并确保CA与PVA之间的功能兼容性。当pvAccess使用规范类型处理标量和数组时,其优势开始显现。以"NTNDArray"数据类型为例,该规范类型将数组值与压缩和图像编码元数据结合。过去此类数据需通过多个独立CA PV传输,而使用PVA时,单个NTNDArray PV即可提供压缩波形或图像的完整信息。由于规范类型结构的标准化语义,CS-Studio图像显示和波形绘图组件能完全理解并利用这些信息。
新项目可能完全采用PVA,而现有项目需逐步从CA过渡到PVA。对于EPICS 7 IOC上的记录"X":部分应用直接使用"X"作为PV名称,工具将根据站点默认协议通过CA或PVA交互;其他应用则明确使用"ca://X"或"pva://X"指定协议访问相同数据。
配置为采样存储PV"X"值的归档系统,初期可能使用默认CA协议,后续可升级为采样"pva://X"。CS-Studio数据浏览器已为此过渡做好准备:当用户查看"pva://X"的轨迹时,浏览器会基于完整限定名称显示其值,同时查询"ca://X"和"X"的历史数据(假设过往时段使用不同协议采样),最终整合结果为用户呈现无缝跨越协议变更的单一轨迹。
数据采集
数据采集用例要求网络传输具备高效率与带宽,同时保证数据一致性及测量、归档和检索间的高精度时间戳。PVA规范类型支持结构化数据的"开箱即用"高效传输。如前所述,NTNDArray除数组数据外,还包含足够元数据(如数组维度、数据编码、数据类型等),使PVA客户端能独立解析显示数据。这保证了单一结构在任何时刻的一致性,从而支持结构内数据压缩等功能(例如CS-Studio支持可动态启停的无损LZB压缩,客户端根据编码元数据自动适配)。
PVA已应用于多个设施的数据采集与成像。例如areaDetector模块[4]支持通过PVA传输X射线散射和成像的各种探测器图像数据;用于中子散射飞行时间/像素ID事件阵列;以及脉冲加速器的束流同步采集以确保机器全域诊断数据一致性。
新一代用户级库
EPICS 7初期pvAccess服务器和客户端实现采用C++和Java库(包括pvAccessCPP、pvAccessJava、pvDataCPP和pvDataJava)。这些实现成功验证了预期功能并投入生产,但其设计局限于C++和Java的共同特性,未能充分发挥各语言优势。
2019年启动的新Java实现(core-pva)和新C++实现(PVXS)开始挖掘各自语言环境优势。例如原始实现包含独立运行时类型系统,而Java版现采用原生类型系统和"instanceof"操作符,C++版则充分利用模板处理多种数据类型。尽管PVXS和core-pva的API与初始实现差异显著,但对相应语言程序员而言更符合自然习惯。PVXS与core-pva开发者间的频繁交互确保了协议兼容性——不仅新C++与Java实现间互通,还能与原始实现交互。协议文档在重新实现过程中持续更新完善。
目前PVXS和core-pva均已满足需求。虽然原始实现仍在维护(仅修复漏洞),但新实现被明确视为发展方向。core-pva Java库已用于CS-Studio;当前EPICS 7 IOC默认使用原始C++ PVA库,但PVXS库已提供完整命令行工具集及替代性"QSRV" IOC集成方案。"P4P" Python绑定使Python能便捷访问PVXS(即PVXS网关),支持跨网络PVA流量传输。
中层服务
EPICS 7通过pvAccess支持复杂数据结构及带参数的PV值请求(实质实现远程过程调用RPC访问方法),从而支持高性能数据服务。这种RPC方法专为请求/响应型操作设计,与常规数据访问方法(读、写、订阅)不同——它允许请求和响应的有效载荷差异化且每次执行可变。
应用场景包括:通过正则表达式匹配查询实现简单PV名称解析;检索物理晶格和束流模型;连接Oracle等关系型数据库获取磁铁多项式测量或设备调试状态等运行数据。SLAC的FACET项目采用复杂EPICS 7服务套件,将现代Python/MATLAB物理应用与同步轨道采集、速调管能量剖面控制等遗留物理系统集成,甚至支持基于Fortran的多模实验管理器操作。该支持主要针对高性能计算与控制网络解耦的趋势(如ML、大规模数值计算和多粒子建模系统从高性能集群接入生产控制系统)。
另一类更接近控制概念的EPICS 7服务采用RPC方法实现具有事务性行为模式的复杂写操作。例如ITER磁诊断系统测量磁场线和等离子体电流时,将74个FPGA控制器(每个5kB数据)的完整配置作为专用PVA结构体一次性写入主控制器[5]。该控制器通过验证数据完整性、配置所有FPGA、检查健康状态并向PVA客户端返回单一操作状态来实现事务行为。
应用扩展与普及
如近期协作会议[6]所述,EPICS协作生态持续壮大:新项目与设施采用EPICS 7,现有设施将其用于重大升级。例如费米国家加速器实验室选择EPICS作为PIP-II项目(高能物理旗舰加速器)的控制框架;布鲁克海文国家实验室将其应用于电子-离子对撞机项目(核物理研究下一代对撞机)。这两个案例均将EPICS 7替代原有自研控制框架,同时预期保留部分原始控制组件。
其他采用EPICS 7的大科学设施项目包括:ORNL的STS项目、ANL的APS-U项目、LBNL的ALS-U项目、SLAC的LCLS-II HE和MEC-U项目、瑞典ESS设施及国际ITER项目。这些大型项目的加入确保了EPICS的长期支持,并推动工具现代化以满足新设施需求。
大学实验室和小规模项目同样贡献显著:这些团体为学生和新一代EPICS技术人员提供了活跃的培训环境。例如弗里茨-哈伯研究所正在为其组织框架内的马克斯-普朗克学会各研究所的小型实验和设施开发EPICS社区实践。众多大学实验室发现免费开源的EPICS工具包是开发控制系统的经济高效选择,同时受益于更广泛的EPICS社区。
ESS在2023年调试初期就将PVA设为控制室应用(CS-Studio/Phoebus)的默认协议。控制系统在高网络负载下运行稳定。P4P模块的PVA网关成为生态系统的关键组件:相比CA网关,它在处理混合规模数据项(从标量到数百兆字节数组)的高并发连接时性能显著提升。
迁移到PVA被证明物有所值:除几乎无迁移中断外,相比CA还带来诸多优势。
RTEMS实时操作系统支持
RTEMS实时操作系统[7]作为VxWorks[8]的替代方案,曾用于控制VMEbus系统的IOC(主要运行旧版EPICS 3.14)。目前仅少数设施基于VMEbus构建新系统。过去EPICS向RTEMS 5/6版本的移植进展缓慢。
这一局面在过去一年发生根本转变:随着VxWorks系统许可政策变更,部分大型设施(APS、Gemini、Diamond)需在升级过程中保留原有VMEbus硬件和驱动,并将实时操作系统切换至RTEMS。为此一些实验室与RTEMS开发者建立战略合作,致力于实现EPICS 7在PowerPC架构VME CPU板(支持标准网络协议NFS/DHCP/BOOTP/NTP/PTP)上的完整运行支持。NFSv4测试已完成,针对新款MVME25200(QorIQ)VME CPU板的板级支持包计划年底发布。
获得完整RTEMS 6支持后,EPICS 7现可用于树莓派、Zynq 7000 SoC等其他具备实时特性的单板计算机。
未来RTEMS开发计划包括gdb远程调试支持和动态加载功能。
文档体系完善
分布式协作中的文档管理至关重要,EPICS亦不例外。数年前虽推出新网站[9]并启动参考材料网站[10]建设,但因缺乏明确规范和工作流程导致贡献寥寥。主网站内容管理系统虽界面友好却难以为偶尔贡献者管理。
为改善现状,近期"文档冲刺"(系列文档改进研讨会)确定了新文档结构、创建贡献指南并重组现有网站。为降低EPICS社区贡献门槛,核心文档源现托管于GitHub并采用熟悉的GitHub贡献工作流,由readthedocs.org提供服务处理、发布和托管。
非核心文档应随源代码托管并链接至中央文档中心。通过统一规范、工具和风格,可提升集成度与视觉一致性,为新用户创造更高效的学习曲线。
目标达成情况
EPICS 7发布五年后已实现所有初始主要目标:
尽管目标总体达成,仍存在少量限制:
下一步计划与未来方向
IPv6支持
IPv6已成为当前互联网标准,但IPv4仍广泛使用。2020年11月,美国联邦资助机构被要求在数年内过渡至纯IPv6网络环境[11]。虽然遗留控制设备可能在隔离网络上继续运行IPv4,但"办公网络"上的EPICS工具可能需很快支持IPv6。
TCP通信向IPv6转换的第一步较为简单:多数C/C++网络代码在将"gethostbyname"调用替换为"getaddrinfo"后即可同时接受IPv4/IPv6地址主机名。Java等语言也有相关网络支持——更新地址解析即可实现IPv6支持。这在EPICS IOC用于与ControlLogix PLC通信的"ether_ip"驱动分支中已验证:网络工具测试表明该驱动现可与IPv6地址通信。但同时暴露出控制系统的IPv6升级难点:ControlLogix PLC尚无法配置IPv6地址。
对于pvAccess,PVXS和core-pva均已支持IPv6。PVA服务器使用的地址列表可包含显式IPv6地址或解析为IPv6的主机名。默认情况下IPv4实现使用UDP广播进行名称解析,而IPv6不再支持广播,但功能等效的"链路本地"地址多播被用于IPv6上的PV名称解析。
支持IPv6无需修改PVA协议。虽然少量涉及地址解析的协议消息预留了IP地址空间,但这些消息从设计之初就具备容纳IPv6地址的容量。
随着PVXS同时支持IPv4/IPv6,基于PVXS的PVA网关可用于桥接IPv4或混合网络至纯IPv6网络。
网络安全连接
当前正计划更新PVXS(C++)和core-pva(Java,在CS-Studio/Phoebus中)以支持基于行业标准的传输层安全(TLS)技术[13]的网络安全连接。搜索PV名称的PVA客户端可声明支持TLS认证加密通信;支持TLS的PVA服务器将接受此类请求并建立安全会话。支持安全连接的服务器将优先选择TLS而非非安全连接,服务器认证通过提供X.509证书实现,客户端认证采用相同机制。
该计划将使用客户端证书主题作为ACF授权函数中的客户端名称,从而控制写入权限。TLS名称解析可单独查询PVA服务器列表或联系PVA名称服务器。名称服务器将更新功能:不仅解析名称请求至PVA服务器,还提供证书状态信息供服务器使用,并允许服务器通过OCSP装订优化客户端证书状态验证。
新型PVA网络安全需新配置方案:密钥和证书需安全存储配置。最终更新的pvAccess协议将在端到端加密、完全认证、高效可控的框架内为控制系统访问提供强大的授权机制。该实现计划完全向后兼容,确保安全与非安全客户端及服务器无缝互操作。
鼓励测试人员在PVXS"TLS"分支和Phoebus中试用代码并反馈意见。此项工作主要由Osprey DCS、SLAC和ORNL历时两年完成,其中Osprey DCS和SLAC的贡献获美国能源部专项资助。
结论
所有初始主要目标均已实现。EPICS 7及其新型pvAccess协议的采用正加速推进:新安装系统从第一天起即使用新协议;现有系统开始遵循无缝平滑的集成路径进行迁移,确保不留任何站点掉队。
EPICS用户正逐步发掘pvAccess提供的扩展可能性,为超越传统EPICS系统范畴的应用场景创建新应用。当前支持IPv6和网络安全连接的项目将应对即将到来的IT挑战与需求。开放可扩展的标准结构类型体系确保了应用在安装环境与用户间的兼容性与可移植性。
历经三十年发展,EPICS仍是构建加速器和大型实验物理项目控制系统的顶级开源工具包。随着EPICS 7的成功发布,协作社区提供了现代化实现方案,确保未来数十年的技术领导地位。
上,但正是这些"看不见的工程师",支撑着人类探索宇宙奥秘的每一次尝试。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。