机床被拆成十几个工位,每个工位都要专属提示——248 条用户报警用完了怎么办?828D 自带的容量是 248 条(700000–700247),超过之后官方给的第二条路是扩展 PLC 报警:额外 1000 条(701000–701999)。问题在于,扩展报警不是改个参数就能用,它要求 PLC 程序里多一个数据块 DB9913,而这个块默认根本不出现在库里——库里没有它的原因,是 PLC 项目勾选了”激活兼容模式”。
这篇按西门子官方应用文档(CNC4YOU 3204 / 2786)与 828D 手册的 B031 章节写完整流程:什么时候该上扩展报警、PPU 与软件版本的硬门槛、“兼容模式”去勾选这一步、”报警号 → DB1600 高位段位地址 → DB9913 配置段”的对应关系、Bit5 进报警日志、红色报警与黑色消息怎么选,以及变量替换文本为什么到 701248 就断了。
相关阅读:报警号怎么算出地址见 828D 用户报警位地址速查:DB1600 顺序算法(那一篇讲算法,这一篇讲配置);840D 侧则是另一套 DB2 分组算法,见 SINUMERIK 840D PLC 用户报警详解。
一、什么时候需要扩展报警:248 条不够用的判断标准
先确认是不是真的”用完了”,很多情况是编号规划浪费而不是容量不够。
表 1 248 条够不够的判断
| 情况 | 判断 | 建议 |
|---|---|---|
| 报警号只用到 7001xx,但还有大量空号 | 没用完,是编号规划乱 | 重新分段规划(按工位/按部件留段),不必上扩展 |
| 700000–700247 已排到 700240 附近 | 确实快用完 | 提前上扩展报警,别等撞到 700247 |
| 不同情况要用同一个报警号显示不同文本 | 不是容量问题 | 先看能不能用标准段的变量接口 DBD1000 系列解决 |
| 机床厂标准程序已占满 248 条 | 典型扩展场景 | 用扩展报警 701000 起,且不占用原有号段 |
| 需要 1248 条以上 | 超出 828D 能力 | 拆分到 HMI 自定义画面或用消息文本替代 |
828D 的用户报警总容量 = 248(标准)+ 1000(扩展)= 1248 条。这是官方给出的上限组合,没有第三个档位。
一句话判据:先把 248 条的编号规划做整齐,真的排满了再上扩展。扩展报警要做 PLC 改动、要下装、要重启 NCK,维护成本比改改编号高得多。
二、硬性前提:PPU 型号、软件版本与「兼容模式」陷阱
这一步做不到,后面全免谈——尤其最后那条”兼容模式”,是库里找不到 DB9913 的头号原因。
表 2 启用扩展报警的硬性前提
| 类别 | 要求 | 备注 |
|---|---|---|
| 硬件(官方列表) | PPU24x.3 / PPU28x.3、PPU27x.4 / PPU29x.4 | 车床 / 铣床 / 磨床工艺均适用 |
| 系统软件 | 828D V4.7.4 以上 | 低于此版本没有扩展报警能力 |
| 编程工具 | PLC Programming Tool V3.3 以上 | 老工具生成不了 DB9913 |
| PLC 项目类型 | 828D Step 2 07.01 以上类型 | 在项目”类型(T)…”对话框里选 |
| 🚨 兼容模式 | 必须去掉勾选「激活兼容模式」 | 不去勾,特殊数据块库里根本不会出现 DB9913 |
| 权限 | 制造商访问级(Manufacturer) + 口令 | 改报警文本同样需要 |
| PLC 程序 | 必须额外包含 DB9913 | 超过 248 条报警时的强制要求 |

