DCS组态软件CCMStudio实战:DPU组态从点表到编译下装全解析
简介针对工业自动化与分散控制系统维护工程师而写的CCMStudio使用手册围绕南京科远NT6000V3A分散控制系统中数据处理单元的组态配置展开系统讲解离线组态、在线无扰下载、在线调试修改及组态文档上装/下装等核心操作。包体为单份doc格式手册压缩包大小1.44MB仅含1个文档便于快速下载查阅。目前已有253人学习/下载。手册内容按概述、用户界面、控制页组态过程、重要操作说明等模块分层展开既介绍软件界面、菜单与工具条也结合SAMA图功能块图形组态标准说明控制页配置流程在线模式下区分监视与非监视状态支持运行中实时调整与优化。同时覆盖系统诊断、报警管理、历史数据与实时数据监控等实用功能并对容易引发系统不稳定或安全风险的操作给出提醒。从基础概念到详细操作步骤均有覆盖适合需要掌握组态配置、优化生产运行效率的工程师对照查阅。1. DCS组态软件CCMStudio使用手册值不值读先从现场的一个问题说起做过DCS调试的人应该都有过这种经历现场测点都上来了画面也组好了但某个阀门就是按逻辑不动你翻遍操作员站看不到原因最后才发现问题出在DPU里的控制组态上。逻辑是错的还是没下装变量名对不上还是算法页根本没编译在没有任何提示的情况下DPU就是个黑匣子。我最早接触DPU组态时对着CCMStudio这个软件一头雾水直到把整个工程结构、点表、算法页、编译和下装流程走了一遍才算把这块硬骨头啃下来。这份《CCMStudio使用手册》解决的核心问题很简单让你知道如何在DPU侧正确地建立工程、录入点表、画控制逻辑、编译下装并且在线验证组态结果。它适合刚接手DCS维护的工程师、做电厂或化工项目调试的从业者以及想系统补DPU组态知识的自控专业学生。2. 工程建站与点表管理搭好地基才是组态的第一步2.1 工程、站、页三层结构先想清楚再动手CCMStudio这类DPU组态软件工程结构大体是三层工程Project、站Station/DPU、页Page。工程对应整个项目或一套机组站对应某一台DPU控制器页对应控制器下的具体算法组态页。很多新手上来就直接双击某页开始画逻辑结果变量跨页调用时找不到测点编译报一堆未定义错误根源就是没先看工程的层级关系。我的习惯是拿到工程文件后先建一个空的工程项目再按现场实际DPU数量建站站名直接沿用机柜内的DPU编号比如“DPU01”“DPU02”。页的命名则按功能分区来比如“FSSS_燃烧逻辑”“MCS_汽温控制”绝不随手叫做“Page1”“Page2”。命名乱后面找逻辑会折磨你到怀疑人生。表工程三层结构与命名建议层级对应实物命名建议典型问题工程一套系统/一台机组工程名与DCS项目对应直接复制旧工程改名内部站配置残留站一块DPU控制卡件DPU01、DPU02站编号与机柜不一致下装时连错控制器页DPU内的算法页功能号_名称页内逻辑过多编译慢且难排查2.2 IO点表的录入与批量导入写清测点和量程点表是整个组态的数据源头。你后面在算法页里拖出来的每一个模拟量、开关量本质上都是对点表里某一条记录的引用。所以点表建得对不对直接决定逻辑能不能编译通过、运行结果是否可信。点表录入的常规字段包括位号Tag、描述、数据类型AI/AO/DI/DO或内部变量、量程上下限、工程单位、通道地址、所属卡件号。模拟量输入必须把量程填准否则从现场来的4-20mA信号换算出来的工程值就是错的。比如一个压力测点量程是0-10MPa你写成了0-100kPa后面所有用这个点的PID、报警逻辑全都会跟着出错而且这种错误在逻辑上根本看不出来。批量导入时我一般先在Excel里把点表整理好再存成CSV导入。这里有个关键细节注意列顺序要和软件模板一致首行通常是字段名软件会按表头解析。如果导入后点表乱码大概率是编码问题——大多数Windows版软件认GBK而你用UTF-8保存了文件。Tag,Description,Type,RangeLow,RangeHigh,Unit,Channel,Card PT101,汽包压力,AI,0,10,MPa,AI01,DPU01 TE201,主汽温度,AI,0,600,℃,AI02,DPU01 ZV101,给水调节阀,AO,0,100,%,AO01,DPU01这段CSV是点表最小字段的示例。Type决定了这个点在算法页里是模拟量还是开关量RangeLow和RangeHigh影响工程值换算与报警判断Channel和Card则把物理通道映射到具体卡件上。逻辑说明导入工具按Tag列建立变量名后面算法页引用时必须与这里完全一致包括大小写和空格。参数说明留个心Channel列里“AI01”一般指第1块模拟量卡的第1通道具体编号规则要看手册里卡件寻址方式不同版本软件略有差异。如果你用的是厂家提供的点表模板不要自行增删列否则软件会因解析不到指定列而导入失败。2.3 硬件配置与DPU分配先连对卡件再谈逻辑点表录入完成后下一步是在硬件配置目录里把机架、卡件、DPU的分配关系确认一遍。这一步在时间紧时最容易被跳过但它决定了IO点表的通道地址对不对。在CCMStudio里硬件配置一般在“系统配置”或“硬件组态”节点下操作。流程大致是先添加DPU站再在站下添加IO卡件如模拟量输入卡、模拟量输出卡、开关量输入/输出卡最后把点表里的通道地址与卡件通道对应起来。常见做法是先看机柜内卡件的实际位置再照着背板接线图配卡件型号而不是直接在软件里随手放。我踩过的坑是某次项目赶进度硬件配置先配好后来现场换了一块不同型号的模拟量输入卡我没有同步更新软件配置编译能过但点表数据和实际通道全部偏差一个卡位查了整整一个下午。从那以后每次硬件变动我都强制自己先改配置再动逻辑。说白了硬件配置是点表的地基地基错位上层逻辑全白搭。3. 控制逻辑组态实战从SAMA图到可编译的算法3.1 算法页元素与布局功能块的三种基本连接方式控制逻辑在CCMStudio里通常以算法页SAMA图风格的形式呈现。算法页上的元素大致分三类输入引用块、功能运算块、输出目标块。输入引用块从点表里取数功能运算块做处理输出目标块把结果写到AO点或中间变量。搞清楚这三类块的连接关系你就能读懂绝大多数逻辑页。连线方向是从输入到输出单向流动但也有反馈回路比如PID输出回送、跟踪信号。画逻辑时我一般把输入块放在页面左侧、运算块居中、输出块放右侧不要跨线太多否则自己下个月回来看都头疼。另外每个功能块都必须有明确的名字或注释软件允许不写但现场调试时你就知道有多痛苦。功能块库一般包含模拟量处理滤波、补偿、限幅、连续运算PID、手操器、逻辑运算与或非、RS触发器、定时器等。SAMA图组态的一个优点是直观鼠标拖拽就能完成连接。但我建议你在连线前把逻辑关系在白纸上先画一遍哪怕简化版也行直接上软件里画返工率高得惊人。3.2 PID回路组态从画线圈到整定参数PID是最常见的连续控制功能块。以汽包水位调节为例你在算法页里要做的事是把水位变送器信号引到PID块的测量输入端把给水流量或给定值引到设定端PID输出再去控制给水调节阀的AO块。表PID功能块常用参数清单参数名含义现场常用设置注意事项PV过程变量输入端接AI点或补偿后信号测量信号要确认量纲与量程SP设定值输入端接操作员设定值或内部给定跟踪逻辑要提前设计OUT上限/下限输出限幅0-100%阀门安全开度要结合工艺比例带比例作用范围温度回路偏大液位偏小单位可能是百分比或增益积分时间消除余差量级为秒或分钟积分太弱调节慢太强震荡微分时间改善动态响应流量回路一般不用信号噪声大时慎用微分正/反作用控制方向选择加热回路为正作用接反了会投不上自动填参数时要结合工艺对象不要照搬别的回路。比如给水调节阀是气开还是气关、失气时阀门开还是关这些都会影响你填正反作用和输出限幅。组态软件本身不判断工艺安全它只按你的参数执行所以安全边界要靠你在组态时想清楚。信号跟踪的接法经常被忽略。PID从手动切自动的时候如果给定值不在当前测量值附近阀门会突跳。常见做法是把手动状态时的输出值跟踪到PID输出上或者把测量值跟踪到给定值上。CCMStudio里PID块通常有跟踪/保持输入端接一个逻辑量或手操器的自动状态位就能实现无扰切换。这块逻辑如果没接切自动那一刻阀门可能会横跳现场会被运行人员投诉的。3.3 顺控与联锁逻辑用几个基本逻辑块搭出启停保护除了连续控制DPU组态里大量用到逻辑块做联锁和保护。比如说给水泵的启动允许条件轴承温度正常、润滑油压正常、无电气故障这些开关量点用“与”逻辑串起来输出一个启动允许信号。逻辑块的使用要点在于区分“与”“或”“非”和RS触发器的应用场景。启动允许通常用“与”所有条件满足才允许跳闸条件常用“或”任一条件触发就动作而需要保持状态的场合用RS触发器置位端是跳闸条件复位端是手动复位按钮。常见做法是在算法页里留出“联锁测试”旁路开关比如一个逻辑块把跳闸条件引到旁路输入调试时可以先强制旁路信号在线验证逻辑动作是否正确再解除旁路。这样做的目的是避免直接短接真实保护点留下安全隐患。定时器块的用途也很典型比如“润滑油压低”不能立即跳闸需要延时确认3秒这时在逻辑中加一个延时断开定时器。定时器的时间参数写在功能块参数里单位一般是秒。注意定时器在编译后第一次下装时会从零开始计时在线下装时如果不想影响运行状态要提前确认定时器当前值状态。4. 编译检查与下装让组态从图纸变成运行程序4.1 编译的三种检查语法、连接、一致性算法页画完不等于能用必须经过编译。CCMStudio的编译动作一般分为语法检查、连接检查、一致性检查三个层次。语法检查看的是每个功能块本身参数是否完整、有没有越界连接检查看连线是否悬空、输入输出类型是否匹配一致性检查做的是跨页引用检查比如这一页用的变量名在点表里是否存在、类型是否一致。我一般会在编译前自查几个高频报错点功能块没有填完参数、输入输出引脚连线断开、变量引用了不存在的位号。编译器给出的报错信息经常是“变量未定义”或者“连接类型不匹配”你需要根据错误定位到具体页和具体块。定位方法一般是双击错误信息软件会跳到对应的算法页并把问题块高亮。如果双击没反应就在算法页里按变量名搜索。表编译检查项与常见报错对照检查类型常见报错示例处置思路语法检查功能块参数越界打开功能块参数表检查上下限与单位连接检查输入端无连接沿连线往回找确认输入引用是否放置连接检查数据类型不匹配模拟量接了逻辑量中间补转换块一致性检查变量未定义在点表里补建变量再重新编译一致性检查跨页引用冲突检查变量是否重复定义或类型不一致4.2 下装操作与在线切换冷下装与热下装的差别编译通过之后下装是真正影响现场的一步。CCMStudio下装时一般分冷下装和热下装增量下装。冷下装会把DPU里的旧程序全部停掉重新装载新程序输出会复归过程参数可能丢失热下装则只下装修改过的页或功能块尽量保持运行状态。选哪种取决于现场允许不允许中断。对运行中的装置进行在线修改时我一般先做这些事备份当前工程、记录正在运行的参数值、确认操作员站处于远程手动状态。然后才考虑在线下装。在线下装并非百分百无扰某些功能块在装载瞬间还是会瞬间复归比如定时器、计数器和一些有内部状态的逻辑块。所以涉及联锁逻辑修改时务必确认保护是否被旁路或者是否具备在线下装的条件。下装完成后还差一步容易被忽略核对DPU里的运行版本与工程版本是否一致。有些工程师改完逻辑只编译不下装过了几天回头看现场运行的结果和图纸不一致还以为是逻辑错了其实是版本不一致。我一般会在下装完成后去DPU状态页或者在线监视画面里核对版本号和编译时间确认一致才离开现场。5. DPU组态避坑常见问题与排查记录5.1 编译报错但定位不到问题点先查变量名再查算法页现象编译提示“变量未定义”双击错误信息却跳不到具体位置页面多时翻半天找不到。原因最常见的不是逻辑画错而是变量名不一致。例如点表里的位号带了下划线算法页输入块里少打了一个字符或者大小写不一致软件对大小写敏感。还有一种情况是变量没有建在点表里而是被某页当作临时变量用编译器找不到它的定义。解决先打开点表用文本搜索功能搜一下报错的变量名确认是否存在且拼写一致。如果点表里存在再在算法页里重新引用该变量删掉旧的输入块重拖一次。变量名涉及的字符尽量统一用大写字母避免中英文空格混入的玄学问题。5.2 点表导入后数据乱码或列错位编码、表头、分隔符三连坑现象CSV导入点表后中文说明全是乱码或者“描述”列的内容跑到了“量程”列数据张冠李戴。原因乱码基本是文件编码问题Excel默认存成UTF-8-CRS或本地编码而导入工具按GBK解析列错位一般是分隔符问题中文逗号与英文逗号混用导入工具把字段切错了。解决统一按模板另存为带逗号分隔的CSV文件注意选“CSV UTF-8”或“CSV逗号分隔”时要相对照软件支持的编码。拿不准时先用两三行数据试导入成功后再导入全量。从那以后我做点表导入每一批都先试导再全量再没翻过车。5.3 在线下装后输出跳变或参数丢失跟踪状态没处理干净现象在线下装完成后某个AO输出瞬间跳到0或者PID块里的整定参数被重置成默认值。原因在线下装虽然保持了运行但部分功能块被重新初始化输出值和内部参数被装载成了组态初始值。尤其是PID块积分值和输出保持功能如果没有外部跟踪信号装载瞬间输出会复归到0。解决下装前把回路切到手动模式并设置输出的安全预设值。如果现场工艺不允许输出中断则应先检查该功能块是否配置了初始化保持或跟踪输入把操作员站的手动状态接入跟踪端。另一个土办法是下装时让工艺人员配合暂时把调节阀打在就地开度下装完成后再切回远方自动。5.4 算法页保存失败或页面卡顿页面元素过多是元凶现象某页逻辑较多每次保存都要等十几秒偶尔直接提示保存失败必须关掉重开。原因单个算法页内的功能块和连线数量超过了软件稳定运行的合理范围尤其是大量跨页引用和文本注释叠加时页面数据结构变大保存性能急剧下降。解决把一个几百块的大页拆成多个功能页页与页之间用变量名传递数据不要图省事全都画在一页。拆页后不仅保存流畅编译定位错误也更精确。这个动作也能让图纸的可读性好很多后续维护的人会感激你。6. 在线监视与数据验证把组态结果跑起来看进入在线模式之后CCMStudio能看到的不只是信号状态还能把每个功能块的中间变量拉出来监视。我的习惯是从输出端往回查先看阀门输出块的实际输出值再倒着找它的上游PID输出、测量值、设定值一步步定位偏差出在哪个环节。这种“追热点”的方式比满页面乱点高效得多。做联锁逻辑验证时强制功能要慎用。对某个数字量测点做强制后一定要在验证完成后及时解除并在工作记录里写明强制点位和时间。我曾经见过现场留有强制点导致保护失效的情况那已经不是组态问题而是管理问题。从那以后我每次离开在线监视画面都强制走一遍“强制点清空检查”确认没有遗漏才放手。希望这份CCMStudio的拆解过程能帮你在DPU组态这件事上少走弯路也愿你在现场维护时遇到的每个“黑匣子”都能被这批基本功打开。本文还有配套的精品资源点击获取

