在实验过程中,我们总是需要各种仪器的相互配合,需要各个仪器按时间顺序进行工作,如简单的信号施加,信号调制,信号采集与处理流程。因此,我们需要一个大致的架构,例如:1. 物理网络与配置层,负责维护所有仪器的网络身份信息,包括IP地址、通信端口、协议类型、仪器型号和校准文件路径。解决仪器在哪里、如何找到它的问题。由于仪器数目更多,我们需要利用交换机进行连接,主要所有仪器IP应在同一字段,例如192.168.1.xxx,通常IP可以通过仪器按钮进行设置。
2. 通信协议层,负责建立和维护与仪器的通信会话,处理不同协议(VXI-11、Raw Socket、HiSLIP)的数据帧格式、命令包装、错误检测和重传机制。解决数据如何正确传输的问题。
3. 驱动抽象层,负责将仪器厂商的底层命令转换为易用的编程接口,屏蔽不同厂商的命令差异,进行参数范围检查和仪器状态管理。解决如何用统一方式控制不同仪器”的问题。。因此我们就能够之间输入可以识别的字符,如frequency: 1e9。
4. 仪器功能层,负责将多个驱动层的基本命令组合成完整的测量任务,构建标准测试流程,如协调激励源与测量仪的配合。
5. 同步控制层,负责管理触发信号的分配、多台仪器间的时钟同步,保证信号施加与采集的精确时序。
6. 数据处理层,负责从硬件采集数据、执行信号处理算法、存储结果并进行可视化呈现。
7. 基础工具包层,负责提供贯穿全系统的数学函数库(如洛伦兹拟合、FFT变换)、单位转换、数据格式转换和文件读写等辅助工具。
最近几天,借助于人工智能,用Python完成了Keysight 33500B波形发生器和Agilent DSO7104B示波器的信号采集和数据展示。