谢辉 曹亮
(91388部队45分队,湛江,524022)
随着人们对复杂海洋环境研究的不断深入,水声数据的采集也越来越受到人们的关注,数据采集系统的研制正在朝着自动化、小型化、便携化的方向发展[1]。传统的海洋水声数据采集系统功能单一、采集通道少、采集速率低、操作复杂,同时自动化程度低、人工参与度高,不能满足复杂海洋环境数据采集要求。作者结合工程实际,研制出一套基于LabVIEW和Compact RIO的复杂海洋水声数据采集系统,并将其应用到项目建设实践中。
系统原理框图如图1所示,其主要由信号采集、下位机-嵌入式 CRIO(Compact RIO)平台和上位机等组成。
图1 系统原理框图
系统将水听器采集到的信号通过信号调理模块转换成电压信号。通过CRIO平台上的数据采集模块NI 9234进行信号数据的采集,同时通过模拟/数字转换,将转换后的数据送给机箱背板的FPGA,通过FPGA VI程序将采集到的数据先存储到FIFO中,通过FPGA接口将读取数据送到CRIO-9025的RT控制器进行处理,然后通过网线把水声数据送入网络硬盘,实现水声数据的存储。试验任务结束后,将网络硬盘中的数据通过网线上传到上位机中,实现水声数据的处理和数据库管理。
CRIO是美国国家仪器(NI)公司生产的一款坚固耐用、可重新配置的工业级-嵌入式-系统设计平台[2],它精巧而坚固,满足苛刻的工业级指标,特别适用于复杂工业环境中对可靠性有严格要求的场合[3]。其主要参数:工作温度-40~70℃,抗冲击高达50 g,抗随机振动5 grms,抗正弦振动5 g,劳埃德船级社(Lloyd‘s Register)认证,总功耗小于20 W。CRIO集成了实时控制器(RT),可重配置的FPGA(现场可编程门阵列)和工业级I/O模块。Compact RIO系统具有小型、便携的优势,能够在一个紧凑、坚固的封装中提供前所未有的控制与采集能力,系统尺寸为 17.96 cm×8.81 cm×8.81 cm,质量仅为 1.58 kg。由于采用嵌入式设计,整个系统具备低功耗的优点,能满足采集系统长期在水下独立工作的要求,而创新的集成FPGA更使系统具备高速并行的运算处理能力[4]。CRIO结构组成和实施控制器结构如图2、3所示。
图2 CRIO结构组成图
图3 实时控制器图
针对复杂海洋水声环境以及必须具备防潮、防腐蚀功能,本系统选取的是CRIO-9025嵌入式控制器:800 MHz处理器,4 GB非易失性存储介质,512 MB DDR2内存;用于网络编程、通信和扩展I/O的双以太网端口;高速USB主机端口,可连接至 USB闪存及其它存储设备;带有敷型涂层,防渗密封可防潮、防腐蚀等。同时CRIO-9025能够运行LabVIEW RT0S 或Linux ,以实现数据处理过程的信号控制、数据记录和分析,比较适合复杂海洋水声数据采集系统的开发。
本系统采用与CRIO-9025相匹配的CRIO-9113可重配置的嵌入式机箱,配置了4个插槽,支持所有CRIO I/O模块,使用Xilinx Virtex-5 FPGA[5],能自动实现与I/O模块的通信,同时机箱内置高级触发及同步功能。
为了满足多通道不同采集需求,本系统选取NI-9234和NI-9232采集数据。NI-9234有4通道同步采样模拟输入,24 bits分辨率、102 dB动态范围,最高采样率51.2 kHz,输入信号范围±5 V,抗混叠滤波器。同时可以把连接器的接线盒集成到模块上,降低了对空间的需求和现场布线的成本,结合FPGA实现自定义采集功能。NI-9232为3通道同步采样模拟输入,24 bits分辨率,99 dB动态范围,最高采样率102.4 kHz,输入信号范围±30 V,抗混叠滤波器,软件可选交/直流耦合、IEPE信号调理。
水声传感器选择的是TC4032水听器,具有宽频、高灵敏度、低噪音、频率响应平坦的特性。高灵敏度及声学特征使 TC4032适合声学测量及探测,即使是在信号非常弱的情况下。网络硬盘是BUFFALO网络存储LS-X1.0TL,最大存储容量1.0 TB,支持TCP/IP协议。
CRIO开发模式有两种:扫描与 FPGA。前者简单方便,只需编写部署在CRIO实时控制器端的RT.vi 程序,就可在程序中直接调用预先开发好的I/O扫描接口,实现数据采集。但该模式可支持的最大扫描速率仅为1 kHz。本测试装置中采用的是FPGA接口模式,通过 LabVIEW RealTime中的FPGA接口VI来访问I/O模块,FPGA的特定数字化功能支持高达40 MHz的计数器,可为用户提供更多自定义的可能,实现数据的高速采集(大于1kHz)、最大的数据吞吐率及访问的灵活性,提高I/O模块的工作性能[6]。CRIO下位机的程序包括FPGA和RT。
FPGA程序主要用来实现对水声数据的采集,然后把采集到的数据传递给控制器。FPGA程序和RT程序运行速度不同,因此需要一种机制实现数据的传递。FPGA 与 RT 之间数据交换的方式有中断、轮询及DMA FIFO[7]。前两者只适合数据采集速度较慢的情况,高速采集时采取轮询和中断将会导致数据丢失及降低采集速度。因此,本系统采用的是DMA FIFO机制,首先FPGA上的水声数据依次写入FIFO,然后FIFO送来的数据存放在控制器CRIO-9025缓存,最后RT再从缓存中读取定量的数据,实现了数据从FPGA到控制器传输
本系统开发 FPGA程序时采用的是平铺式顺序结构,从左至右依次执行。首先把采集卡状态初始化为停止状态,避免本FPGA程序运行时还有采集卡在进行其它集任务,然后设置采集卡的采样率,9234采样率设置为 51.2 kHz,9232采样率设置为 102.4 kHz,把所有的采集卡再次初始化为启动状态。因为采集卡采样率的不同,本系统在FPGA程序中新建了FIFO1和 FIFO2,并将二者传递方向设为 Target to Host-DMA。FPGA程序通过FIFO Write控件和While循环实现不同采样率的采集卡采集到的数据同时写入FIFO1和FIFO2。FPGA程序如图4所示。
RT主要用来实现对水声数据的读取和上传到网络硬盘,实现水声数据的存储。水声数据采集系统通常需要在水下持续工作很长时间,控制器自带的内存不能满足要求,系统通过网线将网络硬盘连接到实时控制器上,因此RT程序首先对网络硬盘进行的相关设置,用Read / Write Control控件设置采样频率,由Invoke Node控件来配置FIFO和读取其中的数据。在读取数据的同时,用Read / Write Control控件来判断 FIFO的工作状态。为了防止CPU超负荷影响数据的传输,RT中用CPU Loads控件来监测主机CPU的运行状态,程序中与FPGA通信及 FIFO设置模块、数据采集主体模块如图 5和6所示。
图4 FPGA.vi程序
图5 RT程序中与FPGA通信及FIFO设置模块
图6 RT程序中数据采集主体模块
系统工作时是独立布放在水下的,没有与上位机连接,因此需要把应用程序配置在控制器的非易失性存储器上,当目标控制器启动时,应用程序自动启动。首先在本LabVIEW工程浏览器中的实时目标下创建一个生成规范,右击生成规范。选择实时应用程序后,会弹出一个对话框,设置对话框上的信息和源文件选项。信息选项用来修改规范名称和计算机目录来匹配系统命名和文件格式。源文件选项用来设置启动VI并包含附加VI或支持文件。系统从工程文件中选择RT VI,将其设置成启动VI,完成后点击生成键。最后,在生成规范下面,右击实时应用程序,选择“设置成启动”,保存整个工程,实现自启动。
为了验证系统的准确性和稳定性等功能,利用信号源发射频率为10 kHz、幅值1 V,脉冲间隔5 ms,10个脉冲的正弦信号。通过系统采集,数据存储在网络硬盘中。采集到的信号和存储结果如图 7和8所示,其中,图7横坐标时间单位为s,纵坐标幅值单位为V。经过多次试验证明,本系统能在复杂海洋环境长时间不间断工作。
图7 采集信号显示界面
图8 数据存储显示界面
相对于传统的海洋水声数据采集系统,本系统体积小、便于携带、功耗低、适用于复杂海洋环境,能够实时高质量的完成自启动、数据采集和大容量存储。理论上研究表明该系统是复杂海洋环境数据采集系统的首选,同时,实践上证明了系统的实用价值,多次试验结果表明,该系统可靠性好、稳定度高。但由于目前该系统是独立置于复杂海洋中,不能实现水声数据的实时观测处理,无法实时判断试验航次的有效性,所以下一步将研究实时观测数据的复杂海洋水声数据采集系统。