☰
RDI ADCP配置与数据解析:从命令集到流量计算实战指南
2026/10/26 14:39:47 网站建设 项目流程

简介:此文档为一份 RDI 垂直式及水平式 ADCP 的配置与数据输出参考指南,面向 ADCP 操作人员、河流与海洋科研人员及设备维护团队,用于初次配置、重新配置或故障排查时的参数查询与数据解析。资源包共 1 个 docx 文档,大小约 682KB,已有 506 人学习。内容涵盖固定命令、向导命令及坐标转换 EX、EB 等命令的详细说明,逐一解释各参数的物理意义与适用背景;同时给出 ASCII 格式输出的数据结构、导航数据格式及文件生成步骤,重点介绍了 WinRiver II 软件生成流量报告、流量数据后处理以及不同测量条件下的适应方法。读者可据此理解设备命令体系,快速定位配置参数,并掌握从原始数据到流量报告输出的完整链路,便于科研监测和长期水文观测中精细调整与数据管理。

1. RDI ADCP不是即插即用的设备:命令集决定测量数据是否可信

水文测量场景里,RDI ADCP是常见的声学多普勒流速剖面仪,但它的配置远不是连上电脑发送一条命令那么简单。默认状态下的盲区、深度单元数量、坐标转换方式、底跟踪参数,直接决定WinRiver II里最终输出的流速与流量数据是否可用。曾经见过一台设备因为EX坐标转换位设置错误,整条断面的流速分量全部异常,后处理时才发现数据已经无法修复。把RDI ADCP的核心配置命令、ASCII输出结构、PD0导航数据结构以及流量计算参数逐条拆开,适合准备首次配置设备或排查数据异常的使用者,新手可以照着逐条下发,熟手可以直接检索参数边界与踩坑记录。

2. 固定命令逐条拆解:从出厂复位到底跟踪与水跟踪参数

2.1 命令下发顺序:先复位,再定流量控制

所有命令下发前,第一步是CR1。CR是命令复位,把ADCP恢复到出厂默认状态,让设备进入一个“已知状态”再逐条叠加参数,避免上一次残留配置干扰新参数。这一步在很多现场被跳过,设备一旦出现诡异行为,先CR1再重发全部参数往往能解决一半问题。

CR1之后是CF11110。这条命令的五个位分别控制测量循环和输出方式,11110的含义是:选择自动集成循环、自动呯循环、二进制数据输出、启用串行输出、禁用数据记录。理解为“设备按内部计时自动开始采集,数据通过串口以二进制格式发出,不往内部存储器写”。现场如果希望数据同时存到内存卡,需要把最后一位改成1,但通过WinRiver II走串口实时采集时,禁用数据记录是更稳妥的做法,避免串口与存储写入竞争导致数据帧丢失。

接下来是底跟踪相关命令,这组参数决定设备能不能稳定拿到对底船速和河底深度。

命令值作用选型说明
BA3030评估振幅最小值,有效底部检测的振幅下限低于30个数(count)的底回波视为无效
BC220220底跟踪相关幅度阈值相关幅度低于220时底跟踪速度无效
BE100100mm/s底跟踪误差速度上限超过100mm/s的底跟踪数据被标记为坏
BP11每集合底跟踪呯数底跟踪与当前深度匹配时1个呯够用

这四条命令围绕“底跟踪数据有效性”工作。底跟踪的数据质量由振幅、相关幅度、误差速度三个维度判定,BA、BC、BE就是三个判决门限。BP1表示每个集合发1次底跟踪脉冲,如果发现底跟踪频繁失败,可以提到BP2或BP3,代价是采集周期变长。

还有一条容易忽视的命令是&R,底部透视。它的值以百分比形式输入,决定底跟踪发射脉冲的长度与当前水深的比值。在100米深的水中做底跟踪,&R=20时底部跟踪发射脉冲长度为20米,&R=30时为30米。深水区如果&R设得太小,底回波能量不足,底跟踪会间歇性丢失;设得太大又会增加发射功耗,影响水跟踪脉冲的节奏。

