☰
RJ45 Console调试口详解:UART与RS-232电平转换原理及实操
2026/10/6 14:43:27 网站建设 项目流程

1. 那个长得像网口的调试口,到底藏着什么门道

很多刚接触网络设备、工控板卡或者嵌入式开发板的朋友,第一次拿到设备时都会犯一个特别经典的错误:看到面板上有个RJ45接口,顺手就拿一根网线插上去,然后对着电脑一顿操作,发现怎么都连不上,甚至开始怀疑是不是设备坏了、网线有问题、驱动没装对。实际上,那个口压根就不是给你插网线上网用的,它是Console调试口,一个披着RJ45外衣的串口。

我自己刚入行那会儿也踩过这个坑。当时手里拿着一台设备,面板上两个RJ45口挨在一起,一个标着GE0,一个标着CON,我理所当然地认为两个都是网口,结果折腾了整整一个下午,换了三根网线、重装了两次驱动,最后才被前辈一句话点醒:CON那个口是Console,得用专门的Console线,里面跑的是RS-232电平的串行信号,不是以太网差分信号。这件事之后,我养成了一个习惯——拿到任何设备先看接口丝印,再动手接线。

这篇文章就是想把这件事彻底讲清楚。我会从RJ45这个物理接口本身说起,解释为什么同一个外形可以承载完全不同的信号;然后深入Console口背后的UART通信原理,把UART到RS-232的电平转换电路掰开揉碎讲一遍;最后给出可以直接照着做的实操步骤和排查清单。不管你是刚入行的网络运维、嵌入式软件工程师,还是偶尔需要调试设备的硬件爱好者,这篇内容都能帮你少走弯路。

核心关键词先摆出来:RJ45、Console、UART、RS-232、电平转换。这几个词贯穿全文,理解了它们之间的关系,你就再也不会把Console口当网口用了。

2. 先搞清楚RJ45、Console、UART、RS-232到底是什么关系

2.1 RJ45只是一个物理外形,不代表任何协议

RJ45的全称是Registered Jack 45,它本质上就是一个8P8C的连接器标准——8个位置、8个触点。你家里路由器上插网线的口是RJ45,设备上的Console口也是RJ45,甚至有些语音配线架、工业总线接口也用RJ45。它只规定了插头长什么样、有几个针脚、针脚怎么排列,至于这8根线里跑的是什么信号,完全取决于设备厂商怎么定义。

这就好比一个USB Type-C接口,它可以跑USB 2.0、USB 3.0、Thunderbolt、DisplayPort,甚至纯供电。你不能看到Type-C就默认它是USB 3.0。RJ45也是一样的道理。

以太网用的RJ45,针脚定义是固定的:1、2针负责发送差分对,3、6针负责接收差分对,4、5、7、8针在百兆环境下闲置,在千兆环境下双向复用。信号是差分信号,幅度大约±1V左右,速率从10Mbps到10Gbps不等。

而Console口用的RJ45,针脚定义完全是厂商自定义的。常见的做法是只用到其中3到4根针脚:一根发送、一根接收、一根接地,有时候还有一根供电或者信号地。信号是单端的UART串行信号,经过电平转换后变成RS-232电平,速率通常只有9600bps或者115200bps。

注意:不同厂商的Console口RJ45针脚定义可能完全不同。思科、华为、中兴、锐捷各有各的线序,混用轻则连不上,重则可能损坏设备。这不是危言耸听,我见过有人拿思科的Console线去插华为设备,虽然大多数情况下只是不通,但个别设备确实存在电平不匹配导致接口芯片发热的情况。

2.2 Console口为什么存在,它解决什么问题

Console口的核心价值在于带外管理。什么叫带外?就是不走业务网络的那条路。当设备还没配置IP地址、网络还没通、甚至操作系统还没完全启动的时候,你通过Console口就能连上去,看到设备的启动日志,进入命令行界面进行初始配置。

想象一下这个场景:你买了一台全新的交换机,它出厂时没有任何IP配置,你没法通过SSH或者Web界面登录。这时候唯一的办法就是用Console线把电脑和设备连起来,通过串口终端软件登录进去,给它配一个管理IP,之后才能走网络管理。再比如设备配置错了导致网络不通,你也没法远程登录,只能插Console线现场救急。