三、DB1600 高位段地址:扩展报警从 DBX4000.0 起算
扩展报警的激活位同样在 DB1600,但不与 248 条连续——它从 DBX4000.0 另起一段,中间 DBX31 到 DBX3999 这段是空的。
表 3 标准段与扩展段的地址分工
| 项目 | 标准用户报警 | 扩展用户报警 |
|---|---|---|
| 报警号 | 700000 – 700247 | 701000 – 701999 |
| 条数 | 248 | 1000 |
| 激活位 | DB1600.DBX0.0 – DBX30.7 | DB1600.DBX4000.0 – DBX4124.7 |
| 占用字节 | 31 字节 | 125 字节 |
| 变量接口 | DB1600.DBD1000 起,每条 +4 | DB1600.DBD5000 起,每条 +4 |
| 报警响应用谁 | MD14516[xx](或 DB4500.DBB3000–3247) | DB9913(每报警号一段配置数据) |
| 是否必须改 PLC | 否 | 是,必须加 DB9913 并下载 |
扩展段的地址算法(与标准段同款,只是起点不同):
序号 M = 报警号 - 701000
字节 = 4000 + M / 8 (取整)
位 = M % 8 (余数)
地址 = DB1600.DBX<字节>.<位>
例子:701000 → DB1600.DBX4000.0;701001 → DBX4000.1;701008 → DBX4001.0;701999 → 4000 + 999/8 = 4000+124 = 4124,999%8 = 7 → DB1600.DBX4124.7。
变量接口同样要按 (报警号 − 701000) × 4 + 5000 算:701000 = DB1600.DBD5000,701001 = DBD5004,701247 = DBD5988。官方表格里这三个数是对齐的,用它反推可以自查有没有算错。
四、DB9913 配置数据逐段写入:一个报警号一段
这一步是扩展报警和标准报警最大的差别:扩展报警没有 MD14516 可用,报警对机床的影响全部写在 DB9913 里。
表 4 DB9913.DBWxx 位定义(828D 手册 B031 章节)
| 位 | 含义 | 说明 |
|---|---|---|
| Bit 0 | NC 启动禁止 | 报警时禁止 NC 启动 |
| Bit 1 | 禁用读入 | 禁止程序读入 |
| Bit 2 | 禁用进给 | 所有轴进给保持 |
| Bit 3 | 急停 | 触发急停反应 |
| Bit 4 | PLC 停止 | 让 PLC 进入停止状态 |
| Bit 5 | 报警日志 | = 1 时该报警进入报警日志 |
| Bit 6 | 通过 DB1600.DBX3000.0 确认 | 需 PLC 编程拉高该位做确认 |
| Bit 7 | 通过断电 / 上电确认 | 需断电上电才清除 |
| Bit 8 | 通道 1 的 PLC 用户报警 | 多通道机床用 |
| Bit 9 | 通道 2 的 PLC 用户报警 | 多通道机床用 |
报警号与 DB9913 段落的对应:
段号 S = 报警号 - 701000
701000 → DB9913.DBB0 (DBW0)
701001 → DB9913.DBB1
...
701999 → DB9913.DBB999
官方存在两种标法:828D 手册的对照表写 DB9913.DBB0 – DBB999(每号 1 字节),而 B031 章节的”位编辑器”说明写 DB9913.DBWxx(每号一个字,位 0–9 共 10 位)。两者都出自西门子。实操不要手算字节值——在 PLC 编程工具里双击该报警号的”初始值”,用位编辑器勾选,工具会按实际结构写进去。
完整配置流程(PLC Programming Tool 侧):
- 打开 PLC 软件,右键点击 PLC 项目名(如 828_milling1)→ 左键点「类型(T)…」;
- PLC 类型选 「828D Step 2 07.01」以上类型;
- 去掉勾选「激活兼容模式」(不去勾,库里没有 DB9913);
- 点「确认」→ 若去勾成功会弹出确认窗口 → 点 OK;
- 依次点「库」→「特殊数据模块」→ 此时应能看到 DB9913;
- 双击 ALARM_INI(DB9913) → 确认 → DB9913 自动加入用户数据块;
- 双击目标报警号的「初始值」→ 用位编辑器勾选 Bit0–Bit9 需要的组合 → 确定;
- 保存并下载到 PLC。

五、让扩展报警进入报警日志:DB9913 Bit5 = 1
扩展报警默认同样不进报警日志。要记进日志,靠的是 DB9913 那一段里的 Bit 5。
表 5 标准报警 vs 扩展报警:进日志的做法完全不同
| 报警类型 | 设置位置 | 生效方式 |
|---|---|---|
| 标准(700000–700247) | MD14516[xx] Bit5 = 1 | 重启 HMI |
| 扩展(701000–701999) | DB9913 对应报警号 Bit5 = 1 | 下载到 PLC → 重启 NCK |
注意第三条:扩展报警必须重启 NCK,重启 HMI 不够。这条和标准报警不一样,现场很多人写完跑到 HMI 上重启,等半天没反应。
官方文档(CNC4YOU 2786)对 MD14516 的 Bit5 口径与英文版 828D 手册有出入(手册标 Bit5 = Reserved、Bit6 = 报警/消息)。但在 DB9913 这一侧,Bit5 = 报警日志是明确无异议的(B031 位编辑器表格直写”位 5 报警日志”)。所以扩展报警照着 Bit5 = 1 设即可。