水跟踪部分用另一组命令控制剖面质量。WE1500是水跟踪误差速度阈值,单位mm/s,超过1500mm/s的流速数据点会被标记为坏;WA50是虚假目标阈值,用来过滤鱼、悬浮物产生的干扰回波,设得过小会把真实水流速度误删,设得过大又挡不住鱼群回波。WM1把水跟踪模式固定为模式1,也就是通用剖面模式,这种模式适合绝大多数河流测量场景。WZ005则把模式5和模式8的模糊速度最小径向模糊度设为5cm/s,只有切到这两种模式时才起作用。

提示:修改任何时间相关参数(TP、TE)后,应先停止采集再下发,否则正在进行的集合可能混入新旧两种采样节律,PD0文件里会出现时间戳跳变。

2.2 空间分辨率三兄弟:WF、WN、WS

深度单元的几何关系由三条命令共同决定。WF50设置传输后盲区为50厘米,即第一个深度单元从传感器头下方50厘米处开始。WN50设置深度单元数量为50个,WS50设置每个深度单元厚度为0.5米。三者共同构建出“从传感器往下50cm开始,每50cm一层,共50层”的剖面空间结构。

这三个参数不是独立设置的。盲区太小,发射脉冲尾部的余振会污染第一个深度单元的回波;盲区太大,近水面测量范围被压缩。常见做法是先把盲区设在传感器入水深度加25cm以上,再根据目标水深反推WN和WS的乘积。比如测流断面的期望垂直覆盖到25米,用WS50(0.5m)就需要WN50,两者乘积正好25米。如果实际水深比预期深,最后几层bin会量到底部回波而不是水流速度,后处理时这些层会出现速度骤降或者-32768,需要根据现场水深重新配WN。

向导命令里还有两条和几何相关。BXxxx是最大底部搜索限制,超过这个深度值设备停止搜索底部,避免深水区无效搜索浪费发射能量。向导中一旦输入最大水深,WinRiver II会自动设置WSx和WNx,手动下发时要注意这两条必须与向导里填的最大水深匹配,否则剖面覆盖范围与底部搜索范围对不上。

2.3 EX命令坐标转换:四个位控制数据坐标系

EX10111是最容易出问题的一条命令。它由三部分组成:前两位选择坐标系——10是船舶坐标,11是地球坐标,00是径向坐标(不做任何航向、纵摇、横摇修正,即波束1、2、3、4各自的数据),01是仪器坐标。

后三位是功能开关。第3位为1时,在坐标转换中应用纵摇和横摇数据;第4位为1时,允许3波束解决方案,当某个波束的回波相关幅度低于WC设置的阈值时,用剩余3个波束继续解算速度,而不是把整个集合标记为坏;第5位为1时,启用水深箱体映射,也就是bin mapping,船体倾斜时波束实际照射到的深度单元会发生偏移,bin mapping把这个偏移修正回均匀的深度网格。

EX10111=船舶坐标+应用倾斜+允许3波束+允许bin mapping。日常断面测量如果依赖外部罗经和WinRiver II做后处理,我一般建议直接用EX11111(地球坐标),让设备在采集时就完成航向修正,后处理阶段少一层变量。但要注意,地球坐标依赖的外部航向数据如果不稳定,数据会比船舶坐标更难看,选型时要先确认姿态传感器输出是否可靠。EX00xxx只输出径向速度,适合做设备自检或波束一致性分析,不用于正常测流。

2.4 TE、TP与采集节奏

TE00000000把每个集合的时间间隔设为0,意思是设备连续采集,不按固定时间间隔强制分割集合。真正控制采集节奏的是TP000020,即0.2秒的呯间隔。呯间隔决定发射脉冲之间的时间差,直接影响最大可测流速范围。呯间隔越长,多普勒频移的模糊速度越低,能测的流速上限越小。0.2秒配合WV170(最大相对径向速度170cm/s),可以覆盖大部分河流断面的流速范围。

这套节奏下,一个集合包含1个水跟踪呯(WP1)、1个底跟踪呯(BP1)。如果现场流速很快,需要把TP缩短到0.1s以下,同时把WV调大,避免高速水流出现速度模糊。模糊速度设得太小时,超过模糊上限的流速会在剖面中显示为反向条纹,剖面图上出现正负交替的异常层,这就是典型的速度折叠。遇到这种图不要急着改滤波,先检查TP和WV的配合是否覆盖了实际流速范围。

3. ASCII输出与PD0数据结构:后处理前先学会读字段

