☰
RDI ADCP采集配置与WinRiver II ASCII输出排错指南
2026/11/3 22:13:31 网站建设 项目流程

简介:围绕RDI垂直式与水平式ADCP的命令配置与ASCII数据输出结构,这份DOCX文档面向设备用户、技术维护团队及从事河流与海域水文研究的科研人员,用于首次配置、重新调参、故障排查和长期监测中的数据解析。包内仅1个docx文件,约682KB,篇幅集中于命令解析、输出格式规范与WinRiver II处理流程,便于按章节查阅,已有506人学习。内容具体梳理CR、CF、BA、BC、BP、EX、BX、WM、WN、WS等固定命令与向导命令的用途及参数含义,并解释坐标转换、底跟踪、水跟踪、盲区、呯间隔与深度单元设置;同时说明ASCII输出文件结构、导航数据格式、文件生成步骤和流量基础概念,以及WinRiver II生成流量报告与后处理思路。读者可据此理解参数背后的物理意义,核对设备配置,规范导出和解读剖面数据,从而提升外业设置与内业分析效率。

1. 装 RDI ADCP 采集环境:命令能发不等于数据能落盘

设备上电,串口能回显,WinRiver II 也能看到底跟踪,很多现场到这一步就以为装完了。RDI ADCP 的命令配置和 ASCII 格式输出偏偏是另一道坎:CR1 能恢复出厂,EX10111 能把坐标转成船舶坐标,可一旦 WF50、WN50、WS50 和实际水深不匹配,导出的 ASCII 只剩三行头,集合行里全是坏数据哨兵。做河流流量监测的 A 同学就翻过这个车,现场有流速回显,后处理时速度列全是 -32768。这套环境适合第一次接 RDI ADCP 的开发者,也适合接手别人配置的设备维护人员。装不好不会报错,只会安静地给你一份看起来有数据、实际不能用的文件;协议文档翻得再熟,串口和软件这一层没对齐,后面全是白忙。

2. 环境清单:WinRiver II、串口驱动和供电先对齐

先把“装什么”列清楚,比急着发命令有用。现场最常见的情况是软件装好了、串口线也插了,但设备枚举出来的 COM 口和 WinRiver II 里选的不是同一个,或者驱动被系统更新换掉,软件一打开就卡在连接界面。我一般按“软件—驱动—供电—串口—设备”的顺序过一遍,每一步只验证一件事,出问题能快速定位是哪一层。

环境项常见做法检查点
WinRiver II 软件用设备随附安装包,装默认路径,路径不带中文和空格不插设备也能正常启动
USB 转串口驱动先装软件,再装转接线对应驱动,最后插设备设备管理器里 COM 口无黄色感叹号
供电按设备标称电压和电流留余量,先空载测电压上电后设备自检正常,无反复重启
串口参数8 数据位、无校验、1 停止位、无流控与设备当前波特率一致
采集目录单独建英文目录,和系统盘分开有写入权限,剩余空间足够

2.1 软件与驱动装在哪一层

WinRiver II 软件本身不复杂,复杂的是它和串口驱动、设备固件之间的配合。安装顺序我一般固定为:先装 WinRiver II,再装 USB 转串口驱动,最后插设备。原因很直接,先插设备再装驱动,系统可能先给它挂一个通用驱动,后面再装厂商驱动时出现两个 COM 口,现场很容易选错。安装路径不要带中文、空格和特殊符号,采集目录也不要放在桌面同步盘里,长测时文件会持续增长,同步盘一锁文件,软件写入就会报错。

装完软件先别急着连设备,单独启动一次,看主界面能不能正常打开、配置菜单能不能点开。这一步是排掉软件安装不完整的问题。如果软件启动报缺少运行库,常见做法是装对应版本的运行库,不要从别的机器直接拷 DLL 覆盖,后面会出现更玄学的崩溃。装坏了想救,先拔设备,再从控制面板卸载,清掉安装目录残留的配置文件,重新装一遍;驱动回滚在设备管理器里做,不要用第三方驱动工具批量更新。

在 Linux 采集机上,串口枚举和权限要单独看。下面这组命令用于确认设备节点、内核日志和当前用户组:

