news 2026/10/7 1:38:42

S7-200 SMART步进电机包络控制:多段运动与加减速整定实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
S7-200 SMART步进电机包络控制:多段运动与加减速整定实战指南

写第四篇之前,先交代一下背景:这个系列写到现在,已经把 S7-200 SMART 控制步进电机的基础链路讲完了——从驱动器接线、PTO 高速脉冲输出,到运动控制向导的组态、手动回原点、单段定位。按理说,大部分设备到这一步已经能转起来了。但一进到真实产线就会发现,单段定位根本不够用:客户要的是"快速接近工件,慢速压到位,再快速退回",或者"左右来回送料不停顿"。这种多段变速、连续换向的需求,靠之前那套单段 GOTO 写法也能憋出来,但是程序又臭又长,停位还不准。第四篇就专门解决这个问题,核心是 S7-200 SMART 运动控制向导里的包络(Motion Envelope)功能,外加加减速整定、失步排查和低成本位置校验这些实战里绕不开的坑。

这篇适合已经跑通过基础定位、想在运动控制上再进一步的朋友。如果你还停留在"脉冲输出能转就完事"的阶段,看完这篇应该能把设备动作做得更有层次,也更稳。

1. 被工艺逼出来的多段运动:为什么单段定位在第四篇不够用了

1.1 单段定位的动作缺陷

单段定位的底层逻辑很简单:给一个目标位置和一个运行速度,PLC 自己计算加减速,到位置停下来。这在"从 A 点移动到 B 点"这种简单动作里没问题。但实际工艺往往不是匀速移动,而是分阶段走的。

举个我做过的例子:一台小型压装设备,要求滑台从原点出发,以 80mm/s 快速接近工件,距离工件 10mm 的位置降到 20mm/s,然后匀速压装到位,压装完成后以 100mm/s 快速退回原点。如果全用单段定位指令,要么只能按最低速度走全程,节拍慢得被生产吐槽;要么拆成三段,每段之间都有一个"减速到零、再重新加速"的过程,启动停止次数多,丝杠和联轴器承受的冲击也大,最关键的是三段定位的终点误差会累积,因为每段重新启动时的机械回差不一样。

包络就是为这种场景设计的。它把运动过程拆成多个段(Segment),每个段可以单独定义目标速度、移动距离或目标位置,段与段之间可以选择平滑过渡还是停下来换向。运动控制向导会把包络编译成一张参数表,运行时由 PLC 后台自动调度,不占用扫描周期去逐段计算。

1.2 独立包络和连续包络的差别

用向导建包络的时候,会看到一个选项:独立包络还是连续包络。这个决定必须一开始就想清楚,否则后面返工。

  • 独立包络:从当前位置开始执行,跑完最后一个段就停,整个包络结束。适合"快速接近→慢速工进→停"这种有明确终点、不需要自动接着跑下一个动作的场景。
  • 连续包络:多个包络之间可以不间断衔接,前一个包络的末尾速度直接作为后一个包络的起始速度,中间不停止。适合"往复送料""圆周分度后连续走多个工位"这类需要不停顿的循环。

这里有新手容易犯的理解错误:以为连续包络是"同一个包络里段数很多所以自动连续"。实际上,连续包络的"连续"指的是多个包络之间的连接关系,不是段之间的关系。单个包络内部的段与段之间,如果设置成不减速过渡,那是不停顿的;但如果段与段之间要求停下来改变方向,那就需要连续包络配合多个包络来做。

1.3 什么情况下别用包络

包络不是万能的,有些场景用了反而添乱。我的判断标准是三个问题:

  1. 运动过程是否有两个以上不同的目标速度段?
  2. 是否要求段与段之间不停顿?
  3. 是否需要在同一个自动循环里反复执行同一套轨迹?

如果三个答案都是否,就直接用单段定位,别上包络。比如只是一个简单的"按按钮走到固定位置停",用 AXISx_GOTO 就够了。包络的本质是把"轨迹规划"提前到组态阶段,换来的是运行时的自动调度,代价是灵活性下降——运行时不能随便改某个段的速度,要改就得重新下载组态。这一点在项目交付后尤其麻烦,客户明天说"速度再快一点",你总不能动不动就拿电脑过去改。