六、红色报警 vs 黑色消息:Bit6/Bit7 决定要不要确认
红色和黑色不是”好看不好看”,它决定这条信息落在哪个窗口、要不要人认。
表 6 报警(红)与消息(黑)的差异
| 项 | 报警 Alarm(红色) | 消息 Message(黑色) |
|---|---|---|
| 显示位置 | 报警列表 | 消息页 |
| 语义 | 较严重,需要停机或处理 | 提示性信息 |
| 是否需确认 | 需要(用 Bit6 / Bit7 指定确认方式) | 不需要 |
| 不用 Bit6/Bit7 时 | — | 激活位为 0 时立即自动清除,显示在消息页 |
| 典型场景 | 电机过载、安全门打开 | 液压未起动、冷却液位低 |
两条确认方式(DB9913 的 Bit6 / Bit7):
- Bit 6:通过 DB1600.DBX3000.0 确认——需要操作员或 PLC 程序拉高这一位,报警才清除。PLC 侧必须写这段复位逻辑,不写就是”报警永远消不掉”。
- Bit 7:通过断电 / 上电确认——只有断电再上电才清除,一般留给最严重的故障。
多通道机床还要管 Bit 8 / Bit 9(通道 1 / 通道 2 的 PLC 用户报警),决定这条报警归属哪个通道;这条也可以由 MD14518 $MN_USER_DATA_PLC_ALARM_ASSIGN 来实现。
七、数字变量替换文本:%d 的用法与 701248 之后没有变量的限制
扩展报警里有一段特别好用的能力:同一个报警号,靠变量显示不同文本。但这段能力只有 248 个号有。
表 7 变量替换文本的能力边界
| 报警号区间 | 数字变量 | 变量接口地址 | 说明 |
|---|---|---|---|
| 701000 – 701247 | 有 | DB1600.DBD5000 – DBD5988 | 每条 +4 字节 |
| 701248 – 701999 | 没有 | — | 官方明确:此区间无对应的数字变量 |
可用占位符(官方给定,与标准段一致):
| 占位符 | 含义 |
|---|---|
| %d | 十进制值 |
| %x | 十六进制 |
| %b | 二进制 |
| %o | 八进制 |
| %u | 无符号整数 |
| %f | 浮点数 |
官方示例(最容易懂的一个):
- I0.0 接通 → 报警 701000 显示
Axis 1 error test - I0.1 接通 → 报警 701000 显示
Axis 2 error test
做法是:两条输入都去激活同一个报警位 DB1600.DBX4000.0,同时按输入不同把不同的值写进变量口 DB1600.DBD5000,报警文本里写 %d,数字就跟着变了。
报警文本怎么编辑(HMI 侧路径):调试 → HMI → 报警文本 → 在”选择文件”对话框里选「制造商 PLC 报警文本(oem_alarms_plc)」→ 确认 → 进入编辑画面。每条报警文本最长 255 个字符。
🚨 改完文本必须重启系统:报警文本文件只在系统启动过程中被装载,不重启就是旧文本。另外文件名要保持小写,存储路径是 CF 卡的
oem/sinumerik/hmi/lng(第三方资料常写的/oem/cfg/与手册不一致,以实机目录为准)。
八、下载与验证步骤 + 常见故障清单
改完 DB9913 不要急着走,按顺序走完这六步再收工。
- 保存 → 下载到 PLC(DB9913 属于用户数据块,必须下装);
- 重启 NCK(不是只重启 HMI);
- HMI 进「NC/PLC 变量」界面,输入
DB1600.DBX4000.0等地址,确认能监控到状态; - 强制触发条件(如短接对应输入),看报警窗口有没有出该号、文本对不对;
- 打开报警日志,确认 Bit5 设过的报警有记录;
- 往变量口写不同值(如把 1 改成 2),确认文本里的
%d跟着变。