# 确认 USB 转串口设备是否枚举出 ttyUSB 节点 ls -l /dev/ttyUSB* 2>/dev/null # 查看内核最近识别日志,确认没有驱动报错 dmesg | tail -n 30 | grep -i -E 'tty|usb|serial' # 查看当前用户是否在串口组里,常见是 dialout,部分发行版是 uucp id -nG

/dev/ttyUSB*是常见 USB 转串口设备节点,不代表所有系统都叫这个名字;有的设备会枚举成/dev/ttyACM*。dmesg里如果看到FTDI、CH34x之类字样后紧跟着ttyUSB0,说明驱动基本挂上了;如果只有 USB 插入记录、没有串口节点,先换线、换口,再查驱动。id -nG看当前用户组,不在串口组里就加进去,重新登录后生效,不要长期用sudo跑采集软件,文件属主会乱。

2.2 串口参数和供电检查

串口参数不对,表现通常不是报错,而是乱码、无回显或者软件一直转圈。ADCP 这边常见是 8N1、无流控,波特率以设备当前设置为准。不要一上来就改设备波特率,先用现有参数连上,能读回参数后再决定要不要改。Windows 下在设备管理器里看 COM 口,WinRiver II 里选同一个口;Linux 下用stty固定参数,避免终端工具把串口改成行缓冲。

# 以 19200 8N1 为例,实际值以设备当前波特率为准 stty -F /dev/ttyUSB0 19200 cs8 -cstopb -parenb -crtscts raw -echo # 发一个回车,看设备是否回显提示符 printf '\r' > /dev/ttyUSB0 # 读取回显,2 秒超时退出,避免终端卡死 timeout 2 cat /dev/ttyUSB0

cs8是 8 数据位,-cstopb是 1 停止位,-parenb是无校验,-crtscts是关闭硬件流控,raw关闭行缓冲和特殊字符处理。timeout 2很重要,串口没配好时cat会一直等,现场容易误以为设备死机。如果回显是乱码,先换几个常见波特率试,不要急着拆设备;如果完全没有回显,检查线序、供电和软件是否占用了同一个串口。注意:WinRiver II 打开串口后,Linux 终端再发命令会冲突,改参数前先关软件。

供电容易被忽略。设备标称 12V 不代表现场电池一直是 12V,船上的发电机、升压模块、长线压降都会让电压在发射瞬间掉下去。常见做法是先用万用表空载测电压,再上设备看自检,最后在 ping 的时候看电压跌落。如果设备反复重启、底跟踪时有时无,先怀疑供电和接地,不要先改 BA、BC 这些阈值。接地不良还会让罗经航向漂,后面 EX、EB 怎么调都不对。

2.3 首次连接的最小命令集

第一次连上设备,不要直接把一长串配置灌进去。先发 CR1 恢复出厂默认,把设备放到已知状态;再发 CF11110 打开串行输出和二进制数据输出;然后读回关键参数确认命令生效。下面这组命令是首次连接的最小集,Windows 下在 WinRiver II 的终端窗口逐条输入,Linux 下用串口发送:

# 首次连接只发最小命令集,确认链路稳定后再上完整配置 # 每条命令以回车结尾,发一条等一条回显,不要整串灌 printf 'CR1\r' > /dev/ttyUSB0 # 恢复出厂默认,先把设备放到已知状态 printf 'CF11110\r' > /dev/ttyUSB0 # 自动集成循环、自动 ping、二进制输出、串行输出、禁用内部记录 printf 'EX10111\r' > /dev/ttyUSB0 # 船舶坐标、使用倾斜、允许三波束、允许 bin mapping # 读回关键参数,确认命令真的生效 printf 'WN?\r' > /dev/ttyUSB0 printf 'WS?\r' > /dev/ttyUSB0 printf 'EX?\r' > /dev/ttyUSB0

CR1 是发送给 ADCP 的第一个命令,作用是把设备置于“已知”状态,现场接手别人的设备时尤其要先发。CF11110 的五个位分别对应自动集成循环、自动 ping 循环、二进制数据输出、启用串行输出和禁用数据记录;最后一位 disable 数据记录很关键,设备内部记录和 WinRiver II 记录同时开,后面查数据来源会打架。EX10111 是船舶坐标、使用倾斜、允许三波束、允许 bin mapping,适合先采一段看底跟踪和水跟踪是否正常;后处理要做地球坐标东/北分量,再改 EX11111。