所以我的习惯是:工艺轨迹稳定、批量生产用的设备,大胆用包络;还在调试阶段、轨迹天天变的设备,先用单段定位把动作跑通,最后再固化成交给现场的包络版本。

2. 在 Micro/WIN SMART 里组态一个可用的包络:向导参数逐项拆解

2.1 进入运动控制向导后的第一步

打开 STEP 7-Micro/WIN SMART,在左侧项目树里找到"向导",双击"运动控制向导",会看到轴配置界面。S7-200 SMART 的晶体管输出型 CPU 最多能配置 3 个运动轴,分别对应 Q0.0、Q0.1、Q0.3 这三个高速脉冲输出点。继电器输出型不支持高速脉冲,这个在选型时就要确认,别等设备做完了才发现输出点带不动。

进入轴配置后,第一件事是设定"测量系统"。这里可以选择"脉冲"或"工程单位"。我的建议是:

  • 只做简单位置控制、不关心实际距离的项目,用脉冲就行,省得换算。
  • 涉及丝杠导程、同步带传动比、需要以 mm 为单位写程序的项目,务必选工程单位。

选工程单位后,向导会问你"电机转一圈需要多少脉冲"和"电机转一圈负载移动多少距离"。这两个参数算错了,后面的位置全是错的。举例:步进驱动器设 8 细分,两相步进电机步距角 1.8°,200 个整步转一圈,细分后每圈需要 1600 个脉冲;如果丝杠导程是 5mm,那就是"1600 脉冲/圈"配"5mm/圈",也就是 320 脉冲/mm。注意这里要按驱动器实际拨码开关设的细分来算,不同厂家细分的表示方式可能不一样,有的写"每转脉冲数",有的写"细分倍数",看手册核对。

2.2 加减速参数的默认值怎么定

向导里要求设置最大速度、启动/停止速度、加减速时间。很多人直接填默认值,然后现场一跑就失步。这三个参数不是随便填的,它们的物理意义是:

  • 启动/停止速度:PLC 输出脉冲的第一个频率和最后一个频率。步进电机在极低频率下扭矩很小,所以启动速度不能设太接近 0,一般 42 步进设 10~20 Hz 对应的速度,57 步进设 20~50 Hz 对应速度;工程单位下就看向导对应的 mm/s。设太低了电机反而容易在启动瞬间抖一下。
  • 最大速度:工艺需要的最高运行速度,但必须小于步进电机在当前负载下的最大不失步转速。后面第五节专门讲怎么测这个值。
  • 加减速时间:从启动速度加速到最大速度、再从最大速度减速到停止速度所需的时间。轻载取 0.2~0.4s,重载取 0.5~1s 起,后面根据实测再缩。

这三个参数在整个向导里是全局默认值,建包络时每个段还可以单独覆盖速度,但加减速时间一般沿用全局值,除非某个段特别短,比如只有 5mm 的移动距离,如果加减速时间太长,可能刚加速完就要减速,实际跑不出目标速度。

2.3 创建包络的完整操作顺序

在向导里选好轴之后,进入"包络"配置页。操作顺序我拆得很细:

  1. 点击"新建包络",给包络起个名字,比如"压装_快进-工进-退"。
  2. 选择包络类型:独立包络或连续包络。
  3. 添加段。每个段需要定义目标速度和目标位置。
    • 如果是第一段,目标位置一般是相对当前点的移动量。
    • 如果后面接着走,向导会默认累加位置,你要看清当前位置是"相对本段起点"还是"从原点起的绝对位置"。
  4. 每段可以设置"结束动作"。这里决定段与段之间是直接过渡到下一段,还是停下来。需要停下来换向时,段结束动作要选择"停止并等待下一个命令"或类似选项(具体表述看软件版本)。
  5. 全部段定义完,检查一下向导生成的轨迹预览,确认每段速度、位置没有逻辑冲突。
  6. 分配 V 存储区。向导会自动建议一个起始地址,原则是避开程序中已经使用的 V 区。我一般直接按建议地址,但会在程序里加注释,防止后期别人在 V 区乱放数据把这个存储区覆盖,否则会出现"程序看着没问题,跑起来位置偶尔乱跳"的诡异故障。

2.4 一个容易忽略的组态陷阱:方向信号的极性