3.1 二进制原始数据与ASCII转换的关系

WinRiver II生成的PD0原始文件保留ADCP输出的原始二进制数据。ASCII输出文件则是在回放或重处理时按配置生成的文本,方便导入电子表格、数据库、字处理程序等外部工具做分析。要注意的是,ASCII输出并不等同于对数据做平均或抽稀,它会输出工作集里的全部数据——所有深度单元的数据组都会出现,包括被标记为“坏”的;所有信号群也都会出现,即使显示界面只画了部分平均信号群。

创建ASCII输出文件的流程:启动WinRiver II并加载测量文件,在配置菜单选择全部ASCII输出或部分ASCII输出,勾选需要输出的数据(背散射强度或回波强度),选择要导出的横断面,然后回放或重处理所需断面,文件就会在回放过程中自动逐行写入。文件大小会自动增长以容纳至少一个完整集合,集合不会被拆分到两个文件中。

通用ASCII输出则更灵活,允许勾选要输出的数据项并排列顺序,还可以保存为模板供其他测量复用。项目选择对话框里,用→键把项目加入输出列表,用←键移除,需要字段间隔就插入“分隔符”。

3.2 ASCII输出文件的三行文件头

每次打开新ASCII输出文件时,WinRiver II先写入三行头信息。前两行是注释行,通过横断面图上右键“添加记录”输入,通常写测量日期、断面编号、负责人等现场信息。第三行记录当前测量配置:

字段序号内容单位
1WS深度单元层厚cm
2WF发射后盲区cm
3ADCP入水深度cm
4WN深度单元层数个
5WP每集合呯数个
6每个集合的时间百分之一秒
7分析模式数值

拿到一份陌生人的ASCII文件,先看第三行就能还原当时的采集配置,判断这个文件的深度网格是否与自己的后处理脚本假设一致。很多数据解析翻车都是从“不知道原始WS是多少”开始的。脚本里写死50cm,结果文件头里是30cm,后面所有深度映射全部错位。

3.3 数据段结构与坏数据值

文件头之后,每进入一个新的数据段(原始或平均集合),文件先写入六行引导数据,然后从第七行开始按bin深度逐层写入。前六行包含:

第一行是集合时间与编号:年、月、日、时、分、秒、集合时间百分之一秒、呯信号集合编号、段中呯信号集合数、纵摇、横摇、经过罗经修正的航向、平均温度。

第二行是速度参考与导航参量:东向速度、北向速度、垂直速度、底轨速度参考(BTM或GPS GGA/VTG)、GPS东/北速度、底跟踪速度、测深仪校正深度、GGA高度、GPS精度因子与卫星数、四个波束的平均测深值。

第三行是距离累计:总运行距离、向北行驶总距离、向东行驶总距离、总运行时间、总距离补偿、纬度、经度、GGA或VTG速度分量。

第四行是导航数据:相对GGA或VTG的行驶距离、剖面中部测量流量、顶部估算流量、底部估算流量、起始岸流量估算、起始距离、末端岸流量估算、终点距离、中层起始深度、中层结束深度。

第五行是流量相关的配置信息:流量参考(Ref=BTM或测深仪选项)、BINS数、测量单位、速度参考(BT、GGA、VTG或无)、强度单位、强度比例因子、吸声系数。

从第七行起,每个bin一行,行内包含:深度、速度表、速度方向、东/北/垂直速度分量、误差速度、四个波束的回波强度、百分比良好。其中“百分比良好”字段是判断该层数据可信度的关键,低于30%到50%的层在后处理时应剔除。

坏数据值有三个固定标记:速度为-32768,流量为2147483647,经纬度为30000。缺失数据不写入文件——文件里不会出现短划线或填充值,缺失的表现是字段直接空缺。解析时不能只判断数字范围,还要处理空字段的情况,比如“12,,45”这种连续逗号。

3.4 PD0导航数据结构的字节布局

PD0文件按固定块组织,每个块都有ID和长度。导航相关的数据结构依次为:

