网上讲 PMC 入门的文章已经很多,但大多停在”PMC 是什么”。本文不重复那部分,直接做三件更实用的事:把顺序执行和继电器并联的差别画对、把基本指令做成一个能对照着查的表、从零写一个完整可用的梯形图实例。
如果你是第一次接触梯形图,建议先看 FANUC PMC 是什么?工作原理与应用详解 补一下背景,再回来看本文。
安全提示:本文的梯形图示例用于说明编程思路,不是可以直接下载到机床的程序。任何上机的程序都必须经过本厂评审与仿真验证;涉及刀库、主轴、防护门等动作的逻辑,必须有软件互锁与电气终端互锁双重保护。
一、PMC 是什么(一段话,不展开)
FANUC 系统可以看成两部分:控制伺服与主轴的系统部分,和控制辅助电气动作(冷却、刀库、润滑、门开关等)的 PMC 部分。PMC 与通用 PLC 非常相似,因为专用于机床,所以叫”可编程序机床控制器”。
PMC 的程序叫顺序程序,工作原理可概括为:由上至下、由左至右、循环往复、顺序执行。
就这一句”顺序执行”,是 PMC 与继电器电路最根本的区别,也是新手最容易踩坑的地方 —— 下一节专门讲它。
二、顺序执行 vs 继电器并联:一张图看懂差别
这是本文最重要的一节。很多资料画不对,导致读者对”为什么我的程序不按电气图的逻辑跑”百思不得其解。
同一个电路,两种规则,结果完全不同
假设有一个触点 A,控制两个线圈 B 和 C,其中 C 的常闭触点串在 B 的回路里。A 接通之后,B 和 C 会怎么动作?
| 继电器电路(并行) | PMC 顺序程序(串行) | |
|---|---|---|
| 动作规则 | 并行控制,动作与电路的分布位置无关 | 逐行顺序执行,结果与行的先后顺序有关 |
| B 的结果 | B 会接通一个瞬间,随后被 C 的常闭点断开 | B 根本不接通 |
| C 的结果 | C 接通 | C 接通 |
| 原因 | B、C 同时得电,C 动作后才切断 B | 执行到 C 时 C 已接通,等执行 B 那一行时,C 的常闭点已经断开了 |
关键结论:
- 在继电器电路里,只要 B 的回路在 C 动作前是通的,B 就会有一个短暂的接通 —— 这个特性可以被用来做上升沿脉冲,即 B 只接通一个循环周期。
- 在 PMC 里,行的先后顺序直接决定结果。你把 B 写在 C 前面还是后面,行为是不一样的。
这个差别对实际编程意味着什么

