FANUC PMC 上升沿下降沿检测是解决单脉冲信号问题的核心手段。现场有一种故障特别让人窝火:
按钮明明只按了一下,动作要么没执行,要么执行了三四遍。
机床按钮是单脉冲信号——按下瞬间导通,松手就断开,过程可能只有几十毫秒。而 PMC 每个扫描周期都会把整个梯形图扫一遍,扫到多少遍,就可能动作多少遍。
这就是漏执行和重复执行的根源:不是信号错了,是没做边沿处理。
这篇把 FANUC PMC 里的边沿检测讲透,包括微分指令、CNT 计数配合,以及单脉冲信号的保持锁存。
一、为什么单脉冲信号必须做 FANUC PMC 上升沿下降沿检测
先看问题的本质。
假设有一个按钮输入信号 X1.0,PLC 扫描周期 10ms,工人在按钮上按了 50ms:
| 时间点 | X1.0 状态 | 不做边沿处理 | 做了上升沿处理 |
|---|---|---|---|
| 0ms | 保持 OFF | 不动作 | 不动作 |
| 10ms | 变为 ON | 动作 1 次 | 动作 1 次 |
| 20ms | 仍 ON | 动作 2 次 | 不动作 |
| 30ms | 仍 ON | 动作 3 次 | 不动作 |
| 40ms | 仍 ON | 动作 4 次 | 不动作 |
| 50ms | 变回 OFF | 不动作 | 不动作 |
一次按键被执行了 4~5 次。
而如果按得太快,只按了 5ms,恰好落在两次扫描之间——信号被整个跳过了,一次都不会执行,这就是漏执行。
核心认知:梯形图里的普通触点只认”当前是什么状态”,不认”状态变了没有”。你要的是”变化”,就必须用边沿检测。
安全警示:微分与边沿检测涉及单脉冲信号的响应逻辑,修改后可能改变按钮动作次数与时序。请在机床处于安全状态(各轴静止、急停生效)时进行,或确保有资深工程师在场指导。修改前务必备份原始梯形图与顺序程序! 重复触发可能导致机构误动作,单脉冲被漏检则可能导致流程中断。
二、DIF / DIFU / DIFD:FANUC PMC 上升沿下降沿的三个微分指令
FANUC PMC 提供三个微分指令,用来把”持续的电平”变成”瞬间的脉冲”:
| 指令 | 名称 | 触发时机 | 输出 |
|---|

| DIF | 上升沿微分 | 输入 OFF → ON 的瞬间 | 输出一个扫描周期的 ON 脉冲 |
|---|---|---|---|
| DIFU | 上升沿微分 | 同 DIF | 同一个扫描周期内的上升沿 |
| DIFD | 下降沿微分 | 输入 ON → OFF 的瞬间 | 输出一个扫描周期的 ON 脉冲 |
工作逻辑:
DIF 把一个持续电平,压缩成只在跳变瞬间出现的一个扫描周期脉冲。
这就是”单脉冲化”的手段——不管按钮按了 50ms 还是 5s,处理它的下游只看到一个瞬间脉冲。
注意:DIF 与 DIFU 在不同系统型号中的支持和行为可能存在差异,具体可用指令请以本机 FANUC 手册和 LADDER-III 实际指令列表为准,需现场验证。 常见做法是用 DIF 配合参数号指定输出地址,实现一个扫描周期的脉冲输出。
怎么确认哪个可用? 在 LADDER-III 的功能指令列表里直接查,看有没有 DIFU / DIFD 条目。有就能用,没有就得用别的方式替代——这是最可靠的办法,别凭印象。
三、写法 1:单按钮触发(FANUC PMC 上升沿最基础用法)
最常见的场景——按钮按下触发一个动作。
错误写法:直接用常开触点接动作线圈。
X1.0(按钮)──────────── OUT Y0.0
结果:按住 50ms,执行 4~5 次。
正确写法:加上升沿微分。
X1.0(按钮)── DIF ── OUT Y0.0
结果:不管按多久,只执行 1 次。
这是本文最需要记住的一条:一个按钮只该触发一次,就必须加 DIF 做上升沿处理。
四、写法 2:开关型信号(FANUC PMC 上升沿下降沿 + 保持线圈)
另一类常见需求:按钮当开关用——按一下开、再按一下关。
这里就不能只靠 DIF 了。因为 DIF 给的是”瞬间脉冲”,脉冲过去就没了,没法维持状态。
正确做法:用微分触发 SET / RESET 保持线圈。
X1.0(按钮)── DIF ──┬── SET Y0.0 ← 第一次按:置位,Y0.0 变 ON 并保持
│
└── RESET Y0.0 ← 第二次按:复位,Y0.0 变 OFF
逻辑:
- 第一次按(上升沿)→ SET 线圈触发 → Y0.0 置 ON,一直保持
- 松手 → 因为是保持线圈,Y0.0 不变
- 第二次按(又一个上升沿)→ RESET 线圈触发 → Y0.0 复位 OFF
注意 SET 和 RESET 两条支路是并联的,都接在 DIF 之后。 顺序程序每扫描一次会从上往下走,两条都会判断,但 SET 和 RESET 互斥,最终结果就是”按一次翻一次”。
这类”按钮当开关”的场景现场非常多:手动/自动模式切换、手动点动开关、面板灯切换。如果漏了保持,就会出现”按一下开了,松手又关了”。
五、写法 3:CNT 计数器配合上升沿
CNT 是 FANUC PMC 的计数指令——它和边沿检测配合,用来统计”有效动作发生了多少次”。
先澄清一个常见混淆:CNT 是计数器,不是边沿检测指令。 边沿检测靠 DIF 系列,CNT 负责计数。两者配合才能既”只算一次”又”能累计”。
为什么很多地方要用 CNT 而不是 DIF 直接接动作? 这是 FANUC PMC 上升沿下降沿与计数配合的典型用法。
因为有些场景要的不只是”动一次”,而是”动作持续规定次数”,或者要”边沿触发 + 累计次数 + 次数达标后停止”。
典型写法:
X1.0(按钮)── DIF ── CNT 1(5) D100 D101
↑
预置值 5,达到 5 次后 D101 输出 ON
执行过程:
- 每次按钮上升沿,CNT 加 1
- 累计到 5 次,D101 输出 ON,表示”次数达标”
- 之后可据此判断是否停止或报警
这里 DIF 的作用至关重要:不加 DIF,CNT 会在按钮按住期间连续累加,加到 5 次只用 50ms——用户根本反应不过来,逻辑就乱了。
对应到 FANUC PMC 计数器 CTR 指令详解 那篇讲的场景:CTR 统计外部物理次数(比如工件检测信号),CNT 统计内部逻辑触发次数。两者触发源不同,但都遵循”必须有边沿”这个原则。
六、写法 4:单脉冲信号的保持与锁存(FANUC PMC 上升沿下降沿的高级应用)
最后一类,也是最容易出问题的一类。
场景:按钮脉冲要驱动一个完整流程
典型需求:按一次启动按钮,机床自动跑完一整个动作序列,中途不能因为按钮信号消失而中断。
FANUC PMC 上升沿下降沿最典型的工程场景,就是按钮单脉冲驱动完整流程。按钮只是”启动”信号,整个动作是十几步顺序程序。如果直接在阶梯图里用按钮信号驱动,脉冲一消失,整个流程全停。
正确做法:先把脉冲锁存下来,再用锁存位驱动流程,这才是 FANUC PMC 上升沿处理在工程上的正确落点。
X1.0(启动按钮)── DIF ── SET M100 ← 只锁存"启动意图"
│
M100(流程进行中)── RST M200│ ← 流程结束时解除锁存
M100 ── 驱动整个动作流程
三层结构:
| 层次 | 用什么 | 作用 |
|---|---|---|
| 采集层 | DIF 上升沿 | 把按钮脉冲干净地抓成一个瞬间 |
| 锁存层 | SET / RST 线圈 | 把瞬间意图保持成持续状态位 |
| 执行层 | 状态位驱动顺序程序 | 让流程按自己的节奏跑完 |
这三层缺一不可。 少了采集层会重复触发,少了锁存层会中途断,少了执行层就没法做复杂流程。
实际写的时候还有一个细节:流程做完要能再次触发,所以流程结束处必须解除锁存(用 RST 把 M100 复位)。忘了复位,第二次按按钮就没反应了——这是这个写法最常见的现场故障。
七、四种写法速查表
| 写法 | 指令组合 | 用途 | 最容易错在哪 |
|---|

