☰
Simulink双离合变速器仿真:换挡过程建模与避坑指南
2026/10/14 1:57:40 网站建设 项目流程

简介:双离合自动变速器(DCT)Simulink仿真模型,面向汽车工程领域工程师、科研人员及高校师生,用于深入理解离合器与变速器协同工作机理、换挡过程及优化控制策略,并可辅助整车动力系统性能评估与教学演示。压缩包共142个文件、约11.37MB,涵盖Simulink模型(slx、mdl)、MATLAB脚本、工况与实验数据(mat)、操作界面与结果图表(fig、png、jpg),以及HTML说明文档和Excel参数表格,目录结构清晰便于检索。已有531人学习浏览。模型重点还原双离合器压力控制、挡位齿轮比与基于状态机的换挡决策逻辑,支持调整摩擦系数、压力曲线等参数,从滑磨损失最小化、换挡时间缩短等目标出发直观对比不同控制策略效果;同时预留新能源整车集成接口,可用于混合动力或纯电驱动下的能量流仿真,为控制策略优化、故障诊断及后续硬件在环测试提供直接参考。

1. 双离合自动变速器仿真模型:为什么最难仿的不是变速箱,而是换挡那一瞬间

接手一个双离合自动变速器仿真模型的需求时,很多人第一反应是「把齿轮、轴、离合器搭起来不就行了」。但真正用 MATLAB/Simulink 跑起来你会发现,静态传动比谁都搭得对,一踩油门升挡就崩:步长骤减、转速飞车、滑磨功积分跳变,模型直接变黑匣子。问题几乎都出在换挡过程中两个离合器交接的那一两百毫秒里——状态连续变化,但控制逻辑是离散事件,Simulink 最怕的就是这种「连续被离散打断」的组合。这篇笔记想讲清楚一件事:怎么用 Simulink 搭一个能用来验证控制策略、标定换挡参数、看冲击度和滑磨功的 DCT 模型,以及哪些地方必须按工程经验去处理,否则仿真结果只能拿来写报告,不能拿去调车。

2. 从物理结构到 Simulink 信号流:DCT 模型该切成几块、怎么选模块

2.1 DCT 为什么能预挂挡:两条动力路径决定了模型架构

双离合变速器和普通手动箱、AT 的本质区别在于它有两条独立的动力传递路径:一路是奇数挡(1、3、5、7),一路是偶数挡(2、4、6、R)。两根输入轴做成同轴嵌套的形式,分别通过各自的离合器与发动机曲轴连接。这样做的核心收益是预挂挡——车在 1 挡跑的时候,2 挡的同步器已经接合,换挡时只需要把一个离合器松开、另一个压紧,动力中断时间能压缩到两三百毫秒以内。

做仿真模型时,这个结构直接决定了模型的信号流走向:发动机输出扭矩进双质量飞轮,然后分成奇、偶两条支路,每条支路各有一个离合器、一根输入轴和若干挡位齿轮副,最后汇合到输出轴、主减速器和差速器。Simulink 模型如果按这个物理拓扑去搭,后期加控制策略、改传动比、做故障注入都会非常顺。反过来,如果图省事用扭矩直接分配的方式去建模,换挡时很难模拟出真实的转速降和扭矩波动——哪怕结果曲线看着对,关键动态失真了,控制策略的鲁棒性验证就无从谈起。

2.2 模型分层与模块选型:物理层、信号层、负载层怎么切

我的习惯是把 DCT 仿真模型切成三层。物理层是被控对象,包括发动机扭矩源、离合器、齿轮传动、整车纵向动力学,这一层尽量贴近真实物理结构,能用 Simscape Driveline 的现成模块就用现成模块;信号层是控制策略,包含换挡决策、离合器压力指令、发动机降扭请求,这一层用 Stateflow 和 MATLAB Function 来写;负载层是整车阻力,包括滚动阻力、风阻和坡度阻力,给一个简单的纵向动力学模型即可。

模块选型上,Simscape Driveline 自带离合器、齿轮、差速器这些物理建模模块,搭起来省力,适合关注扭矩传递细节的场景。但我个人在做控制策略验证时,更常用基础 Simulink 加自定义方程的方式——因为控制策略需要输入输出信号,物理建模模块和信号层之间要做接口转换(Simscape 的物理信号和 Simulink 的普通信号转换器用多了会影响仿真速度,而且要额外处理初值问题)。三种路线的选型对比如下。