- 不要直接照抄电气图 —— 电气图是并行的,梯形图是串行的,照抄很可能行为不一致。
- 想做脉冲信号,要用专用的边沿检测指令,而不是靠”行序巧合”产生一个扫描周期的脉冲。FANUC 的边沿检测指令是 DIFU(上升沿)/ DIFD(下降沿),详见 FANUC PMC 上升沿下降沿检测 DIF 指令详解。
- 记忆里那条硬口径要记住:
逻辑错要改代码,时序错要改行序—— 逻辑没错但行为不对,多半是行序问题。
三、PMC-L 与 PMC-M 差异(换算成”你要改哪个”的视角)
FANUC 0 系统上曾使用 PMC-L 与 PMC-M 两种型号,所需硬件不同,性能也有区别。PMC-M 需要一块专门的电路板,地址范围也有所扩大。
重要适用范围说明:下表是早期 FANUC 0 系统的对照数据。现代 0i 系列及后续机型的 PMC 规格完全不同,不要拿这张表去套你手上的机床。实际容量请以你机床的 PMC 规格为准。
| 项目 | PMC-L | PMC-M |
|---|---|---|
| 程序级数 | 2 | 3 |
| 第一级程序执行周期 | 16 ms | 16 / 8 ms |
| 基本指令平均执行时间 | 6 μs | 2 μs |
| 程序容量 | 3000 步 | 最大 8000 步 |
| 基本指令数 | 12 | 12 |
| 功能指令数 | 34 | 35 |
| 内部继电器 | 400 字节 | 696 字节 |
换算成”你要改哪个”的三句话
- 程序级数不同 → 你的 END 结构不同。 2 级是
END1 → END2,3 级是END1 → END2 → END3。写错 END 结构,程序里某些功能就是不执行,而且不报错。详见 FANUC PMC 顺序程序 END1 END2 END3 详解。 - 执行速度不同 → 时序敏感的写法要重新评估。 同样的梯形图,在 6 μs 和 2 μs 的机器上,扫描周期不一样,对窄脉冲的捕捉能力也不同。
- 程序容量不同 → 移植前必须先确认目标机能不能装下。 这里有一条项目铁律:决定 PMC 资源的是 PMC 型号,不是 CNC 型号 —— 两台同是 0i-MF 的机床,PMC 资源也可能不同。详见 FANUC 0i-MD / 0i-MF PMC 差异对比。
四、基本指令:RD / AND / OR / NOT / WRT 三栏对照表
PMC 的指令分两类。基本指令只对二进制位进行与、或、非的逻辑操作;功能指令能完成特定功能,且是对二进制字节或字进行操作,也可以进行数学运算。
下面这张表把梯形图符号 → 助记符 → 含义三栏对照,建议打印放在手边。
| 梯形图符号 | 助记符 | 含义与用法 |
|---|---|---|
| 常开触点(与左母线相连的第一个) | RD | 读入指定地址的状态,作为一行逻辑的起点 |
| 常闭触点(与左母线相连的第一个) | RD.NOT | 读入指定地址的取反状态,作为一行逻辑的起点 |
| 串联常开触点 | AND | 与前面结果做逻辑与 |
| 串联常闭触点 | AND.NOT | 与前面结果做与(取反) |
| 并联常开触点 | OR | 与前面结果做逻辑或 |
| 并联常闭触点 | OR.NOT | 与前面结果做或(取反) |
| 线圈输出 | WRT | 把逻辑运算结果写到指定地址 |
| 取反线圈输出 | WRT.NOT | 把结果取反后写到指定地址 |
| 置位 / 复位线圈 | SET / RST | 见下节说明 |
怎么看常开和常闭(别搞反)

