信号名称 | 信号类型 | 信号幅值 | 采样率 | 采样时长 |
Vco | 电压(直流) | 0- 10V | 3 0M/ s | 1s |
V 波段 X 模 I 路 | 电压(交流) | - 1 - 1V | 3 0M/ s | 1s |
V 波段 X 模 Q 路 | 电压(交流) | - 1 - 1V | 3 0M/ s | 1s |
Q 波段 X 模 I 路 | 电压(交流) | - 1 - 1V | 3 0M/ s | 1s |
Q 波段 X 模 Q 路 | 电压(交流) | - 1 - 1V | 3 0M/ s | 1s |
Q 波段 O 模 I 路 | 电压(交流) | - 1 - 1V | 3 0M/ s | 1s |
Q 波段 O 模 Q 路 | 电压(交流) | - 1 - 1V | 3 0M/ s | 1s |
密度 | 位移 | 纵场 | |
V波段X模 | 0 .1 - 1.9 (中心密度为2) | 5 -25 cm | 2 T |
0 .1 - 1.9 (中心密度为3) | 1 8 - 25 cm | 2 T | |
Q波段O模 | 1 .5-2 | 0 -18cm | |
1 .5-3 | 0 -22cm | ||
Q波段X模 | 0- 0.1 (中心密度为2) | 2 5-26cm | 2 T |
0- 0.1 (中心密度为3) | 2 5-26cm | 2 T | |
由Q波段X模测量边缘,V波段X模测量中间,Q波段O模测量中心
1. 计算平顶范围:2 00 ms -1024ms;
2. 判断中频产生条件:
每3 2 点fft,接近1us
连续获取相邻该段幅值最大点
最后一点幅值最大点落在中频区间5- 10M
最大幅值斜率为正
3. Q波段O模不需要寻找中频产生点
4. 计算顺序:Q _X->V_X->Q_O
5. 对于 X 模计算须寻找中频反射点(由Q_ X 寻找)
6. 寻找等离子体边界点利用边界密度为0,求得磁场Bt , 由Bt与半径的关系求得边界。
7. 对于 Q 波段 O 模计算须寻找发射频率的起始点与截止点:3 3 - 50GH z , 截止点不一定是5 0GH z
8. 对于V波段5 0 - 75GH z
典型炮参考电压范围:
定时周期 1ms , 扫频周期 2 0 us,1024 个采样点
离线计算中取了三个扫频周期计算一次即6 0 us ,1800 个采样点
计算流程
反射仪测距离,中频每增加0 .3M, 位移距离增大 5 cm
如果精确到1cm精度,则频率区分点至少为0 .06M, 即f s/N 小于等于0 .06M
由fs =30M, 则N必须大于等于5 00 ,用数学表达为
取一个扫频周期1024个点
短时傅里叶变换( STFT )
短时傅里叶变换是为了克服傅里叶变换中无法提取时域信息而提出的一种分析算法。其主要参数有:
1. 滑动窗:滑动窗的长度越长频率分辨率越高,时间分辨率越差,滑动窗长度越短,频率分辨率越差,时间分辨率越高,一般为傅里叶变换的点数
2. 重叠点数: 相邻的窗之间要重叠是为了不损失时间信号的信息 一般2 5 %~ 50 %
参考链接: https://www.cnblogs.com/meelo/p/5160009.html
3. FFT 补零不会提高频率分辨率,时域补零相当于频域插值,补零最好是数据长度的倍数,否则会引入新频率。
相位计算
计算算法及功能
算法名称 | 算法功能 | 输入参数 | 输出参数 |
滤波(可选) | 滤除不需要的频率信号 | 采集的原始信号 | 滤波后信号 |
STFT 变换 | 获取起始反射中频信号点 | 采集的原始信号/滤波信号 | 中频信号相位 |
等离子体相位计算 | 获取等离子体相位 | 中频相位 平台相位 传输线补偿相位 | 等离子体相位 |
O模密度计算 | 计算反射层的密度 | 由 Vco电压 计算得到的反射角频率 W c | 反射层密度ne |
X模密度计算 | 计算反射层的密度 | 由 Vco电压 计算得到的反射角频率 Wc 由磁场强度 bt 计算得到电子回旋角频率 Wce | 反射层密度ne |
O模位移计算 (阿贝尔反演) | 计算等离子体位移 | 等离子体相位序列 反射频率序列 起始位移 当前等离子体相位 当前反射频率 | 等离子体位移 |
X模位移计算 (伯特里尔反演) | 计算等离子体位移 | 等离子体折射率序列 等离子体位移序列 当前相位 上一次相位 当前折射率 当前频率 | 等离子体位移 |
整个计算的核心要点在于获取 中频相位 、获取 反射频率, 而 中频相位 属于 频域信息,反射频率 属于通过Vco电压获取的 时域信息
一个扫频周期2 0 u s 中N点计算流程:
由定时周期1ms且运算算法比较复杂,考虑采用F PGA 来进行运算
基于原有经验考虑采用N I 7966R + NI5734 (各两块)+ RT 实时控制器+机箱
由于F PGA 只能接受- 1 到1 V 信号,或者0- 2V 信号,需要接入线性放大器对原始信号进行比例缩小
计算结果需要输出到反射内存,需要增加一块反射内存卡
综上所述所需硬件如下表:I SE 14.7
型号/名称 | 类型 | 数目 |
P XI e -7966R | F PGA 板卡 | 2/块 |
N I 5734 | 硬件接口 | 2/块 |
GE 5565PIROC | 反射内存卡 | 1 / 块 |
P XI e- 8840 | 实施控制器 | 1/台 |
P XIe - 1078/1082 | 机箱 | 1/个 |
分压器 | 1/个 |
1. F PGA 端程序设计
F PGA 端程序设计采用生产者-消费者模式,一个 120M 的时钟,3 0M 的定时循环采用状态机设计对信号进行采集,主要状态有:
I nitializing:初始化相关参数
M aster wait for trigger:主模块接收触发
S end trigger :主模块路由触发
Waiting for trigger:从模块等待触发, 收到触发转入下一个状态 Waiting for calculate
Waiting for calculate: 等待 一次扫频计算完成后 , 转入等待采集状态Waiting for acquire
Waiting for acquire:等待 VCO电压 小于 0 .1v时,转入采集状态A cquiring
A cquiring:采集信号 ,一个扫频周期信号采集完成即vco电压大于等于 9 .9v时转入等待计算状态 Waiting for calculate
另外一个定时循环用来对采集的信号进行数据处理,包括fft计算相位,计算密度,计算位移。两个循环之间的数据传递采用F IFO 进行数据传递。另一循环状态机设计如下:
Find_startpoint: 判断vco电压下降沿 ,找到扫频电压起点
Stft_generate_fm:
每3 2 点fft,接近1us
连续获取相邻该段幅值最大点
最后一点幅值最大点落在中频区间5- 10M
最大幅值之比斜率大于1
Caclulate_ne_rm:计算密度,相位
F IFO 名称 | F IFO 大小 |
F PGA _ to_host_VXI | 1024 |
F PGA _ to_host_VXQ | 1024 |
F PGA _ to_host_QXI | 1024 |
F PGA _ to_host_QXQ | 1024 |
F PGA _ to_host_QOI | 1024 |
F PGA _ to_host_QOI | 1024 |
F PGA _ Loop_VXI | 1024 |
F PGA _ to_Loop_VXQ | 1024 |
F PGA _ to_Loop_QXI | 1024 |
F PGA _ to_Loop_QXQ | 1024 |
F PGA _ to_Loop_QOI | 1024 |
F PGA _ to_Loop_QOI | 1024 |
F PGA _ to_host_Vco | 1024 |
F PGA _ to_P2P_Vco | 1024 |
2. R T 端程序设计
一个1ms定时循环用来输出计算的等离子体密度和位移
另一个循环采用状态机设计,其主要状态有:
I nitializing:初始化F PGA 参数和 RT 端参数
W ait for shot N o : 等待获取炮号
S end enable signal : 使F PGA 端程序开始进入状态转换
R ead D ata:读取定时循环的数据以及F PGA 的F IFO 数据
S ave data:保存数据到tdms文件
Display signals: 显示数据波形
E rror:错误处理
3. Windows端程序设计
Windows端采用状态机设计,其主要状态有:
I nitializing:初始化Windows参数
GetShotNo: 获取当前炮号
W ait for download :等待下载数据文件
U pload to mdsplus : 上传数据文件
Error: 错误处理
4. S tft 实现
1. 反射仪在高密度情形下可能无法测量等离子体芯部密度,所以需要寻求边缘密度与芯部密度的相关关系,需要通过离线数据进行获取,例如通过监测密度0 .5 的位移变化来反映芯部的位移变化。
2. J -TEXT 实验装置一般是限制器位形所以其位移起始点一般在0 .255m 附近
1. 密度: 正 代表低场侧, 负 代表高场侧
T ag名 | 位置 | 采样率 |
POLARIS_DEN_V01 | 24 | 6 M/ s |
POLARIS_DEN_V02 | 21 | 6 M/ s |
POLARIS_DEN_V03 | 18 | 6 M/ s |
POLARIS_DEN_V04 | 15 | 6 M/ s |
POLARIS_DEN_V05 | 12 | 6 M/ s |
POLARIS_DEN_V06 | 9 | 6 M/ s |
POLARIS_DEN_V07 | 6 | 6 M/ s |
POLARIS_DEN_V08 | 3 | 6 M/ s |
POLARIS_DEN_V09 | 0 | 6 M/ s |
POLARIS_DEN_V10 | -3 | 6 M/ s |
POLARIS_DEN_V11 | -6 | 6 M/ s |
POLARIS_DEN_V12 | -9 | 6 M/ s |
POLARIS_DEN_V13 | -12 | 6 M/ s |
POLARIS_DEN_V14 | -15 | 6 M/ s |
POLARIS_DEN_V15 | -18 | 6 M/ s |
POLARIS_DEN_V16 | -21 | 6 M/ s |
POLARIS_DEN_V17 | -24 | 6 M/ s |
2. 位移
Tag 名 | 采样率 | 采集时间 |
D x | 1 0k/s | 5s |
Dy | 1 0k/s | 5s |
3. 电流
Tag 名 | 采样率 |
I P | 1 0k/s |
1. 硬件方案
1) 硬件可选方案1
型号/名称 | 类型 | 单价/元 | 数目 | 总价 |
P XI e -7966/7971/7972 | F PGA 板卡 | 93125/52930/ 6 7500 | 2/块 | |
N I 5734 | 硬件接口 | 5 3520 | 2/块 | |
GE 5565PIROC | 反射内存卡 | 1 / 块 | ||
P XI e- 8840 | 实施控制器 | 38865 | 1/台 | |
P XIe - 1078/1082 | 机箱 | 2 1945/33360 | 1/个 | |
分压器 | 1/个 | |||
2) 硬件可选方案 2
型号/名称 | 类型 | 单价/元 | 数目 | 总价 |
P XI e -5763 | F PGA 板卡 | 95140 | 2/块 | |
GE 5565PIROC | 反射内存卡 | 1 / 块 | ||
P XI e- 8840 | 实施控制器 | 38865 | 1/台 | |
P XIe - 1078/1082 | 机箱 | 2 1945/33360 | 1/个 | |
分压器 | 1/个 |
采集一块卡采集 Q X的I、 Q 路, V X的I路, V CO电压
另一块采集 Q O的 I 、 Q 路, V CO电压
2. 程序计算流程设计
1) 采集
采集使用状态机以3 0M/S 的速率进行采集,主要采集V CO 电压、Q波段O模,Q波段X模共7道,其中 VCO 电压需要有一道P 2P 进行传输到另外一块板卡进行使用,所以采集F IFO 一共有 9 道,假设每1 ms 只计算 1 - 5 个扫频周期,每一个扫频周期2 0 us,1024个点所以采集F IFO 的长度大概1024- 3000 个点,考虑为 2的指数型取1024个点, 16 kb;一块板卡 4 个通道,一共576kb .
2) 计算频率
直接将采集到的vco电压计算成频率f 存入 F IFO,即在采集时将vco电压值直接转换成频率存入 F IFO, 考虑到减小存储空间需对f的单位G Hz 进行处理
3) 滤波( F IR滤波高通)
滤波形式:f i r线性相位高通滤波
阶数: 6 0 阶,6 1 个系数,需要一个6 1 个元素的固定数组,以1 6 bit存储,总共需要1k bit 左右
实现方式有:通过D SP48E 进行实现, 集成Xlinix IP
4) 计算平台相位(无等离子体产生时的相位- 100 ms)
因为无等离子体时的中频相位斜率是一致的,所以可以将F PGA 端累加后的相位值通过 F IFO 发送到R T 端进行线性插值拟合 , 将系数写入F PGA 端用于计算平台相位,一个周期大概1024个点所以该F IFO 的长度取1 024 , 16 kb .
5) 中频相位计算
S tft寻找中频点
每3 2 个点做一次fft,直到产生中频点,需要三个长度为3 2 的数组暂存stft数组,当找到fft最大值在6- 10 之间且递增则认为产生了中频,并将暂存用于计算中频相位, QX 与V X 数据接到一起进行计算, 对于V X 需注意在低密度,低纵场的情况下可能会频率高的数据直接超出最大密度值,所以需对V X 的数据做stft判断是否飞出中频。
6) 密度计算
对于所有的反射频率点不能逐一计算,否则如果反射频率变化率小于位移变化率会导致纵场B增大,从而导致离子回旋频率增大,从而导致算出负的密度值,从而出现异常点 , 建议每0 .25G 抽取一个频率点,并在等离子体相位变化率正增长时进行密度计算与位移计算。需要增加一个位移F IFO 与密度F IFO 将数据传输到主机,对于 X 模计算,对于3 0G-75G, 约需要1 80 个点, 实际考虑到d _angle 递增,实际数目远远小于1 80 ,所以选取1 28 个点F IFO, 密度算出来是一个非常大的值为了节约空间应该考虑单位中的1 0 次幂,以1 6 bit存储,大概需要 2 k b * 2 = 4 kb
7) 位移计算
S ( i ) 计算
积分( 同样需要注意单位的问题)
在此处计算中需要使用固定长度的数组来存储w ,r,N(wi,wj) 的值取上面与密度F IFO 长度一样为1 28 个点,每一个大概需要2k b, 则一共需要6kb , 同时,该数组亦可以用来stft中寻找中频产生点与消失点的暂存数组
位移计算,需要注意用r = r _edge- 增量,即r (i)=2r_edge-r(i-1);
伯特里尔反演,数据需要进行拟合
对于Q波段O模,阿贝尔反演要注意积分奇点的处理, 低密度同时需要对后期数据需进行stft判断是否已经飞出中频
3. FIFO及数组用量统计
F IFO 名称 | 数据类型 | 数据范围 | F IFO 大小 | 占用存储空间 |
F PGA _ Loop_origin_VXI | Unsigned int | -1-1 | 1024 | 16 kb |
F PGA _ to_Loop_origin_p2p-reader-VXQ | Unsigned int | -1-1 | 1024 | 16 kb |
F PGA _ to_Loop_origin_p2p-writer-VXQ | Unsigned int | -1-1 | 1024 | 16 kb |
F PGA _ to_Loop_origin_QXI | Unsigned int | -1-1 | 1024 | 16 kb |
F PGA _ to_Loop__origin _QXQ | Unsigned int | -1-1 | 1024 | 16 kb |
F PGA _ to_Loop_ _origin _QOI | Unsigned int | -1-1 | 1024 | 16 kb |
F PGA _ to_Loop_ _origin _QOQ | Unsigned int | -1-1 | 1024 | 16 kb |
F PGA _ Loop_origin_VCO | Unsigned int | -1-1 | 1024 | 16 kb |
F PGA _ Loop_VXI | Signed F xp | - 1 - 1 | 1024 | 16 kb |
F PGA _ to_Loop_VXQ | Signed F xp | - 1 - 1 | 1024 | 16 kb |
F PGA _ to_Loop_QXI | Signed F xp | - 1 - 1 | 1024 | 16 kb |
F PGA _ to_Loop_QXQ | Signed F xp | - 1 - 1 | 1024 | 16 kb |
F PGA _ to_Loop_QOI | Signed F xp | - 1 - 1 | 1024 | 16 kb |
F PGA _ to_Loop_QOQ | Signed F xp | - 1 - 1 | 1024 | 16 kb |
F PGA _ to_loop_f _ QO | Unsigned F xp | 3 0 - 80 | 1024 | 16 kb |
F PGA _ to__f_QX | Unsigned F xp | 3 0 - 80 | 1024 | 16 kb |
F PGA _ to_f_VX | Unsigned F xp | 3 0 - 80 | 1024 | 16 kb |
F PGA _ to_P2P_ne_QO_writer | Unsigned F xp | 0- 5 | 1 28 | 2 Kb |
F PGA _ to_P2P_ne_QO_reader | Unsigned F xp | 0- 5 | 1 28 | 2 kb |
F PGA _ to_P2P_r_QO_writer | Unsigned F xp | 0- 1 | 128 | 2 Kb |
F PGA _ to_P2P_r_QO_reader | Unsigned F xp | 0- 1 | 1 28 | |
F ir_array | signed F xp | - 1 - 1 | 61 | 1 kb |
W(f) array_Q | Unsigned F xp | 1 90 - 500 | 128 | 2 Kb |
W(f) array_X | Unsigned F xp | 1 90 - 500 | 128 | 2 Kb |
R( i ) array_X | Unsigned F xp | 0 -1 | 128 | 2 Kb |
N (i,j)(Q) array_X | Unsigned F xp | 0 -1 | 128 | 2 Kb |
n e | Unsigned F xp | 0 -5 | 256 | 4Kb |
r | Unsigned F xp | 0 -1 | 256 | 4Kb |
4. 变量数据单位处理
1. 变量名 | 2. 原值范围 | 3. 处理后的值 | 4. 需要进行的操作 |
f | X*10e9 | X (30-75) | 忽略1 0 e 9 |
w | X*10e9 | X (190-500) | 忽略1 0 e 9 |
W 2 | X*10e18 | X (36100-250000) | 忽略1 0 e 18 |
ne | X*10e19 | X | 忽略1 0 e 19 |
N (i,j) | 0 -1 | 0 -1 | |
S(i) | 0 -1 | ||
r | 0 -1 | 0 -1 | 计算r时需要除以10 |
e | 1 .609*10e-19 | 1 609 | 忽略1 0 e -22 |
B | 1 -2 | 1 | |
me | 9 .109*10e-31 | 9 .109 | 忽略1 0 e -31 |
Wce | e*B/me | X(176.6-352) | 忽略1 0 e 9 |
Wce 2 | X (30976-123904) | ||
W p e 2 | X XXX(10e4) | 忽略1 0 e 18 | |
c | 2 .9979*10e8 | 0.29799 | 忽略1 0 e9 |
8 .85 * 10 e -12 | 8 .85 | 忽略1 0 e -12 |
5. 需要开发的vi
1) 将采集 的 U16位 采集原始数据转化为 实际信号 的 定点数据VI -Getsignal.vi;
2) 将VCO转换为 频率 f VI ,V 波段 、 Q波段 F_wave_V_Q.vi
3) 将采集 的信号进行滤波 Firfliter.vi
4) 寻找中频 产生点 及 结束点 - Stft.vi
5) 计算 相位累加 -Angle .vi
6) 计算r_edge-r_edge.vi
7) 计算等离子体相位-Angle_plasma.vi
8) 计算W p 的 平方 -Wp_square .vi
9) 计算 密度ne-Ne.vi
10) 计算S(i)-S(i).vi
11) 计算折射率-N( i,j)
12) 计算X模 位移 -R_ X.vi
13) 计算O模 位移 - R_O.vi
14) X 模 主计算密度与位移 - Main_X
15) O 模 主计算密度与位移 - Main_O
6. RT端设计
1) 设置FPGA参数
2) 计时 循环
3) 计算 平台相位循环
4) 流程控制 循环
5) 数据保存 与 显示
7. W indows端设计 :采用 状态机设计,状态如下 :
1) G et shotnumber: 获取 当前炮号
2) Waiting for download: 等待 rt端完成
3) Download: 通过FTP从 rt端 获取 数据文件
4) Upload: 上传 数据文件
5) Error: 监测 错误
本文章由word文档转换而成