🚨 口径与合规声明:本文块名、OB 调用关系、master copy 库与
ALMSG_DB [DB2]变体取自 Siemens 官方《SINUMERIK STEP 7 Toolbox Configuration Manual》(V15.1 / V17)、《SINUMERIK 840D sl CNC Commissioning Manual》与《Basic Functions / P3: Basic PLC program》;德语助记符切换流程与 Mini HHU 验证项来自公开的现场调试资料,已逐项标注来源层级。Toolbox 是授权商业软件,本文只讲官方获取渠道与结构,不提供下载链接、网盘或破解;具体块号与路径随机型、Toolbox 版本变化,以随机资料与本机项目为准。
30 秒速查
表 0 七类现场问题与第一个落点
一、基础程序块是什么:先纠正三个常见误读

官方把 PLC 程序拆成两层:PLC basic program(基础程序)负责 PLC 用户程序与 NCK、HMI、MCP(机床控制面板)之间的信号与数据交换;PLC user program(用户程序)才是机床厂按工艺逻辑扩写的部分。基础程序是 SINUMERIK STEP 7 Toolbox 的组成部分,按 NCU 固件版本选对应版本(例如官方列出过 V4.5.x.x / V4.7.x.x / V4.8.x.x 三档),不是随便拿一个项目就能通用。
| 层次 | 官方定义 / 作用 | 谁能改 |
|---|---|---|
| OB(组织块) | OB1 循环、OB100 冷启动、OB40 硬件中断、OB82 诊断中断、OB86 机架/站故障 | 用户可改块,OB100 里放参数化 |
| FB / FC(功能块 / 功能) | 基础程序功能实现,如 FB1 RUN_UP、FC2 GP_HP、FC3 GP_PRAL、FC5 GP_DIAG | 多为 know-how-protected,不要改内部 |
| DB(数据块) | 接口与参数区,如 gp_par [DB7]、ALMSG_DB [DB2]、轴 DB31… | 按官方变体选用,不手改结构 |
| 用户程序 | 机床厂按工艺扩写的逻辑,官方在 OB100 末尾留了插入位 | 这才是该写自己代码的地方 |
表 1 四层结构与「谁能改」
🚨 三个高频误读,先纠正:
- FB2 不是「轴 / spindle 块」。官方块表里
FB2 = GET(读 NC 变量)、FB3 = PUT(写 NC 变量)、FB4 = PI_SERV、FB5 = GETGUD。轴与主轴的接口信号在轴 DB 与 PLC/NCK 接口里(如手轮激活DB31…DBX4.0-2),不在 FB2。 - FC76 不是标准基础程序的常驻块。它出现在
minibhg.zip(Mini HHU 选件包)生成的源文件语境里;旧 840D 项目里常见的 MCP 轴选映射块是FC19。两者都是现场项目口径,不要当成通用块表去新项目里找。 8x0D / 020607 / BSP_PROG是老 Toolbox CD 时代的路径写法(此处用 / 代指原目录分隔符)。现行 840D sl Toolbox 改用 master copy 库,828D 用集成在 Toolbox 里的 PLC Programming Tool;目录随版本变化,不要照抄任何写死的路径。
官方 OB 调用关系是稳定的,可以据此判断「哪个块在什么时候跑」:
| 组织块 | 触发时机 | 调用的基础程序块 |
|---|---|---|
| OB1 | 循环执行 | GP_HP [FC2] |
| OB40 | 硬件中断 | GP_PRAL [FC3] |
| OB82 | 诊断中断 | GP_DIAG [FC5] |
| OB86 | 机架 / 站故障 | GP_DIAG [FC5] |
| OB100 | STOP→RUN 只执行一次 | RUN_UP [FB1] + gp_par [DB7] |
表 2 官方 OB 与基础程序块调用关系(Toolbox Configuration Manual)
注:表 2 的调用表是理解「OB100 为什么只跑一次」的关键——FB1 的参数化写在 OB100,PLC 每次启动读一次,改完必须重启 PLC 才生效。这与828D 第三个手轮调试里 FB1 只在启动时跑一次是同一条机制。
二、官方路径:Toolbox 的 master copy 库与老 CD