梯形图里,常开与常闭的区别是看斜线是否接触右边的竖线。 这个判断规则在 FANUC PMC 梯形图符号速查图解 里有图示,本文不重复。
记住一条:互锁用常闭,动作触发用常开。
置位(SET)和普通线圈(WRT)的根本区别
区别是「记忆」。
- 普通线圈:输入条件断开,输出立刻断开。
- 置位:输入条件断开后,输出保持 —— 直到有复位信号把它清掉。
置位复位的三条硬规则:
- 置位和复位必须成对且同一地址 —— 最经典的错误就是置位和复位不是同一地址,结果该位永远关不掉。
- 置位条件不能是持续信号 —— 否则每个扫描周期都在置位,复位信号一撤就又置上。
- 上电初始状态要考虑复位 —— 上电时这一位是什么状态,你会不会因此误动作。
什么时候必须写助记符,不能用符号
功能指令在梯形图上画不出符号,只能以功能指令框的形式出现,需要用助记符(或指令框)来表达。 也就是说:
- 基本指令可以用触点/线圈符号画出来;
- 功能指令(TMR、CTR、MOVE、CMP 等)用的是指令框,框里要填控制条件、参数、输出地址。
这是”助记符”这个概念在 PMC 里的主要用武之地。
五、功能指令分类速查(按用途归类)
功能指令按用途分组记忆,比按编号背有效得多。
| 用途类别 | 指令 | 典型场景 |
|---|---|---|
| 延时 | TMR | 冷却液延时关闭、夹紧确认延时、报警延时 |
| 计数 | CTR / CTRB / CTRC | 刀库刀位计数、工件计数、换刀次数统计 |
| 数据传送 | MOVE | 把计算值或设定值送到指定地址 |
| 比较判断 | CMP | 当前刀号与目标刀号比较、计数值到达判断 |
| 回转控制 | ROT / ROTB | 刀库/转塔的最短路径旋转方向判断 |
| 显示 | DISP | 在屏幕上显示报警信息或提示文字 |
几个容易记错的点:
- CNT 不是计数器指令 —— 这条很多人搞错。FANUC 的计数器指令是 CTR 系列;边沿检测靠 DIFU / DIFD。
- TMR 的格式:
TMR a(b) c(d)中 b 是预置值,真实延时 = b × 时基。时基在 PMC 参数里,从梯形图里看不出来 —— 这意味着改时基会让所有定时器一起变速,而梯形图毫无变化。 - TMR 计时期间输入条件必须一直 ON,中途断开会立刻复位清零。所以触发端必须用单脉冲,持续信号会反复复位。
- 定时中继触点必须写在定时器语句之后(顺序程序自上而下执行,写在前面会读到上一扫描的旧值)。
这些在 FANUC PMC 定时器 TMR 指令详解 和 计数器 CTR 指令详解 里有完整展开,本文只做归类。
六、完整实例一:刀库旋转到位 + 计数 + 到位输出
这是本文的原创部分。刀库控制是 PMC 里最典型的综合应用:既有计数,又有比较,还有到位确认。
需求描述
假设一台加工中心的圆盘刀库:
- 刀库旋转时,每转过一个刀位,接近开关产生一个脉冲
- PMC 需要对脉冲计数,得到当前刀位
- 当当前刀位 = 目标刀位时,输出”旋转到位“信号,停止旋转
地址约定(示例,实际以机床地址表为准)
| 地址 | 含义 | 类型 |
|---|---|---|
X10.0 | 刀位脉冲(接近开关) | 输入 |
X10.1 | 刀库原点(一号刀位) | 输入 |
Y10.0 | 刀库旋转输出 | 输出 |
R100 | 当前刀位(计数值存放) | 内部继电器 |
R102 | 目标刀位 | 内部继电器 |
R200.0 | 旋转到位标志 | 内部继电器 |
梯形图逻辑(分三块)
第一块:边沿检测 —— 把接近开关的电平变成脉冲
接近开关在刀位停留期间是持续 ON 的,如果直接拿去计数,会一个刀位计很多次。必须先做边沿检测:
X10.0 ──[DIFU]── R50.0 ← R50.0 只在一个扫描周期为 ON
这就是”继电器并联能天然产生一个周期脉冲、PMC 必须用 DIFU”的实际应用。
第二块:计数 —— 每个脉冲加一
用 CTR 指令做加计数:
- 计数输入:
R50.0(边沿脉冲) - 复位输入:刀库原点信号
X10.1(回到原点时计数清零,作为基准) - 计数当前值存放:
R100
┌─────────────┐
R50.0 ──┤ CTR │
X10.1 ──┤ (RST) ├── R100(当前值)
└─────────────┘
第三块:比较 + 到位输出
用 CMP 比较 R100(当前刀位)与 R102(目标刀位):
┌─────────────┐
│ CMP │
R100 ───┤ ├── R200.0(相等时ON)
R102 ───┤ │
└─────────────┘
然后到位标志去切断旋转输出(注意用常闭,这是互锁):
X10.2(启动) ──┤├──── R200.0 ──┤/├────( Y10.0 )
启动 到位常闭 旋转输出
这个实例里值得记住的 5 条

