FANUC PMC 梯形图入门教程:基本指令 + 功能指令对照 + 刀库控制完整实例

网上讲 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 PMC 顺序执行与继电器并联控制差别对照图:同一 A 触点控制 B、C 线圈,继电器并行控制下 B 会短暂接通,PMC 顺序执行下 B 完全不接通,含扫描周期四阶段与地址采样位置
  1. 不要直接照抄电气图 —— 电气图是并行的,梯形图是串行的,照抄很可能行为不一致。
  2. 想做脉冲信号,要用专用的边沿检测指令,而不是靠”行序巧合”产生一个扫描周期的脉冲。FANUC 的边沿检测指令是 DIFU(上升沿)/ DIFD(下降沿),详见 FANUC PMC 上升沿下降沿检测 DIF 指令详解。
  3. 记忆里那条硬口径要记住:逻辑错要改代码,时序错要改行序 —— 逻辑没错但行为不对,多半是行序问题。

三、PMC-L 与 PMC-M 差异(换算成”你要改哪个”的视角)

FANUC 0 系统上曾使用 PMC-L 与 PMC-M 两种型号,所需硬件不同,性能也有区别。PMC-M 需要一块专门的电路板,地址范围也有所扩大。

重要适用范围说明:下表是早期 FANUC 0 系统的对照数据。现代 0i 系列及后续机型的 PMC 规格完全不同,不要拿这张表去套你手上的机床。实际容量请以你机床的 PMC 规格为准。

项目PMC-LPMC-M
程序级数23
第一级程序执行周期16 ms16 / 8 ms
基本指令平均执行时间6 μs2 μs
程序容量3000 步最大 8000 步
基本指令数1212
功能指令数3435
内部继电器400 字节696 字节

换算成”你要改哪个”的三句话

  1. 程序级数不同 → 你的 END 结构不同。 2 级是 END1 → END2,3 级是 END1 → END2 → END3。写错 END 结构,程序里某些功能就是不执行,而且不报错。详见 FANUC PMC 顺序程序 END1 END2 END3 详解。
  2. 执行速度不同 → 时序敏感的写法要重新评估。 同样的梯形图,在 6 μs 和 2 μs 的机器上,扫描周期不一样,对窄脉冲的捕捉能力也不同。
  3. 程序容量不同 → 移植前必须先确认目标机能不能装下。 这里有一条项目铁律:决定 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 基本指令三栏对照表:梯形图符号与 RD、RD.NOT、AND、AND.NOT、OR、OR.NOT、WRT、WRT.NOT、SET/RST 助记符及含义对照,含常开常闭判断规则与置位复位三条硬规则

梯形图里,常开与常闭的区别是看斜线是否接触右边的竖线。 这个判断规则在 FANUC PMC 梯形图符号速查图解 里有图示,本文不重复。

记住一条:互锁用常闭,动作触发用常开。

置位(SET)和普通线圈(WRT)的根本区别

区别是「记忆」。

  • 普通线圈:输入条件断开,输出立刻断开。
  • 置位:输入条件断开后,输出保持 —— 直到有复位信号把它清掉。

置位复位的三条硬规则:

  1. 置位和复位必须成对且同一地址 —— 最经典的错误就是置位和复位不是同一地址,结果该位永远关不掉。
  2. 置位条件不能是持续信号 —— 否则每个扫描周期都在置位,复位信号一撤就又置上。
  3. 上电初始状态要考虑复位 —— 上电时这一位是什么状态,你会不会因此误动作。

什么时候必须写助记符,不能用符号

