鼎阳SDS6204长波形读取的潜力挖掘及上海光源测试
https://blog.csdn.net/weixin_43767046/category_11089525.html
上学期我搭建起来的逐束团3维质心位置测量系统一直是获取500us长的一组12bit分辨率的波形数据,每个通道5M个采样点,4个通道共20M的采样点。实际上这款示波器有500M采样点的缓存,实际上利用了不到1/20。上学期联系鼎阳,因为还没有用户需要更长的波形读取,所以rom和Labview驱动的适配那时候还不支持单通道超过12.5M个点的波形数据读取。我估计因为前期鼎阳和力科的深度合作,力科的该系列标配是50M采样点的缓存,4个通道同时工作时每个通道最大也只有12.5M个数据点的原因吧?
我的更长波形读取的需求上学期反馈给鼎阳后,他们很快就把rom和Labview的驱动搞定了,这学期就开始了这个更长波形的调试。
还是上学期搭建的3维测量系统,这次读取10ms长每个通道100M个点(1亿):


上面的截图是利用十一放假前和之后,难得的不会折腾程序的一段时间跑起来积累了15天连续运行的截图。一组波形数据一共400M采样点共800MB的数据,处理周期大约150s,那时候服务器只有256G的内存,跑采集程序的云主机需要分配100G的内存容量才行,如果想试重采样等功能都会报out of memory。之后就联系冷师兄去上海光源测试,连续的几天又把程序改进,又利用晓康为我做的模板把数据库在便携式服务器上调试好,让睿喆为我写了个python脚本好生成EPICS IOC需要load的上海光源720个束团的PV db模板的脚本。之后终于在10.18号成行。
去上海前发现个小问题:

如果不是在数据库里看这样的小电影,很难注意到这个8个台阶的现象,纵向时间有8个100ps高度的台阶,猜想labview读取1亿个点的波形数据时,是每次读取12500000个点后做拼接,在拼接时少了一个点才会出现这样的现象,我又用5GHz采样率采集做了实验,发现这样的台阶高度变成了200ps,证实了拼接少了一点的bug。
临出发前发现,bug已经来不及修复,之后就出行。去到上海光源,第一次见,大开眼界,以后有机会专门发文吧,说说测试,2代光源和3代光源比起来确实代差明显:



上面的程序界面,10ms波形含有720个束团6939圈的逐束团数据,图中的绿色曲线是用200mA模拟的逐圈流强曲线(因为在外网,没法通过EPICS获取到实时更新的储存环流强数据),中图是随便某个束团的逐圈X、Y,下面的图是某个束团的纵向时间,忽略八个100ps的锯齿,曲线宽度应该在10ps以内,有一点点震荡包络,包络幅度应该在5ps以内。上海光源是500MHz的RF,和合肥的204MHz相比同样的采样率每个bunch波形的点数稀疏了2.5倍,这样提取的数据噪声会大很多,不过看到的结果都是噪声宽度下很平稳的曲线,不像合肥这震荡的现象很严重。
上海之行比较匆忙还要赶紧回来,只连续积累了1夜的数据,第二天赶上维护没有束流,不过正好有机会进到光源核心区参观。浏览数据库时发现了一些现象:




虽然某个束团的逐圈X看不到明显的震荡,但是720束团平均的逐圈X还是可以看到些X方向的震荡;某个束团的逐圈X、Y测的噪声宽度虽然有0.3mm,但还是能明显看到那种某一些圈Y方向跳变的情况,720个束团的平均逐圈Y噪声宽度差不多30um,跳变的情况更明显,而且是那种两个位置来回跳的现象,应该是所有束团的共性,一直不明所以然,怀疑是否有气缸跳动引起BPM探测器的震动,期待冷师兄那边libera逐圈数据的结果,这次积累一夜的数据,由于处理周期400秒左右,竟然没有抓到一次注入时的数据,期待下次去测试时能积累更长时间并抓到注入时的姿态,很想看看不同机器注入时X、Y正视图的分布。