表 8 扩展报警常见故障清单
| 现象 | 最可能原因 | 处理 |
|---|---|---|
| 「特殊数据模块」库里找不到 DB9913 | PLC 项目勾了激活兼容模式,或类型低于 Step 2 07.01 | 改类型为 Step 2 07.01 以上并去勾兼容模式,确认后重开库 |
| DB9913 改了完全不生效 | 只重启了 HMI,没下载 / 没重启 NCK | 下载到 PLC → 重启 NCK |
| 报警号出来了但没有文本 | oem_alarms_plc 里没配该号;或配完没重启 | 补文本 → 重启系统 |
| 文本里的 %d 不显示数字 | 报警号落在 701248–701999(该段无变量) | 变量只在 701000–701247;或改回标准段用 DBD1000 系列 |
| 变量显示的数不对 / 差一格 | 变量口索引算错 | 接口 = 5000 + (报警号 − 701000) × 4 |
| 报警一直消不掉 | 用了 Bit6 确认,但 PLC 里没写 DB1600.DBX3000.0 复位 | 补写复位逻辑;或改回不用 Bit6/Bit7 的自动清除模式 |
| 双通道机床报警归属错通道 | 没设 Bit8 / Bit9 | 按通道设 Bit8/Bit9,或改用 MD14518 |
| 报警状态看着对但机床没反应 | Bit0–Bit4 没勾 | 回到位编辑器勾选需要的 NC 反应位 |
| 编辑报警文本提示权限被拒 | 未进制造商访问级 | 输制造商(Manufacturer)口令 |
收尾建议:改之前把原 PLC 项目另存一份,DB9913 的位组合截屏存档,并把”哪个报警号对应哪个工位/部件”做成一张对照表留在设备档案里——一百多条扩展报警过了半年没人记得住。
常见问题
828D 最多能自定义多少条 PLC 报警?
标准用户报警 248 条(700000–700247,激活位 DB1600.DBX0.0–DBX30.7),扩展用户报警 1000 条(701000–701999,激活位 DB1600.DBX4000.0–DBX4124.7),合计 1248 条,这是 828D 官方给出的上限,没有第三个档位。启用扩展报警有硬门槛:硬件需 PPU24x.3 / PPU28x.3 或 PPU27x.4 / PPU29x.4,系统软件 V4.7.4 以上,PLC Programming Tool V3.3 以上,PLC 项目类型选 828D Step 2 07.01 以上且必须去掉勾选「激活兼容模式」,并且需要制造商访问级口令。另外 808D 的标准容量是 128 条(该数据来自第三方整理,未见官方手册原文,需实机核实),是否支持扩展段官方未作说明。
扩展用户报警的 DB9913 怎么配置?
先在 PLC 编程工具里右键项目名 →「类型(T)…」→ 选 828D Step 2 07.01 以上类型并去掉勾选「激活兼容模式」(不去勾库里不会出现 DB9913)→ 确认并 OK → 依次点「库」→「特殊数据模块」→ 双击 ALARM_INI(DB9913) → 确认后自动加入用户数据块。然后双击目标报警号的「初始值」,用位编辑器勾选:Bit0 NC 启动禁止、Bit1 禁用读入、Bit2 禁用进给、Bit3 急停、Bit4 PLC 停止、Bit5 报警日志、Bit6 通过 DB1600.DBX3000.0 确认、Bit7 通过断电上电确认、Bit8/Bit9 通道 1/2 归属。段落对应关系是 段号 = 报警号 − 701000(701000 对应 DBB0,701999 对应 DBB999)。最后保存、下载到 PLC 并重启 NCK。
701000 之后的报警为什么没有数字变量可用?
因为官方把”带变量的扩展报警”限定在 701000–701247 这 248 个号上——这一段每条有一个配套的双字变量接口 DB1600.DBD5000 起、每条加 4 字节(701247 对应 DBD5988),报警文本里写 %d / %x / %b / %o / %u / %f 就能把变量值显示出来。701248–701999 这一段官方明确写明”无对应的数字变量”,所以在这段上写 %d 不会显示出数字。解决办法是把需要变量替换的报警排到 701000–701247 区间,或者回到标准报警段使用 DB1600.DBD1000 系列的变量接口。
最后更新:2026-10-25
面向海外读者的完整英文版,内容与本文对应 — 可直接转给非中文同事或海外客户。

























暂无评论内容