五、DB 块操作详解(数据存储)
DB 块是 S7-1200 的数据存储核心,分为全局 DB 与背景 DB,访问方式与存储策略直接影响数据处理效率与灵活性。
5.1 DB 块类型与特性
5.1.1 全局 DB vs 背景 DB
类型 | 关联对象 | 访问范围 | 核心用途 |
全局 DB | 无 | 全程序 | 跨块数据共享、参数存储 |
背景 DB | 专属 FB | 关联 FB 及调用者 | 保存 FB 静态变量与状态 |
5.1.2 优化访问 vs 非优化访问
特性 | 优化块访问 | 非优化块访问 |
寻址方式 | 仅符号寻址(如 DB1.Speed) | 符号 + 绝对寻址(如 DB1.DBW0) |
保持性设置 | 支持单个变量单独设置 | 仅整体设置 |
存储效率 | 紧凑存储,节省 20-40% 空间 | 传统存储,兼容性强 |
适用场景 | 新项目、高性能需求 | 旧项目迁移、第三方软件对接 |
5.2 核心操作与优化策略
5.2.1 DB 块创建与变量定义
1.项目树→“程序块”→右键 “添加新块”→“数据块”;
2.输入名称,选择“全局 DB” 或 “背景 DB”;
3.勾选“优化的块访问”(推荐);
4.点击“确定”,在编辑器中添加变量(名称、类型、保持性等)。
5.2.2 存储优化技巧
•S7-1200 存储策略:按数据类型分组存储,Bool 按位紧凑排列,减少填充字节;
•变量排序:将相同类型变量连续定义(如多个 Real 变量放在一起),进一步优化空间;
•下载策略:修改参数时使用“下载但不初始化”(仅优化 DB 支持),保留现有数据。
5.2.3 快闪调试功能
TIA Portal V18 的快闪功能简化调试操作,无需打开专用窗口即可操作变量:
•快闪监视:鼠标悬停变量上,显示当前值;
•快闪修改:右键变量→“快闪修改”→输入值,临时调整参数;
•快闪强制:右键变量→“快闪强制”→输入值,应急测试逻辑。
六、FC 块与 FB 块详解(功能封装)
FC 与 FB 是程序模块化的核心载体,通过功能封装实现代码复用,两者核心区别在于是否具备状态存储能力。
6.1 FC 块(无状态功能)
FC 是轻量级无状态模块,无专属存储区,每次调用仅通过参数传递数据,执行后不保留内部状态。
6.1.1 创建与接口定义
创建 FC:
1.项目树→“程序块”→右键 “添加新块”→“功能(FC)”;
2.输入名称(如“Calc_Avg”),选择编程语言;
3.点击“确定” 完成创建。
接口定义:
•Input:输入参数(如待计算的数组);
•Output:输出参数(如计算结果);
•InOut:输入输出参数(如需修改的变量);
•Temp:临时变量(仅执行期间有效);
•Return:返回值(可选,如函数计算结果)。
6.1.2 调用与应用场景
•调用方式:在 OB/FB/FC 中直接调用,传递参数(如Calc_Avg(Data := DB1.Array, Avg := DB1.Result););
•适用场景:
a.数学计算(如平均值、求和);
b.数据转换(如 INT_TO_REAL);
c.简单逻辑封装(如按钮互锁)。
6.2 FB 块(有状态功能)
FB 是有状态模块,需关联背景 DB 存储静态变量与状态,每次调用后保留内部数据,适用于需状态管理的场景。
6.2.3 创建与背景 DB
创建 FB:
1.项目树→“程序块”→右键 “添加新块”→“功能块(FB)”;
2.输入名称(如“Motor_Control”),选择编程语言;
3.点击“确定” 完成创建。
背景 DB 创建:
•自动创建:调用 FB 时输入背景 DB 名称(如 “DB_Motor”),系统自动生成;
•手动创建:添加新 DB,选择 “背景 DB” 并关联目标 FB。
6.2.4 接口与应用场景
接口特性:除 FC 的接口类型外,新增 “Static”(静态变量),存储于背景 DB 中,调用间保持值。
•适用场景:
a.设备控制(如电机启停、速度调节,需保存运行状态);
b.复杂算法(如 PID 控制,需保存中间积分值);
c.状态机实现(如设备运行的“待机 - 运行 - 故障” 状态切换)。
6.3 FC 与 FB 的选择策略
对比维度 | FC 块 | FB 块 |
状态存储 | 无,依赖输入参数与全局变量 | 有,通过背景 DB 保存静态变量 |
内存占用 | 低,无额外存储需求 | 高,每个调用需独立背景 DB |
复用性 | 高,无状态冲突 | 高,多实例独立运行 |
调试难度 | 易,参数传递清晰 | 稍难,需结合背景 DB 查看状态 |
推荐场景 | 无状态工具类功能 | 有状态设备控制与复杂算法 |
往期推荐