建模路线优点缺点适用场景
Simscape Driveline 物理建模模块化程度高,齿轮、离合器直接拖拽信号接口需要转换器,仿真速度偏慢零部件级详细分析、硬件在环
基础 Simulink + 自定义方程响应快、接口自由、可控性强物理结构不直观,需要自己推公式控制策略验证、参数标定
纯粹脚本计算调试最快无法直观观察信号流,难以复用可行性预研、批量离线扫点

如果你目标是验证换挡控制逻辑,我建议用基础 Simulink 加自定义方程的路线;如果目标是研究离合器热负荷或齿轴强度,那就用 Simscape Driveline。两条路线的模型骨架是一致的,区别只是物理层内部怎么实现。

2.3 参数初始化脚本:把台架参数变成 Simulink 可用的 workspace 变量

模型搭好后第一件事不是急着连线,而是把整车和变速器的已知参数整理成一个初始化脚本。没有它,Simulink 里每个参数都是硬编码,标定一轮下来人会被参数搞得崩溃。我一般会建立以下这些基础参数,全部放到脚本里赋给工作区变量,Simulink 模块直接引用变量名。

%% DCT 参数初始化脚本(节选) % 整车参数 veh.mass = 1450; % 整备质量(kg) veh.radius = 0.31; % 车轮滚动半径(m) veh.Cd = 0.29; % 风阻系数 veh.Af = 2.2; % 迎风面积(m^2) % 发动机参数 eng.torque_max = 250; % 最大扭矩(N·m) eng.speed_min = 800; % 怠速转速(rpm) eng.speed_max = 6000; % 最高转速(rpm) % 传动参数:奇数挡和偶数挡各一根输入轴 gb.ratio = [3.91 2.29 1.48 1.19; 3.33 1.96 1.31 1.03]; % 奇偶挡位速比 gb.gear_odd = 1; % 奇数挡轴挂挡状态 gb.gear_even = 0; % 偶数挡轴挂挡状态 % 离合器参数 cl.radius_eff = 0.085; % 摩擦片有效作用半径(m) cl.n_surface = 4; % 摩擦面对数(湿式双离合常见为4~6) cl.area_piston = 0.015; % 压紧活塞面积(m^2) cl.mu_static = 0.13; % 静摩擦系数(湿式摩擦材料) cl.mu_dynamic = 0.11; % 动摩擦系数 cl.p_max = 18; % 最大控制油压(bar)

参数说明:速比矩阵里gb.ratio(1,:)给奇数挡轴,gb.ratio(2,:)给偶数挡轴,这样预挂挡逻辑写起来很直观——目标挡位落在哪根轴上,就去激活对应那根轴的挂挡状态变量。摩擦面对数cl.n_surface对湿式双离合来说一般取 4 或 6,它直接放大离合器能传递的扭矩能力,这个数错了,后续所有换挡品质评价都会失真。油压单位换算要格外留意,Simulink 里统一用 Pa 和 N·m,初始化脚本里最好就换算好,别在模型里再用常数去做单位换算,不然排查问题时很容易漏掉一个 1e5 的量级差异。

3. 双离合器模块怎么建:摩擦模型、滑磨功与状态切换的核心细节

3.1 离合器的 Simulink 表达:扭矩传递方程与静/动摩擦切换

两个离合器是整个 DCT 模型的心脏,也是最容易把仿真搞崩的地方。一个完整的离合器扭矩模型要回答一个问题:当前状态下,离合器主从动盘之间到底传递多大扭矩?

答案分两种情况。当主从动盘存在转速差(滑磨状态)时,传递扭矩由库仑动摩擦决定,大小等于摩擦系数乘以压紧力对应的摩擦力矩能力,方向与转速差相反;当转速差为零(锁止状态)时,传递扭矩由载荷需求决定,但不能超过静摩擦极限。把这个逻辑写成 Simulink 的 MATLAB Function 模块,代码如下:

function T_cl = clutchTorque(p_f, w_diff, T_load, cl) % 离合器传递扭矩计算 % 输入:p_f 控制油压(Pa);w_diff 主从动盘转速差(rad/s) % T_load 负载需求扭矩(N·m);cl 为参数结构体 % 由油压折算压紧力对应的摩擦扭矩能力 T_capacity = cl.mu_dynamic * p_f * cl.area_piston ... * cl.n_surface * cl.radius_eff; % 转速差阈值,小于此值认为进入锁止状态 eps_sync = 1e-3; if abs(w_diff) > eps_sync % 滑磨状态:扭矩大小由摩擦能力和油压决定,方向阻止转速差 T_cl = T_capacity * sign(w_diff); else % 锁止状态:传递负载扭矩,但不得超过静摩擦极限 T_static_max = cl.mu_static / cl.mu_dynamic * T_capacity; T_cl = max(min(T_load, T_static_max), -T_static_max); end

逻辑说明:这段函数的核心思想是「先算能力,再判状态」。T_capacity是由油压折算出来的摩擦扭矩上限,它是后续所有判断的基础。滑磨状态下,sign(w_diff)保证扭矩方向始终阻碍主从动盘相对转动;锁止状态下,传递扭矩被限幅在一个范围内,超过静摩擦极限就会重新打滑——这正好对应真实离合器在载荷突增时的实际表现。

参数说明:eps_sync取 1e-3 rad/s,这个值不能拍脑袋。太小,Simulink 在锁止临界点附近容易触发过零检测,步长被压得很小;太大,锁止状态下会有很明显的滑磨误差,累积起来影响滑磨功数值。另外注意T_static_max和T_capacity之间用mu_static / mu_dynamic的比例去换算,因为T_capacity是按动摩擦系数算出来的,而锁止极限必须用静摩擦系数——这两者不一样,很多模型在这个细节上偷懒了,结果就是仿真里离合器永远打滑。

3.2 滑磨功与热负荷:积分器复位逻辑是成败关键

滑磨功是表征换挡过程中离合器热负荷的核心指标,它的定义是离合器传递扭矩乘以滑磨转速差对时间的积分。Simulink 里实现起来很简单:一个乘积再进积分器。但这里藏着一个非常经典的坑——状态切换时积分器的状态必须正确处理。

升挡过程中,滑磨功在扭矩相和惯性相持续累积,等到新挡位离合器完全锁止、转速差归零时,滑磨功应该停止累积。但如果你直接把转速差信号接进乘法和积分器,会产生两个问题:一是转速差在零附近抖动,导致的积分结果是「累积、暂停、再小段累积、再暂停」这种锯齿状曲线;二是锁止后积分器继续对微小数值噪声积分,滑磨功会缓慢爬升,看起来像离合器还在发热,实际上已经锁止了。

正确做法是对积分器加一个保持或复位逻辑,锁止信号触发时暂停积分。用 Simulink 的积分器模块实现时,把锁止信号接到积分器的StateReset端口(需要确认积分器设置面板里勾选了允许外部复位)。但是直接复位会丢失历史累积量,所以更稳妥的是用 enabled subsystem 包住滑磨功积分器——锁止状态下子系统被禁用,积分器输出保持当前值,不再继续累加。我推荐第二种方式,因为滑磨功本身的数值就是要保留给热模型用的,不能清零。

3.3 离合器压力指令怎么折算:从油压到压紧扭矩

控制策略给出来的是离合器压力指令(一般以 bar 为单位),而物理层需要的是压紧力或摩擦扭矩,这两者要折算清楚。折算公式在前面代码块里已经出现:摩擦扭矩能力 = 动摩擦系数 × 油压 × 活塞面积 × 摩擦面对数 × 有效半径。

这里有个工程细节值得强调:活塞面积乘油压算出来的是活塞对摩擦片的压紧力,但压紧力并不全部转化为摩擦驱动力,因为膜片弹簧或者对偶钢片之间可能存在间隙消除的过程。Simulink 模型里如果忽略这个间隙,换挡初期扭矩响应会过于理想——实际车辆中,压力指令发送后存在液压响应延迟和压力建立过程,不是阶跃就能立刻到位的。

常见的做法是在压力指令后面加一阶惯性环节来模拟液压响应,时间常数大概 10~30 毫秒。这个时间常数别用固定的,我一般会在初始化脚本里定义为pt.hyd_tau,这样标定时可以直接从 workspace 里改而不用打开模型。如果你的目标是做硬件在环或者和台架数据对标,这个延迟一定要建;如果只是做控制策略可行性验证,可以保守一点,把延迟设为零,先跑通控制逻辑再回头细化液压动态。

