ARTICLE · 1222661
AF‑Basic V2.2.4 官方文档精读总结(109987391)
文档:Automation‑Framework‑Basic V2.2.4,TIA Portal V20,支持 S7‑1200 G2 / S7‑1500;**完整版 AF V3 仅支持 S7‑1500**西门子工业..
定位:**ISA‑88 物理模型 + OMAC PackML 状态机的工程化实现模板**,不是开箱即用项目,是一套标准化编程方法论与库集合OPC Founda...。

一、交付组件总览
AF‑Basic 整套由 7 个子库组成,互相存在依赖链:

配套交付:
1. TIA 示例工程;
2. WinCC Unified HMI 完整模板;
3. Code2Docu 插件:从 SCL 块`REGION`注释自动生成 PDF/HTML 文档,块内`BLOCK INFO HEADER`就是给 Code2Docu 解析用的西门子工业...。
## 二、核心理论基础 ISA‑88 物理分层(非常关键,写书《PLC 干法》核心素材)
> ProcessCell(工艺单元)→ **Unit 设备单元 → EM 设备模块 → CM 控制模块**西门子工业...

1. **Unit(设备单元)**:一台整机,一台摆盘分拣机就是 1 个 Unit;**一个 Unit 同一时刻只能处理 1 批任务**;Unit 管理模式、全局安全条件、塔灯,下发任务给下属 EM。
2. **EM Equipment‑Module 设备模块**:完成一组连贯工艺动作,例如上料 EM、检测 EM、移载 EM、入库 EM;EM 内部包含 Sequencer 工艺顺控,调用多个 CM;EM 有独立的 PackML 状态子集,向 Unit 上报`StateComplete`。
- 强制保留`EM0_General`:Unit 公共资源,总使能、急停、气源检测,不做工艺序列。
3. **CM Control‑Module 控制模块**:**最底层硬件封装**,气缸、伺服轴、模拟量输入输出;只有硬件动作,**不写工艺逻辑**;对外输出`configuration配置`、`controlNode控制节点`、`moduleInterface人机接口`三套接口(就是`LBC_AxisCtrlBasic`的三组 IN‑OUT 参数)。

> 设计原则:CM 可独立手动调试;EM 可单独仿真;Unit 负责调度协同多个 EM;故障尽量约束在 EM 内部,不要向上扩散。

## 三、PackML 状态机(LPML 库)
1. **17 个状态**:7 个 Wait 稳态(Stopped / Idle / Execute / Completed / Held / Suspended / Aborted);10 个 ING 结尾 Acting 过渡状态(Resetting / Starting / Completing / Stopping / Holding / Unholding / Suspending / Unsuspending / Aborting / Clearing)。
2. **10 条标准命令**:Reset、Start、Stop、Hold、Unhold、Suspend、Unsuspend、Abort、Clear、Complete。
3. **SC = StateComplete**:过渡状态完成标志,当子模块全部 SC=TRUE,状态机跳转进入下一个稳态。
4. **Mode 模式**:Production 生产 / Maintenance 维护 / Manual 手动;最多支持 16 种自定义模式,不同模式启用不同子集状态和命令;手动模式下才允许点动 Jog;生产模式禁止手动干预轴。
文档原图状态流转图,就是你学习 AF 最重要的一张图,也是你 36 库位摆盘机、《PLC 干法》的重点配图。
四、程序架构:三套文件夹组织方案
AF‑Basic 提供 3 种工程文件夹结构,按需选择:

