跳到内容
当前位置:首页>Excel>学习笔记 EP03:ROV 的推进系统与运动控制

学习笔记 EP03:ROV 的推进系统与运动控制

  • 2026-11-04 21:18:38
学习笔记 EP03:ROV 的推进系统与运动控制

封面|从「我在哪」到「怎么动、怎么稳住」:ROV 的六个自由度与推进器(示意图,非工程图纸)。

前两篇里,我们已经把 ROV 的家族(EP01)和它"怎么知道自己在哪"(EP02 水下定位与导航)讲清楚了。但定位只解决了一半问题——知道位置,不等于能到达并保持那个位置。

真正让 ROV 动起来的,是推进系统与运动控制。前者把电能或液压能变成推力,后者把人的意图(或自主指令)翻译成每个推进器该转多快。两者合在一起,才构成一条完整的"感知—决策—动作"闭环:水下定位与导航过程负责感知,本篇负责动作,而动作又反过来依赖感知来修正。

有一个反直觉的点值得先记住:在水下,悬停不动比直线前进更难。 前进时水动力相对稳定;一旦要定点保持,海流、浮力差、推进器非线性会同时来捣乱。所以"稳得住"才是推进与控制水平的试金石。

一、怎么描述运动——6 自由度与坐标系

要谈控制,先得有统一的语言。水下航行器沿用海运界 1950 年确立的 SNAME 符号体系,用一个 6 维向量描述位姿、速度和受力。

位姿(体坐标系相对于地面坐标系的位置与姿态):

η = [ x, y, z, φ, θ, ψ ]ᵀ

速度(体坐标系下的线速度与角速度):

ν = [ u, v, w, p, q, r ]ᵀ

广义力与力矩:

τ = [ X, Y, Z, K, M, N ]ᵀ

六个分量对应六个自由度(DOF):沿 x 的纵荡(surge)、沿 y 的横荡(sway)、沿 z 的升沉(heave),以及绕这三根轴的旋转——横滚(roll, φ)、俯仰(pitch, θ)、艏摇(yaw, ψ)。其中 x 指向前、y 指向右舷、z 指向下(NED:北-东-地约定),构成右手系。

图1 六自由度与坐标系(SNAME 1950;x-y-z 右旋,z 向下)。重绘自 Fossen 模型框架。

为什么必须搞两套坐标系? 受力、惯性、推力都最自然地在体坐标系(BODY)里表达(推力沿机体轴、附加质量随体轴定义);而位置、任务指令、导航结果却在地面坐标系(NED)里表达。两套坐标靠姿态变换矩阵 R(η) 连接,并进一步构成运动学方程:

η̇ = J(η) · ν

J(η) 是 6×6 变换矩阵,上半区就是 R(η)(把机体速度旋转到地面系),下半区把体坐标角速度 (p, q, r) 换算成欧拉角变化率。这就是需要两套坐标系的根本原因——一套坐标无法同时干净地表达"推力沿机体轴"和"位置在地面系"。R(η) 由三个欧拉角(ψ 艏摇、θ 俯仰、φ 横滚)依次旋转合成;当 θ 接近 ±90° 时矩阵奇异(万向锁)。这也正是前文延伸里引入四元数的原因——用四元数参数化姿态,可让 J(η) 在大幅机动时始终可逆。

Fossen 的《Marine Craft Hydrodynamics and Motion Control》就用这套符号,把经典水动力方程整理成后面要用的紧凑矩阵形式。

延伸|为什么用四元数:四元数相比欧拉角能避免"万向锁(gimbal lock)",在大幅姿态机动时数值更稳定;但本篇用欧拉角已够用,故不展开。

二、动力从哪来——推进器与能源

2.1 电动还是液压

工作级 ROV 的推力来源主要有两类,本质差别在"能量如何变成轴向推力":

电动推进:电机电磁转矩 ∝ 电流,响应快(毫秒级)、转矩-转速特性平滑、可控线性好。但功率密度受电机与电力电子限制,单体推力上限较低。多见于观察级与轻中型 ROV(如 BlueROV2 的 T200 推进器)。液压推进:水面液压动力站(HPU)把机械能变成高压油(压力 ∝ 力),经脐带缆长距离输送至水下执行机构。液压功率密度高、能扛冲击负载,是重型工作级 ROV 的主流;代价是油液可压缩性、管路泄漏与阀响应带来更大滞后,且要处理水下防爆与污染。