4. 换挡控制逻辑:从换挡 MAP 到 Stateflow 状态机的落地写法

4.1 换挡 MAP:从油门开度和车速查目标挡位

控制策略的第一步是决定该挂哪个挡。工程上最成熟的做法就是二维查表——以油门开度和车速为输入,输出目标挡位。Simulink 里用 Lookup Table (n-D) 模块就能直接实现。这个 MAP 一般从台架标定或者整车标定中得到,仿真阶段你可以先用一个简化版本。

% 生成换挡 MAP 的示例代码:升挡线(油门开度 0~100%,车速 0~200 km/h) throttle = 0:10:100; % 油门开度采样点 speed = 0:10:200; % 车速采样点 map_upshift = [ones(11,1)*1, ... ones(11,1)*1, ... ones(11,1)*2, ... ones(11,1)*3, ... ones(11,1)*4, ... ones(11,1)*5, ... ones(11,1)*6, ... ones(11,1)*6, ... ones(11,1)*7, ... ones(11,1)*7, ... ones(11,1)*7]; % 简化示意,真实数据从标定获得

逻辑说明:这个 MAP 的横坐标是油门,纵坐标是车速,输出是目标挡位,Simulink 在运行时会做二维线性插值。换挡决策模块每 10 毫秒执行一次(用采样时间 0.01 的触发信号控制),判断目标挡位和当前挡位是否一致,不一致就触发换挡状态机。

参数说明:真实的换挡 MAP 是长这样的,但注意这里不能只查一个升挡 MAP——你做仿真跑一个加速再减速工况时就知道了:用同一个 MAP 升降挡,车速在挡位边界附近时会出现挡位频繁来回切换,也就是挡位抖动。所以实际模型必须做「双线设计」,升挡用一套边界,降挡用另一套边界,中间留出迟滞区间。构建该 MAP 的方式很直观:升挡线和降挡线之间错开 10~15% 的车速窗口,这是仿真模型能否跑出稳定挡位的分水岭。

4.2 状态机四阶段:稳态、扭矩相、惯性相、恢复

一个完整的升挡过程可以拆成四个阶段,这个拆法直接决定了 Stateflow 怎么写。稳态是当前挡位稳定传递扭矩,此时旧离合器锁止、新离合器分离;扭矩相是旧离合器开始卸载扭矩、新离合器逐步建立扭矩的阶段,此时发动机转速不发生大的变化,只是扭矩在两个离合器之间重新分配;惯性相是新离合器开始拉低发动机转速到目标同步转速,此时发动机转速明显下降,同时需要请求发动机降扭以减小冲击;恢复阶段是转速同步、新离合器完全锁止后,恢复发动机扭矩到驾驶员需求。

相邻两个挡位之间的换挡时间一般在 300 毫秒到 800 毫秒之间,其中惯性相消耗的时间占比最大。仿真模型的换挡品质、冲击度、滑磨功这些指标,本质上都是由这四个阶段中扭矩和转速的调度方式决定的。Stateflow 做状态机的好处是:连续变化的物理量在 Simulink 里算,离散的状态切换在 Stateflow 里管,边界条件划分得干净,不会出现信号在混合逻辑里互相打架的情况。

4.3 Stateflow 转移条件与动作写法

下面给一个升挡状态机的简化写法,描述 Stateflow 内部的状态转移逻辑,不粘贴图形界面连线,用文字把转移条件和状态动作写清楚。

状态进入条件状态内动作(每条执行)转移条件
稳态(ST)上电初始化或换挡完成旧离合器压紧;新离合器分离;同步器预挂新挡位目标挡位不等于当前挡位且升挡条件满足,进入扭矩相(TC)
扭矩相(TC)从 ST 触发旧离合器压力以斜坡速率下降;新离合器压力以斜坡速率上升;请求发动机降扭旧离合器扭矩传递能力低于设定阈值(如原扭矩的 10%),进入惯性相(Ph)
惯性相(Ph)TC 完成新离合器继续升压;发动机转速由 PID 控制跟随同步转速转速差小于 50 rpm 且维持超过 30 ms,进入扭矩恢复(TR)
扭矩恢复(TR)Ph 完成新离合器全压紧;发动机扭矩恢复至需求值发动机扭矩恢复完成,回到稳态(ST)