1. **Standard 标准结构(官方推荐)**:Unit 独立文件夹,每个 EM 独立子文件夹,每个 EM 拥有自己 Startup‑OB/Main‑OB。优点边界清晰、解耦,缺点 OB 数量多。适合你的摆盘机项目。
2. **Combined 合并结构**:Unit 下面所有 EM 全部放在同一文件夹;OB 数量少;适合 EM 数量非常多。
3. **Hierarchical 分层结构**:EM 不能跨 Unit 直接访问全局 DB,强隔离,适合大型产线多 Unit 项目。
标准工程固定顶层文件夹
- `01_CentralFunctions`:全局公共逻辑,NTP 时间同步、ProDiag、HMI 多面板管理器,整机启动逻辑,**全局只一份**。
- `02_Global`:全局 DB,`Data`、`Units`、`UnitxEms`、`HmiControlInterface`,只放数据,不放程序逻辑。
- `03_Motion`:运动 OB,MC_PreInterpolator 等伺服周期 OB,所有 TO 轴在这里执行。
- `04_ObjectsOfProjectLibraryUsed`:项目用到的库块实例。
- `09_U1_Unit1`:你的 Unit 设备,下面放各个 EM 文件夹。
> OB 编号约定:`ueet`编码;Unit1‑Main‑OB = 1001;Unit1‑EM0‑Main‑OB =1006,Startup‑OB =1005,严格规范 OB 编号。
## 五、数据流向(文档 Figure6‑17 数据流图)
完整链路 HMI → CentralFunctions → Unit → EM → CM → TO 轴 / IO 硬件,反向硬件→CM→EM→Unit→HMI 回传状态。
1. HMI 操作写入`HmiControlInterface`全局 DB。
2. `LAF_HmiHeaderMultiUnitManager`解析 HMI 指令,分发给对应 Unit。
3. Unit 的`CallUnit`(FB):LPML 状态机接收命令,校验全局条件,向各个 EM 下发 Job 任务。
4. EM 层`CallEquipment`(FB):接收 Unit 任务,运行 EM 内部 Sequencer 顺控,调用 CM 块。
5. CM 层(LBC 块,例如`LBC_AxisCtrlBasic`)执行硬件动作,硬件状态回写到三套接口:
- `configuration`:CM 静态参数(速度、限位,配方)
- `controlNode`:**给上层 EM‑SC 状态机用,自动任务命令 + 状态反馈**
- `moduleInterface`:给 HMI 人机交互用,手动命令 + HMI 监控显示
6. EM 完成任务后回写`emFeedback.StateComplete`给到 Unit;Unit 收集所有 EM 的 SC,完成 Unit 状态跳转。
> 两套编程范式:
> ① 方案 1:**接口传参**:FB 全部通过 IN/OUT 参数传递,完全不碰全局 DB,高可复用,但调试不方便;
> ② 方案 2(AF‑Basic 默认):**CallUnit/CallEquipment 只顶层做接口传递,EM 内部直接访问本地 DB**,兼顾调试与模块化;文档明确说明:AF 没有追求 100% 纯接口传递,是工程妥协。
## 六、库版本管理(非常重要,写书知识点)
1. **Type(类型) vs Master Copy(主副本)**
- **Type 类型**:保留与库源版本关联,支持批量升级、版本管理;修改 Type 必须 Duplicate 复制出新 Type,禁止直接修改原厂 Type,否则升级库会被覆盖。
- **Master Copy 副本**:一次性拷贝,和源库无关联,无法批量升级。
> 开发自定义 CM/FB,正确流程:`Duplicate type`复制官方 Type,改名 OEM_xxx,在副本上修改,保留原版不动。
2. 库不一致(黄色警告):Library‑Management 工具,Fix inconsistencies,设置 Default 默认版本。
3. 更新库:Global‑Library → Update types,勾选`Delete unused versions`清理旧版本。
## 七、HMI 架构(WinCC Unified)
1. 布局五分区:Header 头部、AlarmLine 报警栏、MainNavigation 主导航、SubNavigation 子导航、ThirdNavigation 三级导航、Application 应用画面区。
2. Header 头部是整机核心:电源状态、Mode 模式、PackML 状态、Start/Stop/Reset/Clear/Ack 全局按钮,多 HMI 面板支持。
3. 命令握手:AF‑Basic 默认用**OnPressed 模式**(按钮按下有效,PLC 不复位 bit),而不是 Set‑Reset 置位复位模式;文档分析两者优缺点:
- Set‑Reset:指令一定被 PLC 捕获,但是存在死锁风险;
- OnPressed:简单不会死锁,但需要操作员按键时长大于 PLC 周期。
>
> 注意:AF 模板 HMI 是参考,**量产项目不能直接拿来用,需要裁剪**。
## 八、硬件与 CPU 约束(对应你 1211G2)
1. AF‑Basic 官方支持 S7‑1200G2 固件 V1.0 以上,TIA V20,WinCC Unified。
2. **1211G2 限制:工作存储区很小,TO 工艺轴数量少**:
✅ PLCSIM 仿真、学习、写书、做你的 36 库位摆盘机 Demo 完全没问题;
⚠️ **实机量产不推荐 1211G2,建议 1214G2**,内存、TO 资源更宽裕。
3. ProDiag 诊断:S7‑1200G2 支持有限,1211G2 项目建议裁剪 ProDiag,自己做简单报警。
4. 时间同步 LSNTP 库:PLC 可作为 SNTP 服务器,给 HMI、驱动器同步时间戳,报警时间统一。