功能指令在梯形图上画不出符号,只能以功能指令框的形式出现,需要用助记符(或指令框)来表达。 也就是说:

  • 基本指令可以用触点/线圈符号画出来;
  • 功能指令(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 条

FANUC PMC 刀库旋转到位检测完整梯形图实例:接近开关边沿检测 DIFU、CTR 计数与原点复位、CMP 比较当前刀位与目标刀位,以及启动加到位常闭的互锁输出行
  1. 必须先做边沿检测再计数 —— 否则一个刀位会计出几十次。
  2. 计数器要有复位基准 —— 用原点信号清零,否则累计误差会让刀号全错。
  3. 到位信号用常闭去切输出 —— 这是互锁的标准写法。
  4. 启动与到位要同时参与 —— 只写到位信号,启动后立刻就断;只写启动信号,到位了停不下来。
  5. 这只是逻辑骨架 —— 实际机床还要加旋转超时判断、正反转最短路径(ROT)、以及机械与电气双重互锁。

七、完整实例二:主轴冷却液定时开关(TMR + 互锁)

第二个例子更短,但覆盖了定时器的典型坑。

需求

主轴启动后冷却液打开;主轴停止后,冷却液延时一段时间再关闭(让主轴和刀具继续冷却)。

逻辑

X20.0(主轴运行) ──[TMR 延时断开]── ( Y20.0 冷却液 )

用定时器实现”断开延时“:

  • 主轴运行信号 X20.0 ON → 冷却液 Y20.0 立刻 ON
  • X20.0 OFF → 定时器开始计时,计时期间冷却液保持 ON
  • 计时到达 → 冷却液 OFF

三个必须注意的点

  1. 触发端必须是单脉冲或持续到计时完成 —— TMR 计时期间输入条件断开会立刻复位清零,延时就失效了。
  2. 定时中继触点必须写在 TMR 语句之后 —— 写在前面读到的是上一扫描的旧值。
  3. 冷却液与主轴之间要有互锁 —— 主轴没转却开冷却液,在有些工况下会造成工件或刀具问题;这个互锁同时要有电气终端互锁兜底。

互锁的一条硬原则:顺序程序里的软件互锁必不可少,但电气柜中电气电路终端的互锁也不能忽略。因为即使程序上用了逻辑互锁,当执行顺序程序的硬件出现问题时,互锁就失去作用了。

八、PMC 程序的几个特殊段

PMC 顺序程序除了主逻辑,还包含一些具有特殊用途的程序段。不同资料的叫法和划分略有差异,但核心是下面几类:

特殊段作用
报警信息段存放报警文本与报警号,PMC 报警从这里取文本显示
标题/符号段存放地址注释、符号表,让梯形图可读
开关量设定段存放机床厂的可配置选项(开关量)
定时器/计数器设定段存放 TMR/CTR 的预置值等

为什么这些段容易出问题:它们和数据是绑定的。只备份梯形图、不备份符号注释表,会导致程序能跑但看不懂 —— 这是 FANUC PMC 备份与恢复 里反复强调的”备份五件套”之一。

顺序程序的完整数据构成,见 FANUC PMC 编程核心:顺序程序的 8 大数据构成。

九、I/O 地址怎么分配(模块设置实操)

梯形图里写的 X10.0、Y20.0 不是凭空来的,必须先给实际的 I/O 模块分配地址。

分配的四要素

FANUC PMC I/O 地址分配实操流程图:组基座槽名称四要素、8 步分配操作与断电重启生效,以及第一级第二级顺序程序执行机制与急停信号必须放第一级的原因
要素说明
组(GROUP)从系统 I/O Link 接口串起的第一个模块为组 0,第二个为组 1,依次类推
基座(BASE)仅 I/O Unit-MODEL A 这类带插槽的模块才需要设;固定式模块(操作面板、电气柜、分线盘单元)默认 0
槽(SLOT)同上,固定式模块默认 1
名称(NAME)用于识别模块类别(如 OC02I、CM16I、/8 等),需按手册表格对应实际硬件填写

操作步骤(通用流程)

  1. 先确认硬件连接 —— I/O Link 从系统的接口(如 JD51A / JD1A)出发,串联连接到第一个模块的 JD1B,再由其 JD1A 连到下一个模块的 JD1B。
  2. 进入 I/O 模块信息画面查看已连接模块 —— 路径通常为 SYSTEM → [+] → PMCMNT → [+] → I/O LINK(各系统菜单名称略有差异)。这一步用来确认硬件被正确识别。
  3. 开启编辑许可 —— 在 PMC 设定画面允许「编辑许可」「编辑后保存」「RAM 可写入」(菜单路径通常为 PMCCNF → 设定)。
  4. 进入模块地址设定画面 —— 通常为 PMCCNF → [模块],按操作 → 编辑。
  5. 按格式输入 组.基座.槽./字节数 —— 例如 0.0.1./16 表示 0 组 0 基座 1 槽,分配 16 字节输入(X0 起)。
  6. 分别设定 X 与 Y —— 两个方向都要设。
  7. 保存并断电重启生效 —— 系统会提示写入 FLASH ROM,确认后必须断电重启。
  8. 验证 —— 生效后到信号画面搜索刚分配的地址(如 X0),对照梯形图验证。

三条必须记住的规则

  • 使用两个及以上 I/O 模块时,必须分别设定,且各模块使用的地址不能重复。
  • 地址分配生效需要断电重启(部分系统可按 [IOSTRT] 使数据生效,以本机为准)。
  • 模块名称必须对得上实际硬件 —— 名称填错,点位数就对不上,症状是”前面几个点正常、后面全乱”。

I/O 地址对不上的排查路径,见 FANUC PMC 与 NC 信号交换异常怎么查;地址类型本身的辨析见 FANUC PMC 地址类型速查:GRD 辨析。

十、常见坑(停止/运行切换、互锁缺失、循环周期)

坑 1:停止 / 运行状态切换导致输出全为 0

现象:PMC 从运行切到停止、或重新上电后,Y 输出全为 0。这是机制不是故障 —— 停止状态下顺序程序不执行,输出自然全部刷新为 0。

影响:依赖 Y 保持的夹紧、抱闸类动作可能因此松开。涉及安全的保持型动作不要依赖 Y 的自保持状态。

详见 发那科梯形图 Y 输出上电全为 0 排查。

坑 2:只做软件互锁,忽略电气互锁

这是最危险的一类。软件互锁失效(硬件故障、程序跑飞、在线编辑误改)时,如果没有电气终端互锁,就会直接撞机或伤人。

原则:软件互锁与电气终端互锁都要有,电气互锁不能省。

坑 3:循环周期理解错误

PMC 不是实时响应,是固定循环:① 输入采样 → ② 顺序执行 → ③ 输出刷新 → ④ 立即回到 ①。

典型值 8–32 ms,具体值必须从机床诊断屏读取,不要凭经验猜。

地址采样位置不同:X 在①、Y 在③、F 在①、G 在③、R 在②。理解这个,才能解释”为什么我在程序里改了 R,同一个扫描周期里另一处读到的还是旧值”。

坑 4:改了程序但行为没变

最常见的原因是 JMP / CJMP 跳过了你改的那一段,或者你改的程序段根本不在当前执行的 END 等级里。

写入成功但行为没变是最容易误判的情况 —— 真因常常不是”没写进去”,而是”写进去的那段根本没被执行”。


写在最后

把这几条带走:

  • 顺序执行 ≠ 并行:行的先后顺序决定结果,时序错要改行序。
  • 基本指令管用位,功能指令管用字节/字;功能指令画不出符号,只能用指令框。
  • 置位和普通线圈的区别是「记忆」;置位复位必须成对、同地址、条件不能是持续信号。
  • 计数器前必须先做边沿检测,且要有复位基准。
  • 软件互锁 + 电气终端互锁,两个都要。
  • I/O 地址必须先分配再写程序,且改完要断电重启。

最后一句:PMC 是顺序扫描的,不是实时的。很多”明明逻辑对了却不动作”的问题,根源都在这句话里。


免责声明:本文为个人技术经验整理。指令助记符、地址分配规则与菜单路径以你手上机床的 FANUC 官方 PMC 编程手册为准——不同 PMC 型号与系统版本存在差异。文中的梯形图示例用于说明编程思路,不是可直接下载到机床的程序。涉及刀库、主轴、防护等动作的逻辑必须有软硬件双重互锁,并经过本厂评审与仿真验证。

相关阅读

零基础系统学习入口:PMC 梯形图视频教程从零开始

© 版权声明
THE END
喜欢就支持一下吧
点赞14赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容