包络组态里有一个"方向"相关设置,很多人跳过了,结果上电后电机往反方向跑。这个问题的根子在步进驱动器的方向信号逻辑和向导里定义的正方向不一致。

比如向导里定义位置增加是正方向,对应驱动器的 DIR 信号是某个电平;但你的机械安装恰好让这个方向的运动是反的。解决方法是固定一个原则:先用手动点动测试确认方向,再在向导里把"正方向"设置成和机械实际一致,不要让程序里去搞"反向补偿"那套。因为包络一旦涉及多个段,方向不一致会让你排查到怀疑人生。

3. 让包络按你的节奏运行:AXISx_RUN、CTRL 和完成位判断逻辑

3.1 向导生成的子程序各管什么

组态完成后,向导会在程序中生成一组轴子程序,名称类似 AXIS0_CTRL、AXIS0_RUN、AXIS0_GOTO、AXIS0_SEEK、AXIS0_LDPOS。这组子程序不调用是不生效的,很多人忘了在主程序里调用 AXIS0_CTRL,结果轴完全没有输出。

  • AXISx_CTRL:轴使能和状态监控。它必须每个扫描周期都调用一次,不能只在某个条件满足时调用。MOD_EN 输入为 1 时使能轴,为 0 时禁止一切运动。这里注意,CTRL 子程序的 EN 端要一直导通,掉电或断开会导致轴状态丢失。
  • AXISx_RUN:运行包络的子程序。RUN 输入一个上升沿启动指定的包络,启动后 Done 输出会在包络执行完成时置位。这是包络控制的核心。
  • AXISx_GOTO:单段定位指令,用于不需要包络的简单移动。
  • AXISx_SEEK:回原点查找指令。
  • AXISx_LDPOS:修改当前位置值。比如换模后想把当前位置重新定义为 0,用它。

3.2 AXISx_RUN 的触发方式:上升沿而不是长信号

这条非常重要,我见过太多人在这里栽跟头。AXISx_RUN 的 RUN 输入端应该用上升沿触发,不是一直给 1。如果你把启动按钮直接接到 RUN 上,按钮按下的整个扫描周期内 RUN 都是 1,向导内部会被重复触发,轻则包络不启动,重则轴动作错乱。

正确的做法是建一个"运行请求"标志位。按钮按下的上升沿把标志位置 1,把这个标志位接到 RUN 上;等 Done 置位后,在 Done 的上升沿里把标志位复位。这样保证每次包络运行之间,RUN 信号都能完整地经历"0→1→0"的过程。

我给一个典型的逻辑描述,用梯形图写出来大致是:

网络1: 启动按钮I0.1上升沿, 且包络未在运行(M10.0=0), 置位运行标志M10.1 网络2: M10.1 -> 调用AXIS0_RUN, Envelope输入写0(包络0), RUN输入接M10.1 网络3: AXIS0_RUN的Done输出M11.0上升沿 -> 复位M10.1, 置位"包络完成"M11.1

这里用 M10.0 作为"包络正在运行"的互锁位,防止在运行中再次触发;用 M11.1 作为完成标志去触发下一步动作,比如启动气缸、切换工位、报警提示。反正记住一个原则:包络启动靠边沿,完成判断靠 Done 的上升沿,运行中要互锁。

3.3 多个包络连续执行的调度写法

实际项目经常要按顺序跑包络 0、包络 1、包络 2。比如送料机构:包络 0 从原点高速前进到位,包络 1 慢速退回取料位,包络 2 再高速回原点。这种顺序执行如果写成"Done 之后立刻触发下一个包络",会遇到一个时序问题:Done 在包络完成后的某一个扫描周期内为 1,如果下一个包络的 RUN 输入端恰好也在这个周期内检测到边沿,可能因为向导内部状态还没转换完而漏触发。

我的做法是在 Done 的上升沿里先切换"下一步"标志位,隔一个扫描周期再触发下一个包络。具体就是用两块逻辑:第一块在 Done 上升沿把当前包络号加 1,并复位当前运行标志;第二块在下一个扫描周期检测到包络号变化后,置位新的 RUN 标志。虽然多写了两个中间位,但时序上绝对可靠,尤其是在在线监控时能看到动作一步一步执行,调试体验好很多。