这是一个典型的升挡时序。降挡的时序略有不同:降挡过程中的惯性相要把发动机转速拉高到目标同步转速,所以发动机要请求升扭而不是降扭,状态机本身架构可以复用,改的是扭矩请求方向和 PID 目标值。

Stateflow 内部每个状态的 entry 和 during 动作我会写成这样几行关键指令:换挡开始时计算目标转速,这个目标转速等于输出轴转速乘以目标挡位速比;扭矩相中压力的上升速率用cl.p_rate控制,它是一个 workspace 变量,标定时改这个值就能改变换挡风格——调大了换挡快但冲击度大,调小了换挡慢但离合器滑磨功大,这就是换挡标定中最核心的取舍。

5. 仿真避坑手册:换挡振荡、步长崩溃与滑磨功跳变的 4 个典型问题

5.1 现象一:换挡瞬间仿真步长崩溃、模型卡死

用变步长求解器跑换挡过程时,明明稳态跑得好好的,一到离合器交接转速差过零的时刻,仿真步长断崖式下跌,或者直接提示零交叉失败、仿真终止。这是 DCT 仿真最普遍的翻车现场,十有八九是离合器扭矩模型里的sign(w_diff)造成的。sign函数在转速差过零时输出从 -1 跳到 +1,这个突变触发 Simulink 的过零检测机制,变步长求解器会不断压缩步长去精确捕捉这个跳变点。

解决方法有两个。第一,把sign(w_diff)替换成平滑过渡函数,比如tanh(w_diff / eps_smooth),eps_smooth取 0.5 到 1 rad/s,让扭矩在速度差附近连续过渡而不是阶跃。第二,在转速差很小的时候直接进入锁止判定而不再计算滑磨扭矩,也就是把锁止阈值eps_sync设得比过零检测的敏感区域更大,让状态切换尽早发生。我一般两种一起用,经验是:eps_sync决定锁止判定的边界,tanh的参数决定滑磨→锁止过渡的柔顺度,两个配合好,换挡过程基本不会再崩。

5.2 现象二:锁止后滑磨功突然跳变或缓慢爬升

换挡结束、新挡位离合器锁止后,滑磨功积分器的输出本应该是一条水平线,但实际曲线却还在缓慢上升,甚至锁止瞬间有一个明显的阶跃。原因是锁止后主从动盘转速差在零附近微小抖动,乘法器计算出的滑磨功率不为零,积分器还在持续累积。另一个原因在于滑磨功模型里如果直接用转速差绝对值和扭矩相乘,转速差被平滑化处理后,锁止状态会残留一个很小的滑磨值。

解决方法是给滑磨功计算加一个使能条件:转速差绝对值小于锁止阈值时,滑磨功率输出强制为零。用 Simulink 实现时,我推荐用一个 enabled subsystem 包住「扭矩×转速差」这个乘法逻辑,使能信号来自锁止判定逻辑。注意不要把使能信号和积分器复位信号混为一谈——使能是停止累积,复位是清零历史值。滑磨功要保留历史值给热负荷模型用,所以这里应该用使能逻辑而非复位逻辑。

5.3 现象三:升挡时发动机转速突然冲高

仿真一辆 2 挡升 3 挡的工况,发现升挡过程中发动机转速不但没下降,反而冲高了八九百转甚至超过红线。这个现象是控制逻辑层面的问题:升挡进入惯性相后,新离合器需要把发动机转速从当前值拉低到目标同步转速,但这时如果发动机扭矩没有同步降低,离合器拉动转速的扭矩会被发动机的新增扭矩抵消——转速拉不下来,离合器又一直在半联动状态,摩擦生热、转速飞升、换挡时间无限拉长。

解决思路是发动机降扭请求必须和离合器压力指令同步发出。惯性相开始时,计算同步所需的离合器期望扭矩,同时给发动机控制模块发出降扭请求,降扭速率一般设置在每秒 1000 到 3000 N·m/s 之间——太快会造成动力中断感明显,太慢又会重演转速冲高的现象。Simulink 里实现时,惯性相状态里需要同时输出两个信号:离合器压力指令和发动机扭矩请求。如果用到 PID 控制,可以把目标转速和实际转速的偏差作为输入,PID 输出作为叠加在降扭请求上的修正量。