块长度
头部6字节+2×数据类型数
固定前导数据59字节,总是输出
变量前导数据65字节,总是输出
速度数据2字节头+每深度单元8字节
相关幅度2字节头+每深度单元4字节
回波强度2字节头+每深度单元4字节
良好百分比2字节头+每深度单元4字节
底跟踪数据85字节,由BP命令控制
通用NMEA结构14字节头+消息体,可含多个实例
测深仪DBT38字节
GPS GGA97字节
GPS VTG45字节
校验和2字节

导航数据类型的ID以0x2100、0x2101、0x2102、0x2104开头,分别对应通用NMEA结构、DBT、GGA、VTG。解码时先按ID找到块起始位置,再用数据格式部分定位具体字节。通用NMEA结构与旧式WinRiver结构不同,现成的解码器不一定兼容,通常需要按ID自行解析。

NMEA消息是ASCII字符串,以$开头,地址字段5个字符,数据字段用逗号分隔,以加校验和和CR/LF结尾。校验和是$和之间所有字符的8位异或结果,转成两位十六进制ASCII字符。GPS解析失败时,先看原始NMEA字符串是否符合这个格式。很多第三方GPS输出的语句里夹杂了空格或非标准字段,WinRiver II会直接丢弃整条语句,导致导航数据里出现30000的经纬度标记。

4. WinRiver II流量计算参数:断面、外推与岸边估计

4.1 断面测量流程与集合流量累计

流量测量采用移动容器法:船从河道一侧A点横穿到另一侧B点,ADCP在行进过程中连续采集每个信号群的水流剖面和船速,软件把每个集合的流量累加得到∑Q1,再从B点返回A点得到∑Q2。现场流量取多次往返的平均值。建议至少做4次往返,取偶数个横断面,可以抵消掉一部分航向偏差和边缘估计误差。

流量计算的核心是叉积。ADCP同时测量了水流速度矢量和水底船速矢量,两者相对于垂直面的叉积与船的航向路径无关。把叉积写成矩形坐标形式,就是FxBy-FyBx,Fx、Fy是水流速度的横向和前向分量,Bx、By是船速的横向和前向分量。WinRiver II在做任何处理之前就把这些值旋转到地球坐标,所以横断面可以是任意曲线,只要它从河道一侧附近开始、到另一侧附近结束。

4.2 未测量区域的边界

ADCP实际能量测到的是从盲区以下到旁瓣层以上的那部分水体。近地表区域由三部分组成:ADCP传感器入水深度、传输后盲区(WF)、发射脉冲滞后距离。以600kHz设备模式1、50cm bin为例,从水面到第一个深度单元顶部的距离约为90cm。传感器入水深度需要在下发命令时就告诉软件,一般做到20cm左右,既保证换能器完全淹没,又不让近表层数据丢太多。

近底区域是旁瓣污染区。波束方向与垂直方向呈20度角时,底部旁瓣层厚度约为传感器到底部距离的6%,WinRiver II还会额外丢弃底部旁瓣层内最后一个深度单元的数据。原因很简单:最后一个bin里,脉冲前端的能量已经触底反射回来,脉冲后部的能量还在水中传播,前端反射的回波污染了后段的真实水回波。

中间可测层就是第一个好bin到最后一个好bin之间的区域。Dtop是第一个深度单元中心深度,DLG是最后一个有效深度单元,中层流量MidQ只计算这之间的所有bin。旁瓣层和盲区夹出的可用水深往往比想象中薄,这也是为什么配置时WF、WN、WS的取值必须按现场水深精算。

4.3 顶部与底部外推方法选择

顶部外推有三种方法:常数法、幂函数法、3点外延法。常数法把第一个好bin的叉积值直接平推到水面,算法最简单,但不符合明渠流速剖面近底部趋零的物理规律,只建议在bin数很少的浅水断面使用。幂函数法假设流速剖面u=a'z^b,b指数取1/6时等价于明渠曼宁公式,适合垂向流速梯度明显的自然河道。3点外延用顶部三个bin的叉积拟合斜率再外推到水面,剖面中有效bin数少于6个时自动退化为常数法。

底部外推有幂函数法和不滑动法。不滑动法强制要求河床处流速为零,只使用深度最低20%的bin拟合幂函数;如果这20%区间里没有有效bin,就退化为最后一个好bin与河床之间的线性插值。选择不滑动法,等于明确指定“整个剖面的幂拟合不能代表底部边界层”,更贴近河床阻力导致流速趋零的真实物理过程。