相关新闻

多光束干涉透射条纹的MATLAB仿真:从爱里函数到反射率与精细度

多光束干涉透射条纹的MATLAB仿真:从爱里函数到反射率与精细度

简介:面向物理光学与光电信息类专业学习者的Matlab光学仿真资源包,围绕多光束干涉中不同反射率对透射光条纹强度分布的影响展开,可复现教材图4.3所示曲线,适合课程实验与理论验证。压缩包共4个文件、约77KB,包含Matlab…

2026/10/18 19:26:21 阅读更多 →
电商数据采集遇加密参数拦截?JS逆向还原动态签名完整实战

电商数据采集遇加密参数拦截?JS逆向还原动态签名完整实战

1. 项目背景与核心思路拆解1.1 这个项目到底在解决什么问题先说结论:这套内容面向的,是“采集某电商平台商品数据时,遇到请求参数被加密签名拦截”这一类问题。具体表现就是,你按照常规方式构造 HTTP 请求,带上正常的 …

2026/10/18 19:26:21 阅读更多 →
抢票脚本实战:拆解接口风控与滑块绕过

抢票脚本实战:拆解接口风控与滑块绕过

简介:面向大麦平台演出票抢购用户,这套自动化脚本基于Selenium打开浏览器完成登录并模拟真实购票流程,适合有一定Python基础、想摆脱手动刷新和排队等待的读者。压缩包共18个文件,大小约1.08MB,核心为8个py源码文件&am…