- 必须先做边沿检测再计数 —— 否则一个刀位会计出几十次。
- 计数器要有复位基准 —— 用原点信号清零,否则累计误差会让刀号全错。
- 到位信号用常闭去切输出 —— 这是互锁的标准写法。
- 启动与到位要同时参与 —— 只写到位信号,启动后立刻就断;只写启动信号,到位了停不下来。
- 这只是逻辑骨架 —— 实际机床还要加旋转超时判断、正反转最短路径(ROT)、以及机械与电气双重互锁。
七、完整实例二:主轴冷却液定时开关(TMR + 互锁)
第二个例子更短,但覆盖了定时器的典型坑。
需求
主轴启动后冷却液打开;主轴停止后,冷却液延时一段时间再关闭(让主轴和刀具继续冷却)。
逻辑
X20.0(主轴运行) ──[TMR 延时断开]── ( Y20.0 冷却液 )
用定时器实现”断开延时“:
- 主轴运行信号
X20.0ON → 冷却液Y20.0立刻 ON X20.0OFF → 定时器开始计时,计时期间冷却液保持 ON- 计时到达 → 冷却液 OFF
三个必须注意的点
- 触发端必须是单脉冲或持续到计时完成 —— TMR 计时期间输入条件断开会立刻复位清零,延时就失效了。
- 定时中继触点必须写在 TMR 语句之后 —— 写在前面读到的是上一扫描的旧值。
- 冷却液与主轴之间要有互锁 —— 主轴没转却开冷却液,在有些工况下会造成工件或刀具问题;这个互锁同时要有电气终端互锁兜底。
互锁的一条硬原则:顺序程序里的软件互锁必不可少,但电气柜中电气电路终端的互锁也不能忽略。因为即使程序上用了逻辑互锁,当执行顺序程序的硬件出现问题时,互锁就失去作用了。
八、PMC 程序的几个特殊段
PMC 顺序程序除了主逻辑,还包含一些具有特殊用途的程序段。不同资料的叫法和划分略有差异,但核心是下面几类:
| 特殊段 | 作用 |
|---|---|
| 报警信息段 | 存放报警文本与报警号,PMC 报警从这里取文本显示 |
| 标题/符号段 | 存放地址注释、符号表,让梯形图可读 |
| 开关量设定段 | 存放机床厂的可配置选项(开关量) |
| 定时器/计数器设定段 | 存放 TMR/CTR 的预置值等 |
为什么这些段容易出问题:它们和数据是绑定的。只备份梯形图、不备份符号注释表,会导致程序能跑但看不懂 —— 这是 FANUC PMC 备份与恢复 里反复强调的”备份五件套”之一。
顺序程序的完整数据构成,见 FANUC PMC 编程核心:顺序程序的 8 大数据构成。
九、I/O 地址怎么分配(模块设置实操)
梯形图里写的 X10.0、Y20.0 不是凭空来的,必须先给实际的 I/O 模块分配地址。
分配的四要素

