ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

FANUC PMC编程实战指南:从梯形图地址表到调试避坑手册

FANUC PMC编程实战指南:从梯形图地址表到调试避坑手册

简介:FANUC数控系统PMC编程说明书是一份面向数控机床电气调试、维修及程序开发人员的专业PDF文档,内容围绕BEIJING-FANUC PMC PA1/SA1/SA3型号展开,系统梳理可编程机床控制器(PMC)的结构原理、指令系统、编程规则与调试方法。文档从基础I/O信号讲起,覆盖SET/RST/AND/OR/NOT/LD/OUT等常用指令,以及定时器、计数器、子程序、中断程序等高级应用,并结合换刀逻辑、主轴控制、冷却润滑等典型工程案例,帮助读者理解机床动作与PMC程序的对应关系。同时,说明书提供了信号分配表、程序结构编写规范、在线监控与故障报警分析方法,适合数控系统初学者建立完整知识框架,也适合一线维修人员查漏补缺。资源包共1个PDF文件,体积约15.4MB,内容组织清晰。目前已有3479人学习浏览,是一份兼顾理论性与实操性的FANUC PMC编程参考资料。

1. 一本FANUC PMC编程说明书,为什么值得从头啃到尾

《FANUC数控系统PMC编程说明书(非常详细)》这个PDF,在很多电气工程师的网盘里躺了很多年。它不是给操作工看的按钮说明书,而是给机床电气设计、调试、维修人员看的梯形图编程全案:从PMC和数控系统的信号交换,到X/Y/G/F/R/A每个地址的位定义,再到定时器、计数器、译码、旋转等指令的用法,全都按“你可以照着画梯形图”的粒度写。想搞懂机床为什么报警、为什么刀库卡刀、为什么自动门不开,最终都要回到这份说明书里查信号、查指令。

唯一的问题是它太厚、表格太多,初看像天书。这篇笔记把它拆成一条能落地的路径:先立住PMC和通用PLC的差别,再走一遍建工程、写梯形图、下载调试,然后把最容易翻车的五项列出来。适合正在做机床调试的工程师,也适合准备入数控维修的新手。读完之后你会知道:你的梯形图为什么不动,以及下一个该查哪张表。

2. PMC和通用PLC不是一回事:地址表与扫描周期先立住

2.1 为什么PMC和NC共用一条系统总线,而不是独立控制器

PMC的全称是Programmable Machine Controller,可编程机床控制器。从功能上看,它做的事和PLC一样:读输入信号、按梯形图逻辑计算、写输出信号。但它不是一台独立的控制器,它内嵌在数控系统里,和加工程序解释、轴位置控制、伺服驱动、主轴控制跑在同一个硬件平台上。这意味着梯形图的输入输出不是它自己单独管理的,而是通过数控系统的内部总线去访问I/O模块。G信号和F信号就在这条总线上交换:PMC写G信号,数控系统读;数控系统写F信号,PMC读。

扫描机制也不一样。通用PLC一个扫描周期把整个程序从头到尾算完,程序越长周期越长,响应越慢。FANUC PMC把梯形图分成两段:第一级程序固定每8ms执行一次,第二级程序按一定的比例分配执行。第一级程序专门用来处理急停、超程、安全门这类必须快速响应的信号。第二级程序用来跑刀库选择、倍率切换、数据运算这些不急的逻辑。调试时如果发现某个动作有延迟,先别怀疑硬件,先看这段程序在第一级还是第二级,以及第二级程序的整体长度。

血泪经验是:有次我在第二级程序里塞了两个八路比较指令做安全门互锁,结果安全门断开后设备又多走了半个行程。原因是第二级程序被拆成多个8ms节拍逐段执行,而互锁逻辑被排在了后面的节拍里。说明书里“程序结构”那一章对此讲得很清楚:第一级程序8ms固定周期,第二级程序按比例分配执行时间。这也解释了为什么PMC梯形图不是越大越好,第一级程序必须短,紧急逻辑必须放在最前面。

2.2 一张地址表看懂X/Y/G/F/R/A:先分清谁和外部、谁和NC联系

写梯形图之前,一定要先背熟地址分类。这份说明书最值钱的部分就是把每个地址的定义逐一列出,而不是只给一个笼统的“输入输出点”。

地址类别信号方向典型用途我的记忆方法
X外部输入到PMC按钮、限位开关、接近开关X是现场信号进来
YPMC输出到外部电磁阀、继电器、指示灯Y是PMC送出去
GPMC送到NC循环启动、进给保持、方式选择G是给NC的指令
FNC送到PMC运行状态、轴移动中、报警状态F是从NC反馈回来
R内部中间继电器梯形图内部临时变量不出门,纯内部
APMC报警输出触发数控系统报警画面A一亮就报警
K保持型参数梯形图模式选择、功能开关断电不丢,类似拨码
D数据表定时器设定值、计数器值、刀号数据参数都存在这里

以常见系统为例,X8.4是急停按钮输入,Y1.0可能是某组电磁阀输出,G7.2常用来发循环启动。但这句话有个大前提:具体地址以你手上那台机床的系统版本和I/O分配表为准。不同系统、不同版本,同一功能的地址可能差好几个字节。说明书里标注了适用于哪个机型系列,千万别把另一个系列的地址表硬套过来。

地址的位写法也要习惯:X8.4表示第8字节的第4位,不是“8点4”。一个字节有8个位,X8.0到X8.7是一整组。很多新手在梯形图软件里搜地址时不带位号,结果搜出来一堆无关触点,其实就是没搞清字节和位的层级关系。

2.3 “详细”体现在信号一览表:我读手册的顺序

拿到这本厚说明书,不建议从第一页顺序读。我一般按五步走:

第一步,看系统连接框图,搞清NC、PMC、I/O模块、机床侧执行元件之间怎么连。第二步,查I/O Link分配表,把实际模块的地址映射写下来。第三步,翻G/F信号一览表,重点找循环启动、进给保持、急停、方式切换这几个关键信号在什么地址。第四步,查功能指令附录,熟悉TMR、DECB、ROT这些指令的格式。第五步,回头再看梯形图示例,这时候能看懂它为什么这么写。

这个顺序解决了一个常见困惑:直接看梯形图时,满屏的G和F不知道在干什么。G/F信号是NC和PMC之间的“约定”,不看说明书,你就不知道某个F信号什么时候会变1。比如NC运行中信号,它是NC发给PMC的F地址,PMC用它去点亮“运行中”指示灯。你在梯形图里看到F地址常开触点,就得去信号表里确认它满足什么条件才导通,否则就只能靠猜。

3. 从空工程到第一条能跑的梯形图:走通FANUC梯形图编程软件全流程

3.1 建工程、选机型、分配I/O地址

FANUC的PMC梯形图是在PC上用梯形图编辑软件做的,常见的有LADDER-III这类编辑器。新建工程时,第一步是选择PMC类型,常见型号有PMC-SA1、PMC-SB7等,这个型号要和数控系统实际配置一致,选错会导致下载后运行报警。第二步是设置I/O Link分配,把远程I/O模块的起始地址映射到X/Y地址。第三步是设置第一级程序步数上限和程序容量。

我一般会先在纸上画一张表,把每台机床实际用到的输入输出列出来:

输入点:急停按钮 -> X8.4 循环启动按钮 -> X0.0 进给保持按钮 -> X0.1 方式选择开关 -> X2.0-X2.2 输出点:循环启动指示灯 -> Y1.0 进给保持指示灯 -> Y1.1 刀库正转电磁阀 -> Y2.0 刀库反转电磁阀 -> Y2.1

这张表就是I/O分配表。它的作用是让梯形图里的每一个X/Y地址都能对应到真实物理点。常见做法是先在编辑软件里建一个符号表,把物理名称和地址绑定,这样比在梯形图里直接写X8.4可读性好很多,后期维护也省事。注意:I/O分配一旦做完,尽量不要在中途大改,因为机械接线已经按这张表做了。

3.2 写一个急停+启动的梯形图段并逐行说明

第一个梯形图段,我通常写设备最基本的启停逻辑。这里用急停输入和启动按钮控制一个输出继电器,同时做一个自锁。梯形图画出来是这个样子:

X8.4 X0.0 Y0.0 |--|/|-------------| |------+--------( )----+ 急停按钮 启动按钮 | 输出线圈 常闭接点 | | Y0.0 |--| | 自锁触点

逐行说明:X8.4是急停按钮输入,用的是常闭触点|/|。外部急停按钮是常闭接法,正常状态下X8.4为1,常闭触点导通。按下急停后X8.4变0,常闭触点断开,输出线圈Y0.0断电。X0.0是启动按钮,按下瞬间导通。Y0.0得电后,它自己的常开触点闭合,即使松开启动按钮,电流也能通过Y0.0自锁触点继续维持线圈通电。

这里有一个特别容易看反的地方:外部急停用常闭触点,梯形图里就要用常闭指令。如果外部接线用了常开,梯形图也要改成常开。判断方法是先用在线监视看X8.4在急停释放时的实际值,再决定用| |还是|/|,不要凭感觉。自锁逻辑在PMC里很常用,但要注意:自锁回路必须有一个明确的断开条件,否则按了急停再释放,设备会自己恢复运行。很多安全回路要求急停断开后必须按复位按钮才能重启,就是靠在这个回路里串一个复位信号。

3.3 编译、下载与在线监视:别跳过RAM写入

梯形图写完不能直接下载,要先做编译检查。编译时会检查语法错误、重复线圈、未定义地址。重复线圈这个错误最容易漏:同一个Y地址在两个地方输出,编译不报错,但运行时只有最后执行的那个线圈有效。FANUC梯形图软件对这类问题通常会给出警告,但有些版本只在输出窗口列一条,不仔细看就跳过了。

下载通道常见有RS-232串口、存储卡、以太网。下载前确认机床处于急停状态,最好把模式开关打到手动。下载动作分两步:先把程序传送到PMC的内存,再执行“RAM写入”操作。只下载不写入,程序只能运行到断电前,断电重启后恢复成旧程序。这个坑我踩过不只一次,所以在现场调试时我给自己定了个规矩:每次下载完,先做一次RAM写入,再断电重启验证一遍。

在线监视是调试的主力功能。连接上机床后,在软件里打开“在线监视”模式,梯形图上的每个触点都会显示通断状态,绿色表示导通。排查顺序一般是:先看输入触点是否闭合,再看中间继电器有没有吸合,最后看输出线圈有没有得电。曾经有个案例是机床启动按钮没反应,查了半小时,最后发现是I/O模块上的24V电源线松了,梯形图里X0.0一直没信号。这个教训告诉我:监视画面里输入点是灰的,先量电压,别急着改梯形图。

4. 功能指令让PMC程序“可编程”:定时器、译码、旋转指令的选型与参数

4.1 TMR不仅是延时:定时器号的选择规则

PMC里最常用的功能指令是定时器TMR。它的梯形图画法是:

R0000.1 |--| |-------[ TMR 01, 3000 ]

含义是:当R0000.1导通时,定时器01开始计时,3000毫秒后,定时器01的触点动作。它在说明书里的定义是“计时接通延时”,也就是延时导通。TMR的设定值单位是毫秒,但实际精度受扫描周期影响,第一级程序里的定时器精度会高一些,第二级程序里的定时器会有几十毫秒级别的时间误差。

定时器编号是全局的,整个PMC程序里同一个编号只能用一次。现场翻车常见场景是:设备某个动作延迟几秒才执行,查了半天发现两个不同页面用了同一个定时器号,后面的程序覆盖了前面的设定值。而且定时器号一旦被占用,在梯形图里会显示重复定义。修改时先搜一遍程序里这个编号出现几次,再做改动。