提示:改配置前先把原参数读回一遍,或者用 CR1 恢复默认后按清单重发。现场改乱参数又没记录,最后只能 CR1 重来,血泪经验。

3. 配置命令落地:从 CR1 到 EX10111 的一组可抄参数

RDI_ADCP 的固定命令不是越多越好,关键是每条都知道为什么取这个值。下面这套参数适合浅水河流监测的起点:50 个深度单元、每个 0.5 米,剖面覆盖 25 米;盲区 50 厘米;淡水盐度 0;底跟踪和水跟踪各 1 个 ping;ping 间隔 0.2 秒。先照这套跑通,再按实际水深、流速和底质调,不要一上来就追求“最优参数”。

3.1 固定命令逐条解释

命令作用取值时看什么
CR1恢复出厂默认接手设备、改乱参数后先发
CF11110流量控制位自动集成、自动 ping、二进制输出、串行输出、禁用内部记录
BA30底跟踪振幅最小值底质弱、深水可适当放宽,太高会丢底
BC220底跟踪相关幅度最小值与 BA 配合,太高会锁不住底
BE100底跟踪误差速度最大值默认 100 mm/s,浅水快流可放宽
BP1每个集合底跟踪 ping 数1 个够用,底质差可加
ES0盐度淡水 0,海水按实际盐度改
EX10111坐标转换船舶坐标、倾斜、三波束、bin mapping
TE00000000集合时间间隔置零表示不按时间强制分集合
TP000020ping 间隔0.2 秒,太短可能互相干扰
WA50虚假目标阈值鱼多、气泡多时看回波再调
WE1500水跟踪误差速度阈值默认 1500 mm/s,太大坏数据多
WF50发射后盲区第一个深度单元离探头 50 cm
WM1水跟踪模式模式 1 是常用剖面模式
WN50深度单元数量与 WS 相乘等于剖面长度
WP1每个集合水跟踪 ping 数1 个起步,流态差可加
WS50深度单元大小0.5 米,浅水可改小
WV170模糊速度最大相对径向速度 170 cm/s
WZ005模式 5/8 最小径向模糊度5 cm/s,按流速调整
&R20底部透视按水深百分比,100 米水深 20% 就是 20 米

下面是一套可以直接抄的发送序列,注意每条命令后等回显再发下一条:

# 一套浅水河流监测的固定命令示例,逐条发送并等回显 printf 'CR1\r' > /dev/ttyUSB0 # 出厂默认 printf 'CF11110\r' > /dev/ttyUSB0 # 流量控制位 printf 'BA30\r' > /dev/ttyUSB0 # 底跟踪振幅最小值 30 个数 printf 'BC220\r' > /dev/ttyUSB0 # 底跟踪相关幅度最小值 220 个数 printf 'BE100\r' > /dev/ttyUSB0 # 底跟踪误差速度最大值 100 mm/s printf 'BP1\r' > /dev/ttyUSB0 # 每个集合 1 个底跟踪 ping printf 'ES0\r' > /dev/ttyUSB0 # 淡水盐度 0 printf 'EX10111\r' > /dev/ttyUSB0 # 船舶坐标 + 倾斜 + 三波束 + bin mapping printf 'TE00000000\r' > /dev/ttyUSB0 # 集合间隔置零 printf 'TP000020\r' > /dev/ttyUSB0 # ping 间隔 0.2 s printf 'WA50\r' > /dev/ttyUSB0 # 虚假目标阈值 50 个数 printf 'WE1500\r' > /dev/ttyUSB0 # 水跟踪误差速度阈值 1500 mm/s printf 'WF50\r' > /dev/ttyUSB0 # 盲区 50 cm printf 'WM1\r' > /dev/ttyUSB0 # 水跟踪模式 1 printf 'WN50\r' > /dev/ttyUSB0 # 50 个深度单元 printf 'WP1\r' > /dev/ttyUSB0 # 每个集合 1 个水跟踪 ping printf 'WS50\r' > /dev/ttyUSB0 # 深度单元 0.5 m printf 'WV170\r' > /dev/ttyUSB0 # 模糊速度 170 cm/s printf 'WZ005\r' > /dev/ttyUSB0 # 模式 5/8 最小径向模糊度 5 cm/s printf '&R20\r' > /dev/ttyUSB0 # 底部透视 20%