所以Console口是网络工程师的“救命口”,也是嵌入式开发者的“眼睛”。设备启动过程中打印的每一行日志,都是通过UART送到Console口,再经过电平转换送到你的电脑上。

2.3 UART是芯片说的话,RS-232是线路上的话

这里是最容易混淆的地方。UART和RS-232不是一回事,它们处于不同的层次。

UART(Universal Asynchronous Receiver/Transmitter)是芯片内部的一个外设模块,负责把并行数据转成串行数据发送出去,或者把接收到的串行数据转成并行数据。它定义了数据帧格式:起始位、数据位、校验位、停止位,以及波特率。UART输出的信号是TTL电平,通常是0V表示逻辑0,3.3V或5V表示逻辑1。

RS-232是一个物理层标准,它规定了线路上的电平范围:负电压表示逻辑1(通常-3V到-15V),正电压表示逻辑0(通常+3V到+15V)。它还规定了信号速率、连接器类型、电缆长度等。RS-232的电平范围大,抗干扰能力强,适合较长距离传输。

所以从芯片到外部接口,信号要经过一次电平转换:UART的TTL电平转换成RS-232电平,接收方向则反过来。这个转换电路就是本文要重点拆解的部分。

对比项UART(TTL)RS-232
逻辑1电平3.3V或5V-3V到-15V
逻辑0电平0V+3V到+15V
信号类型单端单端
典型距离板内几十厘米15米以内
常见芯片MCU内置MAX232、SP3232
接口外形排针、焊盘DB9、RJ45

理解了这张表,你就明白了为什么不能把UART直接接到RS-232接口上——电平不匹配,轻则不通信,重则烧芯片。

3. UART转RS-232电平转换电路,到底怎么工作的

3.1 为什么需要电平转换,直接连不行吗

先说结论:不行,而且很可能烧掉芯片。

UART的TTL电平是0V到3.3V(或5V),RS-232的电平是负电压到正电压。如果你把RS-232的发送线直接接到MCU的UART接收引脚上,那个负电压会直接灌进芯片引脚,超过芯片的绝对最大额定值,结果就是引脚击穿、芯片报废。

反过来,UART的3.3V输出接到RS-232接收端,虽然不会立刻烧毁对方,但RS-232接收器通常需要±3V以上的摆幅才能可靠识别,3.3V单端信号可能处于不确定区域,导致通信不稳定或者完全不通。

所以电平转换电路的作用就两个:升压/反相(发送方向,TTL转RS-232)和降压/反相(接收方向,RS-232转TTL)。注意“反相”这个词,因为TTL的逻辑1是高电平,RS-232的逻辑1是负电压,两者是反相关系。

3.2 经典方案:专用电平转换芯片

最常见的方案是使用专用芯片,比如MAX232、SP3232、MAX3232这些。以MAX232为例,它内部集成了电荷泵,可以把5V单电源转换成RS-232需要的±10V左右电压,然后通过内部的发送器和接收器完成电平和逻辑转换。

MAX232的外围电路很标准:4个1μF(或0.1μF,取决于具体型号)的电容接在电荷泵引脚上,用来储能和倍压。两个发送器把TTL输入转成RS-232输出,两个接收器把RS-232输入转成TTL输出。你只需要把MCU的TX接到MAX232的T1IN,把MAX232的T1OUT接到DB9或RJ45的对应针脚,接收方向反过来接就行。

这个方案的优点是简单可靠、外围元件少、成本低,缺点是芯片需要5V供电(MAX3232可以3.3V供电),而且电荷泵会产生一定的纹波和噪声。不过在Console口这种低速场景下,这些都不是问题。

3.3 低成本方案:三极管/MOS管电平转换

如果你拆开一些便宜的Console线或者开发板,可能会发现里面没有专用芯片,而是用几个三极管或者MOS管搭的转换电路。这种方案成本极低,但设计上要小心。

三极管方案的典型电路是这样的:用一个NPN三极管,基极通过电阻接TTL侧,发射极接地,集电极通过上拉电阻接RS-232侧的负电源(或者通过其他方式产生负压)。当TTL输出高电平时,三极管导通,集电极被拉低;当TTL输出低电平时,三极管截止,集电极被上拉电阻拉高。这样就实现了反相和电平转换。