3.4 急停和中止:不要一停了之

包络运行到一半,按下急停按钮,这时候最稳妥的做法是通过 CTRL 子程序里的中止功能(具体输入端口名称在向导生成的子程序里可以看到)停止当前运动。中止后会有一个错误状态,需要先复位错误,再考虑是回原点还是从当前位置重新开始。

千万别在包络运行中直接断开 MOD_EN。MOD_EN 掉 0 等于告诉向导"轴一个人都没有了",位置值不会保留,重新使能后当前位置可能变成 0,但机械实际位置并不是 0,再跑绝对定位包络就直接撞机。我处理的习惯是:急停按钮接入硬回路,直接切断驱动器使能信号,同时 PLC 程序里检测到急停后调用中止功能,并置一个"急停已触发,需重新回原点"的报警位,等人工复位后强制走一遍回原点流程,再做后续动作。

4. 原点、限位和绝对位置:回零与包络的配合细节

4.1 绝对定位的前提是原点可靠

包络里如果用了绝对位置,那所有位置都是相对某个原点的。原点丢了,后面全乱。S7-200 SMART 的典型回原点流程是:轴以设定速度向原点开关方向移动,碰到原点输入后减速停止,然后反方向脱离原点开关,再以爬行速度回到原点位置。这中间涉及原点输入常开/常闭选择、回原点方向、脱离距离等参数,都在向导里设置。

硬件上,原点开关建议用常开触点接到 PLC 输入点。为什么不用常闭?因为常闭在断线时会误判"一直在原点",非常危险;常开断线只会导致找不到原点,至少是安全侧的失效。限位开关则建议用常闭触点串联到急停回路里,这样限位被撞断线时设备能停下来,这是硬安全回路的事,不能只靠程序软限位。

4.2 回原点完成之前,包络不允许启动

程序里要做一个"原点OK"的互锁位。上电后先执行回原点,回原点成功才算 OK;原点是 1 的情况下才允许启动任何绝对定位包络。这样能防止一种很常见的事故:设备断电后被人手动推过机构,位置乱了,下次上电如果直接跑包络,会按错误的位置往下走。

我还习惯在触摸屏上做一个"原点丢失/需回零"的报警状态。一旦出现驱动器报警、急停复位、掉电重启,这个状态就要提示操作工先回原点。很多项目是客户现场操作工在开机,不会去看 PLC 程序,光靠注释没用,界面上必须明显。

4.3 循环包络的往复逻辑

往复送料这类动作,建议拆成两个包络:包络 0 负责正向走完整个行程,包络 1 负责反向走回整个行程,然后用连续包络或程序顺序触发的方式循环。为什么不用一个包络里的多段直接做往复?因为一个包络执行完会停在终点,你要让它自动回来,还得再触发另一个动作,本质上还是要两个包络交替。

程序里的循环调度可以这样想:包络 0 的 Done 之后置位"反方向运行请求",同时复位"正方向运行请求";包络 1 的 Done 之后反过来。这样每个包络都遵循"边沿触发、完成判断、互锁"的规则。为了防止切换瞬间出现两个包络同时请求,可以在置位下一个方向之前,先把另一个方向的请求复位掉。

5. 加减速不是拍脑袋:几个真实丢步案例与参数整定方法

5.1 丢步到底是怎么发生的

步进电机丢步,本质是转子没跟上定子磁场旋转的速度。常见原因有三类:

  1. 启动频率太高:电机从静止直接收到一个很高的脉冲频率,转子惯性大,一步都走不动,直接原地抖动报警或丢步。
  2. 加速时间太短:频率上升斜率超过电机的最大同步加速度,转子跟不上,丢步发生在加速段中后段。
  3. 负载扭矩超出电机输出:高速段电机扭矩随转速升高而下降,如果负载阻力大,超过当前转速下的输出扭矩就丢步。

搞清楚原因再调参数,不是上来就把速度降一半。我见过有人把最大速度从 60mm/s 降到 20mm/s,还是丢步,结果是因为加速时间只有 0.05s,频率变化太陡。把加速时间加到 0.3s 后,60mm/s 完全不丢。

5.2 参数整定的顺序和判断标准

我给一个通用的整定流程,适合大多数丝杠滑台项目:

  1. 先把最大速度设成目标值的 30%,加减速时间设成较保守的 0.5s,跑一遍,看是否有异响、抖动、丢步。
  2. 没问题就逐步提高最大速度,每次提高 10%,同时跑完整轨迹验证。一旦出现丢步或啸叫,回退一档。
  3. 在最大速度确定后,再逐步缩短加减速时间,每次缩短 0.05s,直到出现启动瞬间抖动或到位过冲,再回退一档。
  4. 最后记录下三个参数:最大速度、加速时间、减速时间。

这个过程必须实际带着负载测,空载测出来的参数到带载工况可能直接失效,因为惯量和阻力完全不一样。

5.3 异常现象对照表

调试时遇到以下现象,优先按对应方向查:

现象根因方向处理手法
启动瞬间"哒哒"响或原地抖动启动频率过高 / 加速时间过短降低启动/停止速度,或延长加速时间
高速运行中突然丢步,低速正常加速段太陡或最大速度超出矩频特性延长加速时间,或降低最大速度
到位后有明显过冲、机械回弹减速时间过短延长减速时间,检查机械间隙
正方向不丢,反方向丢机械阻力不对称 / 反向间隙检查导轨润滑、丝杠螺母预紧,必要时单独做反向补偿
电机静止时温度过高电流设置过大,或使能一直通电降低驱动电流或设置静态电流半流,工艺允许时切断使能

这里说一个容易忽略的点:驱动器电流不是越大越好。很多新手觉得电流大扭矩就大,于是把电流拨到最高档,结果电机起步没丢步,但温度烫得能摊鸡蛋,热保护频繁动作,设备只能干一会儿停一会儿。正确的做法是参考电机铭牌额定电流,驱动器输出电流设置为电机额定电流的 80%~100%,先按 80% 试,扭矩不够再往上调。

5.4 怎么验证到底有没有丢步

如果怀疑某段轨迹丢步,最直接的办法是让轴反复走同一个往返行程,最后回到原点,观察回原点信号触发时坐标是否每次都一致。如果每次偏差都在几个脉冲以内,基本没丢步;如果偏差越积越大,说明过程中有丢步。

也可以用高速计数器配合编码器来做定量验证,这就是下一节要说的内容。在没有编码器的情况下,我习惯在程序中记录每次回原点的当前位置值,如果连续 10 次偏差都在允许范围内,才认为参数达标。

6. 低成本位置校验方案:编码器反馈怎么和步进开环互补

6.1 步进控制最大的短板是没有反馈

步进电机本质是开环控制,PLC 发出多少个脉冲,默认认为电机就走多少步,但实际有没有丢步、有没有被卡住,PLC 是不知道的。伺服电机因为带编码器闭环,丢步会被自动纠正,所以不会累积误差。步进要想获得类似能力,最经济的方案是加编码器,把反馈送给 PLC 的高速计数器,做一个位置校验。

这个方案不能算真正的闭环,因为 PLC 只做"检测偏差并报警",不会自动反向修正脉冲数,所以它更像"带位置监控的开环控制"。对大多数要求不高的小型设备,已经够用了——毕竟步进本身精度不差,丢步是偶发故障,只要能在发生丢步后及时报警停机,就避免了批量废品。

6.2 硬件上的接法和高速计数器组态

编码器建议选增量式 AB 相正交输出,A、B 两相分别接到 PLC 的两个高速输入点。S7-200 SMART 的高速计数器输入点通常是 I0.0、I0.1、I0.2、I0.3 这几个,具体哪个高速计数器能用哪个模式要看手册。以 HSC0 为例,可以选择"正交计数"模式,PLC 内部自动根据 A、B 相相位差判断正反转并计数。

接线时注意编码器是 NPN 开路输出还是差分输出,要和 PLC 输入类型匹配。S7-200 SMART 输入是漏型/源型可切换,但编码器如果是集电极开路输出,需要确认上拉电阻和电平是否匹配,否则计数值会乱跳。这块我是吃过亏的:买了一个 5V 差分输出的编码器,没加转换板直接接到 24V 输入点上,信号完全读不到,后来换了 24V 集电极开路输出的编码器才解决。

组态时在向导里启用高速计数器,设定计数模式,把计数值映射到一个 V 存储区。程序里每个扫描周期读取当前计数值,和 PLC 发出的目标位置做差值。

6.3 位置校验的软件逻辑

位置校验的思路很简单:每次包络运行到 Done 后,读一次高速计数器的当前值,减去包络开始前的初始值,得到实际移动的脉冲数;再和 PLC 设定的目标脉冲数做差,如果偏差超过阈值,就报警停机。

举例:丝杠每毫米 320 个脉冲,目标移动 100mm,理论脉冲数是 32000。如果编码器反馈的实测脉冲数在 31900~32100 之间,可以认为正常,误差范围 0.3mm 左右;如果偏差超过这个范围,说明中途丢步或机械卡滞,程序置报警,把轴停下来。

这里的核心是区分"PLC 发出的脉冲数"和"电机实际走的脉冲数"。PLC 发出的脉冲数存在向导的内部变量里,编码器反馈的是实际位置。如果编码器装在电机尾部,它测得的就是电机转过的角度;如果装在丝杠末端,测得的是工作台的实际位移,后者还包括了丝杠间隙和弹性变形,能反映更多的机械问题,但数据噪声也更大。

6.4 各种"闭环"方案怎么选

把步进控制做成带位置校验,只是其中一种做法。实际项目里还有几种选择:

  • 纯开环:最便宜,适合负载轻、速度低、丢步概率极低的小设备。缺点是出问题没有反馈。
  • 开环 + 编码器校验:成本增加一个编码器和一个高速计数器点,能报警停机,但不能自动修正。适合丢步概率低但一旦发生后果严重的设备。
  • 闭环步进驱动器:驱动器内部自己处理编码器反馈并实时修正,PLC 这边完全无感。省事,成本比普通步进驱动器高一些。
  • 伺服电机:真正的全闭环,速度快,精度高,响应快。成本最高,调试最复杂。

我的建议是:除非工艺对扭矩和动态响应有很高要求,否则中小型定位设备优先考虑闭环步进驱动器,性价比和调试难度最均衡。S7-200 SMART 加编码器校验这个方案,更适合现有设备改造——不用换电机和驱动器,只加一个编码器就能获得报警能力。

6.5 高速计数器和 PTO 会冲突吗

这是不少人担心的问题。S7-200 SMART 的高速脉冲输出在 Q 点,高速计数器输入在 I 点,物理上不冲突。但要注意,某些 CPU 型号的高速计数器输入会占用普通输入点,如果这些点已经用在限位、按钮上,就要重新规划。

还有一个容易踩的坑:编码器分辨率太高时,高频计数可能超过 PLC 高速输入的最大计数频率。比如编码器 1000 线、4 倍频后是 4000 个脉冲/转,如果电机转速是 1500 转/分钟,每秒就有 100kHz 的计数频率,CPU 的硬件高速计数器一般能应对,但选型时要留余量。真到了频率上限附近,只能降低编码器线数或选用更高频率的计数模块。

结合一个完整的项目验收经验:上电先回原点,原点 OK 后才能跑包络;包络完成后再做位置校验,校验通过才放行下一工位;任何一个环节异常,触摸屏上都给出明确的报警文字和原因代码。这套流程做下来,设备运行半年多基本没出过运动相关的故障。

包络这件事,表面上是给 PLC 加一条指令、给向导加一张表,本质上是把机械工艺翻译成运动曲线。你在组态时花十分钟把段数、速度、加减速想清楚,现场调试就能少掉一大半的头发。如果你正在做的设备涉及多段变速或往复循环,不妨按这篇的思路先去向导里建一个包络,跑通了再谈优化。

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

NMP化学剥离CMOS拜耳矩阵:黑白改机全流程实操指南

/* 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:37:50

SAP子公司账套配置实战:从公司代码到记账期间变式

/* 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:37:16

Altium Designer多通道PCB复制布线全攻略:从Ctrl+C到Rooms高效复用

/* 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:37:15

辽宁省流域矢量数据shp处理全指南:从坐标系、拓扑到属性校验

/* 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:37:15

FT232RL USB转串口板从零设计与制作全流程解析

/* 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:36:56

I2C设备不上线?从物理层到驱动的完整排查指南

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

作者头像 李华