参考文档“4GUG”,全称为“D-TACQ 4G User Guide”
D-TACQ 4G 是一系列智能载体和模块化数据采集卡,它们共同配置成一个网络化的数据采集设备。
一般来说,“ACQ400 系统”由一个CARRIER和一个或多个MODULES组成。我们通常用“ACQ400”作为这种系统的简称。
Modules:具有特定模拟功能的模拟输入模块。物理上,这些是“夹层模块”(mezzanine modules)。
Site:Modules在Carrier上安插的地方,一个Carrier有几个Sites就可以插几个Modules。类比于总线系统的模块插入槽位(slots);
Carrier:带有嵌入式计算机的母板,有一个或多个Sites,能够支持一个或多个Modules的负载。
UUT:是unit under test的缩写,意思是被测试模块
系统Console访问通过一个微型 USB 端口提供。该 USB 端口在主机操作系统中表现为一个Console端口。使用终端仿真器连接到控制台端口,波特率为 115200,8 位数据位,无奇偶校验。
root 密码会随您的货物提供在一张打印的纸张上。
串口连接后需要登录,账号为root
在启动时,ACQ4xx 的默认行为是使用 DHCP 通过 ETH0 请求一个 IP 地址。这对于大型安装来说是合适的,因为它允许集中控制;对于小型安装,也可以在网络中有 DHCP 服务器的路由器上启动。如果您这样做,请确保路由器具有千兆以太网端口!
MAC 地址打印在设备的外壳上。
如果您的配置中没有 DHCP,那么需要设置一个静态 IP 地址。
可以从 root 控制台按照以下方式指定一个静态 IP 地址:
set.static_ip PORT IP-ADDRESS
其中:
例如:
acq1001_004> set.static_ip 0 192.168.1.4
这条命令会将设置写入文件 /mnt/local/network。该设置在断电后仍然有效。更复杂的网络场景可以通过直接编辑此文件来进行配置。
用网线连接网口后,可以使用ssh连接,目前在局域网中的ip地址为192.168.0.166
当系统上电并联网后,可以在网页浏览器中指向该设备,此时嵌入式网页将会显示出来。网页服务器使用标准端口(端口 80)。
ACQ4xx 作为 SSH 服务器,可以使用 SSH 登录并运行命令。
每个设备都提供了一个保存在 /mnt/local
的自定义配置。我们建议在首次接收设备时备份该配置,并在进行任何配置更改后再次备份。一个合适的备份命令如下:
cd BACKUPS
mkdir acq2106_123
scp -r root@acq2106_123:/mnt/local acq2106_123
D-TACQ 在发货时会对设备进行备份,因此如果您丢失了备份,请联系我们。这项指示主要是为了避免您丢失所做的任何自定义配置。/mnt/local 在固件更新时不会受到影响。
这样可以确保您的自定义配置得到妥善保存,即使在未来需要恢复时也能轻松找回。
ACQ4xx 包含了一个嵌入式的 EPICS IOC(Input Output Controller)。即使您目前没有计划使用 EPICS,结合 CSS GUI,它提供了一种非常方便的方式来控制和使用数据,至少在初始评估阶段推荐使用。
以下是设置步骤:
在主机端上(不是在zynq linux上)安装CSS
CSSWS
(CSS Workspace),在CSSWS
下创建文件夹acq2206_054
,这个文件夹代表着我们的uutacq1001_acq430_quickstart.pdf
acq2206_054
,将Max Array Size设置为500000(不然将看不到接收的图像)Control System Studio 是一套工具和应用程序的集合,用于监控和操作大规模控制系统,例如加速器社区中的控制系统。
Phoebus 是一个基于纯 Java/JavaFX 的实现,利用 Java 的 SPI 和模块特性提供了同样可扩展和模块化的架构。这是当前 CS-Studio 的实现。最初的 CS-Studio 实现是基于 Eclipse RCP 框架,该框架提供了可扩展和可插拔的架构。
Phoebus 和 CS-Studio 产品是由许多实验室和大学之间的合作开发和维护的。
下载页面:https://github.com/ControlSystemStudio/phoebus/releases/
工作空间(Workspace)的概念
项目(Project)的概念
推荐的文件布局
为了更好地组织和管理您的文件和项目,以下是一个推荐的文件布局示例:
mkdir PROJECTS; cd PROJECTS; git clone https://github.com/D-TACQ/ACQ400CSS.git
mkdir CSSWS
cd CSSWS
mkdir ACQ1001_123
ACQ4xx 设备分为多个sites {1, 2, ..., 6},每个site具有特定module的功能,以及site 0,即主板。每个site提供了一组“knobs”或控制项,这些控制项具有简单的键值设置。“knobs”设计为易于脚本化,并且可以从 ACQ4xx 本地以及通过专用的套接字连接远程访问。
HAPI 使用标准的 DNS 进行名称解析。理想情况下,您的 UUT(Unit Under Test)应该有一个与主机名匹配的 DNS 名称。
如果没有 DNS 服务器,HAPI 也可以直接使用 IP 地址工作,但这不是最佳实践。最好是设置一个“本地 DNS”,这可以通过在系统的 hosts 文件中设置名称映射来实现。
在文件末尾添加以下内容:
# D-TACQ 名称映射
192.168.0.001 acq2106_001
192.168.0.002 acq2106_002
192.168.0.003 acq2106_003
这样访问acq2106_001
就是访问192.168.0.001
了
acq400
类通过建立到 UUT(Unit Under Test)不同端口的套接字连接,使得每个“knob”都可以作为连接对象的属性可用,从而可以使用类似于 Bash 脚本的简单语法进行操作。
示例端口
nc(Netcat)是Linux上的一个强大的网络工具,用于读写网络连接。它可以执行多种网络相关的任务,可以用于创建 TCP 或 UDP 连接,并且可以在网络上发送和接收数据。由于其简单性和灵活性,nc 经常被用于网络调试和测试。
Linux下一般自带nc
Windows下载这个:https://eternallybored.org/misc/netcat/,解压后将nc路径添加到环境变量中
使用nc建立一个socket连接:
nc 192.168.0.165 4221
其中192.168.0.165
为acq400网口的ip地址,4221
为acq400中site1对应的端口号
输入命令后,在输入
prompt on
会出现prompt
acq400.1 0 >
然后就可以对PVs进行读写了,具体输入help
查询
首先在某个目录下
git clone https://github.com/D-TACQ/acq400_hapi
然后新建一个环境变量,名为PYTHONPATH
,值为acq400_hapi
目录的地址
如果不添加环境变量的话,Windows的CMD下输入
set PYTHONPATH=E:\acq400_hapi
将E:\acq400_hapi
替换为你的acq400_hapi
目录的地址,不过这样就只对当前控制台窗口有效了
添加Python路径的目的是编写Python脚本时import xxx
可以找得到文件
然后就可以编写Python脚本了,这是一个例程
# example.py
from acq400_hapi import *
uut1=acq400.Acq400("192.168.0.165")
print(uut1.get_sys_info())
for ii in range(0,10):
c1 = uut1.s1.SIG_SAMPLE_COUNT_COUNT.split(" ")[1]
print("%s" % (c1))
后面发现再user_apps
文件夹下有大量提供好的例程,直接用python运行即可,注意输入正确的参数
这一节描述了如何定义数据采集系统中的时钟和触发条件。虽然系统提供了合理的默认设置,但用户也可以根据需要进行自定义配置。以下是具体的命令和解释:
设置时钟和触发器: set.site 1 clk=CLK:设置站点1的时钟源为CLK。
set.site 1 trg=TRG:设置站点1的触发源为TRG。
这些命令用于配置特定站点的时钟和触发器,默认情况下,系统已经提供了合理的设置,因此通常不需要进行更改。
run0 命令用于配置参与数据采集的模块集合。这个命令允许用户指定哪些模块将参与数据采集过程
假设我们想要配置位于站点 1、2、3 和 4 的模块参与数据采集,可以使用以下命令:
run0 1,2,3,4
为了启动数据流,需要连接到端口 4210 并读取数据。在最简单的场景下,可以使用 streamtonowhere
命令来测试数据流
(通过ssh或串口连接 控制台中)
这条命令使用 pv 工具显示数据传输的速率,并将数据流丢弃
nc localhost 4210 | pv > /dev/null
通过以太网将数据流式传输到另一台主机。这种方法的有效数据传输速率最高可达 30 MB/s
(在一台主机上,将UUT替换为acq400的IP地址)
nc UUT 4210 | pv > mybigdatafile
这条命令等同于在cs_studio中Capture
页面的Stream
中点击Start
要满速率的流式传输,建议使用光纤传输
流式数据流可以类比为一个水箱在填充的同时进行排水。
当平均输入数据速率超过平均流式数据传输速率(AD采样速率大于网速)时,需要采取一些策略来减少数据传输速率
某些硬件模型(如 ACQ425 和 ACQ435)提供了硬件手段来减少通道数量,从而降低数据速率。硬件通道屏蔽是以banks的形式进行的,而不是针对单个通道。
另外,可以通过软件控制减少输出速率,方法是丢弃较高的通道计数(channels count)
输入数据速率:8 个通道,每个通道 2.5 MSPS,每个样本 2 字节,输入速率为40 MB/s
内存缓冲区大小:512 MB
输出数据速率:32 MB/s
平均填充速率:8 MB/s = 40-32
缓冲区溢出时间:512 ÷ 8 = 64 秒
而标准瞬态采集情况下,输入数据速率为 40 MB/s,内存缓冲区大小为 512 MB。缓冲区填满时间为 12 秒
因此,与标准瞬态采集相比,流式数据采集的缓冲区溢出时间更长(64 秒 vs 12 秒),这是一个较好的结果
当系统进行数据流传输时,通常会包含时间信息,以确保数据的准确性和可追溯性。时间信息的嵌入可以采用多种格式,具体取决于数据的位宽和传输需求。
时间信息的格式
假设系统需要包含时间信息,可以考虑以下几种格式:
在ACQ400数据采集系统中,内存缓冲区被划分为较大的块,例如1MB或4MB(如ACQ480使用4MB块)。为了确保数据的连续性和完整性,系统在每个缓冲区块的开始位置插入一个“Start of Buffer Signature”(sob-sig),这是一种特殊的数据模式,用于标记缓冲区的起始位置,并显示缓冲区索引。
重复门控模式(RGM)是一种数据采集模式,其中数据采集是无限期进行的,但通过硬件门控信号(GATE信号)将其分割成多个短时间段的“爆发”(bursts)。这种模式经常与流式数据采集相结合,以适应需要在高数据速率下进行周期性数据采集的应用场景。
RGM 的工作原理
在 RGM 模式下,数据采集系统将持续不断地进行数据采集,但在每个周期内,采集会被硬件门控信号(GATE信号)打断,形成一个个独立的“爆发”。每个爆发期间,系统将高速采集数据,而在爆发之间,系统可以进行数据处理或其他操作。
瞬态数据采集是一种基于SHOT的数据采集模式。在这种模式下,系统分配固定的内存(例如512MB)用于存储单次采集的数据。数据采集在触发信号到来时开始,并在采集预定数量的样本后结束。采集完成后,数据可以被上传或进一步处理。
瞬态数据采集完成后,数据可以通过以下方式进行访问和处理:
/dev/acq400/data/$site/??
访问这些文件的最简单方法是安装"channel server"
make-ch-server
在运行“run0”之后执行此操作。现在,每个通道的数据在套接字53000+CC上显示为每个通道。
瞬态数据采集是一种基于触发条件的数据采集模式,它在触发信号到来时开始采集,并在采集预定数量的样本后结束。以下是配置瞬态数据采集的具体步骤和命令。
配置步骤 设置瞬态采集参数: transient [PRE=N] [POST=N] [OSAM=1] [SOFT_TRIGGER=1] [DEMUX=1]
举例
transient PRE=1000 POST=2000 OSAM=1 SOFT_TRIGGER=1 DEMUX=1
set.site 1 trg=1,1,1
set.site 1 event0=1,0,1
set_arm
注意,CSS OPI提供的远程GUI与上面命令有相同的功能,点击Capture
按钮进入页面,选择Transient
一栏,点击"Default PRE/POST"按钮,确保下面TRG和EVENT0都设置为d1(软触发模式,如果是d0就改成d1),然后点击setMode,ARM,然后状态运行到"PRE_RUN"时,点击"PULSE_SOFT_TRIGGER"产生触发,之后状态继续变化,完成一次采集回到IDLE。
之后查看Post Shot
可以看到刚才采集到的数据
另外可以使用HAPI同样完成相同功能的一次采集,经测试,HAPI在Windows下使用有问题,建议在Linux环境下使用
假设在Ubuntu环境下git clone了hapi_400,然后在hapi_400目录下执行这条命令,也能成功远程控制完成一次瞬态采集,并传回数据到Host并绘图
python3 ./user_apps/acq400/acq400_fullshot.py --post=100k --capture=1 --trace_upload=1 --plot_data=2 --channels=30,31 --trg=1,1,1 192.168.0.166
在瞬态数据采集完成后,有多种方法可以访问和上传采集到的数据。以下是几种常见的数据上传方法及其优缺点
在数据采集系统中,RAW 数据和 COOKED 数据分别指代了不同格式的数据组织方式。RAW 数据是从 FPGA 直接传输到本地 DRAM 或远程通信端口的多路复用数据,而 COOKED 数据则是经过解复用的数据,按通道顺序排列。
RAW 数据是多路复用(multiplexed)的数据格式,格式为 [SAMPLE][CH],即数据按样本顺序排列,每个样本包含了所有通道的数据。RAW 数据的特点如下:
避免延迟:在采集结束后,避免了 ARM 处理器进行解复用处理所带来的延迟。 更快的数据卸载:所有通道的数据通过一个端口(例如端口 53000)进行流式传输,减少了开销并提高了 TCP/IP 效率。
注意:使用HUDP发送的数据都是RAW形式的
COOKED 数据是经过解复用的数据格式,格式为 [CH][SAMPLE],即数据按通道顺序排列,每个通道的数据连续存放。COOKED 数据的特点如下:
便于查看:大多数用户希望查看按时间序列排列的每个通道的数据。 适用于本地 DRAM:对于可以放入本地 DRAM 的瞬态数据,推荐使用 COOKED 数据格式。 配置方法 根据需求选择 RAW 数据或 COOKED 数据,可以通过修改配置文件来实现。
配置示例
要指定 COOKED 数据,可以在 /mnt/local/sysconfig/transient.init
文件中设置 COOKED=1
:
要指定 RAW 数据,可以在 /mnt/local/sysconfig/transient.init
文件中设置 COOKED=0
:
D-TACQ ACQ400 系列智能控制器集成了实验物理与工业控制系统的 EPICS IOC(输入输出控制器),用于管理运行时逻辑并展示数据值。此外,提供了 CSS(Control System Studio)屏幕以便能够远程监控和管理系统。
EPICS(Experimental Physics and Industrial Control System)是一种工业级控制系统,在许多大型科学装置如加速器、光源以及国际热核聚变实验堆(ITER)等设施中有广泛的应用。系统的核心是一个或多个运行在嵌入式计算机上的 IOC。每个 IOC 都包含一个由过程变量(PVs)组成的数据库。PVs 可以通过通道访问(Channel Access,简称 CA)被网络中的客户端看到。每一个 PV 代表了由 IOC 控制的系统中的一个控制点。PVs 可以是标量,例如“启动|停止”控制旋钮或温度读数,也可以是波形向量,例如 CH01 电压。
IOC 数据库可能包含了用于生成和展示 PVs 的逻辑,比如将原始模拟信号转换为电压值。IOC 可以通过网络上的通道访问客户端进行控制和监控。存在简单的客户端,也有像 Control System Studio(CSS)这样的图形化客户端,它能够创建功能丰富的跨平台操作员界面(OPI)。
关键概念总结
本文章使用limfx的vscode插件快速发布