但三极管方案有个问题:它需要RS-232侧的负电源。有些设计会从RS-232的发送线偷电,或者用额外的电荷泵产生负压。如果负压不稳,通信就会出错。

MOS管方案更常见一些,尤其是双向电平转换。用一个N沟道MOS管,源极接低压侧,漏极接高压侧,栅极接低压侧电源,再加两个上拉电阻。当低压侧输出低电平时,MOS管导通,把高压侧也拉低;当低压侧输出高电平时,MOS管截止,高压侧被上拉电阻拉高。这个电路是双向的,而且不需要负电源,但它的“高压侧”通常只能到5V或3.3V,不能直接产生RS-232的负电压。

所以严格来说,MOS管方案做的是TTL到TTL或者低压到高压的转换,不是真正的RS-232转换。真正的RS-232转换还是需要负压。有些Console线之所以能用MOS管方案,是因为它把RS-232侧的电平要求降低了,或者电脑端的串口芯片容忍度比较高。

提示:如果你要自己设计电路,建议老老实实用MAX3232这类专用芯片,省心省力。自己搭三极管或MOS管电路,调试起来很痛苦,尤其是负压部分。

3.4 关键参数计算:电容选多大、电阻怎么配

以MAX232为例,数据手册上推荐电荷泵电容是1μF,但很多设计用0.1μF也能工作。区别在于:电容越大,电荷泵的输出电压越稳定,纹波越小,但启动时间越长。如果你对通信稳定性要求高,用1μF;如果空间紧张,0.1μF也可以,但要在PCB布局上尽量靠近芯片引脚。

上拉电阻的选择也有讲究。RS-232接收端通常有内部下拉或上拉,但如果你自己加外部电阻,一般选10kΩ到100kΩ。电阻太小会增加功耗,太大则抗干扰能力下降。在Console口这种低速、短距离场景下,10kΩ到47kΩ都是常见选择。

波特率方面,Console口最常用的是9600bps,数据位8,停止位1,无校验(简称9600-8-N-1)。有些设备用115200bps。波特率越高,对电平转换电路的速度要求越高。MAX232在115200bps下完全没问题,但如果你用低速光耦或者劣质三极管,可能会因为上升沿太慢导致误码。

4. 实操:从零搭建一个Console调试环境

4.1 硬件准备:Console线怎么选、怎么接

市面上常见的Console线有三种:

第一种是USB转Console线,一头是USB-A或USB-C,另一头是RJ45。线内部集成了USB转UART芯片(比如FT232、CH340、CP2102)和电平转换电路。这种线最方便,插上电脑就能用,不需要电脑有原生串口。

第二种是DB9转RJ45的Console线,一头是DB9母头,另一头是RJ45。这种线需要电脑有原生串口,或者配合USB转DB9的转换器使用。线内部可能只有电平转换,也可能只是直通线,取决于设备厂商的定义。

第三种是成品Console线,厂商原厂配的,线序和电平都是匹配的,最省心但价格贵。

我个人的建议是:如果你经常调试不同品牌的设备,买一根USB转Console线,再配几个不同品牌的转接头。因为不同厂商的RJ45针脚定义不同,转接头可以帮你适配。比如思科的Console线序和华为的不一样,用转接头比换整根线方便。

接线的时候注意:Console线插电脑的那头是USB,插设备的那头是RJ45。不要用网线代替Console线,哪怕接口能插进去。网线是直通或者交叉的差分线,Console线是单端串口线,内部线序完全不同。

4.2 驱动安装:FT232、CH340、CP2102常见问题

USB转Console线内部用的芯片主要有三种:FTDI的FT232系列、沁恒的CH340系列、硅 labs的CP2102系列。不同芯片需要不同的驱动。

FT232的驱动在FTDI官网可以下载,安装后设备管理器里会出现“USB Serial Port”。CH340的驱动在国内很常见,很多开发板都用它,安装后会出现“USB-SERIAL CH340”。CP2102的驱动在Silicon Labs官网下载,安装后会出现“Silicon Labs CP210x USB to UART Bridge”。

常见问题:

  • 设备管理器里出现黄色感叹号:驱动没装好或者装错了版本。卸载后重新安装,注意区分32位和64位系统。
  • 线插上后电脑没反应:可能是线坏了,或者USB口供电不足。换一个USB口试试,最好插在电脑主板自带的USB口上,不要用扩展坞。
  • 能识别但连不上设备:检查线序是否匹配,波特率是否正确,流控是否关闭。