5.4 现象四:固定步长求解器下的摩擦振动

有人为了追求仿真速度,把求解器设置成固定步长,结果换挡过程中扭矩曲线出现高频振荡。这是离合器摩擦模型和固定步长求解器之间的天然矛盾——摩擦模型的高度非线性要求在滑磨-锁止临界区有足够小的步长来精确积分,而固定步长做不到自适应细化,于是数值上出现极限环振荡。这种现象看着像真实抖动,实际是纯数值伪影,拿来分析换挡品质会得出完全错误的结论。

我的经验是:控制策略快速验证时用固定步长可以接受,但凡是看换挡品质的工况(冲击度、滑磨功、换挡时间),必须切到变步长求解器,ode15s或者ode23t都行,容许误差设为默认的 1e-3 起步,如果曲线上还有毛刺就继续降到 1e-4。血泪教训是不要去挑战求解器配置这种玄学问题,与其花半天调步长,不如直接换变步长求解器把保守的误差容限配上,仿真慢点就慢点,结果可信度远高于步长博弈。

6. 换挡品质验证:冲击度与滑磨功的量化评估技巧

6.1 冲击度怎么算才能当验收指标

换挡品质的量化指标主要有两个:冲击度和滑磨功。冲击度定义为纵向加速度的变化率,单位 m/s³。整车工程中大家默认的换挡品质阈值在 17.64 m/s³ 以内(相当于 1.8g/s 的业内习惯说法),超过这个数,乘员就会明显感觉到顿挫。Simulink 里算冲击度不能直接看加速度信号求导——加速度信号本来就有数值噪声,再求一次时间导数噪声会爆炸,所以仿真模型里要先把加速度信号做平滑滤波。

% 简易冲击度评估逻辑(MATLAB Function 实现) function jerk = computeJerk(a_raw, tau) % 输入 a_raw 为纵向加速度(m/s^2),来自驱动扭矩除以整车质量 % tau 为滤波时间常数,建议取 0.05~0.1 秒 % 一阶低通滤波后再做数值微分,避免高频噪声放大 persistent a_filtered; if isempty(a_filtered) a_filtered = a_raw; end Ts = 1; % 此处 Ts 由外部传入,实际代码中应为上一步的采样步长 a_filtered = a_filtered + (a_raw - a_filtered) * (Ts / (tau + Ts)); jerk = (a_filtered - a_filtered_prev) / Ts; % 近似微分 a_filtered_prev = a_filtered;

参数说明:滤波时间常数tau很关键,取太小滤波效果差,冲击度数值会毛刺满天飞;取太大又会平滑掉真实的冲击峰值,导致本应该不合格的换挡被「磨皮」成合格。我一般取 0.05 秒,它对应约 20Hz 的截止频率,够保留人体能感知的冲击频段。最终的冲击度数值要看的是最大值而不是平均值——评价时把整个换挡过程的jerk绝对值求最大和 RMS,两者分别对应主观冲击感和平均水平。

6.2 我的验证顺序与收尾习惯

模型跑出来的结果怎么确认是可信的?我的做法是分三层去看:第一层是稳态校验,固定油门固定挡位,看车速、发动机转速和传动比是否和公式计算一致,这个不过关后面全白搭;第二层是换挡时间校验,和台架数据对比,看扭矩相和惯性相的时间占比是否在同一量级,如果差太远就回去检查离合器压力建立延迟和降扭速率;第三层才是品质指标,把冲击度和滑磨功拉出来做量化评价——通过第一层说明模型没建错,通过第二层说明动态参数没标错,通过第三层才谈得上优化标定。

最后说个自己的习惯:每次改完离合器压力曲线,我都会先跑一遍低速小油门升挡,再看全油门全工况序列,顺序不能反。小工况跑通了说明模型本体没问题,直接上大工况翻车时排查起来才不会一头雾水。这套 Simulink 模型验证方案也是踩了无数次坑换来的,每次打开别人的 DCT 模型,先看求解器配置和滑磨功积分器的使能逻辑,这两处不出问题,模型基本就成功了一半。希望帮到你。

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

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

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

立即咨询