2026/10/18 19:26:21 阅读更多 →

最新新闻

Flink有界流与无界流:核心区别、运行时行为差异与选型避坑指南

Flink有界流与无界流:核心区别、运行时行为差异与选型避坑指南

1. 从一个反直觉的现象说起:为什么批处理跑得好好的,换成流处理就出问题刚接触 Flink 的人,十有八九会在某个时刻被一个看似简单的问题绊住:我明明写的是同一套算子逻辑,为什么换成流模式跑,结果要么迟迟不…

2026/10/19 3:14:03 阅读更多 →
Hadoop期末复习全攻略:HDFS、MapReduce与YARN核心考点精讲

Hadoop期末复习全攻略:HDFS、MapReduce与YARN核心考点精讲

1. 这门课到底在考什么:从一张复习卷看Hadoop知识体系的全貌每年到了期末季,总有一批同学在群里哀嚎:“Hadoop这东西,课上听懂了,一到做题就懵。”我当年带过几届大数据方向的课程助教,也帮不少朋友梳理过复…

2026/10/19 3:14:03 阅读更多 →
Halcon基于形状的模板匹配:原理、参数调优与实战经验

Halcon基于形状的模板匹配:原理、参数调优与实战经验

做视觉项目这些年,经常碰到有人问我:Halcon 里做定位用哪个方法最稳?我的回答往往不是特征点,也不是深度学习,而是那个看起来有点“老派”的——基于形状的模板识别。尤其当你面对的是低纹理的金属件、注塑件&#xff…