一句话:电动赢在"快而干净",液压赢在"大而猛"——选型的本质是在"响应/可控性"与"推力量级"之间权衡。

2.2 推力不是线性的

单个导管螺旋桨的推力近似与转速平方成正比,且正反转不对称:

T ≈ ρ · K_T · D⁴ · n · |n|

其中 ρ 是水密度,K_T 是推力系数,D 是桨径,n 是转速(带符号)。这个二次型可以用动量理论理解:螺旋桨把一段水流加速,推力等于质量流量乘以流速增量,即 T = ṁ·Δv;而 ṁ ∝ A·v(流量正比于桨盘面积与诱导速度),Δv ∝ n(诱导速度正比于转速),于是 T ∝ n²,再补上符号即得上述形式。

注意 n·|n| 这一项:它表明正转和反转产生的推力大小不同。关键在于 K_T 并非正负相同——Kort 导流管与桨叶是为单向来流优化的,反转时入流分离更严重、效率更低,通常反向推力只有正向的 65%–80%。这就是为什么"前进容易、后退吃力",也是分配算法必须把它当作非对称执行器对待的原因(见第五章)。

图2 推进器典型布局(以 BlueROV2 6 推器为示意):水平 ×4(±45° 矢量)+ 垂直 ×2。Fossen / Antonelli 多文一致。

2.3 典型布局——4 水平 + 2 垂直

最常见的轻型配置是 6 台推进器:4 台水平布置、与纵轴成 ±45° 形成"矢量推力",合力可分解出纵荡、横荡和艏摇三个自由度;另外 2 台垂直布置,负责升沉(并借差动辅助俯仰/横滚)。BlueROV2 的官方资料即明确为"6 thrusters (4 vectored, 2 vertical)"。

把"布局"翻译成数学,就是下一章分配矩阵 B 的水平子块。对一台水平推进器 i,设它在体坐标系的推力方向单位向量 ê_i = (cos α_i, sin α_i, 0),安装位置为 (x_i, y_i),则它对 [X 纵荡, Y 横荡, N 艏摇] 三个自由度的贡献为:

X_i = T_i · cos α_i

Y_i = T_i · sin α_i

N_i = (x_i · sin α_i − y_i · cos α_i) · T_i

其中 N_i 是位置矢量 r_i 与推力 F_i 叉乘的 z 分量(N = x·F_y − y·F_x)。把四台 ±45° 矢量推器的 α_i 与对称位置代入,得到的是一个 3×4 矩阵:3 个自由度由 4 台推器提供,本身就已经冗余 1 个自由度。这解释了为何轻型 ROV(如 BlueROV2)用 4 台水平推器就能同时控住纵荡、横荡、艏摇,且仍有余量做容错。垂直 2 台专门负责升沉(并借差动补俯仰/横滚)。

重型工作级常扩到 6–8 台,目的不是增加自由度(6 个已经够),而是把冗余从"水平 1 个"放大到"全局多个"——多一台推进器就多一种分配方案,也多一份容错能力(详见第五章)。具体台数是机型相关的工程选择,并非普适定则。

图3 导管螺旋桨推力–转速关系:二次型且正反转不对称(反向推力损失)。来源:Fossen 推进器模型;反向损失见 Antonelli《Underwater Robots》。

2.4 能源——点到为止

推进器要的电或液压,都来自脐带缆(水面供电 / 水面 HPU 经缆供压)。这部分涉及缆的力学、收放与通信,是 ROV 区别于 AUV 的关键结构,我们留到 EP04 专门拆解,本篇只把它当作"已存在的能量来源"看待。

三、运动的物理约束——动力学模型

把受力列成方程,就得到 ROV 的标准动力学模型(Fossen 形式):

M · (dν/dt) + C(ν) · ν + D(ν) · ν + g(η) = τ

逐项拆解它"为什么长这样":