## 九、`LBC_AxisCtrlBasic`轻量轴控块(你深度阅读的源码)
定位:CM 层伺服控制块,**轻量化,不内置凸轮、电子齿轮;凸轮 / 齿轮 MC_GearIn/MC_CamIn 需要自己外部写**。
三套 IN‑OUT 接口(AF CM 标志性设计):
1. `configuration`:配置参数(速度、加减速、回零模式、限位,配方来源);
2. `controlNode`:**上层 EM‑SC 状态机自动任务接口,自动定位 / 回零任务,Done/Busy/Error 反馈**;
3. `moduleInterface`:HMI 人机接口,点动、手动回零,HMI 读取位置、故障字。
关键引脚`enableManualCmds`:**手动权限闸门**。
- TRUE:HMI(moduleInterface)和上层程序(controlNode)都可以下发命令;
- FALSE:**HMI 侧的手动命令直接在 FB 内部清零屏蔽,只接受 controlNode 自动命令**,实现自动模式锁死手动,防止撞机。
内部逻辑要点:
1. First‑Call 首次调用自动识别 TO 类型(SpeedAxis / PositioningAxis / SynchronousAxis),读取轴单位(mm、m/s);
2. 内部封装 MC_Power、MC_Reset、MC_Halt、MC_MoveVelocity、MC_MoveJog;定位轴额外封装 MC_Home、MC_MoveAbsolute、MC_MoveRelative;Speed 轴收到定位命令会报非法命令故障;
3. 状态字 StatusWord**强制每周期读取**;警告字 WarningWord、ErrorWord、ErrorDetail、跟随误差**可选读取,需要命令 bit 触发才读,用来降低 CPU 负载(S7‑1200G2 性能优化点)**;
4. 分级故障诊断:轴类型错误→命令不匹配→TO 本身报错→各个 MC 子指令独立 ErrorId,status/substatus 输出给报警。
>
> 注意:**该 FB 只负责执行 MC 指令,任务互斥逻辑(例如定位执行中禁止点动)不在这个块,互斥逻辑交给上层 EM 的 Sequencer/SC 状态机,严格 AF 分层思想:底层只管执行,调度交给上层。**
## 十、对你《PLC 干法》写书可直接摘抄的核心思想(原文提炼)
1. AF 不是拿来直接下载跑项目的成品,是一套 ISA‑88+PackML 标准化**工程模板与设计范式**;用户必须做设备业务开发。
2. 分层思想:CM 只管硬件;EM 做设备子功能工艺;Unit 做整机协同调度;故障尽可能限制在下层模块,向上只上报状态。
3. CM 三接口范式:`configuration配置` / `controlNode自动任务` / `moduleInterface人机交互`,人机、自动程序、配方参数三者解耦。
4. 库开发原则:不修改官方 Type;需要修改就 Duplicate 复制出新 OEM 自定义 Type,保证后续库升级。
5. PackML:Mode 模式(手动 / 生产 / 维护) + State 状态机,SC(StateComplete)状态完成作为状态跳转的核心触发条件。
6. 两种数据访问范式:纯接口传递(高复用,调试难) vs 局部直接访问 DB(AF 默认,工程实用,牺牲部分可移植)。
## 十一、对你 36 库位摆盘机项目落地要点
1. Unit:整机 1 个 Unit;`EM0_General`处理整机安全条件;
2. EM 拆分:上料 EM、检测 EM、移载 EM、入库 EM;每个 EM 内部 Sequencer 顺控;
3. CM:气缸 CM、伺服轴 CM(使用LBC_AxisCtrlBasic`);
4. 36 库位数据:放在 Unit 层 Global‑DB,LGF‑FIFO 实现工件队列;
5. 仿真优先 PLCSIM 完成整机闭环;
6. 如果你后续实机硬件:仿真用 1211G2 没问题;量产硬件升级 S7‑1214G2。















































