| 来源形态 | 适用年代 / 工具 | 里面是什么 |
|---|---|---|
| master copy 库 | 现行 840D sl STEP 7 Toolbox(V14 SP1 起) | 840D sl PLC Basic Program、…(upgrade)、ALMSG_DB_ExtendAIMsg 三个文件夹 |
| 外部 STL 源文件 | 同上,External sources 文件夹 | gpob840d.awl、bhg_db_awl、diagnose.awl、mdeclist.awl |
| 老 CD 的 Library | 810D / 840D,STEP 7 V5.x | SIMATIC Manager → File > Open > Library,复制块容器 + source 容器 + 符号表 |
表 3 三种官方交付形态与适用工具
三个 master copy 的分工不能混:
| master copy 文件夹 | 用途 | 关键限制 |
|---|---|---|
840D sl PLC Basic Program | 建全新项目 | 含最大配置(31 轴 / 10 通道)全部块 |
840D sl PLC Basic Program (upgrade) | NCU 固件升级、换件、迁移后升级块 | 不含用户可改块:无 OB、无 FC12、无 FB29、无 DB4 / DB5 |
ALMSG_DB_ExtendAIMsg | 用 AL_MSG [FC10] 扩展 PLC 报警时 | 提供 ExtendAlMsg=True 的 DB2 变体 |
表 4 三个 master copy 与选用条件
🚨 一个能直接把 PLC 拖进 STOP 的坑:ALMSG_DB [DB2] 有 ExtendAlMsg=False 与 True 两个变体,选用的 DB2 变体必须与 OB100 里 FB1 启动参数 ExtendAlMsg 一致。官方在 V15.1 / V17 手册里重复强调这一点。用错变体不会报友好的提示,而是表现为 PLC 报警扩展不工作甚至启动异常。
外部 STL 源文件用来重新生成块,别把它们当文档读:
| 源文件 | 生成的块 |
|---|---|
gpob840d.awl | OB1、OB100、OB40、OB82、OB86 |
bhg_db_awl | strdat [DB<xy>](手持单元数据) |
diagnose.awl | FB29、DB80、DB81、FC99 |
mdeclist.awl | DB75(M 译码表) |
表 5 外部 STL 源与生成块对应(官方 Toolbox 手册)
怎么合法拿到 Toolbox:随机交付资料与机床厂渠道(提供机床序列号,按合同索取对应 NCU 固件版本的 Toolbox),或 Siemens 授权支持渠道。改机之前照例先导出参数与程序留证;官方手册的版本对齐方法另见840D sl 诊断手册官方入口。
三、导入三步:从 master copy 到可编译项目
| 步骤 | 动作 | 检查点 |
|---|---|---|
| 1. 对齐版本 | 在 HMI / Startup 读出本机 NCU 固件版本,选 ≥ 该版本的 Toolbox | Toolbox SW 标签低于 NCK 软件版本 → PLC 停在 STOP |
| 2. 复制 / 生成块 | 从 master copy 库复制所需块到项目 Program blocks;或把 STL 源放进 External sources 再生成块 | 只用得到的轴/通道块,多余的删掉以缩短加载时间 |
| 3. 编译下载 | 编译全部源,冷启动(cold restart)下载到 PLC | 观察 OB100 无报错、PLC 平稳进入 RUN |
表 6 导入三步与检查点
老 810D/840D 项目的等价做法(STEP 7 V5.x):SIMATIC Manager → File > Open > Library,从块容器复制 FCs / FBs / DBs / OBs / SFC / SFB / UDT,从 source 容器复制 GPOB840D(可能还有 MDECLIST、HHU_DB),再复制符号表。官方 Function Manual P3 说明基础程序与当前 STEP 7 版本无依赖,但跨 NCU 固件版本必须重新对齐 Toolbox,否则最常见的症状就是下载后 PLC 停在 STOP。
现场判据:OB100 / FB1 / DB20 的版本与运行中的 NCK 软件不匹配时,先别怀疑硬件——从 SW 标签 ≥ 本机 NCK 软件版本的 Toolbox 重新加载基础程序块,再冷启动。这也解释了为什么刀库初始化改完要重启才生效一类问题常被误判成配置错误。
四、改基础程序块的边界:哪些能参数化,哪些绝对别动