注意:有些便宜的Console线用的是CH340芯片,但驱动版本很老,在Win10/Win11上可能不稳定。建议去沁恒官网下载最新驱动。如果实在搞不定,换一根FT232芯片的线,稳定性会好很多。

4.3 终端软件配置:SecureCRT、PuTTY、Minicom怎么设

Windows下常用的终端软件有SecureCRT、PuTTY、Xshell等。Linux和macOS下常用Minicom、Screen、Picocom。

以PuTTY为例,配置步骤如下:

  1. 打开PuTTY,在“Connection type”里选择“Serial”。
  2. 在“Serial line”里填入COM口号,比如COM3。COM口号可以在设备管理器里看到。
  3. 在“Speed”里填入波特率,通常是9600或115200。
  4. 点击“Open”,如果一切正常,你会看到设备的启动日志或者命令行提示符。

SecureCRT的配置类似:新建一个Serial连接,选择正确的COM口和波特率,数据位8,停止位1,无校验,无流控。

Linux下用Minicom:

sudo minicom -s

进入配置界面,选择“Serial port setup”,设置设备为/dev/ttyUSB0,波特率9600,数据位8,停止位1,无校验,无流控。保存后退出配置,按回车进入终端。

macOS下用Screen:

screen /dev/tty.usbserial-XXXX 9600

其中XXXX是你的USB转串口设备的标识,可以在/dev目录下看到。

提示:如果你连上去后看到乱码,99%是波特率不对。试试115200、38400、19200这几个常见值。如果还是乱码,检查数据位和停止位设置。

4.4 实际连接测试:从插线到看到命令行

假设你手里有一台华为交换机,一根USB转Console线,一台Windows电脑。

第一步,把Console线的RJ45头插到交换机的Console口,USB头插到电脑。

第二步,打开设备管理器,确认出现了“USB Serial Port (COMx)”,记下COM口号。

第三步,打开PuTTY,选择Serial,填入COM口号,波特率9600,点击Open。

第四步,按几下回车键。如果连接正常,你应该能看到命令行提示符,比如<Huawei>或者[Huawei]。

第五步,如果没反应,检查线序是否匹配。华为的Console口线序和思科不同,如果你用的是思科的线,可能需要换一个转接头。

第六步,如果看到乱码,调整波特率。华为设备默认9600,但有些设备可能被改成115200。

第七步,如果能进命令行但无法输入,检查流控是否关闭。有些终端软件默认开启硬件流控,会导致输入无响应。

5. 常见问题与排查技巧实录

5.1 连不上、乱码、无回显,一张表搞定排查

现象可能原因排查方法解决方法
设备管理器无COM口驱动未安装/线坏换USB口、换电脑测试安装对应驱动或换线
有COM口但连不上线序不匹配查设备手册确认针脚定义换对应品牌Console线或转接头
连接后无任何显示波特率错误/线序错尝试常见波特率改为9600或115200
显示乱码波特率不匹配逐个尝试波特率匹配设备实际波特率
能显示但无法输入流控开启检查终端软件流控设置关闭硬件流控和软件流控
输入有回显但命令不执行未进入正确模式查看提示符输入enable或system-view
连接不稳定、时断时续线材质量差/干扰换线、远离干扰源使用屏蔽线或原厂线
电脑蓝屏或重启驱动冲突/USB供电异常卸载最近驱动更换FT232芯片的线

这张表是我自己踩坑总结出来的,基本上覆盖了90%的Console连接问题。剩下的10%可能是设备本身故障,比如Console口芯片烧了,那就只能送修了。

5.2 那些年我踩过的Console坑

第一个坑:用网线当Console线。刚入行的时候,手边没有Console线,看到RJ45口就插了根网线,结果当然连不上。后来才知道,网线的线序和Console线完全不同,而且网线里跑的是差分信号,Console口需要的是单端串口信号。这件事教育我:接口外形一样不代表信号一样。

第二个坑:波特率设错。有一次调试一台老设备,默认波特率是38400,我按9600连了半天都是乱码,还以为设备坏了。后来查手册才发现波特率不对。从那以后,我养成了先查手册再连线的习惯。

