FANUC PMC 的 R 地址分两块:用户可用的普通区(R0 起,断电清零、可自由读写)和 R9000 起的系统保留区(PMC 系统软件专用,顺序程序只能读、不能写)。很多现场故障的根源,就是有人把 R9000 当普通中间继电器用了——结果功能指令的运算结果被覆盖,或者常 ON/常 OFF 信号被意外改写。
本文把 R9000 这一片保留区的含义、四类速查、各机型范围差异、实战用法和常见误用一次讲清。
先说结论:R9000–R9xxx 是「只读」的系统保留区,永远不要在梯形图里给它写线圈。 你要用的是它提供的「免费信号」——常 ON(R9091.0)、常 OFF(R9091.1)、200ms / 1s 周期脉冲(R9091.5 / R9091.6),以及功能指令的运算结果(R9000)和除法余数(R9002–R9005)。保留区的上界随机型而变,以你本机的 PMC 信号表为准。
一、R9000 保留区为什么不能当普通继电器用
普通 R 地址(如 R100)是「中间继电器」,你写线圈、它变状态,断电清零,下一次上电再按逻辑重算。R9000 以上完全不同:这一片被 PMC 系统软件占用,每一位的含义由系统固定,顺序程序每周期由系统自己改写。
你能在梯形图里「读」它——比如判断一次加法的结果是否为 0、一次比较谁大谁小、一个 200ms 的方波现在是高还是低——但绝不能「写」它。一旦你在程序里给 R9000 或 R9091 某个位写了线圈,就和系统抢同一个地址:系统每周期重写,你的写入被冲掉是小事,把功能指令的运算结果位改坏、导致整段比较/运算逻辑出错才是大事。

二、四类系统保留信号速查
保留区里最常碰到的信号分四类,按用途记比按地址记更实用。
表1:R9000 系统保留区四类信号
| 类别 | 地址 | 含义 | 现场用途 |
|---|---|---|---|
| 常 ON / 常 OFF | R9091.0(常 ON,恒 1)<br />R9091.1(常 OFF,恒 0) | 系统每周期开头固定的 1 和 0 | 常 ON 做「永久导通」支路、常 OFF 做「恒断开」占位 |
| 周期脉冲 | R9091.5(200ms:104ms ON / 96ms OFF)<br />R9091.6(1s:504ms ON / 496ms OFF) | 固定周期的方波 | 指示灯闪烁、报警蜂鸣节拍、定时采样 |
| 运算结果 | R9000(位定义见下) | ADDB/SUBB/MULB/DIVB/COMPB 的结果 | 判断加法溢出、比较大小、相等 |
| 除法余数 | R9002–R9005 | DIVB 指令的余数 | 取模运算、余数判断 |
| 梯形图状态 | R9015 系列(运行/停止位,机型有差异) | 梯形图起止与运行状态 | 诊断梯形图卡死、死循环 |
需要特别说明一点:R9091.5 / R9091.6 的 ±8ms 误差是手册明确写死的——它来自 PMC 扫描周期,不是你程序写错了。所以用它做「大致节拍」可以,做精确定时不行(精确定时用定时器 T 指令)。

三、运算结果位 R9000 到底说了什么
R9000 是功能指令的「运算结果寄存器」。一次 ADDB(加法)、SUBB(减法)、MULB(乘法)、DIVB(除法)、COMPB(比较)执行完,结果的状态就写在 R9000 的位里:
- R9000.0 = 1:结果为 0(Z 零标志)
- R9000.1 = 1:结果为负(N 负标志)
- R9000.5 = 1:结果溢出(V 溢出标志)
另外,EXIN / WINDR / WINDW(窗口比较、数据读/写)这类指令出错时,R9000.0 也会置 1 表示「执行结果错误」。
表2:R9000 位定义(功能指令运算结果)
| 位 | 含义 |
|---|---|
| R9000.0 | 结果为 0 / 指令执行错误 |
| R9000.1 | 结果为负(小于) |
| R9000.5 | 结果溢出 |
R9002–R9005 是 DIVB 除法的余数寄存器:做 1 字节除法余数进 R9002,2 字节进 R9002–R9003,4 字节进 R9002–R9005。PMC 只处理整数,商的小数部分被舍去,余数就落在这里——要做「取模」逻辑就用它。
四、各机型可用范围差异
保留区上界不是统一的,随机型与 PMC 型号变化:
- 早期 15-MODEL B 系列:约 R9000–R9117
- 0i 系列(0i-C / 0i-D / 0i-MODEL D 等):常见 R9000–R9199,部分 0i-D 手册列为 R9000–R9499
- 其余 R 地址(如 R0–R8000 量级)为用户可用区,具体上限以本机 PMC 规格为准
🚨 一条铁律:R9000 及以上只准读、不准写。判断一个地址能不能用,先看它是不是在保留区里;拿不准就查本机的 PMC 地址分配表,而不是凭经验试。
五、实战用法三例
例一:用常 ON 做「永久导通」支路。 有些逻辑需要一个「永远为 1」的条件去并联一个常闭触点、或给某个功能指令的使能位喂一个恒定信号。直接引 R9091.0(常 ON)即可,不用再搭一个自锁支路。
例二:用 200ms 脉冲做报警节拍。 想让报警灯「闪」而不是「常亮」,把灯的输出线圈用一个 R9091.5(200ms 周期)的常开触点串进去——灯就按 104ms 亮 / 96ms 灭的节奏闪,肉眼是稳定闪烁。注意它的 ±8ms 抖动,别拿它当精确定时器。
例三:用梯形图状态信号判断卡死。 梯形图跑飞、死循环或某一级卡住时,R9015 系列的运行/停止位(具体位定义随机型,以手册为准)状态会异常。配合 PMC 诊断画面看这个位,能快速判断「是程序逻辑死循环,还是根本没在扫描」。

