西门子PLC程序架构实战:多工站装配线FB编号+IO地址规划全解析
10个装配工站、19台V90伺服、10台KUKA机器人、4台KTP900 HMI
用AI分析自己的项目程序,分享一套可复用的非标自动化标准化方案。
前言
前阵子把之前做的一个多工站装配线项目翻出来,想梳理一下程序架构和编号规划体系,分享出来给同行参考。
项目做完很久了,平时也没时间写文章。这次试了试用AI工具(WorkBuddy)帮忙分析程序快照和规划文件,再编辑成文,整个过程比我预期的要顺。
本篇包含三块内容:项目规模 + 程序架构分析 + IO编号规划体系,末尾有AI合作的建议。
一、项目规模速览
| 项目 | 参数 |
|---|---|
| 控制器 | 西门子 S7-1514SP-2 PN |
| HMI | KTP900 Basic PN × 4 台 |
| 装配工站 | 10个(Unit01~Unit10)+ 2个辅助单元 |
| 伺服轴 | V90 PN × 19(105报文工艺轴) |
| 工业机器人 | KUKA KRC4 × 10 |
| 远程IO | XB6-PN0002 × 10 台 |
| 通信协议 | Profinet IRT + OPC UA |
| 网络架构 | 单一IO控制器单环IRT |
二、现场实拍:3张图看完整套系统
图1:网络拓扑
**
**
CPU 1514SP-2 PN 作为唯一 Profinet IO 控制器,下挂 4 台 HMI、10 台 XB6 远程 IO、10 台 KUKA 机器人、19 台 V90 伺服驱动,形成单环 IRT 网络。
网络拓扑为链式结构,PNIO 与 V90 交替排布,KUKA 挂接在对应工站的 XB6 分支下。U03/U04/U10 三个工站各配置了 2 台机器人(R1+R2),其余 7 个工站各 1 台,共计 10 台。
图2:程序树与FB编号
**
**
左侧为CommonBuildingBlock公共功能库,按功能域分为 System / Axis / Valve / Robot / Other 五段,FB 编号 6000~6056 清晰可辨。
右侧为Main工作站实例,包含 U00产量统计、Unit00流水线、Unit01前盖~Unit10装电池盖 共 12 个逻辑单元。
中间区域为按站隔离的 PLC 变量表(Unit01-IO ~ Unit10-IO),每站独立管理,不跨站混用。
图3:HMI操作界面
**
**
螺丝机工站(Unit06/Unit07)的手动调试界面。包含:
- JOG 点动模式(正转/反转)
- 回零操作按钮
- GO / STOP 运行控制
- 点位选择与位置显示
- 电批/吸钉控制
- 气缸/夹具手动操作
该 HMI 画面编号对应规划中的 Unit06=70-79 号段,与实际程序变量表一致。
三、架构分析:程序结构
3.1 双层架构设计
整个程序按两层组织结构:
CommonBuildingBlock(公共功能库) ├── 01 System → FB_MachineMode [FB6000] ├── 02 Axis → FB_AxisTech [FB6011] / FB_SVAxis [FB6010] ├── 03 Valve → FB_AirCylinder [FB6020] / FB_Vacuum [FB6021] ├── 04 Robot → FB_R_KUKA [FB6030] └── 05 Other → FB_Alarm / FB_Motor / FB_生产统计 / FB_HMI轴控映射 / FB_HMI_IO监视 / FB_阻挡气缸 Main(工作站实例) ├── U00 产量统计 ├── Unit00 流水线 ├── Unit01 前盖 ├── Unit02 按键 ├── Unit03 液晶 ├── Unit04 导电条 ├── Unit05 背光 ├── Unit06 螺丝1 ├── Unit07 螺丝2 ├── Unit08 后盖+踢废+打标 ├── Unit09 CM测试 └── Unit10 装电池盖核心优势:公共功能块与工作站实例完全分离。新增工站只需复制 Unit 模板,调用公共 FB,写差异化逻辑即可,不用重新开发底层功能块。
3.2 FB编号体系(五段设计)
| 功能域 | 编号段 | 数量 | 说明 |
|---|---|---|---|
| System | FB6000-6009 | 10 | 整机模式、系统状态 |
| Axis | FB6010-6019 | 10 | 伺服轴、工艺轴 |
| Valve | FB6020-6029 | 10 | 气缸、真空 |
| Robot | FB6030-6039 | 10 | KUKA机器人交互 |
| Other | FB6050-6079 | 30 | 报警、电机、HMI映射、产量统计等 |
编号即功能——FB6000 段是系统级、FB6010 段是轴控、FB6020 段是阀控、FB6030 段是机器人,不用翻目录就知道程序块归属,排查效率极高。
3.3 按站隔离的变量管理
每站独立一张变量表,四张子表结构统一:
| 变量表 | 数量 | 说明 |
|---|---|---|
| KRC4-UxxR1-PLC输出 | 59 | 机器人控制字 |
| KRC4-UxxR1-PLC输入 | 79 | 机器人状态字 |
| Unit0x 输出 | 64 | 本站输出映像 |
| Unit0x 输入 | 64 | 本站输入映像 |
双机器人工站(U03/U04/U10)在此基础上增加 R2 组变量表。默认变量表托管 466 个公共变量。
四、架构分析:IO地址与编号规划
4.1 IO地址三层分段
| 层级 | 地址范围 | 用途 |
|---|---|---|
| 本站IO | IB10-IB409 / QB10-QB409 | 20个工站本地IO,每站IB/QB各20字节 |
| 机器人IO | IB1000-IB4399 / QB1000-QB4399 | 20台机器人交互,每站IB/QB各200字节 |
| 伺服轴IO | IB/QB 10000-19999 | V90 伺服轴数据 |
| 其他PN设备 | IB/QB 9000-9999 | 其他 Profinet 设备 |
三层独立寻址互不干扰——排查问题时一眼看出是哪类设备。
4.2 HMI画面编号
| 范围 | 用途 |
|---|---|
| 1-19 | 公共画面(总览、报警、产量、系统设置) |
| 20-29 | Unit01 前盖工站 |
| 30-39 | Unit02 按键工站 |
| 40-49 | Unit03 液晶工站 |
| 50-59 | Unit04 导电条工站 |
| … | … |
| 110-119 | Unit10 装电池盖工站 |
| 120-139 | 预留扩展(Unit11~12) |
每站 10 个画面号的连续分配体系,新加画面不破坏已有编号结构,HMI 变量引用地址始终保持一致。
4.3 编号规划六大优势
| # | 优势 | 说明 |
|---|---|---|
| 1 | FB编号按功能域分段 | System/Axis/Valve/Robot/Other 五段清晰,编号即功能 |
| 2 | IO地址三层独立寻址 | 本站IO/机器人IO/伺服轴 三层互不干扰 |
| 3 | 工站DB按号段预留 | 每站100个DB号空间,远大于实际需求 |
| 4 | HMI画面号连续分配 | 公共1-19 + 每站10画面,新加不破坏 |
| 5 | 工艺轴DB单独分段 | D1000-1099 独立管理,不与工站数据混在一起 |
| 6 | 扩展余量充足 | 20站规划、50%以上FB号段未用 |
五、评估:五维度评分
| 维度 | 评分 | 说明 |
|---|---|---|
| 模块化程度 | 9/10 | 公共库+工作站实例完全分离,新增工站可复制模板 |
| 标准化体系 | 9/10 | FB编号、IO地址、HMI画面全体系化,不是散装的 |
| 编号规划前瞻性 | 9/10 | 预留50%以上扩展空间,未来扩站不破坏现有结构 |
| 可维护性 | 9/10 | 编号即功能,每站变量独立,故障定位极快 |
| 扩展性 | 9/10 | 新增工站只需要复制Unit模板,调用公共FB |
综合评定:9.0/10
六、总结
这套程序架构以CommonBuildingBlock + Main双层组织,配合System/Axis/Valve/Robot/Other五段 FB 编号体系,以及本站IO / 机器人IO / 伺服轴三层独立寻址,形成了一套可复用的非标自动化标准化模板。
整个体系的核心设计理念是分段隔离、按站管理、预留充足:
- 程序块分段 → 避免改一处全局受影响
- 变量按站隔离 → 某站出问题不牵连其他站
- 编号预留余量 → 未来扩站不加急找号
对于同类多工站装配线项目的借鉴价值:
- 公共功能块库 + 工站实例的程序结构
- 按功能域分段的 FB 编号规则
- 按站隔离的变量表和 IO 地址规划
- 连续的 HMI 画面编号体系
作者:邓工
项目:多工站自动装配线
控制平台:西门子 S7-1514SP-2 PN + KTP900 + V90 + KUKA
关于这篇文章
程序框架由我设计开发。架构分析和文章编辑使用WorkBuddy AI 助手辅助完成。结构和编号规划建议可直接复用。