第三个坑:流控没关。SecureCRT默认可能开启RTS/CTS流控,导致能收到设备输出但无法输入。这个问题困扰了我很久,直到有一次无意中关掉流控,一切正常了。现在我的终端软件配置里,流控永远是关闭的。

第四个坑:线序不匹配。思科的Console线序是1-8对应RTS、DTR、TXD、GND、GND、RXD、DSR、CTS,华为的是1-8对应RTS、DTR、TXD、GND、GND、RXD、DSR、CTS——看起来一样?实际上有些厂商的针脚定义是反的。我遇到过一根线插思科能用,插华为就不行,换了个转接头就好了。

第五个坑:USB转串口芯片兼容性。CH340芯片便宜,但在某些Windows版本上驱动不稳定,表现为时好时坏。FT232芯片贵一点,但稳定性好很多。如果你经常需要调试设备,建议买FT232芯片的Console线,省心。

5.3 进阶技巧:如何判断Console口是否损坏

如果你怀疑设备的Console口坏了,可以用以下方法判断:

首先,用万用表测量Console口的针脚电压。正常的RS-232发送脚在空闲时应该是负电压(大约-5V到-10V),接收脚可能有微弱的上拉或下拉。如果发送脚电压为0V或者正电压,可能芯片坏了。

其次,用示波器观察波形。当设备启动时,Console口会输出大量日志,示波器应该能看到明显的RS-232电平跳变。如果没有波形,说明设备没有发送数据,可能是设备没启动或者Console口芯片故障。

最后,换一台已知正常的设备测试你的Console线。如果线在别的设备上能用,说明线没问题,问题在设备上。

注意:测量Console口电压时,小心不要短路针脚,否则可能损坏设备。如果你没有把握,建议找专业维修人员处理。

6. 自己动手做一个USB转Console调试器

6.1 选型:FT232RL还是CH340G

如果你想自己做一个USB转Console调试器,核心是选一颗USB转UART芯片。常见的选择有FT232RL和CH340G。

FT232RL是FTDI的经典芯片,稳定性好,驱动成熟,支持3.3V和5V电平,外围元件少。缺点是价格贵,一片要十几块钱。CH340G是沁恒的芯片,价格便宜,一片只要两三块钱,但驱动在某些系统上需要手动安装,稳定性略逊一筹。

如果你只是自己做一两个玩玩,建议用FT232RL,省心。如果你要批量做,CH340G成本优势明显。

除了USB转UART芯片,你还需要一颗RS-232电平转换芯片,比如MAX3232。MAX3232支持3.3V供电,和FT232RL的3.3V输出直接对接,不需要额外的电平转换。

6.2 电路连接:从USB到RJ45的完整走线

整个电路的信号流向是这样的:

USB接口的D+和D-接到FT232RL的USBDP和USBDM引脚。FT232RL的TXD和RXD是UART信号,TXD接到MAX3232的T1IN,RXD接到MAX3232的R1OUT。MAX3232的T1OUT是RS-232发送信号,接到RJ45的发送针脚;R1IN是RS-232接收信号,接到RJ45的接收针脚。

电源部分:USB的5V接到FT232RL的VCC和MAX3232的VCC,同时接上滤波电容。MAX3232的电荷泵电容按数据手册接好,通常是4个0.1μF或1μF的电容。

RJ45的针脚定义要根据你目标设备的Console口定义来定。以思科为例,Console口用到针脚3(TXD)、6(RXD)、4和5(GND)。你需要把MAX3232的T1OUT接到针脚3,R1IN接到针脚6,GND接到针脚4和5。

提示:如果你不确定目标设备的针脚定义,可以先做一根通用的线,把TXD、RXD、GND都引出来,然后用杜邦线试接。确认能通信后再固定线序。

6.3 焊接与调试:新手容易翻车的地方

焊接的时候有几个地方容易出问题:

第一,MAX3232的电荷泵电容极性。有些电容是有极性的,比如钽电容,接反了会爆。如果用陶瓷电容,没有极性,但要注意耐压值,至少16V。

第二,FT232RL的晶振。FT232RL需要外部晶振,通常是12MHz。晶振要尽量靠近芯片,负载电容按晶振规格选,一般是22pF。如果晶振不起振,芯片无法工作。