| 单按钮触发 | DIF + 动作 |
按一次动一次 | 漏加 DIF → 按一次动好几遍 |
|---|---|---|---|
| 开关型信号 | DIF + SET/RESET |
按钮当开关开/关 | 用普通触点 → 松手就回位 |
| 计数配合 | DIF + CNT |
累计有效触发次数 | 不加 DIF → 毫秒内就加满 |
| 单脉冲锁存 | DIF + SET + 状态位驱动 |
脉冲驱动完整流程 | 忘了解除锁存 → 第二次不响应 |
八、FANUC PMC 上升沿下降沿常见故障速查表
| 现象 | 可能原因 | 排查方向 |
|---|---|---|
| 按一次动作好几遍 | 没加 DIF,信号持续被扫到 | 串入上升沿微分 |
| 按钮有时没反应 | 按得太快,信号落在扫描间隙 | 加 DIF 保证锁存意图 |
| 松手后状态没了 | 用普通触点当开关 | 改用 SET / RESET 保持线圈 |
| 按一下开了松手又关 | 同上,没做保持 | 加保持线圈 |
| 计数瞬间就加满 | CNT 前没加 DIF | CNT 前面加微分 |
| 流程跑到一半停了 | 流程直接用按钮信号驱动 | 改为先锁存再用状态位驱动 |
| 第二次按按钮没反应 | 流程结束后忘了解除锁存 | 流程末加 RST 复位锁存位 |
| 边沿检测指令找不到 | 本机不支持该微分指令 | 查 LADDER-III 指令列表确认可用性 |
| 边沿脉冲维持时间不对 | 期望多扫描周期保持 | 改用 SET 锁存代替微分 |
最后一条值得说清楚:DIF 产生的脉冲只持续一个扫描周期,这在绝大多数场合是对的,但如果你的逻辑需要”这个动作标志维持到下一段程序执行完”,用 DIF 就不行了——脉冲早没了。这时候必须用保持线圈,而不是延长微分。
小结
FANUC PMC 上升沿下降沿处理,记住四点:
- 单脉冲必须做边沿,用 DIF 把电平压成瞬间脉冲
- CNT 是计数器不是边沿指令,边沿靠 DIF 系列,两者配合才既准又累计
- 按钮当开关用,必须 DIF 配 SET / RESET,否则松手就回位
- 脉冲驱动流程,采集、锁存、执行三层齐全,流程结束别忘了解除锁存
把这篇和 FANUC PMC 计数器 CTR 指令详解、FANUC PMC 定时器 TMR 指令详解、FANUC PMC 跳转指令 JMP / LBL 详解 对照看会更清楚:DIF 负责”抓变化”,CNT/CTR 负责”数次数”,TMR 负责”等时间”,JMP/LBL 负责”走流程”,配合 FANUC PMC 顺序程序 END1/END2/END3 详解 的三级框架,整套执行机制就串起来了。
如果你对微分指令还不熟,建议从 零基础学习发那科PMC 梯形图教程 这篇开始,把触点、线圈和信号流搞熟,再理解边沿处理会轻松很多。遇到按钮时好时坏、动作重复执行这类现象,可以对照 FANUC PMC 故障排查实战 里的排查思路。
标签: FANUC系统 · 机床梯形图 · 学习内容 · 基础知识 · 维修案例
免责声明:本文内容基于 CNCShare 团队实战经验整理,仅供参考。不同机床配置、系统版本可能存在差异,实际操作请以设备官方手册为准。因据此操作导致的损失,CNCShare 不承担责任。文中微分指令可用性、CNT 用法与保持逻辑仅用于说明通用原理,具体配置与指令支持需现场验证,以本机 LADDER-III 指令列表和官方手册为准。
























暂无评论内容