M·(dν/dt):惯性项。M = M_RB + M_A。M_RB 是刚体惯性(含转动惯量);M_A 是附加质量——加速机体时,还要带动周围一团水一起加速,这部分"被拖着走的水"等效为额外惯性。由于势流对称性,M_A 同样是对称正定矩阵,在某些轴上甚至大于 M_RB。这是水下与空/陆运动最本质的区别之一:你推的不仅是机器,还有它裹挟的水。       C(ν)·ν:科氏与向心力项,来自机体坐标系随体旋转。它的关键性质是反对称(C + Cᵀ = 0),于是 νᵀCν ≡ 0——也就是说 C 项本身不做功,它只在六个自由度之间重新分配动能,既不凭空产生也不耗散能量。认识到这点,很多"控制律为何能稳定"的疑问就清楚了:系统的能量只能被 D 耗散、被 g 储存,C 只是搬运工。       D(ν)·ν:水动力阻尼项。D(ν) = D_l + D_q(|ν|):线性项来自粘性表面摩擦(∝ν),二次项来自压差阻力(∝|ν|ν)。在 ROV 工作速度下,二次阻尼往往主导,这使得动力学成为强非线性——同一套 PID 增益在慢速悬停和高速航行下表现会差很多,逼出"增益调度"。       g(η):恢复力项。垂直方向净力为 (W − B)(水中净重);力矩来自重心 G 与浮心 B 不重合——当 B 在 G 上方时,任何倾斜都会产生使系统回正的回复力矩(类似不倒翁/初稳性)。这就是 ROV 为何要精心配平:配平越好,(W−B) 与回复力矩越可控,定点保持越省力。

图4 ROV 动力学受力分解。Fossen 标准形式:M 对称正定、C 反对称、D 正定、g 为恢复力。

这套方程的关键特征是强非线性、强耦合:速度影响阻尼与科氏力,姿态影响重力恢复项,控制输入 τ 还要经第五章的分配才落地为真实推力。正因如此,水下控制比陆地轮式机器人难得多——陆地车基本只需平面上的力平衡,ROV 却要同时处理六个耦合自由度。

延伸|准静态简化:当运动缓慢、加速度小,可忽略 M·(dν/dt) 与部分耦合,得到"准静态"简化模型,常用于粗粒度控制设计。

四、控制怎么工作——从指令到动作

控制的目标,是让 ROV 的实际位姿 η 跟踪期望位姿 η_d。工程上几乎都用级联闭环,但真正的要点在带宽分离:内环(速度)必须比外环(位置)快 5–10 倍。原因很直接——位置是力经两次积分得到的量,若外环下指令太急、内环跟不上,推力还没建立位置就冲过头,会振荡甚至失稳。所以"外环慢、内环快"不是工程习惯,而是稳定性的硬性要求。

① 位置/姿态环(外环):比较期望位姿与实测位姿,输出"想要的线速度/角速度" ν_d;

② 速度/角速度环(内环):让实际 ν 跟踪 ν_d,输出"想要的广义力" τ_cmd;

③ 推力分配(见第五章):把 τ_cmd 拆成各推进器的推力指令 u;

④ 推进器执行 u,产生真实推力,作用于 ROV(被第三章的动力学方程支配);

⑤ 传感器(INS、DVL、深度计、罗经)测回实际 η、ν,回到第①步形成反馈。

图5 级联控制闭环(指令→位置/姿态环→速度环→推力分配→推进器→对象→传感器反馈)。重绘自 Fossen / Antonelli 控制架构。

最经典的内/外环控制器是 PID 加前馈。PID 部分:

u_pid = K_p · e + K_i · ∫ e dt + K_d · (de/dt)

其中 e 是误差。前馈的物理含义是:稳态时 ROV 要对抗的是确定项 τ_ff = C(ν)·ν + D(ν)·ν + g(η) + F_env(科氏/向心项 + 稳态水阻 + 重力浮力差 + 海流等环境扰动)。把这些提前注进执行器,PID 只需补偿残差(瞬态与建模误差),响应更快、稳态更准,且不易饱和。

动态定位(DP)是这套框架在工程上的重要延伸:它把"定点保持"当作外环目标。位置误差(来自 EP02 的 USBL/LBL 或声学定位)生成期望速度,速度环靠 DVL 实测(或位置微分)闭环;中间的状态由 EP02 的 EKF 观测器给出干净估计。所以 DP = 反馈 + 前馈(海流估计)+ 观测器,三者缺一不可。海流一来,DVL 测到相对水速度变化,控制律立刻补推力抵消——"悬停比前进难"正靠这层闭环化解。值得提醒的是,真实推进器存在一阶滞后,且推力有饱和上限(见第五章),二者都会吃掉内环相位裕度,因此实际调参必须留余量。

五、推力分配——把"想去的力"分给每个推进器

控制环算出的是"想要的广义力" τ,但真正能动的是 m 台推进器各自的推力 u。两者通过分配矩阵 B 联系:

τ = B · u

B 的每一列是"某台推进器单位推力对六个自由度的贡献",由它的安装位置与朝向(几何)决定:列 i = [ ê_i ; r_i × ê_i ],其中 ê_i 是推力方向单位向量、r_i 是从重心到该推器的位置矢量。当 m > 6(冗余配置),同一 τ 对应无穷多组 u——该选哪一组?

最省事的答案是伪逆(最小二乘),它最小化各推进器推力的平方和(即能耗):

B† = Bᵀ · (B · Bᵀ)⁻¹ , u = B† · τ

更实用的是加权伪逆,给不同推进器不同的权重(例如给已部分故障的推进器加大权,逼分配算法少用它),从而编码"容错"偏好:

B†_W = W⁻¹ · Bᵀ · (B · W⁻¹ · Bᵀ)⁻¹

图6 推力分配的可行域:冗余使同一指令有无穷多解。伪逆最小化 l2 能耗但未必满足饱和;无穷范数(l∞)最小化最大单推、可直接处理饱和与容错(Soylu 2008)。

但伪逆有个硬伤:它最小化的是"平方和",不保证单台推力不超饱和。真实推进器有最大推力上限 T_max,伪逆解可能让某一台"爆表"却还不知道。工程上有两种解法:

无穷范数(l∞)准则:最小化"所有推力中的最大值" min max|T_i|,等价于把指令 τ 塞进"推力可达多面体"——各推器 Box 约束 [−T_max, T_max] 经 B 映射后的交集。若 τ 落到多面体之外,在物理上就做不到,必须降需求或重构。这天然兼容饱和约束,且对单台失效有更好容错性(Soylu 等,2008)。

二次规划(QP):min ||u||²(或 ||u−u_prev||²)s.t. B·u = τ, |u_i| ≤ T_max。这是实船常用做法,把饱和与故障(去掉某列即容错)一并写进约束求解。

冗余因此既是麻烦也是资源:多出来的自由度带来了"怎么选"的问题,而选得好(QP/加权/l∞ 准则)就能换来能耗优化与容错,选得差(裸伪逆)则可能让一台推器过载、其余闲置。

六、自主到什么程度——遥操作与共享控制

ROV 与 AUV 最根本的区别,在于 ROV 始终有人在回路。AUV 离线编程、自主航行;ROV 则由水面/甲板上的 pilot 通过摇杆或主手实时操控——这是它名字里"Remotely Operated"的题中之义,也是它能干精细活(如机械臂作业)的前提。

主从遥操作(master-slave,双边)是最直接的形式:操作员扳动主手,远端 ROV 的机体/机械臂按比例跟随,主从两端交换位置与力。力反射(force reflection)让操作员"摸"到接触力,是拧阀、插拔等精细作业的关键。但长时延(长缆、卫星中继)会让直接双边控制失稳——经典解法是波变量 / 无源性方法(Niemeyer & Slotine),把能量以"波"的形式在链路中传输,保证任意常数时延下都稳定。这是遥控潜水器工程里非常硬核的一支。

工程上更常见的是共享控制(shared control):把部分自由度交给自动闭环,人只管高层任务。例如"定深 + 定向"由自动控制维持,操作员只需用摇杆下达"向左前方平移"的意图;遇到精细作业再切回全手动。架构上是"人在环顶(human-on-top)"——控制器在跟踪指令的同时,自动守着饱和、避障等底层约束。这种分工既减轻疲劳,又保留人类判断力。

延伸|自主等级光谱:可从"全手动 → 共享控制 → 监督控制(人只确认航点)→ 受限全自主"渐变。ROV 因安全与作业复杂度,短期内仍以共享/监督为主。

七、具身大模型——从遥操作到自主作业

近年兴起的一个方向,是用具身大模型把"自然语言指令"直接变成 ROV 的控制动作。其雏形是一条"视觉-语言-动作(VLA)"链路:操作员说一句"检查这段管线",模型融合视觉/深度/DVL/声呐等感知,端到端生成推力与机械臂指令。

目前已有若干真实进展(均属前沿、尚未成熟、以仿真验证为主):

OceanGPT(沧渊):浙江大学牵头,ACL 2024 发表的海洋领域大模型,能生成水下机器人操控代码,初步具备"水下具身智能"能力;2025 年开源的"沧渊"已含问答、多模态(声呐/科学图像)、代码生成(OceanGPT-coder)等模块,在海鹰系列平台上将操控代码编写从"小时级"缩短到"秒级"。       USIM & U0(2025):专为水下机器人打造的 VLA 数据集与模型,基于 Isaac-GR00T 基座、约 30 亿参数,在 Stonefish 仿真中用 BlueROV2 采集数据;论文报告导航类任务成功率约 87%,整体在线成功率约 43%(早期版本曾报 80%,口径随评测框架变化)。       UnderwaterVLA(2025):提出"双脑"架构,把高层任务推理与底层反应式控制解耦,并用水动力-informed 的 MPC 实时补偿流体效应;现场试验显示相比基线导航误差降低、任务完成率提升约 19%–27%。

图7 具身大模型进入 ROV 控制的雏形:语言指令→VLA→控制。来源:OceanGPT 浙大 2024/2025;USIM&U0 2025;UnderwaterVLA 2025。

必须清醒看待:这些工作目前多以仿真为主,且存在明显的"领域鸿沟"——为陆地训练的通用 VLA 模型若不做水下微调,在水下几乎完全失效(浑浊、低能见度、强水动力耦合)。零能见度场景还需依赖声呐而非视觉。因此本章只作前沿提示,不展开方法细节;待有成熟的实海域验证,再单独成篇。

八、控制律谱系——概览与工程取舍

前七章把"描述运动 → 推进器与能源 → 动力学 → 控制闭环 → 推力分配 → 遥操作 → 具身自主"这条骨架走完,落点是 PID+前馈+DP 这条工程主力线。但无论第六章的共享控制,还是第七章的具身大模型,指令一旦下到执行端,都绕不开同一个底层命题——用什么控制律去跟踪指令、又怎么把广义力分给推进器。方法谱系远不止 PID,本篇作为收束,先把它们摆上桌给一张概览与取舍;每种方法"怎么造、怎么调"的具体原理,留到后续文章展开。

工程落地仍以 PID + 前馈 + DP 为绝对主力,因为它稳、易调、可解释。但面对强海流、模型不确定和推进器饱和,研究界提出了更激进的方案:

方法
核心思想
优点
局限
适用场景
PID + 前馈
误差比例/积分/微分 + 已知扰动前馈
简单、鲁棒、易工程化
强非线性/大扰动下需精细整定
绝大多数工程系统(主力)
滑模控制 SMC
定义滑模面 s = ė + λe,迫使系统沿面运动
对模型不确定性、扰动鲁棒
不连续项 sign(s) 引起抖振(chattering),伤执行器
强扰动、模型不准
ADRC / 扩张观测器
用 ESO 把"总扰动"估作增广状态一并补偿
不依赖精确模型、抗扰强
参数整定偏启发式
未知扰动显著的场合
MPC
在线滚动优化 min Σ_k[(x_k−x_d)ᵀQ(x_k−x_d)+u_kᵀRu_k],显式处理约束
天然兼容推力饱和等 Box 约束
计算量大、依赖模型
约束强、可承受算力的平台
扰动观测器 DOB
估计并抵消外部扰动
可与任意控制器叠加
高频扰动估计受限
海流/波浪补偿
容错重分配
推进器失效时重新分配推力
单/多台失效仍可控
需故障诊断配合
冗余配置工作级 ROV

这些方法"为什么各有所长"可以再挖一层:SMC 的鲁棒来自把系统强行拉到滑模面上,代价是不连续控制带来的高频抖振(磨损推进器),实际多用边界层或超螺旋(super-twisting)高阶 SMC 抑制;MPC 的强项是把饱和写成硬约束一起优化,特别适合第五章说的推力上限,但代价是每一步都要在线求解、依赖模型精度;ADRC/DOB 不追求精确模型,而是把"模型误差 + 外部扰动"打包估计后补偿,因此更皮实。

Kaspar 等(2023–2024)对 52 篇近期水下航行器控制论文的综述显示,MPC 是近年被引用/应用最多的方法,其次是反步法(Backstepping)以及 PID 与强化学习的混合;但多数研究仍停留在仿真。现实中的工作级 ROV 扰动量级惊人:以"海斗号"(中国科学院沈阳自动化研究所研制的全海深 ARV)这类真实平台为参照,推力饱和、脐带缆张力与未建模扰动都远非"10 N 级"仿真可比——在工作级 ROV 上,脐带缆张力随长度与母船升沉可达数千牛,推进器迟滞、时变浮力配平与参数漂移同样棘手。论文里很美的控制律,到了真实海域往往还要叠加增益调度、自适应与 DOB 才稳得住。