方法适用层特点适用场景
常数法顶部叉积平推至水面,最简单浅水、bin数少
幂函数法顶部/底部u=a'z^b,b常取1/6自然河道、垂向梯度明显
3点外延顶部顶部3个bin拟合斜率外推bin数足够多
不滑动法底部底部20%bin拟合且河底归零河床阻力显著的小河流

顶部和底部水层的厚度由软件自动计算。顶部从水面算到第一个bin中心Dtop,底部从河床算到DLG,中层流量就是夹在中间的深度单元累加。每个bin的流量等于叉积乘上连续集合之间的时差Δt,逐层累加就是集合总流量。要注意Δt取上一个好集合与下一个好集合之间的时间,如果中间混入几个坏集合,Δt会把这几段坏数据的时间也算进去,但少量缺失对总流量影响不大。

4.4 近岸估计与关键输入

近岸区域水太浅,ADCP无法形成有效bin和底跟踪,流量估算采用比率插值法:C乘以Vm乘以L乘以dm。C是形状系数,三角形取0.3535,矩形取0.91;Vm是岸边第一段平均流速;L是岸到第一个有效段的距离;dm是该处水深。

开始或停止横断面时,WinRiver II会提示输入岸距,这时候别随手填一个数字——L值对近岸流量影响很大,窄河道里两项近岸流量加起来可能占总流量的10%以上。岸边形状在配置设置的流量选项卡里选择三角形还是矩形,应根据河道断面形态决定:混凝土矩形断面选矩形,自然土质边坡选三角形。重新处理期间,还可以在边缘估计页面里修改这些值,但采集阶段输入的原始值已经写入测量文件,后处理改动只能影响重处理结果。

提示:岸距输入要在开始和停止断面的提示框出现时完成,并尽量用激光测距仪或RTK实测,目测误差在窄河道的流量结果里放得很大。

5. 配置与数据解析常见问题:现象、原因、解决

以下几条来自现场配置和数据解析的高频问题,每一条都按现象、原因、解决的顺序写,遇到类似情况可以直接对照排查。

5.1 底跟踪速度频繁跳变或输出-32768

现象:流速剖面看着正常,但底跟踪速度和由此计算的对底船速经常跳成无效值,流量结果剧烈震荡。

原因:底跟踪判决门限设置过紧是最常见的。BA30要求振幅至少30,BC220要求相关幅度至少220,在深水或浑浊水体中回波衰减厉害,真实底回波达不到门槛时,设备宁可不给底跟踪速度也不能给错值。另一个原因是底部存在移动底,也就是泥沙运移层,底跟踪锁定的是移动的泥沙层而非固定河床。

解决:先降低BC到200左右、BA到25左右,观察底跟踪数据是否恢复稳定。对移动底场景,改用GPS速度作为参考航速,配合外接测深仪读深度,不再依赖底跟踪算船速。多波束底跟踪同时丢失时还要复查BP呯数,1个呯回波信噪比不够就提到2到3个,代价是集合周期变长。

5.2 坐标转换错误导致流速分量符号错乱

现象:流速数据显示正常,但东向、北向分量与航向方向明显矛盾,后处理绘制的矢量场出现整体旋转。

原因:EX命令坐标系选择与实际罗经接入状态不匹配。设备用了EX11xxx地球坐标,但姿态传感器没有正确输入航向数据,设备拿着一个错误的航向基准做旋转。反过来,选了EX10xxx船舶坐标却期望后处理直接拿到东向/北向分量,同样会出现方向错乱。

解决:在WinRiver II配置节点中确认坐标系选项与EX命令一致。如果外部罗经信号不稳定,改回船舶坐标EX10111,把航向修正放到后处理阶段,至少保证原始速度矢量方向是可追踪的。

5.3 ASCII文件头第三行的数字对不上预期

现象:用脚本解析ASCII输出文件,速度数据全部错位,画出的剖面图深度轴完全错误。

原因:脚本假设WS=50cm、WN=50,而实际文件头第三行记录的是WS=25cm、WN=100,深度网格完全错位,而且脚本没有先读文件头就直接从第七行开始按固定列宽解析。