| 要素 | 说明 |
|---|---|
| 组(GROUP) | 从系统 I/O Link 接口串起的第一个模块为组 0,第二个为组 1,依次类推 |
| 基座(BASE) | 仅 I/O Unit-MODEL A 这类带插槽的模块才需要设;固定式模块(操作面板、电气柜、分线盘单元)默认 0 |
| 槽(SLOT) | 同上,固定式模块默认 1 |
| 名称(NAME) | 用于识别模块类别(如 OC02I、CM16I、/8 等),需按手册表格对应实际硬件填写 |
操作步骤(通用流程)
- 先确认硬件连接 —— I/O Link 从系统的接口(如 JD51A / JD1A)出发,串联连接到第一个模块的 JD1B,再由其 JD1A 连到下一个模块的 JD1B。
- 进入 I/O 模块信息画面查看已连接模块 —— 路径通常为
SYSTEM → [+] → PMCMNT → [+] → I/O LINK(各系统菜单名称略有差异)。这一步用来确认硬件被正确识别。 - 开启编辑许可 —— 在 PMC 设定画面允许「编辑许可」「编辑后保存」「RAM 可写入」(菜单路径通常为
PMCCNF → 设定)。 - 进入模块地址设定画面 —— 通常为
PMCCNF → [模块],按操作 → 编辑。 - 按格式输入
组.基座.槽./字节数—— 例如0.0.1./16表示 0 组 0 基座 1 槽,分配 16 字节输入(X0 起)。 - 分别设定 X 与 Y —— 两个方向都要设。
- 保存并断电重启生效 —— 系统会提示写入 FLASH ROM,确认后必须断电重启。
- 验证 —— 生效后到信号画面搜索刚分配的地址(如 X0),对照梯形图验证。
三条必须记住的规则
- 使用两个及以上 I/O 模块时,必须分别设定,且各模块使用的地址不能重复。
- 地址分配生效需要断电重启(部分系统可按
[IOSTRT]使数据生效,以本机为准)。 - 模块名称必须对得上实际硬件 —— 名称填错,点位数就对不上,症状是”前面几个点正常、后面全乱”。
I/O 地址对不上的排查路径,见 FANUC PMC 与 NC 信号交换异常怎么查;地址类型本身的辨析见 FANUC PMC 地址类型速查:GRD 辨析。
十、常见坑(停止/运行切换、互锁缺失、循环周期)
坑 1:停止 / 运行状态切换导致输出全为 0
现象:PMC 从运行切到停止、或重新上电后,Y 输出全为 0。这是机制不是故障 —— 停止状态下顺序程序不执行,输出自然全部刷新为 0。
影响:依赖 Y 保持的夹紧、抱闸类动作可能因此松开。涉及安全的保持型动作不要依赖 Y 的自保持状态。
坑 2:只做软件互锁,忽略电气互锁
这是最危险的一类。软件互锁失效(硬件故障、程序跑飞、在线编辑误改)时,如果没有电气终端互锁,就会直接撞机或伤人。
原则:软件互锁与电气终端互锁都要有,电气互锁不能省。
坑 3:循环周期理解错误
PMC 不是实时响应,是固定循环:① 输入采样 → ② 顺序执行 → ③ 输出刷新 → ④ 立即回到 ①。
典型值 8–32 ms,具体值必须从机床诊断屏读取,不要凭经验猜。
地址采样位置不同:X 在①、Y 在③、F 在①、G 在③、R 在②。理解这个,才能解释”为什么我在程序里改了 R,同一个扫描周期里另一处读到的还是旧值”。
坑 4:改了程序但行为没变
最常见的原因是 JMP / CJMP 跳过了你改的那一段,或者你改的程序段根本不在当前执行的 END 等级里。
写入成功但行为没变是最容易误判的情况 —— 真因常常不是”没写进去”,而是”写进去的那段根本没被执行”。
写在最后
把这几条带走:
- 顺序执行 ≠ 并行:行的先后顺序决定结果,
时序错要改行序。 - 基本指令管用位,功能指令管用字节/字;功能指令画不出符号,只能用指令框。
- 置位和普通线圈的区别是「记忆」;置位复位必须成对、同地址、条件不能是持续信号。
- 计数器前必须先做边沿检测,且要有复位基准。
- 软件互锁 + 电气终端互锁,两个都要。
- I/O 地址必须先分配再写程序,且改完要断电重启。
最后一句:PMC 是顺序扫描的,不是实时的。很多”明明逻辑对了却不动作”的问题,根源都在这句话里。
免责声明:本文为个人技术经验整理。指令助记符、地址分配规则与菜单路径以你手上机床的 FANUC 官方 PMC 编程手册为准——不同 PMC 型号与系统版本存在差异。文中的梯形图示例用于说明编程思路,不是可直接下载到机床的程序。涉及刀库、主轴、防护等动作的逻辑必须有软硬件双重互锁,并经过本厂评审与仿真验证。
相关阅读
- FANUC PMC 是什么?工作原理与应用详解 —— 本文的背景补充
- FANUC PMC 梯形图符号速查图解 —— 常开/常闭怎么看,线圈符号合集
- FANUC PMC 定时器 TMR 指令详解 —— 时基选择与接法对照
- FANUC PMC 计数器 CTR 指令详解 —— 加计数与断电保持
- FANUC PMC 上升沿下降沿检测 DIF 指令详解 —— DIFU / DIFD 用法
- FANUC PMC 顺序程序 END1 END2 END3 详解 —— 分级结构与执行顺序
- FANUC PMC 备份与恢复 —— 备份五件套,别只备份梯形图
零基础系统学习入口:PMC 梯形图视频教程从零开始
























暂无评论内容