取舍结论:对绝大多数 ROV,先把 PID+前馈+DP+加权伪逆分配做扎实,足以覆盖绝大多数常见工况;SMC/ADRC/MPC 作为针对性增强,按平台算力与扰动强度择机引入;容错重分配则是工作级冗余平台的"安全网"。

需要强调的是,本章只把这些方法摆上桌,并未展开它们的内部构造与调参——滑模面的设计与抖振抑制(边界层、超螺旋高阶 SMC)、MPC 的预测模型与在线滚动优化、扩张观测器(ESO)的带宽整定、容错重分配在推进器失效后如何重构可行域,每一项都够单独成章;而"仿真里很美"与"海里稳得住"之间的工程鸿沟(辨识精度、传感器噪声、时变参数与未建模动力学),更需要结合真实平台数据才能讲透。这些留待后续文章逐一拆解——学习笔记 EP04 将先转向脐带缆/TMS/供电通信,把本篇第二章点到为止的"能源"那块补齐,控制律的深度选题则在其后再独立展开。本篇的任务到此告一段落:从"我在哪"走到"怎么动、怎么稳住",闭环的骨架已经搭好,剩下的是把每一块骨头填实。

资料来源

一、权威教材与符号

SNAME (1950). Nomenclature for Treating the Motion of a Submerged Body through a Fluid.Fossen, T. I. Marine Craft Hydrodynamics and Motion Control(2011/2021),6-DOF 模型、坐标系与运动学方程 η̇=J(η)ν 的标准框架。Antonelli, G. Underwater Robots(2003/2006),推进器模型、推力二次型与分配。

二、综述与论文(控制、分配、扰动)

Kaspar, J. C. 等(2023–2024). A Survey of Control Technologies for Autonomous Underwater Vehicles,系统回顾 52 篇近期控制方法(MPC 最常用)。Soylu, S. 等(2008). A chattering-free sliding-mode controller … with fault-tolerant infinity-norm thrust allocation,l∞ 分配与容错。Omerdic, E. & Roberts, G.(2003/2004). 推进器故障诊断与容错分配、可行域几何。Niemeyer, G. & Slotine, J.-J. 波变量/无源性遥操作(时延稳定)。Guerrero, J. A. 等(2020);Shao 等(2021);Long 等(2022);Li 等(2023). 各类 SMC/ADRC/MPC/DOB 水下控制实例。Blue Robotics. BlueROV2 Datasheet(4 vectored + 2 vertical 配置)。

三、具身大模型(前沿,可能为非成熟方案)

Bi, Z. 等. OceanGPT: A Large Language Model for Ocean Science Tasks(ACL 2024, arXiv:2310.02031);2025 开源"沧渊"。Gu, J. 等. USIM and U0: A Vision-Language-Action Dataset and Model for General Underwater Robots(arXiv:2510.07869, 2025)。Wang, Z. 等. UnderwaterVLA: Dual-brain vision-language-action architecture for autonomous underwater navigation(arXiv:2509.22441, 2025)。

四、图片来源

图1–图7 与封面均为程序化重绘(matplotlib),来源见各图注;非工程图纸、非 AI 生成图,可供学习引用。