解决:解析流程先处理文件头三行,提取WS、WF、ADCP入水深度、WN等字段后再决定后续bin行如何映射。从那以后我拿到任何一份ASCII文件,都强制先打文件头,确认深度单元尺寸后再写字段索引。

5.4 经纬度全部是30000

现象:PD0回放时导航轨迹画不出来,ASCII输出里经纬度清一色30000。

原因:GPS串口波特率与SF命令设置不一致。SF设置为9600对应值4,但GPS实际输出4800,WinRiver II收不到有效的GGA语句。另外也可能是GGA校验和错误、NMEA语句中夹杂无效空字段,整条语句被丢弃。

解决:核对GPS说明书,设置SF与GPS输出波特率一致:SF=3对应4800,SF=4对应9600,SF=5对应19200,SF=6对应38400,SF=7对应57600,SF=8对应115200,SF=9为自动。在WinRiver II采集界面打开NMEA监视窗口,确认能持续看到以$GPGGA开头的语句后再开始测量。

5.5 浅水急流断面剖面模式选择误区

现象:在浅水急流断面使用默认WM1,底部以上大片数据被旁瓣污染标记为坏,有效剖面非常薄。

原因:模式1是通用剖面模式,发射宽带编码脉冲,近距离分辨率受脉冲长度限制。浅水中旁瓣占比大,近底和近表同时被压缩,盲区加旁瓣几乎吃掉整个可测范围。

解决:水深小于3米的场景换用脉冲相干模式,也就是模式5或模式8,同时把WZ005的模糊速度最小值设为5cm/s。这类模式用窄脉冲获得高分辨率,但测速上限低,高速水流要结合WV参数综合判断,防止出现速度折叠。

6. 一套自检命令流程:配置下发后半小时验证

配置下发完成后如何确认配置真的生效?我的习惯是固定走一遍自检流程,半小时内能定位大部分问题。

第一步,用CR1复位后重发完整命令集,确保设备处于已知状态。第二步,用WinRiver II采集模式观察实时数据30秒:看剖面图速度矢量方向是否与底跟踪方向一致,看底跟踪曲线有没有大量跳变,看导航地图上的轨迹是否平滑。第三步,停船做一组零速测试,船不动时各bin速度应接近0,如果某一层速度恒定偏大,检查该层是否落在虚假目标阈值WA覆盖范围内,或靠近底部旁瓣层。

一组适合中小型河流断面的参考配置组合,适用水深5到25米、600kHz设备、淡水环境:

# 垂直式RDI ADCP典型断面测量配置 CR1 # 复位出厂默认值,进入已知状态 CF11110 # 自动集成循环+二进制输出+串口输出,禁数据记录 ES0 # 淡水盐度设置为0,海水按实际值修改 EX11111 # 地球坐标+倾斜修正+3波束解算+bin映射 TE00000000 # 集合间隔0,连续采集 TP000020 # 呯间隔0.2秒 WA50 # 虚假目标阈值50 WE1500 # 水跟踪误差速度阈值1500mm/s WF50 # 传输后盲区50cm WM1 # 水跟踪模式1 WN50 # 50个深度单元 WS50 # 每个深度单元0.5m WP1 # 每集合1个水跟踪呯 BP1 # 每集合1个底跟踪呯 BA30 # 底检测振幅最小值30 BC220 # 底跟踪相关幅度220 BE100 # 底跟踪误差速度上限100mm/s WV170 # 最大模糊速度170cm/s WZ005 # 模式5/8最小模糊速度5cm/s

这套组合中WN50乘WS50正好覆盖25米垂直范围。现场水深浅于10米时,把WN降到20、WS保持50,减少无效bin的解析量;流速超过1.5m/s时,把TP改到0.1s再观察有无速度折叠。配套检查表如下:

检查项期望结果
底跟踪深度曲线与测深仪读数差距小于5%
零速测试各bin速度绝对值小于5cm/s
剖面速度方向与已知水流方向一致,无正负交替条纹
导航轨迹GPS轨迹连续,无跳变点
ASCII文件头第三行WS=50、WN=50、WF=50、ADCP入水深度正确

从那以后,每次在现场重新配置仪器,我都强制走一遍这套自检流程,检查项全部通过才开始正式断面测量。数据后处理阶段再发现配置问题往往已经错过现场复测的机会,返工成本比在岸边多花半小时高得多。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询