六、K 保留区与 R 保留区的区别
K 是保持型继电器(断电保持),R 是普通内部继电器(断电清零)。两者都有保留区,但位置不同:
- K900 以上(部分机型到 K919)是系统占用区,位含义由系统固定,不要在用户梯形图里动用。普通保持继电器用 K0–K99 或更大的用户区。
- R 的保留区在 R9000 起,与 K 不重叠。
简言之:K 断电能记住、R 断电就清空;但它们的保留区都集中在高编号段,且都只准读不准写。
七、两个高频误用
误用一:把 R9091.1(常 OFF)当输入点用。 有人图省事,想「测一个永远为 0 的点」,就在程序里给 R9091.1 写线圈。它是系统固定的常 0,你一写就和系统冲突,轻则被覆盖无效,重则影响依赖它的其它逻辑。要「恒 0」直接用常闭触点或空操作,别去碰 R9091.1。
误用二:在用户梯形图里写 R9000,把功能指令结果覆盖掉。 这是更隐蔽的坑。比如你在某段程序顺手用 R9000.0 当自己的中间标志,而另一段正好用了 COMPB 比较——比较结果一写进 R9000.0,你的标志就没了,比较逻辑也乱了。R9000 是系统运算结果位,用户程序一律只读。

一句话总结:R9000 系列是 PMC 给你的「免费系统信号库」,常 ON/OFF、周期脉冲、运算结果、除法余数都在里面,而且只读不写。把它当普通继电器写线圈,是现场最容易被忽略、却最容易导致诡异故障的操作之一。
常见问题
FANUC PMC 的 R9000 能不能当普通中间继电器用?
不能,也绝对不要。 R9000 及更高编号是 PMC 系统软件专用的保留区,顺序程序只能读、不能写。它的每一位都有固定含义(如 R9000 是功能指令运算结果寄存器、R9091 是系统定时器信号)。如果你在用户梯形图里给 R9000 写线圈,会和系统每周期的重写冲突,轻则你的写入被冲掉,重则把功能指令的比较/运算结果位改坏,导致整段逻辑输出错误。需要中间继电器请用 R0 起的普通区。
R9091.0 常 ON 信号在梯形图里怎么接?
R9091.0 是系统每周期固定在开头置 1 的「常 ON」信号,用来给需要「永远导通」的条件喂恒定 1。用法上直接把 R9091.0 的常开触点串或并入你要恒通的那一支路即可,例如给某个功能指令的使能位、或一个需要常亮的指示逻辑提供恒定条件,省得自己再搭自锁支路。注意它和 R9091.1(常 OFF,恒 0)是一对,别把两者搞反——要恒 0 用常闭触点或空操作,不要去写 R9091.1。
为什么我的梯形图写了 R9000 但功能指令结果总是不对?
因为 R9000 是系统运算结果寄存器,用户程序只能读不能写。当你在另一段程序里把 R9000 的某一位(比如 R9000.0)当自己的中间标志去写线圈时,系统每周期执行功能指令(ADDB/SUBB/MULB/DIVB/COMPB/COMPB 等)又会把结果写回 R9000,两者互相覆盖:要么你的标志丢了,要么比较/运算的零标志、负标志、溢出标志被你改写,下游依赖这些位的逻辑就全部判断错误。排查时优先检查有没有用户线圈落在 R9000–R9xxx 保留区内,有的话全部移到普通 R 区。
最后更新:2026-10-28
面向海外读者的完整英文版,内容与本文对应 — 可直接转给非中文同事或海外客户。



















暂无评论内容