星纹舢影 · ROV 学习笔记
基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-11-08 03:05:11 HTTP/1.1 GET : http://h.sjds.net/a/572696.html
  2. 运行时间 : 0.079250s [ 吞吐率:12.62req/s ] 内存消耗:4,291.66kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=81bb92e6300dc37cbd23de57af5eb7d4
  1. /www/wwwroot/h.sjds.net/public/index.php ( 0.79 KB )
  2. /www/wwwroot/h.sjds.net/vendor/autoload.php ( 0.17 KB )
  3. /www/wwwroot/h.sjds.net/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /www/wwwroot/h.sjds.net/vendor/composer/platform_check.php ( 0.90 KB )
  5. /www/wwwroot/h.sjds.net/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /www/wwwroot/h.sjds.net/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /www/wwwroot/h.sjds.net/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /www/wwwroot/h.sjds.net/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /www/wwwroot/h.sjds.net/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /www/wwwroot/h.sjds.net/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /www/wwwroot/h.sjds.net/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /www/wwwroot/h.sjds.net/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /www/wwwroot/h.sjds.net/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /www/wwwroot/h.sjds.net/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /www/wwwroot/h.sjds.net/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /www/wwwroot/h.sjds.net/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /www/wwwroot/h.sjds.net/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /www/wwwroot/h.sjds.net/app/provider.php ( 0.19 KB )
  23. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /www/wwwroot/h.sjds.net/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /www/wwwroot/h.sjds.net/app/common.php ( 0.03 KB )
  27. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /www/wwwroot/h.sjds.net/config/app.php ( 0.95 KB )
  30. /www/wwwroot/h.sjds.net/config/cache.php ( 0.78 KB )
  31. /www/wwwroot/h.sjds.net/config/console.php ( 0.23 KB )
  32. /www/wwwroot/h.sjds.net/config/cookie.php ( 0.56 KB )
  33. /www/wwwroot/h.sjds.net/config/database.php ( 2.48 KB )
  34. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /www/wwwroot/h.sjds.net/config/filesystem.php ( 0.61 KB )
  36. /www/wwwroot/h.sjds.net/config/lang.php ( 0.91 KB )
  37. /www/wwwroot/h.sjds.net/config/log.php ( 1.35 KB )
  38. /www/wwwroot/h.sjds.net/config/middleware.php ( 0.19 KB )
  39. /www/wwwroot/h.sjds.net/config/route.php ( 1.89 KB )
  40. /www/wwwroot/h.sjds.net/config/session.php ( 0.57 KB )
  41. /www/wwwroot/h.sjds.net/config/trace.php ( 0.34 KB )
  42. /www/wwwroot/h.sjds.net/config/view.php ( 0.82 KB )
  43. /www/wwwroot/h.sjds.net/app/event.php ( 0.25 KB )
  44. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /www/wwwroot/h.sjds.net/app/service.php ( 0.13 KB )
  46. /www/wwwroot/h.sjds.net/app/AppService.php ( 0.26 KB )
  47. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /www/wwwroot/h.sjds.net/vendor/services.php ( 0.14 KB )
  53. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /www/wwwroot/h.sjds.net/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /www/wwwroot/h.sjds.net/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /www/wwwroot/h.sjds.net/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /www/wwwroot/h.sjds.net/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /www/wwwroot/h.sjds.net/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /www/wwwroot/h.sjds.net/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /www/wwwroot/h.sjds.net/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /www/wwwroot/h.sjds.net/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /www/wwwroot/h.sjds.net/app/Request.php ( 0.09 KB )
  84. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /www/wwwroot/h.sjds.net/app/middleware.php ( 0.25 KB )
  86. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /www/wwwroot/h.sjds.net/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /www/wwwroot/h.sjds.net/route/app.php ( 1.72 KB )
  100. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /www/wwwroot/h.sjds.net/app/controller/Index.php ( 4.81 KB )
  104. /www/wwwroot/h.sjds.net/app/BaseController.php ( 2.05 KB )
  105. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /www/wwwroot/h.sjds.net/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /www/wwwroot/h.sjds.net/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /www/wwwroot/h.sjds.net/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /www/wwwroot/h.sjds.net/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /www/wwwroot/h.sjds.net/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /www/wwwroot/h.sjds.net/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /www/wwwroot/h.sjds.net/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /www/wwwroot/h.sjds.net/runtime/temp/c1d6e8c94b2c2fa10e259903674c804d.php ( 8.11 KB )
  140. /www/wwwroot/h.sjds.net/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000610s ] mysql:host=172.18.0.4;port=3306;dbname=h_sjds;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000803s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000534s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000386s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000664s ]
  6. SELECT * FROM `set` [ RunTime:0.000343s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000689s ]
  8. SELECT * FROM `article` WHERE `id` = 572696 LIMIT 1 [ RunTime:0.000472s ]
  9. UPDATE `article` SET `lasttime` = 1794078312 WHERE `id` = 572696 [ RunTime:0.001861s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 65 LIMIT 1 [ RunTime:0.000393s ]
  11. SELECT * FROM `article` WHERE `id` < 572696 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000489s ]
  12. SELECT * FROM `article` WHERE `id` > 572696 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000464s ]
  13. SELECT * FROM `article` WHERE `id` < 572696 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000584s ]
  14. SELECT * FROM `article` WHERE `id` < 572696 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000716s ]
  15. SELECT * FROM `article` WHERE `id` < 572696 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.000681s ]
0.089594s