第三,USB差分线的走线。D+和D-要尽量等长、靠近,避免干扰。如果走线太长或者不对称,USB枚举可能失败。

第四,RJ45的压接。如果你用成品网线剪断来接线,注意线色和针脚的对应关系。T568B标准的线序是橙白、橙、绿白、蓝、蓝白、绿、棕白、棕。但Console口只用其中几根,不要接错。

调试的时候,先不接设备,把调试器插到电脑上,看设备管理器能否识别。如果能识别,用万用表测量MAX3232的T1OUT引脚,空闲时应该是负电压。如果电压不对,检查电荷泵电容和供电。

然后接上设备,打开终端软件,按回车看是否有回显。如果没有,检查线序和波特率。

6.4 成本与性能对比:自制 vs 成品

对比项自制调试器成品Console线
成本20-40元30-100元
时间2-4小时即买即用
稳定性取决于焊接和设计通常较好
灵活性可自定义线序固定线序
适用场景学习、批量、特殊需求日常调试

自制的好处是你可以完全掌控线序,适配不同品牌的设备。而且焊接调试的过程本身也是学习。缺点是如果你焊接技术不过关,可能调试半天都搞不定。

成品线的好处是省心,插上就能用。缺点是线序固定,遇到不匹配的设备还得买转接头。

我个人的建议是:如果你只是偶尔调试设备,买成品线。如果你经常调试不同品牌设备,或者想深入学习UART和RS-232,自己做一个。我自己就做了三根,分别适配思科、华为和一台工控设备,用起来很顺手。

7. 几个容易忽略的细节和最后的小经验

7.1 Console口和AUX口的区别

有些设备除了Console口,还有一个AUX口,外形也是RJ45。AUX口通常是用来接调制解调器做远程拨号备份的,信号定义和Console口类似,但用途不同。AUX口也可以作为Console口的备份,当Console口坏了的时候,可以通过AUX口登录。不过AUX口的线序可能和Console口不同,用之前要查手册。

7.2 如何通过Console口恢复密码

很多设备支持通过Console口恢复密码。以华为交换机为例,重启设备,在启动过程中按Ctrl+B进入BootROM菜单,选择清除密码选项,然后重启。不同设备的操作步骤不同,但原理都是通过Console口在启动早期介入,绕过配置文件中的密码验证。

这个操作有风险,可能会导致配置丢失,所以做之前一定要备份配置。而且有些设备清除密码后会恢复出厂设置,所有配置都没了。我建议只在确实忘记密码且没有其他办法的时候才这么做。

7.3 关于Console口的一些冷知识

Console口的RS-232电平虽然标准规定是±3V到±15V,但实际设备中,很多芯片的输出电压只有±5V左右,甚至更低。这是因为现代设备的供电电压越来越低,电荷泵的倍压能力有限。不过只要在接收端的识别范围内,通信就没问题。

另外,Console口的传输距离虽然标称15米,但实际上在9600bps的低速下,用质量好的线材,传几十米也没问题。我试过用一根20米的屏蔽线连接Console口,通信依然稳定。但如果你用115200bps,距离就要缩短,否则误码率会上升。

还有一点,有些设备的Console口支持硬件流控,但默认是关闭的。如果你发现大数据量传输时丢数据,可以尝试开启流控。不过大多数Console场景下,数据量很小,流控不是必须的。

7.4 最后分享一个实用小技巧

如果你经常需要调试不同品牌的设备,建议做一个Console线序速查表,贴在工具包里。表里列出常见品牌的RJ45针脚定义,比如思科、华为、中兴、锐捷、H3C。这样每次接线前看一眼,就不会搞错了。

另外,买Console线的时候,尽量选带指示灯的款式。有些线在TXD和RXD上有LED灯,发送和接收数据时会闪烁。这个功能在排查故障时非常有用,你可以直观地看到数据有没有发出去、有没有收回来。没有指示灯的线,你只能靠终端软件的输出判断,效率低很多。

我自己用的是一根FT232芯片的USB转Console线,带TXD/RXD指示灯,配了思科、华为、中兴三个转接头。这套组合跟了我五年,调试过上百台设备,从来没掉过链子。希望这篇内容能帮你搞清楚Console口和网口的区别,下次看到RJ45口的时候,先看丝印,再动手。

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

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

立即咨询