| 类别 | 具体做法 | 风险 |
|---|---|---|
| ✅ 允许:FB1 形参 | 在 OB100 的 CALL "RUN_UP", "gp_par" 里填 MCPNum、MCP1In/Out/StatSend/StatRec、MCP1BusAdr、MCPBusType 等 | 填错地址 → MCP 不在线,但可回退 |
| ✅ 允许:用户程序 | 官方在 OB100 末尾留有 //Insert User program from here 插入位;用户逻辑写在自己的 FC/FB | 低,前提是留了备份 |
| ⚠️ 谨慎:外部源再生成 | 需要改 OB 结构时改 STL 源后重新编译生成块 | 会覆盖已有用户修改 |
| ⛔ 禁止:know-how-protected 块 | upgrade 主副本里的保护块不提供源码 | 改不了也不该改 |
| ⛔ 禁止:Safety 相关 | 带 SINUMERIK Safety Integrated 的机床上,FB1 (RUN_UP) 与 OB82 属安全链 | 任何改动需正式变更请求 + 重新验收测试 |
表 7 能改 / 谨慎 / 禁改三级边界
官方调试手册给出的 OB100 参数化示例(结构示例,数值不得照抄到本机):MCPNum := 1 表示一个 MCP;MCP1BusAdr := 6 是 PROFIBUS DP 地址示例,Ethernet 示例里是 192;MCPBusType := B#16#03 对应 PROFIBUS DP、B#16#05 对应 Industrial Ethernet。现场资料还给过 B#16#55(PROFINET / Ethernet MCP 上挂 Mini HHU)与 B#16#FE(PROFIBUS)等取值——这些是第三方口径,必须按本机 Toolbox 符号表与硬件配置核对,不要凭网页照填。
同理,MCP1Timeout := S5T#700MS、MCP1Cycl := S5T#200MS、NCCyclTimeout := S5T#200MS、NCRunupTimeout := S5T#50S 这些出现在官方/论坛示例里的超时值也是示例值,不是通用推荐值。
五、德语助记符坑:U/O/UN/S/R 编译报错怎么解

