智能楼宇物联网关的2×2 WiFi 6+蓝牙组合方案实战

智能楼宇物联网关的2×2 WiFi 6+蓝牙组合方案实战 去年做一款智能楼宇的物联网关时我纠结最久的不是边缘计算框架也不是容器编排而是无线连接这一层。客户的要求很直接网关要同时扛住视频流、批量固件下发、几十个BLE传感器的低功耗接入还得在强干扰环境下保持稳定。一圈调研下来方向就收拢到标题这个组合上——2×2 WiFi 6 Bluetooth专门为IoT场景设计的连接底座。这篇文章把从选型、硬件设计、软件适配到实测排障的完整过程整理出来希望对正在评估同类方案的工程师有参考价值。1. 项目到底在解决什么问题1.1 物联网连接的两个核心矛盾做IoT设备的人都知道无线连接从来不是“能连上就行”那么简单。设备和网关之间同时存在带宽、功耗、并发连接数、时延这几个互相打架的指标。一个典型的智能楼宇场景里网关可能同时要服务好几类流量安防摄像头需要实时视频门锁和传感器只需要每隔几秒上报一只几字节的数据包控制面板和人机交互设备希望响应低延迟而云端若要做批量固件升级又要求短时间灌进去几十MB的数据。这些需求用单流WiFi 4或普通的BLE根本没法同时满足。过去我见过很多项目在这里踩坑。比如有的智能网关只用BLE Mesh做全屋覆盖数据采集倒是低功耗但当需要升级固件或者回传日志时BLE的速率就成了瓶颈几十KB的包传半天整个链路都堵住。反过来如果只做WiFi传感器节点的静态功耗又压不下去电池设备几个月就得换一次。还有更典型的在海鲜市场级别的设备密度下每网关几百个终端老一代WiFi协议里那种单用户、单信道的OFDM机制会让碰撞和重传指数级上升曾经就出现过海量数据采集时整个网络吞吐归零的“P0级现场事故”。所以这个项目的核心不是把WiFi和蓝牙两个模块拼在一块而是要让它们形成互补WiFi 6负责高吞吐、低延迟的关键数据和批量操作蓝牙负责极低功耗的传感器接入和广播定位。合理设计的情况下它可以同时解决“高速”和“低功耗”这两个看起来对立的需求。1.2 为什么必须是2×2而不是1×1或4×4这个方案最容易被人追问的问题就是为什么一定要2×21×1 WiFi 6更省电、更便宜4×4速率更高但成本和体积都高2×2是不是个折中方案我的回答是它不是折中而是IoT网关这类设备的合理平衡点。1×1单空间流的WiFi 680MHz频宽下PHY层最高速率大约是600Mbps看起来不低但在多设备并发场景里单流意味着发射链路的可靠性和多用户调度能力都比较弱。尤其当网关既要当AP接下游设备又要以STA模式连上行路由器时1×1容易出现回传瓶颈天线分集也做不了个别方向稍微遮挡一点链路余量就崩了。4×4在IoT端侧则明显“用力过猛”。多两根天线不只是成本问题模组面积、PCB布局、功耗、散热、天线隔离度都会成倍变麻烦。很多网关的金属外壳尺寸限得很死放不下足够隔离的四根天线。即便是2×2两根WiFi天线加一根蓝牙天线的布局已经需要仔细推敲了。所以从产品形态、BOM成本、实测性能三个维度评估2×2是当前面向中高端IoT网关最现实的选择。对了2×2的好处不只体现在速率表上。它天然支持下行MU-MIMO里的双空间流分配在某些高密度场景中可以同时服务两个1×1终端这比纯单流的调度效率高出一截。这一点对“多设备同时上报”的场景格外有意义。1.3 蓝牙在方案里的位置不可替代单独说蓝牙很多人觉得它太慢不适合IoT的主干连接。但如果把方案当作一个整体来看蓝牙恰好弥补了WiFi 6在低功耗和广播能力上的短板。以智能楼宇为例温湿度传感器、门磁、人体红外这类设备真正用来传数据的时间每1秒里可能只占几十毫秒剩下的时间都在休眠。BLE 5.x的广播模式让这些节点可以在极低功耗下维持存在感网关用扫描方式收集数据即可。BLE Mesh则适合做大面积覆盖的灯控、梯控这类中等规模网络节点之间的中继和自组网能力比“所有设备都连WiFi”要省心得多。再加上蓝牙的AoA/AoD室内定位能力还可以帮网关实现资产追踪、人员定位等功能。比如物流仓储场景里每隔一定距离部署一个蓝牙网关标签通过BLE把GPS或相对位置信息传上来后台就能算出轨迹这比用WiFi做RSSI指纹定位精度高不少。位置信息和数据采集结合是很多行业客户一上来就会问的高频需求。所以这套组合方案的定位是WiFi 6负责“主干道”蓝牙负责“毛细血管”两者共享一套射频架构而不是各买各的模块来做网关。2. 方案选型与技术原理2.1 WiFi 6的核心特性为什么适合IoTWiFi 6802.11ax相比上一代不是单纯把速率翻倍而是对整个信道访问机制做了重构。它最重要的改进是OFDMA把信道分成更小的资源单元RU让多个设备可以在同一个信道上并行传输少量数据。过去是“一辆车独占整条路”现在是“一辆公交车拉到各个站点”适合大量小数据包并存。这个特性对IoT太关键了。实际项目中几十个传感器周期性地发送小包WiFi 4/5时代经常发生碰撞导致重传网络一旦拥塞延迟就会急剧波动。WiFi 6的OFDMA调度能让这些短帧在固定时间片内有序发送实测在很多并发小包场景下平均延迟能下降一半以上。另外还有几个对IoT同样重要的特性TWT目标唤醒时间设备可以和AP协商休眠唤醒计划WiFi终端不再需要持续监听信道。对电池类IoT设备来说这个机制能把待机功耗压低一个级别。下行MU-MIMO支持多个空间流同时发向不同终端配合OFDMA多终端场景效率明显提升。BSS Coloring多个AP在物理上重叠时通过颜色标记降低干扰适合高密度部署的楼宇或园区。WPA3从安全认证上补强了IoT设备经常被攻击的弱口令风险虽然实际运营里不少IoT设备仍默认WPA2但新项目应该直接上WPA3。2×2的WiFi 6理论上在80MHz频宽、MCS 11、短GI下PHY速率可以到1201Mbps。当然实际TCP吞吐会打折扣一般能做到700-900Mbps这个数值对IoT网关的视频监控、固件升级来说已经绰绰有余。2.2 2×2 MIMO的技术细节与速率表为了帮助选型和排障我习惯在项目初期就把速率表拉出来确认各个组合下的理论速率这样才能判断“实际性能是否正常”。以2×2、80MHz频宽为例MCS 0BPSK约86MbpsMCS 111024-QAM时约1201Mbps。如果频宽降到40MHzMCS 11大约只有574Mbps降到20MHz则更低。很多IoT网关默认固件开的是20/40MHz容易让人误以为芯片性能不行其实是频宽配置的问题。天线数量决定了空间流数2×2意味着同时支持2条空间流所以理论上峰值为单流的两倍。调制阶数和信噪比直接挂钩。1024-QAM需要很高的信噪比距离稍微拉远、遮挡稍微增加速率就会退到MCS 8甚至更低。所以不要只看峰值速率更要关注设备在典型工作距离下的MCS等级。我实测过不少双天线产品距离3米内能到MCS 11但隔一道隔断就掉到MCS 6-8实际吞吐可能直接掉一半。还有一个容易忽视的点是GIGuard Interval。长GI抗多径更好短GI速率更高。对IoT设备如果信道环境复杂不建议强行开短GI掉包率升高反而不划算。2.3 蓝牙侧的版本选择与共存机制蓝牙这一侧现在的新方案基本都支持BLE 5.x。BLE 5.0引入2M PHY速率翻倍适合小批量的数据透传5.1/5.2增加AoA/AoD定位和LE Audio5.3/5.4在连接更新、广播加密上有改进。对IoT项目来说BLE 5.2以上基本够用还要关注芯片是否支持同时维持多个连接。很多低功耗传感器并不需要一直在线而是走广播或周期性扩展广播网关作为扫描端收集即可。蓝牙与WiFi的共存是整个项目里技术含量最高的一环。WiFi 2.4GHz和蓝牙BLE都工作在2.4GHz附近频段重叠是天然冲突。最常见的处理方式是芯片内部的PTAPacket Traffic Arbitration机制WiFi和蓝牙模块通过专用信号线交换申请和仲裁信息确保同一时刻只有一个射频在前导码或数据发送。3线PTAGRANT、REQUEST、PRIORITY是比较通用的接口也有一些芯片把共存逻辑直接做在内核里。在我实际使用的Combo方案里蓝牙可以独立天线也可以和WiFi主天线共用。共用天线时必须依赖芯片的时分切换机制同时要保证天线开关的切换时间足够快否则蓝牙广播容易被WiFi流量饿死。这一点在后面实测部分会细说。3. 硬件设计要点3.1 器件选型经验Combo方案还是独立芯片做这个项目之前我对比过两种路线一个是独立的WiFi模块加独立蓝牙模块另一个是集成WiFi和蓝牙的Combo芯片。独立方案的灵活性高可以分别选最优的WiFi和蓝牙芯片但问题是两套射频之间的共存协调非常难做。如果没有PTA信号联动WiFi高负载时的蓝牙连包率会惨不忍睹。在智能楼宇网关这种高度集成化产品里我更推荐Combo方案。现在市面上常见的WiFi 6 BLE 5.x Combo芯片或模组内部已经处理好了大部分共存逻辑硬件上只需要保证天线布局和电源干净能省掉很多头疼事。接口选型方面2×2 WiFi通常用PCIe或USB 3.0接口蓝牙一般走USB或UART/PCM。PCIe的吞吐能力更强但驱动和电源管理比USB复杂USB则实现简单、热插拔方便但高吞吐下延迟和CPU占用略高。我之前用的是PCIe USB组合WiFi挂PCIe蓝牙走USB两者共用一个复位引脚保证上电时序一致。值得一提的坑是很多号称“WiFi 6 2×2”的模组天线接口只有一根是主天线第二根是分集/辅助天线如果固件没有启用多流实际吞吐可能还是单流水平。选型时一定要确认驱动默认是否开启了MIMO和802.11ax功能有时需要手动设置。3.2 天线设计与射频共存天线部分这是很多人觉得“玄学”的环节但踩坑之后就会发现很多规律。2×2 WiFi需要两根WiFi天线蓝牙可以独立一根也可以共用其中一根。最理想的做法是三个天线接口分开放置保证两两隔离度至少要有15dB以上。隔离度不够收发射频信号会互相串扰最直接的表现是全速率跑不上去蓝牙在WiFi并发时丢包严重。我用过的方案中WiFi主天线放在左上角辅助天线放右上角蓝牙天线放底部。PCB天线走线时尽量远离高速数字信号特别是USB和DDR走线。外置IPEX天线的好处是便于调节方位生产时也方便测试缺点是多一根线缆和连接器成本高一些。如果是小巧的传感器或网关直接用板载陶瓷天线或PCB天线。但板载天线一定要离金属件远至少保留3mm-5mm净空否则谐振点会漂移。共存的硬件设计上PTA信号线务必靠近SoC输入引脚走短线避免跨分割和过孔太多。电源域也最好独立射频功放的供电不要和数字核心共用同一个LDO否则WiFi发射时的瞬间大电流会把蓝牙的射频前端电压拉垮导致蓝牙广播包突然丢失。3.3 电源与功耗控制2×2 WiFi 6的峰值电流并不小。以3.3V供电为例满功率发射时整机电流可能到600-900mA瞬时功率2-3W。这对电池供电的设备是不可接受的所以必须配合DCDC降压和储能电容同时依赖WiFi的TWT机制把平均电流降下来。我做功耗设计时先把工作模式分成三档连续传输模式连接在AP上持续跑TCP约1.5W-2W。正常待机模式保持WiFi连接、未打流约50mW-100mW。TWT深度休眠模式约定好休眠周期后可以降到10mW以下虽然还不能和BLE动辄微安级的待机相比但已经比WiFi 4时代强很多。实际操作时要特别注意TWT本身需要AP端支持并开启协商如果对端AP不支持终端就只能用传统PS模式功耗降幅会小很多。所以在客户现场如果发现标称待机功耗对不上第一件事是检查AP是否支持802.11ax TWT。如果你同时有BLE外设常连建议把BLE放在独立LDO域WiFi休眠时把整个PSOC/射频域断电只留BLE维持连接。这种“复合睡眠”策略可以把系统平均功耗再压低一个量级。4. 软件适配与物联平台接入4.1 Linux驱动与网络配置要点软件环节Linux平台是IoT网关的主流选择。驱动是否能正确枚举设备、是否支持802.11ax的完整功能会直接影响项目进度。以我用的Combo模组为例WiFi部分通过PCIe枚举后内核里需要加载对应厂商驱动可能来自上游内核模块或厂商闭源驱动。加载成功后用iw list看支持的能力确认有HT、VHT、HE三个字段HE就是802.11ax。如果没有HE说明固件太老或驱动没启用对应特性。配置AP模式时我习惯直接用hostapd并打开802.11ax相关参数。假设是5GHz频段关键配置如下interfacewlan0 drivernl80211 ssidIoT-GW-5G hw_modea channel36 ieee80211n1 ieee80211ac1 ieee80211ax1 wmm_enabled1 wpa2 wpa_passphraseYourStrongPassword rsn_pairwiseCCMPSTA模式则用wpa_supplicant连接上游路由器。注意IoT网关很多时候需要同时做AP和STA比如自身以WiFi回传云端同时又给现场设备开热点。这就涉及multivif或P2P并发不同驱动支持程度差别很大选型时最好提前确认。另一种做法是用USB外插一个网卡做上行把主WiFi完全留给本地设备逻辑更简单。调试时我常用的命令有iw dev wlan0 info、iw dev wlan0 station dump、iw event、tcpdump。排障吞吐问题时tcpdump看重传率和TCP窗口比只看iperf数字效率高得多。4.2 蓝牙协议栈与调试技巧在Linux上蓝牙协议栈目前基本都是BlueZ。我用bluetoothctl做扫描、配对、连接用btmgmt查看控制器信息用btmon抓HCI日志。BLE扫描的核心命令其实很简单bluetoothctl scan on但如果要做稳定的多设备扫描建议走BlueZ的广告监测接口或者直接用hcitool lescan配合白名单过滤掉不关心的设备。传感器上报频率高时用户态脚本一旦处理不过来就会丢广播包所以最好把解析逻辑下沉到C/daemon层不要用Python脚本异步队列处理。蓝牙串口终端Serial Bluetooth Terminal是我在现场调试BLE外设时非常常用的一类工具。很多BLE串口透传模块比如用低功耗蓝牙把传感器数据转成UART输出的模块手机装一个蓝牙串口终端就能直接看到数据流快速验证模块的波特率、数据格式是否与预期一致。批量设备联调时用这种方式做点位的单点验证比直接在平台调省很多时间。蓝牙Mesh的调试则要复杂一些。我一般先用手机或PC工具配置一个临时网络验证节点的组网速度和中继能力再移植到嵌入式环境。Mesh的Provisioning流程容易出问题常见原因是网络密钥不匹配或者消息超时设置太短。4.3 对接云端平台与OTA升级IoT方案的最终落脚点永远是数据上云和远程维护。这个项目里我们同时对接了自研MQTT Broker和主流公有云IoT平台。WiFi 6 2×2的大带宽在OTA升级上的体感非常明显以前用WiFi 4单流升级一个100MB的固件包要几分钟现在2×2 WiFi 6通常几十秒就搞定这对于大量设备分批升级来说效率提升巨大。OTA过程要注意的细节其实不少。以我在AWS IoT Core上做OTA的经验为例设备需要具备正确的权限策略包括读取S3文件、接收Job文档、上报执行状态等。很多团队在设备端一直失败就是因为IAM策略里没有放行s3:GetObject和iot:StartNextPendingJobExecution这些动作。这类问题排查起来通常要同时看设备端日志和云端的Job执行记录几轮才能定位。断点续传和回滚机制也不能省。WiFi再快也不能保证升级过程中不断电、不弱网。我一般会把固件包切成1MB大小的分片用MQTT topic上报确认断点续传则靠文件哈希比对。只要有一个分片校验失败就放弃整个包重新拉取。回滚机制要做成双分区A/B启动防止写入一半的固件直接变砖。5. 实测数据与效果5.1 吞吐量与延迟实测硬件和软件都就位后跑一轮性能测试是必须的。我搭的测试环境是被测网关作为AP一台支持WiFi 6的PC作为Station中间无遮挡距离约3米用iperf3打流。先说结果在5GHz、80MHz频宽、较短GI条件下2×2 WiFi 6的单向TCP吞吐实测稳定在850Mbps左右单向UDP可以到1000Mbps出头。作为参考同样环境下单流1×1的WiFi 6TCP吞吐基本只有400-450Mbps这个差距在大量数据回传场景里非常明显。延迟方面同一WiFi网络内PC ping网关IP平均延迟在1-2ms抖动很小。但如果距离拉开到15米并隔一堵墙MCS等级会降到MCS 8甚至MCS 6TCP吞吐可能只有200-300Mbps这是正常的因为高阶调制对信噪比要求太高。做方案时不要为了“标称速率好看”而忽略距离带来的性能回退。并发能力也有实际数据。我让12台设备同时以每秒一条消息的频率向网关上报数据启用OFDMA后网关CPU占用率和丢包率都比WiFi 4/5时代低不少整体时延抖动在可接受范围内。这主要归功于OFDMA把小包调度安排得比较整齐避免了大量随机退避。5.2 功耗实测TWT是最大变量功耗是IoT项目绕不开的指标我用电流探针测了三个典型状态。连续传输模式下整机功耗确实高能到1.5W-2W这个模式不适合长期运行。正常待机、保持连接但不传数据时大约60-90mW。最让我满意的是TWT模式在AP支持并协商成功的前提下把休眠周期设置到1秒系统平均功耗能降到10mW左右比传统WiFi的PS模式低了一倍多。当然TWT的收益取决于流量模型。如果应用层每100ms就要收发一次数据TWT就很难深度休眠。所以在软件设计时建议把“高频率短心跳”合并成“低频长心跳”例如由原来每100ms一次的小包改为先在本地积累500ms或1秒再上报这样能明显提升TWT效果。蓝牙这一侧待机时处于广播或连接间隔较大的状态功耗通常在10-30µA级别。跟WiFi不在一个量级所以传感器节点用蓝牙是对的。可以做一个简单的分工网关主CPU和WiFi保持长连接但只在必要时唤醒BLE扫描则一直低功耗运行一旦收到传感器告警再唤醒WiFi链路做响应这样整机功耗能压得很稳。5.3 共存实测有PTA和没PTA差别明显为了验证共存机制是否真的有效我做了两组对照实验。第一组WiFi跑在2.4GHz同时连接三个BLE设备并持续收发数据但不开启PTA。结果WiFi TCP吞吐从约150Mbps掉到90MbpsBLE端也开始出现重传和偶发断连。第二组开启PTA之后同样条件下WiFi吞吐基本不受影响BLE设备长时间运行也没有掉线。这组数据说明硬件层面的PTA仲裁真的不能省。只要PCB空间允许尽量保留WiFi和蓝牙之间的PTA信号哪怕增加一根走线也比等到量产后再处理干扰强。天线布局对蓝牙性能的影响也比较明显。我把蓝牙天线放在金属螺丝柱旁边测试蓝牙扫描范围直接缩水了三成以上。挪开2厘米后扫描范围恢复正常。这类问题在功能够用的实验室环境很难发现但一到客户现场的金属柜、钢筋水泥环境就暴露出来了所以天线周围净空一定要在设计初就留好。6. 常见问题与排障指南6.1 2.4GHz WiFi和蓝牙互相干扰怎么破这个是我被问得最多的问题也是最容易复现的现场故障。症状通常很典型WiFi用2.4GHz时蓝牙耳机或鼠标卡顿、断连或者反过来蓝牙设备一多了WiFi吞吐断崖式下跌。优先解法是打开PTA/共存开关。某些驱动默认关闭需要看寄存器或驱动文档打开。其次是信道规划2.4GHz WiFi尽量避免用蓝牙跳频覆盖最密集的前几个信道虽然BLE本身有跳频机制但如果重叠时间过长仍会导致重传。最省心的方案是让WiFi主链路走5GHz2.4GHz留给用户接入和蓝牙但很多便宜设备为了省成本只做2.4GHz那就只能接受一定程度的性能妥协。如果现场干扰严重还可以在软件层降低处理策略比如把蓝牙的连接事件间隔拉大或者让WiFi降低发射功率减少对蓝牙前导的压制。但这些都是权衡方案最终效果不如硬件共存来得干净。6.2 驱动识别异常、固件版本对不上因为驱动问题导致设备“不工作”在IoT项目里太常见了。比如有阵子很多用户反馈某款Realtek WiFi 6 PCIe无线网卡在Windows下会偶发“无法启用”或“设备状态显示有问题”排查到最后基本都是驱动程序版本太老、Windows更新自动替换了不兼容驱动造成的。解决办法很简单去芯片厂商官网或OEM官网下载对应型号的最新驱动卸载旧驱动后重新安装同时把网卡的电源管理里的“允许计算机关闭此设备以节约电源”取消勾选。“Generic Bluetooth Radio驱动下载”这类问题也经常出现。设备管理器中蓝牙设备显示为未知设备或黄叹号装上通用的Microsoft蓝牙驱动后还不行那就要查设备ID确认蓝牙走的是UART、USB还是SDIO接口。USB蓝牙最常见的问题是端口供电不足表现为驱动能识别但一旦扫描就有设备掉线。换个带独立供电的USB口或加一个有源Hub问题往往就解决了。在Windows IoT Enterprise系统上跑网关时这类驱动兼容问题更突出。有的客户拿Win10/11 IoT企业版做网关系统但无线网卡驱动还是默认Windows Update推送的“通用驱动”功能不完整例如TWT选项根本不出来。这类系统在部署前最好先对WiFi和蓝牙驱动都做一次完整的功能验收测试。6.3 天线与布局导致性能神秘下降在现场我经常遇到一种棘手问题设备单测时性能完美装进外壳、连上排线后吞吐暴跌或蓝牙距离骤减。这大概率不是芯片问题而是天线周围环境变了。检查思路一是确认天线净空没有被外壳的金属件、屏蔽罩、FPC排线遮挡二是检查天线延长线的IPEX接头是否压接牢靠很多时候是线扣没扣紧导致接触不良三是看天线之间的隔离度如果两根WiFi天线靠得太近并排放置主接收会同时收到自己的信号和辅助天线耦合过来的信号MIMO性能反而恶化。有次客户现场蓝牙一直抓不到包最后发现是产品外壳内部喷涂了导电漆正好覆盖在蓝牙天线区域相当于给天线加了个屏蔽罩。把天线位置的导电漆用胶带遮蔽后再测试蓝牙信号立刻恢复。这类问题用网络分析仪测天线回损和隔离度能快速定位不要光靠肉眼猜。6.4 高密度场景连接数上不去高密度是IoT特有的痛点。设备一多AP的关联表、DHCP地址池、底层调度队列都可能成为瓶颈。WiFi 6虽然能改善信道利用率但软件配置没跟上一样会挂。我一般逐项排查AP的max_num_sta是否够默认值往往只有几十个需要调到设备规格上限DHCP租期是否太短导致地址风暴是否开启了OFDMA和MU-MIMO调度TWT协商是否默认关闭如果设备都采用传统PS模式空口竞争仍会很剧烈。另外建议把IoT设备单独放到一个SSID限定低速设备和低速率协议接入避免个别兼容性差的设备拖垮整个AP的调制等级。6.5 用串口/蓝牙日志快速定位联调问题最后分享一个调试小技巧。很多BLE模组都支持通过串口输出调试日志如果现场没有逻辑分析仪直接用“蓝牙串口终端”配合一个USB转TTL工具就能看到模组上电后打印的初始化信息、广播参数、连接状态。这个手段看起来土但在客户环境里往往比抓空包更快定位问题。连接状态机异常、广播间隔配置错误、配对失败这类问题在终端日志上通常会有明确的错误码比如HCI_ERROR_CONN_TIMEOUT、LL_ENCRYPTION_ERROR。把这些错误码对照协议栈文档基本能判断是软件配置问题还是射频环境问题。遇到偶发问题建议把日志开到verbose模式配合时间戳持续跑一段时间再做关联分析。这套方案做完之后我最大的体会是WiFi 6和蓝牙从来不是竞争关系而是互补关系。2×2 WiFi 6提供高吞吐和可靠回传蓝牙负责低功耗接点和广播定位两者通过合理的硬件共存设计和软件协同才能把IoT网关的底子打好。再往后做扩展比如加一颗Thread/RFID网关芯片或者把WiFi 6E/6GHz频段用起来这套架构也能平稳演进硬件接口和软件分层都留有足够的余量。