-
托卡马克是一种利用磁场约束等离子体的核聚变装置[1]。在托卡马克装置的运行过程中,会不可避免地出现等离子体电流快速下降到0左右、等离子体在极短时间内失去约束,导致放电终止的现象[2],这种现象被称为等离子体破裂。破裂时等离子体内部的能量会在极短的时间内释放出来,这会对装置造成很大的损伤。现有的大量气体注入(Massive Gas Injection,MGI)[3]、散片弹丸注入(Shattered Pellets Injection,SPI)[4]等技术可以有效缓解破裂带来的危害,但是其作用的时机高度依赖于对等离子体破裂时间的良好预测[5]。
目前破裂预测的技术方案主要分为物理机制驱动和数据驱动[6]。物理机制驱动需要研究等离子体破裂的物理机制,目前有较为初步的破裂分析理论,但是模型较为复杂且非线性[7]。数据驱动则基于机器学习方法,通过对放电运行数据进行学习,将破裂预测转化为一种分类或回归预测的过程[8]。基于数据驱动的破裂预测不需要对破裂发展过程有着深入的理解,只需要有破裂过程中等离子体相关参数的数据,利用这些数据对破裂模型进行训练即可应用,因此现阶段数据驱动模型对破裂预测而言更具有优势。数据驱动的破裂预测多基于机器学习,如JET装置上基于支持向量机(Support Vector Machine,SVM)的先进破裂预测器(Advanced Predictor of Disruptions,AOPDIS)系统[9],ASDEX Upgrade装置上基于ARX(Auto Regressive exogenous)的破裂预测系统[10],DIII-D装置上基于随机森林算法的实时破裂预测器DPRF(Disruption Prediction using Random Forests)[11]等。在J-TEXT装置[12]上同样部署有一些实时运行的破裂预测系统,如针对密度极限破裂的全连接神经网络的实时密度极限破裂预测与避免系统[13]和基于轻量级梯度提升机(Light Gradient Boosting Machine,LightGBM)算法的实时破裂预测器[14]。以上破裂预测系统所采用的算法都是基于传统机器学习方法,而最近基于深度学习(Deep Learning,DL)的神经网络已经被用于训练破裂预测模型。基于深度学习的破裂预测模型除了能够取得较好的预测效果外[15],还在跨托卡马克装置方面有着较好的表现[16-17]。
破裂预测模型需要与等离子体控制系统一起运行,以实时给出破裂概率。实时运行的预测模型需要3部分:实时操作系统、实时软件框架和实时诊断数据。实时操作系统可以为破裂预测程序提供一个可以及时响应的运行环境,能够保证破裂预测程序在规定的时间内被系统执行。实时操作系统目前已经较为成熟,可用的有VxWorks、QNX、Linux-RT等。实时软件框架实现了控制系统中常用的功能如输入输出、定时等功能,使得在开发破裂预测程序时只需要关心核心的算法的实现,其他部分如数据读取、计算结果输出则由实时软件框架提供。JET上的APODIS基于多线程应用实时执行器(Multithreaded Application Real-Time executor,MARTe)实时软件框架进行开发[18],J-TEXT上的基于lightGBM的实时破裂预测基于JRTF(J-TEXT Real-Time Framework)实时软件框架[19]进行开发。实时诊断数据为破裂预测系统的输入,其中实时诊断数据从数据采集设备传输到破裂预测程序这一数据传输过程中的时延和抖动影响了实时破裂预测系统的实时性能;而诊断数据一次传输的数据量则直接决定了破裂预测模型能够获取的输入数据量,会对破裂预测模型的性能产生影响。以上两方面要求提供实时诊断数据的数据采集系统要有较高的数据吞吐率和较低的传输时延,其中较高的数据吞吐率决定了一次传输的诊断数据量,而较低的传输时延则保证了诊断数据传输过程的实时性。
采集数据一般基于网络传输,如ITER上的同步数据网络(Synchronous Databus Network,SDN)[20],EAST上基于反射内存(Reflective Memory,RFM)[21]的实时数据传输网络。ITER SDN基于10 G以太网构建,并进行UDP/IPv4多播,数据包的复制由以太网交换机扇出多播消息来执行。SDN只用于传输实时数据,诊断数据仍然来自于独立的数据采集设备。诊断数据需要通过接口转换模块传输到快速控制器中。快速控制器核心为CPU,运行Linux实时系统,提供实时框架(Real-Time Framework,RTF)运行环境。诊断数据经过处理后,通过SDN发布程序和网卡将数据推送至SDN网络中[22]。快速控制器中网络协议栈基于RTnet[23]协议栈构建,该协议栈同样需要实时Linux环境支持。SDN具有较好的实时性,但是除了必要的数据采集设备外,还需要运行实时Linux的计算机、接口模块、网卡等硬件,系统构建复杂。SDN中诊断数据需要由Linux环境下的程序进行处理,传输时延仍然受到操作系统调度影响。另外,实现实时传输的RTnet协议栈目前已不再更新,暂不知晓RTnet协议栈能否在当下的计算机硬件上进行部署。
EAST等离子体控制系统上采用RFM卡进行组网并传输实时诊断数据。实时诊断数据来源于96输入通道的DTACQ数据采集卡,并采用隔离放大器将来自于不同诊断阵列的输入信号进行隔离[24]。RFM卡间采用超高速光纤通信,多块RFM互联构成数据共享网络。每个RFM卡为网络中的一个节点,每个节点都具有共享内存的独立副本。当采集数据写入本地节点时,RFM卡会捕获数据并发送到RFM网络中,短时间内网络中所有节点都会将该数据写入到同一地址中,从而完成整个RFM网络的数据更新[21]。RFM网络的数据传输时延主要为所有RFM节点的数据更新时延,RFM卡在数据量较小的情况下数据更新的延时较低,但是随着数据量的不断增大,延迟会显著增加。KSTAR数据网络上对RFM网络与10 G网速的SDN进行数据吞吐量测试[25],RFM网络的读写速度均较小,写入速度为25 Mb/s,读取速度为285 Mb/s;而SDN的读写速度均可以达到9 788 Mb/s,几乎占满整个带宽。RFM网络数据吞吐率较低的原因主要由其工作方式决定,如5565PIORC反射内存卡,其单次能够传输的数据长度被限制在4~64字节以内,而且RFM卡必须板载内存才能存储实时数据,板载内存最大仅有256 M字节。极短的数据长度和较小的板载内存限制了RFM网络的数据吞吐率。为了获得较好的实时性能,必须限制RFM网络内的节点数量或单次数据更新的大小。
研究[14]中的实时破裂预测系统需要实时诊断数据,而J-TEXT装置上的数据采集与传输系统并不具有实时性,采集系统会在一炮实验后将数据写入到MDSplus数据库中[26],这种方法使得当前实验的等离子体数据只能在实验结束后获取,无法被等离子体实时控制系统或其他实时运行程序使用。因此研究[14]中采用了独立的数据采集设备用于获取实时诊断数据,并通过接口转换模块将实时数据直接传输到运行实时破裂预测程序的计算机中,中控通过远程的方式与破裂预测系统进行通信,总体系统架构与SDN较为类似。由于输入信号来自不同的诊断系统,还需要在相应诊断的输出与采集设备的输入间加入多道模拟隔离,减轻不同诊断间的干扰。
目前在J-TEXT上开展的基于深度学习的跨装置破裂预测研究[27]以离线方式运行。该破裂预测模型使用了J-TEXT装置如电子密度、纵场强度等诊断信号,部分诊断信号、使用数量以及诊断信号在J-TEXT上的采样率见表1。在表1的诊断中,Mirnov线圈[28]和鞍形线圈[29]能够分别测量等离子体高频磁扰动和低频磁扰动,可以直接反映磁流体力学不稳定性信息。SXR[30]、CIII杂质[31]、AXUV[32]为辐射诊断,能反映等离子体温度、总辐射功率、杂质等信息。电子密度能够直接反映等离子体密度信息[33],垂直位移和径向位移则能够反映等离子体位移信息。余下诊断如等离子体电流、纵场强度和环电压与等离子体运行状态密切相关。以上诊断从磁、辐射、杂质等角度为深度学习破裂预测模型提供了丰富的等离子体状态信息,因此在深度学习破裂预测模型实时化时,以上诊断都需要被采集,得到的实时诊断数据都需要被实时传输到破裂预测模型中。
使用信号 通道数量/道 J-TXET装置上
采样率/(Sa·s-1)等离子体电流Ip 1 10 k 纵场强度Bt 1 10 k 环电压Vloop 1 10 k 径向位移dr 1 10 k 垂直位移dz 1 10 k 碳III杂质辐射CIII 1 500 k 软X射线SXR 15 500 k 绝对极紫外线辐射AXUV 16 500 k 鞍形线圈exsad 4 250 k 软X射线中心通道SXR_MID 1 500 k Mirnov线圈Mirnov 4 500 k Table 1. Part of diagnostic signals on J-TEXT devices used in DL-based disruption prediction models and the sampling rate
表1中的诊断在J-TEXT装置上都采用16位分辨率、10 k~500 k Sa/s的采集卡进行采集,采集卡输出数据的位宽为16位。将所有诊断信号的采样率乘以数据位宽并累加,得到表1中所有诊断数据同时传输时,数据输出速率约为313 Mb/s。考虑到破裂预测程序实时运行周期为1 ms,若参考研究[34]中的平均约100 μs的数据传输时延,则数据采集系统的数据吞吐率至少要达到3.13 Gb/s以上,才能保证以上诊断数据的完整传输。
为实现深度学习破裂预测模型在J-TEXT装置上的实时运行,必须先建立一个支持实时数据传输的数据采集系统。文章提出了一种实时数据采集系统的设计方法。该数据采集系统基于模块化的结构进行设计,分为多通道数据采集模块、模数转换器(Analog-to-Digital Converter,ADC)转换控制和数据读取模块、数据分组与封装模块和数据传输网络模块。多通道数据采集模块和ADC转换控制和数据读取模块完成诊断信号的数字化并生成实时诊断数据流。数据分组与封装模块基于实时诊断数据流生成分立的采样片。数据传输网络模块采样片传输到运行实时破裂预测程序的计算机中,完成实时诊断数据的传输。数据传输网络模块基于运行在FPGA上的硬件UDP网络协议栈进行构建,可以直接与传统以太网设备连接。该UDP协议栈运行在10 Gb/s的网速下,具有较高的数据吞吐率和很低的数据传输时延。
-
根据实时数据采集系统需要满足的指标,需要针对系统进行以下测试:
1)测量精度测试和采样率测试。主要针对采集模块进行测试。测量精度要求进行直流信号和交流信号测试。
2)数据吞吐率测试。主要针对数据传输网络进行测试,测试其数据传输速率。
3)数据完整性测试,主要检测采样数据从数据分组与封装模块的处理到目标计算机读取采样数据整个流程中是否出现数据丢失。
4)数据传输时延测试,主要测试UDP数据包的传输时延。
-
测试前首先需要获取采集模块的模拟输入到数字输出的传递函数(Transfer Function from Analog input to Digital output,TFAD),在读取ADC转换数据后即可采用传递函数TFAD计算得到模块输入电压的测量值。TFAD一般根据输入值和输出值,经过拟合得到。拟合采用的模拟输入为一系列特定的直流电压值,输入电压由AFG3022B信号源提供,由DMM4020万用表测量。数字输出为ADC转换出的65 536个采集样本的平均值。输入输出数据采用Matlab软件的cftool(Curve Fitting Tool)工具箱进行拟合。单个通道的拟合结果如式(1)所示。
$$ D_{\mathrm{out}}=2\ 558.126\ 6V_{\mathrm{Ain}}-4.860\ 5 $$ (1) 式中:
Dout ——采集模块输出数据(Least Significant Bit,LSB);
VAin ——采集模块输入电压(V)。
式(1)为一个带截距项的一次函数,TFAD一般为一次函数。式(1)在cftool下拟合时,cftool给出R2为1,说明拟合效果很好。
-
直流测量误差和交流测量误差分别表征数据采集系统的直流和交流精度。直流测试下,输入特定的直流电压,使用65 536个转换数据的平均值作为ADC转换结果。交流测试下,输入10 V幅值、70 Hz~200 kHz频率的交流信号,计算65 536个转换数据的有效值。采用拟合出的TFAD计算测量得到的直流电压值和交流电压有效值,以DMM4020的测量值为基准,计算相对误差。
直流测试结果如图7所示,误差最大为-0.048%,最小约为0.02%,模块整体具备较高的精度。
交流测试结果如图8所示,70 Hz~10 kHz频带内精度均在-0.25%左右,在50 kHz下相对误差为0.2%,在100 kHz下相对误差达到1.2%。由于模拟前端为一个二阶低通滤波器,100 kHz及以后频率已经接近其-3 dB点,增益下降,误差上升。
-
采样率可以直接测量LTC2324 CNV引脚上的采样触发信号的频率得到。CNV引脚上的信号波形如图9所示。
根据图9,采样触发信号具有500 ns的周期,即每500 ns开启一次采样,则采集模块的采样为2 MSa/s,达到预期设计。
-
数据吞吐率测试主要测试UDP网络的数据传输速率。设置10 G UDP协议栈工作于循环发送数据模式。由于UDP协议栈为FPGA上的硬件电路,当数据包长度固定时,UDP协议栈的收发行为也是确定的,表现为在固定的时长内进行一次UDP数据包的发送或接收。用UDP数据包的长度除以一次发送时间,即可得到UDP协议栈的数据传输速率。
UDP协议栈的发送状态采用FPGA上的IO进行观测。当UDP协议栈发送数据时,IO输出高电平,反之IO输出低电平。IO电平的周期即为发送一个UDP数据包所需时间。设置发送时UDP数据包的数据长度为1 448字节,则UDP协议栈的发送观测IO波形如图10所示。
由图10,TX观测IO波形具有固定的周期,其周期约为1.241 μs,频率为805.4 kHz,说明UDP协议栈可以在1.241 μs内进行一次UDP数据包的发送。由UDP数据包中包含1 448字节的数据部分,乘以发送频率,得到数据传输速率约为9.33 Gb/s。采用相同的方法进行测试,此时设置UDP数据长度为2 008字节,得到数据传输速率约为9.51 Gb/s。基于该项测试,UDP协议栈的数据吞吐率远高于设计指标中要求的3.13 Gb/s。
-
由于目前缺少运行实时破裂预测程序的计算机,数据完整性测试中要求的对采集系统发送的UDP数据包的读取采用Wireshark和Matlab两个软件。Wireshark抓取UDP包并将数据部分导出到TXT文件。Matlab读取TXT文件,拆分出采样片头部,按顺序读取每个通道的转换结果。通过TFAD和读取出的数据,计算输入电压。
FPGA上设置单次采样任务包含250个采样点,包含4个采样通道,则一个采样块包含头部和采样数据一共2 008字节。设置UDP数据包传输的数据长度为2 008字节,则单个采样块可以由一个UDP包发送。连续读取8个数据包的采样数据,并绘制其中第一个通道转换结果,如图11所示。
该通道运行于2 MSa/s采样率下,输入信号为两路4 kHz、1 Vpp,相差180°相位的差分正弦波信号。根据图11,正弦波没有出现间断,波形完整,说明传输采集数据时没有丢失任何数据点。测量波形的幅值为1.012 V,采用3.2小节中的交流测试方法,计算得到本次测量的相对误差为0.20%。
-
传输时延主要为UDP包从数据传输网络模块传输到实时破裂预测程序中的时间。该时间需要在两个设备上进行测试,且目前缺少运行实时破裂预测程序的计算机,目前传输时延暂时无法测试。
除了直接测试传输时延外,还可以通过RTT(Round-Trip Time,环回时间)表征传输时延。RTT由单个设备给出,主要测试方法如图12所示。RTT主要在FPGA上测试。FPGA上构建有两个UDP网络栈,UDP1为采集数据发送和接收协议栈,并统计发送一个数据包到接收到一个数据包间的时延。UDP2为UDP环回协议栈,接收来自UDP1的采集数据包并返还到UDP1。UDP2接收数据行为用于模拟实时破裂预测程序读取采集数据这一过程。
测试时,UDP1在T1时刻开始发送一定长度的采集数据,并在T2时刻开始接收来自UDP2返回的数据。FPGA上统计T1与T2两个时刻间的时间差,即为UDP网络的RTT。
统计T2与T1间的时间差同样基于IO观测法。在UDP1上采用一个IO观测数据包的收发状态,T1时刻IO输出高电平,T2时刻IO输出低电平,则IO高电平时间即为RTT。数据包采用3.4小节中的采样数据包设置,UDP数据部分长度为2 008字节。采用示波器测量IO输出信号的高电平时间,输出采样数据到Matlab,绘制IO上波形图,如图13所示。
IO波形具有11个高电平脉冲,统计得到IO的高电平时间平均值为10.67 μs,则网络RTT时间为10.67 μs。在RTT测试中数据进行一次环回,具有两次发送和一次接收流程。而数据传输时延只统计数据从UDP1开始发送到UDP2接收完成的时间,具有一次发送和一次接收流程,因此一次数据传输的时延约为RTT的2/3,估计此次测试数据传输时延约为7.11 μs,达到预期设计目标。
Design of Real-Time Data Acquisition System for Tokamak Disruption Prediction
doi: 10.16516/j.ceec.2024.3.11
- Received Date: 2024-03-29
- Accepted Date: 2024-05-08
- Rev Recd Date: 2024-04-29
- Available Online: 2024-05-30
- Publish Date: 2024-05-10
-
Key words:
- tokamak /
- disruption prediction /
- data acquisition /
- UDP /
- real-time transmission
Abstract:
Citation: | ZHANG Peilong, YE Weijie, ZHENG Wei, et al. Design of real-time data acquisition system for tokamak disruption prediction [J]. Southern energy construction, 2024, 11(3): 96-109 doi: 10.16516/j.ceec.2024.3.11 |