2026/10/19 3:14:03 阅读更多 →
基于PSO的LLC变换器PI参数自动寻优MATLAB仿真项目解析

基于PSO的LLC变换器PI参数自动寻优MATLAB仿真项目解析

简介:本资源为基于MATLAB的PSO-PID控制器参数优化实现工程,面向控制工程初学者、自动化专业学生及需要摆脱人工试凑整定PID参数的开发人员。压缩包内共3个文件,其中2个m脚本分别实现粒子群优化主程序与PID参数求解逻辑,1个mdl模型…

2026/10/19 3:14:03 阅读更多 →
SenseNova-U1.5-8B-MoT-pose-bf16完全介绍:跑在Apple Silicon上的开源AI姿态迁移模型是什么

SenseNova-U1.5-8B-MoT-pose-bf16完全介绍:跑在Apple Silicon上的开源AI姿态迁移模型是什么

【免费下载链接】SenseNova-U1.5-8B-MoT-pose-bf16 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/SenseNova-U1.5-8B-MoT-pose-bf16 点击查看 免费下载 SenseNova-U1.5-8B-MoT-pose-bf16 是一款跑在 Apple Silicon(M 系列芯片&#xff0…

2026/10/19 3:14:03 阅读更多 →
AI可复现性挑战:固定随机种子、锁定环境,让训练结果稳定复现

AI可复现性挑战:固定随机种子、锁定环境,让训练结果稳定复现

1. 从一次“幽灵复现失败”说起:到底什么是AI的可复现性挑战前阵子我把一台GPU服务器上的旧训练任务重新跑了一遍,用的确实是当时的代码、当时的数据文件、当时的依赖环境,结果AUC从0.713变成了0.704。当时我的第一反应不是“代码写错了”&am…

2026/10/19 3:13:03 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →