news 2026/10/7 1:28:27

S7-200 SMART闭环步进控制:从失步检测到位置校验的完整指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
S7-200 SMART闭环步进控制:从失步检测到位置校验的完整指南

搞步进控制的兄弟应该都清楚,S7-200 SMART本身并不神秘,Q0.0、Q0.1两路100kHz高速脉冲输出,配合STEP 7-MicroWIN SMART里的运动控制向导,就能把一台两相步进电机转得明明白白。前面四篇我把基础玩法过了一遍:脉冲输出、方向控制、回零点、位置寄存器,基本是开环状态下的定位套路。这一篇我准备收个尾,聊点真正能上设备的进阶内容——闭环步进加S7-200 SMART,把“发出去多少脉冲”和“实际走到的位置”对起来,做成一套丢了步能自己发现、甚至能自己补的定位系统。

这套东西一做,基本就是小型单轴设备的标配了。适合设备厂电气工程师、调试人员、维修电工,也适合正在自学PLC带步进的入门朋友。你不需要懂太深的伺服理论,但最好先把前面几篇的基本接线和向导组态过一遍。如果零基础,这篇的硬件部分和向导配置也可以直接照抄,我会把每一步为什么这么做讲清楚。

1. 为啥第五篇要讲闭环步进:从“发脉冲”到“看反馈”

1.1 开环步进在高速和重负载下的“失步”痛点

开环步进的控制逻辑很简单:PLC发多少个脉冲,驱动器和电机理论上就走多少步。可现实里,电机不是理想器件——启动频率太高会丢步,加减速太陡会丢步,负载突然增大也会丢步。最难受的还不是丢步本身,而是丢步之后系统“不知道”。这一秒丢了几百个脉冲,下一秒继续发脉冲,最终产品的位置就偏了,而且这种误差不会自动消失。

我在现场见过太多这种问题:贴标机标签越贴越歪,点胶机胶点位置漂移,送料机构偶尔停错位置。操作工和维修工往往先怀疑机械,重新调同步带、紧连轴器,折腾半天也没用。实际上多半是高速段丢步或者启动瞬间堵转,位置误差一点点累积起来的。开环步进在低速轻载下很稳,一旦速度上去或者负载波动变大,问题就全暴露了。

所以第五篇我不打算继续讲怎么“发好脉冲”,而是讲怎么“看反馈”。把步进电机从开环升级成带位置反馈的闭环方案,让系统能实时知道电机轴到底转到了哪里。

1.2 闭环步进的基本原理:编码器、驱动器与PLC的职责划分

闭环步进和普通步进的硬件区别,主要在于电机尾部多了一个编码器,同时驱动器换成了带闭环算法的型号。现场用得比较多的有雷赛DM3E系列、迈信、正运动等,不同厂家原理几乎一样:驱动器接收PLC的脉冲指令,同时读取电机轴编码器反馈的位置,两者偏差大时,驱动器内部会额外输出电流把位置追回来,并在超出纠偏能力时给出报警信号。

很多第一次接触闭环步进的朋友会问:PLC要不要参与闭环控制?答案是否定的。S7-200 SMART的扫描周期一般在几毫秒到几十毫秒,做电机级的闭环实时性完全不够。闭环步进的PID纠偏是驱动器内部完成的,微秒级响应,PLC根本插不上手。PLC真正要做的,是两件事:一是通过报警输入接收驱动器“失步/超差”信号,二是如果需要更高可靠性的位置校验,再外接一个编码器回PLC的高速计数器,用指令位置和实际位置做比对。

这里必须说清楚:常见的闭环步进驱动器,编码器反馈是接回驱动器自己的,并不输出给PLC。如果你想在PLC侧做二次位置校验,只有两条路:一是选带编码器分频输出或位置比较输出功能的驱动器,二是干脆在丝杠末端、同步带轮等机械终端外加一支编码器接到PLC的HSC高速计数器。第一种方案最省事,第二种更接近真实机械位置,两种我都在项目里用过,后面会细说。

1.3 哪些设备真的需要闭环步进,哪些是浪费钱

闭环步进比开环步进贵一两百块,不是所有设备都需要上。我做方案时会先评估负载类型:如果设备是恒定的轻负载,速度又不高,开环完全够用,上闭环就是浪费。但如果设备存在负载突变、频繁启停、高速移动、长期运行精度要求高,或者调试阶段已经出现过失步,那就果断上闭环,省得后期设备拉到客户现场出问题,差旅费都比驱动器贵。

还有一个更典型的场景:设备上用同步带传动。同步带本身有弹性,电机会有堵转和瞬时丢步,再加上皮带打滑,电机轴编码器不一定能反映工作端的位置。这种情况下,光靠闭环步进驱动器还不够,最好在同步带末端(比如滑台侧)加装一支编码器,反馈到S7-200 SMART的高速计数器,做最终位置校验。我在一个自动上料机构上就是这么干的,效果很好,后面第五节会给出程序思路。

2. 硬件准备与接线:闭环驱动器、信号线、地线一个不能省

2.1 选型清单:从PLC型号到驱动器参数一次定清楚

先说PLC。S7-200 SMART家族里,只有晶体管输出型才能输出高速脉冲,比如ST20、ST30、ST40、ST60。继电器输出的SR系列不能直接控制步进,只能加扩展或换CPU,这是我见过最多的选型返工。选型时记得留两路以上高速输出,Q0.0、Q0.1各是一路,一路给步进,另一路以后给变频器模拟量或第二根轴用。

驱动器方面,闭环步进驱动器要确认三件事:输入脉冲频率够不够(一般100kHz以上都够)、是否支持脉冲+方向模式、报警输出是光耦还是继电器。雷赛DM3E系列我用得最多,有支持1000线编码器的型号,细分、电流、电子齿轮都可以在驱动器面板或者上位机里调。接线前一定把驱动器手册的“控制信号接口”章节看一遍,很多坑都出在这里。

电机要跟驱动器匹配,主要是电流和编码器线数匹配。电流不匹配会烧电机或扭矩不足;编码器线数一般1000线够用,再高对低速平稳性有好处,但价格也上去了。如果你是改造老旧设备,原有电机尾轴没有编码器安装位,那得换电机,这个成本要提前算进去。

2.2 接线示例:脉冲、方向、使能和报警输入的正确接法

下面是我在设备上实测过的接线方式。S7-200 SMART是源型输出,输出点导通时给的是24V高电平,所以和步进驱动器的共阴极(脉冲负极接0V)接法最匹配。具体看表格:

信号名称PLC侧驱动器侧说明
脉冲输出Q0.0PUL+Q0.0导通时输出24V高电平脉冲
脉冲公共端0VPUL-接开关电源0V,形成回路
方向输出Q0.2DIR+方向信号用普通输出点即可
方向公共端0VDIR-接开关电源0V
驱动器报警输出I0.0ALM+ / ALM-报警信号回PLC做失步检测
高速计数器A相I0.0(HSC0)编码器分频输出A+/A-如果用外部编码器做二次校验
高速计数器B相I0.1(HSC0)编码器分频输出B+/B-同上

注意:不同品牌驱动器对“共阳”“共阴”的定义不一样,千万别只看名字。S7-200 SMART的源型输出,导通时输出高电平,所以要和驱动器手册里的“共阴极接法”对应。如果手头驱动器只支持共阳极输入,最好加光耦隔离模块做电平转换,不要硬接。

ENA+和ENA-这个信号,是很多人第一次接线的重灾区。大多数驱动器的使能信号默认是“悬空或低电平使能”,也有驱动器是高电平使能。如果你不需要PLC控制电机锁死/松开,最简单就是按出厂默认,不接ENA。需要控制时,务必确认驱动器是高电平使能还是低电平使能,接反了会出现两种诡异现象:一是电机完全锁死,脉冲发过去转不动;二是电机轻飘无力,根本不受控。

报警输出ALM端子上,多数驱动器是光耦集电极开路输出,需要串一个上拉电阻到24V再进PLC输入。我习惯用2.2kΩ左右的电阻做上拉,然后接I0.0。接线前先用万用表量一下报警输出信号在正常和报警两种状态下的电平变化,确认OK再锁端子,别一上来就信图纸。

2.3 电源和地线:控制精度不稳,一半以上是电源和接地问题

步进系统对电源稳定性很敏感。24V开关电源要给PLC、驱动器控制信号、传感器一起供电,容量建议留至少30%余量。驱动器主电源最好单独供电,或者用大功率开关电源,不要和PLC共用一组细线。我见过一台设备上,脉冲信号和电机功率线走同一个线槽,结果电机一转,PLC偶尔就误触发一次报警,脉冲干扰得一塌糊涂。

接地方面,S7-200 SMART的M端、开关电源0V、驱动器信号地一定要共地,否则光耦回路没有一个共同的电位参考点,脉冲信号根本传不过去。屏蔽层要单端接地,一般是在PLC控制柜这一端接地;信号线用双绞屏蔽线,脉冲线和方向线各用一对双绞,不要和电机线、动力线平行走线。这个细节说一百遍都值得,因为现场偶发干扰最难查,而“线走得规矩”往往能省掉后面几天的排查时间。

3. 向导配置与高速计数器组态:把轴组态一次做对

3.1 运动控制向导里的关键参数:速度、加减速和位置寄存器

S7-200 SMART的轴控制,强烈建议用软件自带运动控制向导去组态,不要自己写PLS指令硬怼。打开STEP 7-MicroWIN SMART后,左侧向导里选择“运动控制”,按提示配置轴0。选择脉冲输出为Q0.0,方向输出可以指定为Q0.2。这里要理解两个核心参数:

最高速度:S7-200 SMART的Q0.0最大输出100kHz,所以向导里的最高速度不能超过100000脉冲/秒。如果按100000来设,实际生产中建议只用到80%,也就是80000,留一点余量,避免PLC和驱动器都在极限频率下工作。

加速时间/减速时间:向导里的单位是毫秒,意思是“从0加速到最高速度需要多长时间”。这个参数不是随便填的,填太小启动会丢步,填太大设备效率降下来。一般带中等惯量负载,从0到100000脉冲/秒(约对应电机几百转)建议加速时间300~500ms,减速时间200~300ms。负载重、皮带传动、行程长的情况下,加速时间拉长到800ms也不奇怪。实际调参时,听电机声音、看驱动器电流、观察有没有丢步报警,一点一点收时间。

向导里还会让填“位置寄存器”。S7-200 SMART的轴位置是32位值,默认单位是脉冲数。如果你习惯用毫米,可以设“比例值”,用“每转脉冲数×丝杠导程”的关系折算。不过我在现场更常用另一种做法:全部按脉冲数编程,只在触摸屏显示层换算成毫米,这样PLC里逻辑简单,不容易出小数点误差。第五篇程序里我也是全程按脉冲数处理。

3.2 回原点与软限位:不设参考点的定位系统都是定时炸弹

很多设备调试时图省事,上电直接给一个绝对位置就开始跑,一出问题位置就全乱了。回原点这件事,越是做闭环越要重视。运动控制向导里可以选择回零方式:正反向回零、限位开关回零、零点脉冲回零等。我常用的做法是:配一个原点接近开关接I0.1,向导里选“限位+零点脉冲”方式,这样回零精度比较高,重复精度能做到一两个脉冲以内。

向导中软限位参数建议一定要设。软限位是在PLC内部把轴的可运行范围限制住,和硬限位开关配合使用。用负软限位、正软限位两个位置参数,只要程序里调用的目标位置超出范围,向导会自动拒绝或停止。这个功能对调试阶段特别友好,防止你手一抖输入一个大数值,机械直接撞到行程尽头。

反冲补偿这个参数,很多人直接跳过,但如果你用的是丝杠传动,反向间隙是实际存在的。向导里的反冲补偿设为0,容易在换向时出现误差;设太大又会过冲。我的经验是先用百分表实测丝杠反向间隙,按实测值的一半先填进去,再跑一个“正走一点、反走一点回到原点”的循环,看实际误差调整。

3.3 高速计数器HSC0组态:外部编码器反馈怎么接

如果你要做PLC端二次位置校验,就需要在向导里额外组态高速计数器。S7-200 SMART的HSC0可以接AB相编码器或单相脉冲,我用HSC0接AB相编码器时,A相接I0.0,B相接I0.1(HSC0输入端子固定,不能随便换)。组态模式选择“正交1x”或“正交4x”,4x分辨率更高但计数频率上限也受影响,项目中一般选4x。

注意外部编码器的分辨率要和机械行程匹配。比如你选1000线编码器,4倍频后每转4000个计数,如果丝杠导程4mm,那每个计数对应的长度是4/4000=0.001mm,这个精度已经高于大多数设备的机械重复精度了。HSC0的计数频率上限够用,但脉冲线尽量短,不要超过3米,长了信号波形畸变,计数会乱跳。

高速计数器的数值是32位有符号整数,有正有负,回零时可以通过指令清零。这里有个小坑:HSC0一旦配置成正交计数模式,普通数字量输入I0.0/I0.1就不能当普通输入用了,编程时要留意,不要把原本接在I0.0的按钮逻辑也挂在这两个点上。

4. 程序逻辑与失步检测:从点动回零到位置校验

4.1 主流程设计:上电使能、手动、回零、自动四段式

写程序之前先把流程理顺。一套完整的单轴定位程序,至少要包含四段:上电初始化(调用AXIS0_CTRL使能轴)、手动模式(点动和微调)、回原点(搜索参考点)、自动模式(绝对定位或相对定位)。我习惯用M位做模式标志,M0.0=手动模式,M0.1=回零模式,M0.2=自动模式,三段互锁,避免同时触发。

首扫描周期调用AXIS0_CTRL时,MOD_EN输入要置1,否则后面所有轴指令都不执行。如果轴报警(比如驱动器ALM信号变成ON),要把MOD_EN复位再重新置1,才能清除轴故障状态。这个细节在S7-200 SMART的文档里写得比较隐晦,实际调试时经常有人卡住:轴怎么都不动,检查发现MOD_EN被报警状态拉掉了。

手动模式用AXIS0_MAN(手动点动)子程序,给RUN信号和速度值,JOG_P正转脉冲,JOG_N反转脉冲。手动速度我一般设一个慢速点动值和一个快速点动值,分别对应“微调对位”和“快速移动”两个档位。别小看这个,调试时频繁点动对位,速度没分开的话效率低到你抓狂。

4.2 位置校验核心逻辑:指令位置与编码器实际位置的偏差计算

这是本篇最关键的程序段。思路很简单:向导输出的C_POS是PLC“认为”轴应该到的位置,高速计数器HSC0是外部编码器“实测”机械端位置。两者本来应该完全相等,只要有偏差,说明中间某个环节丢了步、打了滑或者机械出了问题。

为了可比,先把两个数值统一到同一个单位。C_POS默认是脉冲数,HSC0计数也是脉冲数,但两者可能不是一比一的关系——比如电机通过减速机带丝杠,外部编码器装在丝杠尾端,那电机每转N个脉冲,编码器才转1圈。所以程序里要做一次比例换算:实际位置 = HSC0计数值 / 减速比系数,或者反过来把C_POS乘系数。比例系数在调试初期先用理论值,再用百分表实际标定修正。

伪代码逻辑如下,实际操作时照这个框架写梯形图或STL:

每100ms执行一次位置校验: 指令位置 = 读取AXIS0_CTRL输出的C_POS 实际位置 = 读取HSC0当前计数值 * 换算系数 偏差 = 指令位置 - 实际位置 如果 绝对值(偏差) > 允许偏差阈值: 连续超差次数 = 连续超差次数 + 1 否则: 连续超差次数 = 0 如果 连续超差次数 > 3: 调用AXIS0_STOP立即停止轴 置位报警标志M0.5 输出Q0.4报警灯 = 1

允许偏差阈值怎么定?我一般取“一个完整传动周期的误差”的三分之一到四分之一。比如丝杠导程4mm,减速比10,编码器装丝杠尾端,那理论上一个电机脉冲对应的机械位移要综合计算,偏差阈值先按0.05mm折算成编码器计数,现场再根据实际跑位精度放宽或收紧。太松了检测不到真丢步,太紧了正常加减速的微小抖动也会误报警。

连续超差判定次数设为3,是为了滤掉偶发的干扰毛刺。S7-200 SMART的扫描周期是毫秒级,100ms校验一次足够及时,又不会太频繁导致加减速时的正常回差误触发。如果你用的是带编码器分频输出的闭环驱动器,把分频信号接回HSC0就能直接做同样逻辑,不需要外装编码器,接线更省。

4.3 失步后的处理策略:停机报警还是自动补差

失步检测到了之后,怎么处理是分场景的。如果设备精度要求不高,停机报警让操作工来处理即可,代码最简单。如果要求高一些,可以做成自动补差:检测到偏差后,先记录偏差方向和大小,把PLC当前目标位置改为“原目标位置+偏差”,让轴继续运动到修正后的目标,尽量把成品追回来。

自动补差看起来很香,但风险也在:如果丢步原因是机械卡死或过载,继续补差只会把机械顶坏。所以我在现场只对轻微丢步(偏差小于设定阈值的5倍)启动自动补差,超过这个范围直接停机报警。补差逻辑要用M0.6标志位防止反复触发,补完之后还要把偏差清零,避免下一次循环又误判。

报警输出这块,我习惯分两级:Q0.4是运行报警灯,M0.5是内部报警标志。触摸屏上做一个报警页面,显示“位置偏差超限”“驱动器报警”“回零超时”三个状态。这样操作工不用看PLC,直接看触摸屏就知道机器发生了什么问题,维修效率能高不少。

4.4 防重复执行与复位逻辑:一个容易被忽视的编程陷阱

自动模式里调用AXIS0_GOTO时,要注意触发方式。如果用一个持续ON的M位去调用绝对定位,程序每个扫描周期都会执行一次GOTO指令,可能导致目标位置不断被重写,轴要么不动,要么来回抖动。正确做法是用上升沿触发:按钮按一下,M0.3产生一个扫描周期的脉冲,在这个脉冲里调用一次GOTO,然后马上复位。

故障复位逻辑同样要养成用上升沿的习惯。报警后,按下复位按钮,先确认报警源已经消失(比如驱动器报警已经复位、偏差已经被清零),再把报警标志M0.5复位、允许再次启动。顺序反了会出现“按下复位系统还是报警”的假性故障,实际是复位条件不满足。

还有一个我踩过的坑:M0.0手动模式、M0.1回零模式、M0.2自动模式之间切换时,先要把正在执行的轴运动停止。如果不停止就直接切换模式,旧模式的运动指令可能还在后台执行,新模式的指令又来了,轴会表现得很不稳定。我每次切换模式前,都先调用一次AXIS0_STOP并等Done信号为真,再做下一步。

5. 现场问题排查与调参经验:我已踩过的坑直接给你

5.1 常见问题速查表:先对号入座再动手

我整理了一张现场高频问题对照表,基本覆盖了S7-200 SMART控制步进电机的大部分故障:

现象可能原因处理方式
电机完全不动轴未使能、ENA没接对、脉冲极性反检查MOD_EN和驱动器使能状态,确认脉冲正负接线
电机动但方向反方向信号极性反调换DIR+和DIR-,或改程序里的方向位
只朝一个方向转方向信号没有变化检查Q0.2输出和驱动器DIR接线,万用表测电平
高速丢步加减速时间太短、速度超限拉长加速时间,最高速度降到80%
低速振动大步进电机低频共振提高细分、避开共振速度,或使用闭环抗共振功能
位置越来越偏机械打滑、编码器松动、电子齿轮比错查同步带/连轴器,重新标定比例系数
偶尔多走一步信号线受干扰双绞屏蔽线、屏蔽层单端接地、走线远离动力线
驱动器报警失步过载、扭矩不足、位置偏差超限检查负载、电流设置、加减速时间

排查时有个原则:先机械后电气,先简单后复杂。别一上来就怀疑PLC程序,先确认电机转起来没有、方向对不对、有没有报警灯,再往深了查。我见过太多人程序改了一遍又一遍,最后发现是电机联轴器松了,白折腾一上午。

5.2 脉冲频率、细分与电子齿轮比:先把数学关系算明白

步进控制的参数调整,本质上是几个数之间的换算关系:电机每转所需脉冲数 = 电机固有步数 × 驱动器细分数。两相步进电机固有一圈200步,如果驱动器细分设为8,那一圈就是200×8=1600个脉冲,电子齿轮比这部分一般设成1:1或按驱动器说明调整。

S7-200 SMART最高输出100kHz,直接决定了电机的最高转速:最高转速(r/min) = 100000 × 60 ÷ 每转脉冲数。拿上面的例子算,1600脉冲/转时最高转速3750r/min。听着很高,但步进电机的转矩随转速升高很快衰减,实际一般也就用到300~600r/min。细分设得越大,同样速度下需要的脉冲频率越高,所以如果为了低速平稳性把细分调到64,那最高速度就只能降到约937r/min,再高PLC发不出来。

调试时我会先确定“需要的最高机械速度”,再倒推“需要的脉冲频率”,看是否超出PLC能力。比如要跑300mm/s,丝杠导程4mm,那电机转速=60×300/4=4500r/min,显然超了步进电机能力,必须加减速机。这一套换算在项目前期就要做完,不要等设备装好了再去调。

5.3 关于S7-200 SMART做运动控制的边界:什么活它能干,什么活不能接

写到最后想泼一点冷水。S7-200 SMART加闭环步进这套组合,做单轴定位、简单两点往复、点位控制非常成熟,性价比也高。但如果你要的是多轴联动插补,比如画圆弧、走斜线、电子凸轮、飞剪同步这类运动,S7-200 SMART的硬件架构就不太合适了——它的两路高速脉冲是各自独立的,没有轴组插补功能,做不了轨迹规划。碰到这种需求,老老实实换S7-1200/S7-1500配运动控制板卡,或者用独立的运动控制器。

另外,闭环步进再厉害,也只是把“电气控制系统”这一环节做扎实了。丝杠磨损、导轨间隙、安装偏斜、机械共振这些因素,编码器未必都能反映出来,尤其是编码器装在电机尾端时,它看不到丝杠和滑台的真实状态。所以外装编码器做终端校验,在长行程、皮带传动、高精度场合我真的建议大家都尝试一下,成本几百块,换来的却是设备长期运行的稳定性。

我个人在实际项目里最深刻的体会是:S7-200 SMART控制步进电机,程序部分其实占不了多少时间,真正花时间的,是接线规范、参数换算、现场调加减速和位置校验逻辑。你把这套闭环方案做顺了,后面再做第二根轴、第三根轴,无非是把Q0.0换成Q0.1、把HSC0换成HSC4,套路完全一样。最后再分享一个实用小技巧:调轴时把向导生成的状态字读到触摸屏上,轴有没有RUN、有没有报警、当前位置、当前速度一目了然;这会比在电脑上插着编程线调试方便得多。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/7 1:27:47

BMS开发为何离不开HIL?从电池建模到故障注入的完整测试指南

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

作者头像 李华
网站建设 2026/10/7 1:27:38

STM32原理图与PCB设计实战:从最小系统到布局布线避坑指南

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

作者头像 李华
网站建设 2026/10/7 1:27:03

DCDC电源模块PCB布局布线核心规范

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

作者头像 李华
网站建设 2026/10/7 1:26:46

2021蓝桥杯Java B组省赛第一场十道真题逐题精讲

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

作者头像 李华
网站建设 2026/10/7 1:26:44

高速PCB过孔与残桩:换层代价、背钻判断与信号完整性优化

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

作者头像 李华