另一个坑是定时器设定值存在D数据表里。TMR指令里写的是定时器号,真正的时间数值存在对应的数据表地址中,这个地址在软件里可以查。如果只改梯形图里的“3000”,其实改的是默认值,运行中数据表里存的还是旧值。正确做法是把设定值写在D数据表,然后通过机床操作面板的PMC参数画面直接改,不用反复下载程序。

4.2 DECB把按钮信号翻译成动作码

DECB是译码指令,全称是“二进制译码”。它的作用是判断一个地址里的数值是否等于设定值,并把比较结果输出到指定的R地址。格式看起来是这样:

DECB X0020, 2, R0100

这个例子的含义是:读取X0020这个字节地址的值,它等于2时,R0100导通。你可能会说这不是比较指令吗?确实,它和比较指令COMP的差别是DECB专门用于“一条指令判定多个值”,而且它的源地址通常来自一组拨码开关或刀号编码器。

实际用法最典型的场景是倍率开关和刀号选择。机床面板上有一个多位选择开关,每位接到不同的X输入,开关在不同挡位时X字节的值不同。用DECB按挡位译码,每个挡位输出到独立的R继电器,梯形图后续逻辑就能根据R继电器的通断执行不同动作。这样写比把七八个触点串并起来要好维护得多。

用DECB时有三个参数容易写错:第一个是源地址,必须是字节地址,不能写X8.4这种带位号的地址;第二个是译码值,可以在线改,但要注意它是十进制还是十六进制,说明书里常用十进制,而梯形图里的常量可能默认是十六进制,容易看走眼;第三个是结果地址,一般用R开头的内部继电器,避免和Y输出直接混在一起,这样便于在调试时单独监视译码结果是否命中。

4.3 ROT是刀库换刀的功臣

ROT指令是回转体控制指令,专门用于刀库、工作台分度这类需要“就近旋转”的场合。它的参数一般包括:回转体的分度数、当前位置地址、目标位置地址、结果输出地址。指令执行时会把当前位置和目标位置做差,判断出正转、反转方向,以及要走多少步。

调试刀库最典型的麻烦是“当前位置和机械实际位置不一致”。PMC内部记住了刀库当前位置,但机械如果掉过电、手动盘过刀库,监控画面里的位置就成了假数据。一开机必须做刀库回零,让PMC重新记住零点。这个回零逻辑通常放在第二级程序里,优先级排在气缸动作前面。

ROT指令的输入输出地址一般都用D数据表,因为位置值需要断电保持。如果用了R继电器,断电后位置记忆全部归零,刀库一启动就往一个方向转,直到撞到原点开关。检查时先看当前位置地址的值是不是和实际刀位相符,再判断是方向搞反还是零点没对齐。

5. PMC编程避坑手册:五个翻车现场和修复记录

5.1 地址写错不报错,设备到时不动

现象:程序下载正常,在线监视也看到输出线圈已经导通,但机床侧的电磁阀、指示灯就是不动作。

原因:梯形图里的Y地址和实际I/O模块的分配不一致。很多时候是建工程时I/O Link分配没做,或者沿用了其他机床的分配表,Y地址指向了一个不存在的通道,PMC输出信号根本没送到物理模块。

解决:打开I/O Link配置画面,核对每个模块的起始地址,然后确认梯形图里用的Y地址在这个范围内。另一个排查方法是强制这个Y点为1,用万用表量对应模块输出端有没有电压。输出点有电压,说明模块和接线没问题,问题在地址映射;没有电压,那就是模块本身没被激活。

5.2 急停回路常开常闭搞反,安全门一开设备反而启动

现象:安全门正常关闭时设备不能启动,把门打开,设备反而开始运转。这种情况已经不是“停不下来”的问题,而是逻辑反了。

原因:外部安全门开关是常开触点,关门时触点闭合,X输入为1;梯形图里却用了常闭触点|/|,导致关门时条件满断开,开门时条件反而导通。