上图是程序跑的时候截的一张某束团的频谱曲线,横坐标是频率,单位是Hz,看的范围是上海光源回旋频率690KHz多的一半,程序处理过程中估计也会象合肥一样有一些底噪产生的峰位,对应哪些还不知道怎么从数据库里导出波形数据分析,以后有空再说吧。
从上海回来,鼎阳的许美美小姑娘很快就解决了拼接少一点的bug,之后看纵向时间的分布就舒爽多了:

现在没有了那个高100ps的锯齿和台阶,能坚持到这里的您看到了吧?二代光源纵向震荡是会有多么厉害,即使是45个束团的平均逐圈相位,也会有几十ps的震荡幅度。

上图是上海的720个束团的平均逐圈相位,看出差别了吧?忽略锯齿,曲线是多么的纤细和漂亮啊!真让人期待4代的合肥先进光源的样子!
这段时间把两台SDS6204分别接着条带和纽扣BPM在线跑起程序,对比中发现个问题:



拼接少一点的bug修复后,读取的数据点数从以前截图的99999992变到了完美的100000000个点,掐头去尾取整圈后的两台示波器的点数分别为99997791、99997803,嗯?怎么会不一样,差了12个点,是同一段时间长度啊!后来咨询鼎阳,原来有个时基精度的问题,下图是该款示波器时基的指标:

这两款示波器如果简单比较时基精度的话,应该是12/99997791=0.12ppm=120ppb,是好于厂家的标称指标的,后来又查了查是德的最高端示波器时基精度能做到的程度:

https://www.keysight.com/cn/zh/assets/7018-06242/data-sheets/5992-3132.pdf
数据源于上面的链接,比较了下,即使最高端,这个指标差别也没到一个量级,和我测的120ppb也不好多少,这样看来10ms的波形,差10几个点也是正常的,心里也就释然了,国产精品不管从稳定性,还有这类核心指标,都很不错了,完全可以常年在线使用了。不过更高端还任重道远,鼎阳和普源加油!
鼎阳SDS6204长波形读取的潜力挖掘及上海光源测试的更多相关文章
- 长轮询实现Chat并迁移到Azure测试
长轮询实现Chat并迁移到Azure测试 公司的OA从零开始进行开发,继简单的单点登陆.角色与权限.消息中间件之后,轮到在线即时通信的模块需要我独立去完成.这三周除了逛网店见爱*看动漫接兼职,基本上都 ...
- [NLP自然语言处理]计算熵和KL距离,java实现汉字和英文单词的识别,UTF8变长字符读取
算法任务: 1. 给定一个文件,统计这个文件中所有字符的相对频率(相对频率就是这些字符出现的概率——该字符出现次数除以字符总个数,并计算该文件的熵). 2. 给定另外一个文件,按上述同样的方法计算字符 ...
- 三周,用长轮询实现Chat并迁移到Azure测试
公司的OA从零开始进行开发,继简单的单点登陆.角色与权限.消息中间件之后,轮到在线即时通信的模块需要我独立去完成.这三周除了逛网店见爱*看动漫接兼职,基本上都花在这上面了.简单地说就是用MVC4基于长 ...
- VUE: 移动端长按弹出确认删除地址(后面测试发现IOS有BUG,后面有更新随笔,更新后的亲测有效)
收货地址的删除方式可能有很多种,我目前见过的暂时只有两种(1.在编辑页删除 2.长按某一条收货地址弹出是否删除地址) 在开发的项目上要求第二种删除方法,于是记录一下我写的代码 ~ 1.首先,在移动端 ...
- 使用DataOutputStream输出流的read方法出现读取字节不一致解决办法,本地和测试环境不一致
之前: DataInputStream in = new DataInputStream(connection.getInputStream()); byte[] b = new byte[in ...
- ABAP读取长文本的方法
SAP中所有的项目文本都存在以下两张数据表中: 1. STXH 抬头项目文本 透明表 2. STXL 明细项目文本 透明表 长文本读取方法 首先在STXH和STXL中根据OBJECT NAME ...
- MongoDB 驱动以及分布式集群读取优先级设置
本文主要介绍使用MongoDB C驱动读取分布式MongoDB集群时遇到的坑,主要在读取优先级和匹配tag上:同时简单介绍Python驱动.Node.js驱动.Mongoose驱动如何使用读取优先级和 ...
- java的io读取
package gys; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; imp ...
- java中读取文件以及向文件中追加数据的总结
package gys; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; imp ...
- C#读取excl(兼容office多种版本)
要求:导入excl引用了using System.Data.OleDb,需要安装一个office Microsoft.ACE.OLEDB.12.0 office7以上版本 Microsoft.Jet. ...
随机推荐
- day26-过滤器Filter
Filter过滤器 1.Filter过滤器说明 为什么需要过滤器? 先来看一个例子: 我们在登录网站页面时,需要先进行登录验证. 用户访问的正常的流程应该是: 用户先通过登录页面进行验证,然后才可以访 ...
- Windows及eclipse常用快捷键-小彤在努力
Windows快捷键 Ctrl+A:全选 Ctrl+S:保存 Ctrl+Z:撤回 Ctrl+X:剪切 Ctrl+C:复制 Ctrl+V:粘贴 Ctrl+F:查找 Windows+E:打开我的电脑 Al ...
- JS笔记合集之对象
对象 对象基本使用 对象是JS中的一种复合数据类型,它相当于一个容器,在对象中可以存储各种不同类型的数据 而基本数据类型(原始值)只能存储一些简单的数据,如: 语法: 原始创建对象: let obj ...
- 【每日一题】【二分mid&贪心】2022年2月8日-NC163 最长上升子序列(一)
1.描述给定一个长度为 n 的数组 arr,求它的最长严格上升子序列的长度.所谓子序列,指一个数组删掉一些数(也可以不删)之后,形成的新数组.例如 [1,5,3,7,3] 数组,其子序列有:[1,3, ...
- 分享一个你很可能不知道的Java异常实现的缺陷
前言 Java中一个大家熟知的知识点就是异常捕获,try...catch...finally组合,但是很多人不知道这里面有一个关于Java的缺陷,或者说是异常实现的一点不足之处. 我这边就通过一个很简 ...
- O-MVLL:支持ARM64的基于LLVM的代码混淆模块
O-MVLL介绍 O-MVLL的开发灵感来自于另一个著名的基于LLVM的代码混淆项目ollvm,并在其基础上做了创新和改进.O-MVLL的混淆逻辑实现方式也是通过LLVM Pass,支持也仅会支持AR ...
- Github Actions 学习笔记
Github Actions是什么? Github Actions 官方介绍:GitHub Actions是一个持续集成和持续交付(CI/CD)平台,允许您自动化构建.测试和部署管道.您可以创建构建和 ...
- JS基本数据类型——BigInt
一.JS基本数据类型--BigInt BigInt是ES11引入的新的基本数据类型.BigInt数据类型的目的是比Number数据类型支持的范围更大的整数值,以任意精度表示整数.使用 BigInt解决 ...
- .NET 云原生架构师训练营(基于 OP Storming 和 Actor 的大型分布式架构一)--学习笔记
目录 为什么我们用 Orleans Dapr VS Orleans Actor 模型 Orleans 的核心概念 为什么我们用 Orleans 分布式系统开发.测试的难度(服务发现.通信) 运维的复杂 ...
- 自定义RBAC(4)
您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来- 前面把RBAC的权限系统设计过程都讲清楚了,现在就来实现它.大致分这么几个步骤: 1.先定义出完整的权限系统表结构: 2.实现Entity.Da ...