这套参数里,WN50 乘 WS50 等于 25 米剖面,水深超过 25 米就要改 WN 或 WS,否则底部数据根本不在剖面里。WF50 把第一个深度单元移离探头 50 厘米,浅水时盲区太大会丢掉近表层,太小又可能被发射脉冲污染,现场要按换能器入水深和脉冲长度取舍。BE100 是底跟踪误差速度最大值,底跟踪数据跳得厉害时先看这个值是不是太严;WE1500 是水跟踪误差速度阈值,流速大、船速快时可以放宽,但坏数据也会变多。WA50 是虚假目标阈值,鱼群多、气泡多的河段不要照抄,先看回波强度再动。

WV170 和 WZ005 是模糊速度相关参数。WV170 设置水流速度和 ADCP 速度之间的最大相对径向速度 170 cm/s,超过这个范围会出现速度模糊;WZ005 把模式 5 和模式 8 的最小径向模糊度设为 5 cm/s,属于更细的调整。现场如果流速明显超过 WV 的覆盖范围,不要只改 WV,先确认 WM 模式和 ping 间隔是否匹配。ES0 是淡水,海水或咸潮河段要按实际盐度改,盐度影响声速,声速错了深度和速度都会有偏差。

3.2 坐标转换 EX 与航向偏差 EB 怎么选

EX 命令是配置里最容易抄错的一位。它用五位标志位控制坐标转换、倾斜、三波束和 bin mapping,默认 EX11111 是地球坐标、使用倾斜、允许三波束、允许 bin mapping。EX00xxx 不做转换,输出径向坐标;EX01xxx 是仪器坐标,X、Y、Z 相对 ADCP;EX10xxx 是船舶坐标,相对船,航向不应用;EX11xxx 是地球坐标,东、北、垂直相对地球,航向应用。第三位为 1 时使用纵摇和横摇,第四位为 1 时允许三波束解算,第五位为 1 时允许 bin mapping。

位串含义适用场景
EX00xxx无转换,径向坐标只看原始波束,不做后处理
EX01xxx仪器坐标设备姿态固定、做原始分析
EX10xxx船舶坐标船载测量,先不依赖罗经
EX11xxx地球坐标后处理要东/北分量
EXxx1xx使用倾斜船体有纵摇横摇时必须开
EXxxx1x允许三波束一个波束失效时仍能解算
EXxxxx1允许 bin mapping深度单元映射,常用

EB 是航向偏差,用来校正 ADCP 航向值和航向参考之间的电/磁偏差。EX10111 用船舶坐标时航向不应用,EB 对东/北分量影响小;改成 EX11111 地球坐标后,航向偏差会直接进入东向、北向速度,EB 就必须校。常见做法是拿 GPS 航迹向和 ADCP 航向做几段比对,取平均偏差填 EB,不要照抄别人的值。罗经附近有磁源时,先挪设备、再校 EB,否则怎么填都漂。

3.3 向导命令 BX/WF/WM/WN/WS/WV/TP/SF 的取舍

WinRiver II 的配置向导会根据最大水深自动设置深度单元大小和数量,BX 是最大底部搜索限制,WF 是盲区,WM 是水跟踪模式,WN 是深度单元数量,WS 是深度单元大小,WV 是模糊速度,TP 是 ping 间隔。向导命令的好处是少算,坏处是手工改完再跑向导会被覆盖。我一般先在向导里填最大水深和预期流速,让软件算一版,再回终端读回 WN、WS、WF、WV,确认没有被改回去。

SF 命令设置设备内部 GPS 系统使用的波特率,3=4800,4=9600,5=19200,6=38400,7=57600,8=115200,9=Auto。这里最容易混的是:SF 改的是内部 GPS 的波特率,不是 ADCP 主串口波特率。现场如果 GPS 数据突然没了,先看 SF 是不是被改成 Auto 后枚举慢,或者 GPS 输出语句没开。常见做法是固定一个双方都支持的波特率,不用 Auto,长测时更稳。

4. ASCII 格式输出:三行头、集合行和坏数据哨兵怎么读

ASCII 输出不是把 PD0 简单转文本。WinRiver II 会把工作集里选定的数据写出来,包括标记为“坏”的数据;子部分和平均集合数据不会反映在 ASCII 输出里,水深列里所有 WN 设置的 bin 数据组都会给,哪怕显示器上做了平均。这个设计对后处理是好事,前提是读文件的人知道哪些值是哨兵、哪些列不能直接平均。

4.1 生成 ASCII 输出的操作路径

全部 ASCII 输出字段固定,适合先完整导出再裁剪;部分 ASCII 输出可以选项目、调顺序、插入分隔符,适合固定报表。操作路径不复杂,但顺序错了会导出空文件:

  1. 启动 WinRiver II,加载测量文件。
  2. 在配置菜单点“全部 ASCII 输出”或“部分 ASCII 输出”。
  3. 选择输出背散射强度数据或回波强度数据。
  4. 点完成,回到主界面。
  5. 回放或重新处理需要的横断面,触发 ASCII 写入。

通用 ASCII 输出在“项目选择”对话框里选字段,按右箭头加入,选“插入分隔符”按右箭头加分隔符,按左箭头从列表移除,配置可以保存成模板。现场我一般先导全部 ASCII,确认头三行和集合行都在,再用模板裁一份给后处理。直接上模板,字段选错时文件看起来有内容,实际关键列全空。

4.2 头三行和集合行字段

每次新建 ASCII 文件,前三行是文件头。第一行、第二行是注释行,可以在横断面上右键“添加记录”写入;第三行是配置摘要,能看到 WS 深度单元层厚、WF 发射测深盲区、ADCP 入水深、WN 深度单元层数、WP 每个集合 ping 数、每个集合的时间。这三行不要跳过,后处理发现 bin 大小不对,先回来看第三行,比翻软件配置快。

集合行从第四行开始,前六行左右是引导、缩放、导航和流量摘要,从第七行开始按 bin 深度写信息。关键字段可以按段记:

字段段含义注意
1-6年、月、日、时、分、秒集合开始时间
7集合时间百分之一秒与 TP、TE 设置有关
8-9ping 集合编号、段中集合数平均或处理后段号会变
10-12纵摇、横摇、罗经修正航向航向含 EB 和磁变
13平均温度用于声速参考
14-16东向、北向、垂直速度单位 cm/s 或 ft/s
17 起底跟踪、GPS、深度、距离参考类型要看清
流量段中层、顶层、底层、岸边流量单位 m³/s 或 ft³/s
bin 行深度、速度表、方向、东/北/垂直、误差、波束、百分比良好每个 bin 一组

字段由一个或多个空格分隔,不要用固定列宽切。坏数据不是短横线或填充值,而是特定哨兵:速度 -32768,流量 2147483647,经纬度 30000。看到这些值要按缺失处理,不能当 0 参与平均。

4.3 坏数据值和校验

后处理最常见的翻车是把 -32768 当速度平均进去,一条剖面看起来流速突然负得离谱。下面这段awk只做一件事:把 ASCII 文件里出现的坏数据哨兵位置打出来,先看它们落在哪些列,再决定怎么过滤:

# 检查坏数据哨兵出现的位置,不要直接求平均 awk '{ for (i = 1; i <= NF; i++) { if ($i == -32768 || $i == 2147483647 || $i == 30000) { print NR, i, $i } } }' survey_ascii.txt | head

NR是行号,i是字段号,head只看前几条,避免文件大时刷屏。速度列的 -32768 要按缺失处理,流量列的 2147483647 不能当真实流量,经纬度 30000 不能当坐标。字段号对应哪一列,要对照协议文档里的 ASCII 字段表和当前导出模板;同一份文件里不同段的列数可能因为空字段变化,先看趋势再写固定过滤规则。

注意:ASCII 文件大小会自动增加以适合至少一个集合,文件不增长不一定是软件坏了,可能还没写满一个集合。

5. 排查:串口能通但 ASCII 输出为空的五个坑

5.1 现象:命令有回显,数据文件不增长

串口终端里发命令有回显,WinRiver II 也

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

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

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

立即咨询