这是真实高发翻车点:minibhg.zip(Mini HHU 标准包)与许多较旧 BSP 块是用德语助记符写的,配置成英语助记符的 STEP 7 会拒绝编译,在 FC76 / FB1 / OB100 报语法错。
| 德语 | 英语 | 含义 |
|---|---|---|
| U | A | AND |
| O | O | OR |
| UN | AN | AND NOT |
| S | S | SET |
| R | R | RESET |
表 8 德语 / 英语 STL 助记符对照
解法(现场调试资料口径,非官方手册步骤,操作前先备份项目):
- SIMATIC Manager 打开含 Mini HHU 块的项目 →
Options > Customize→Language选项卡。 - 在
Mnemonics下把 English 改成 German,OK,按提示重启 SIMATIC Manager。 - 从
minibhg.zip归档重新编译全部源文件,确认无语法错后下载并重启 PLC。 - 若项目默认是英语,切回 English;已编译的块不受影响。
🚨 不要长期留在德语模式:一个项目里混用助记符语言,后续插入块时会出现随机的符号不匹配。导入完成后就切回项目标准,让之后新增的代码统一遵循一套语言。
顺带澄清:这个坑与840D sl 报警号段无关,它是编译期问题,不会以报警号形式出现在 HMI 上;表现为 STEP 7 编译报错或 PLC 起不来。
六、改完必须做的四项验证
| 验证项 | 怎么看 | 不通过说明什么 |
|---|---|---|
| ① PLC 启动 | 重启 NCU 电源,观察 PLC 平稳完成启动、OB100 无报错 | 块版本 / DB2 变体 / 参数化有误 |
| ② MCP 在线 | HMI Diagnostics > Bus 看第一个 MCP 在线 | MCP1BusAdr / MCPBusType / 报文地址填错 |
| ③ 手轮计数 | JOG → Handwheel,转手轮看计数器变化 | NCK 侧 MD11350/11351/11352 或映射未生效 |
| ④ 轴选择映射 | PLC 在线视图看轴选择生效(如 DB31.DBX4.0) | 轴选 FC 或接口位不对 |
表 9 四项启动与信号验证
官方 Function Manual 的手轮接口信号可作交叉核对:DB31…DBX4.0-2 是机床轴激活手轮,DB21…DBX12.0-2 / 16.0-2 / 20.0-2 是几何轴 1/2/3;DB10.DBX100.0-4 / 101.0-4 / 102.0-4 分别是手轮 1/2/3 的轴号,DBX100.6 / 101.6 / 102.6 是「手轮已选中」。HMI 只支持分配最多 3 个手轮,超过 3 个必须走 PLC 接口信号。现场资料还提到「FB1 RUN_UP 应报告 MCP1Timeout = FALSE」作为启动成功的观察点——这是第三方表述,以本机诊断画面实际信号名为准。
七、与站内既有内容的衔接
| 你要查的 | 站内已有那一层 | 与本篇的分工 |
|---|---|---|
| 第三手轮怎么接、FB1 在哪调 | 那是具体配置,本篇讲块从哪来 | |
| 用户报警位怎么算 | 对应本篇 DB2 变体的现场用法 | |
| 报警号属于哪一族 | 编译期问题与运行期报警分开看 | |
| 刀库 / 手册版本对齐 | 同属「先对齐版本再动手」 | |
| 改机前留证 | 动 OB100 之前的必备动作 |
表 10 站内五类内容与本篇分工
一句话收口:基础程序块是官方给的骨架,能改的只有「参数化 + 用户程序」这两层;骨架本身、DB2 变体、NCU 固件版本三者必须对齐,改完再用四项验证闭环。
常见问题
SINUMERIK 828D PLC 基础程序块在哪里?
不在网上,在随机交付的 SINUMERIK STEP 7 Toolbox 里。现行 840D sl Toolbox 通过 master copy 库(840D sl PLC Basic Program 等)与 External sources 下的 STL 源文件(gpob840d.awl 等)提供;828D 用集成在 Toolbox 里的 PLC Programming Tool;老 810D/840D 则在 Toolbox CD 的 Library 里。合法渠道是随机资料、机床厂与 Siemens 授权支持,本文不提供任何下载链接。
导入 Toolbox 基础程序块后报语法错误怎么办?
先判断是不是德语助记符问题:minibhg.zip 与较旧 BSP 块用 U/O/UN/S/R,英语助记符的 STEP 7 会在 FC76 / FB1 / OB100 报语法错。现场通行做法是在 Options > Customize > Language > Mnemonics 临时切到 German,重新编译全部源文件,下载并 PLC 重启后再切回 English;不要长期混用。若报的不是语法错而是 PLC 停在 STOP,则多半是 OB100 / FB1 / DB20 版本与 NCK 软件版本不匹配,需换用版本对齐的 Toolbox 重新加载。
OB100 / FB1 可以修改吗?
可以,但只在参数化层面:在 OB100 的 CALL "RUN_UP", "gp_par" 里填 MCP 数量、报文地址、总线地址、MCPBusType 等形参,用户自己的逻辑写在官方留的插入位或自建 FC/FB。不要改 know-how-protected 块的内部,也不要动 Safety Integrated 相关的 FB1 / OB82 安全链;这类改动需要正式变更请求与重新验收测试。改前先导出留证,改完冷重启并做四项验证。
最后更新:2026-11-10
面向海外读者的完整英文版,内容与本文对应 — 可直接转给非中文同事或海外客户。





































暂无评论内容