解决:看PMC的输入状态画面,把门开关的两个状态都按一遍,记下X地址的值变化,再回梯形图里选择正确的触点类型。我遇到类似问题,一律采用“先看输入值,再画触点”的顺序。千万不要用万用表量完就猜,要按PMC实际读到的值来。

5.3 强制信号忘了释放,设备自己动

现象:设备在没人操作的情况下,某个气缸自己动作了,或者主轴突然转了半圈。

原因:调试时为了试动作,用在线功能里的“强制”把某个Y输出强制为1,试完没取消。这个强制状态一直有效,PMC程序里即使没有输出条件,被强制的地址仍然保持1。

解决:养成一个习惯:每次强制前记录地址,调完立刻取消。在线监视画面上,被强制的地址旁边会有特殊标记。排查时用“信号状态一览”功能查所有被强制的地址,一页一页翻,不要只看当前页面。

5.4 在线修改后直接断电,修改全部丢失

现象:白天改完梯形图,下载后试运行正常,晚上关机断电,第二天开机,程序变回修改前的老版本。

原因:下载操作只把程序写入了PMC的RAM,没执行写入到断电保持存储器的动作。RAM一掉电就清空,所以程序还原了。

解决:下载完成后,执行一次“RAM写入”操作,把运行中的程序固化到保持区。这个操作做完后,还要再备份一份梯形图导出文件到电脑。我有一次因为没备份,系统存储区故障后只能凭记忆重画,花了一整天。

5.5 把急停逻辑写进第二级程序,扫描延迟酿大错

现象:急停按钮按下了,设备没有立即停下,而是往前多走了一段才停。

原因:急停逻辑被写进了第二级程序,而且第二级程序体积很大,扫描节拍被拉长。PMC虽然第一级程序每8ms执行一次,但第二级里的逻辑可能要隔几十甚至上百毫秒才被执行一次。对紧急停止来说,这个延迟是致命的。

解决:把急停、超程、安全门、硬限位这几类信号全部放到第一级程序,并且第一级程序里只保留这些紧急逻辑,不要放定时器、不要放数据计算。检查方法是在软件里看第一级程序占用的步数和执行时间,如果第一级里出现了TMR这类指令,基本可以判定设计不合理。

6. 验证一个PMC修改是否成功的三个习惯

6.1 用在线监视搜地址,别只盯梯形图

梯形图页面很多,手动翻页找信号很慢。在线监视模式里都有“信号搜索”功能,输入X、Y、G、F、R任意一个地址,直接跳转到对应位置。排查问题时要按“输入点→中间继电器→输出点”的顺序逐个搜,每搜一个地址就记下它的当前状态,很快就能定位断点在哪一层。

6.2 备份梯形图与数据表,就像备份加工程序

修改PMC程序前,先导出一份当前版本的梯形图文件和I/O分配表。改完并验证通过后,再导出一份新版本。这样每次变更都有历史记录,将来设备出问题,可以把新旧版本做对比,看清楚到底改了哪里。操作习惯是:文件名里带上日期和修改内容,比如“20250612_急停逻辑修改”。

6.3 改完必须做一次全地址复位和上电自检

下载完新梯形图,不要急着按启动按钮。先把所有强制信号取消,再执行一次全地址复位,把R继电器和输出全部清掉。然后断电重启,听继电器吸合声音是否正常,看NC报警画面有没有PMC报警。最后再手动试每一个参与本次修改的输入输出点,确认信号状态和I/O表一致。这套流程走完,才允许启动设备。

做调试这些年,我最大的教训就是:PMC编程本身不难,难的是你永远不知道现场会接错线、会有人改过机械、会在你不知道的地方加了一个中间继电器。所以每次我拿到一份不熟悉的梯形图,第一个动作永远是备份,然后查I/O表,最后才去理解逻辑。这份流程图式的谨慎,比任何指令技巧都管用。希望帮到你。

本文还有配套的精品资源,点击获取

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进