西门子1200数据块BD详解

一、DB数据块基础

  1. 定义
    DB(Data Block)是用于存储用户数据的区域,分为两种类型:

    • 全局DB:可被所有逻辑块(OB/FB/FC)访问
    • 背景DB:与特定功能块(FB)绑定,存储其参数和静态变量
  2. 核心作用

    • 存储程序运行时需要保持的数据(如配方、状态参数)
    • 实现数据的跨块传递
    • 支持结构化数据存储(数组、结构体等)

二、DB块的创建与配置

1. 创建步骤
  1. 在TIA Portal中右键项目 → Add New Device → 选择PLC
  2. 在程序块目录下右键 → Add New BlockData Block
  3. 输入名称(如DB100),选择类型(全局/背景)
2. 关键属性设置
  • Optimized Block Access(优化块访问)
    • ✅ 启用:使用符号名访问变量(无需记忆地址)
    • ❌ 禁用:需通过绝对地址(%DBX/DBW/DBD)访问
  • Retain Memory(保持性)
    • 勾选后数据在PLC断电后仍保留
  • Block Properties(块属性)
    • 可设置块注释、版本信息等

三、数据类型与变量定义

1. 支持的数据类型
  • 基本类型:BOOL、INT、REAL、DATE等
  • 复杂类型:ARRAY(数组)、STRUCT(结构体)、STRING(字符串)
  • 用户自定义类型(UDT):可复用的结构化数据模板
2. 变量定义示例
// 全局DB示例(DB100)
Name        | Data Type | Initial Value | Comment
----------------------------------------------------------------
SetPoint    | REAL      | 25.5          | 温度设定值
Status      | WORD      | 0             | 设备状态字
Recipe      | UDT_Recipe| [1..3]        | 工艺配方数组

四、DB块的访问方式

1. 全局DB访问
  • 符号访问(优化块):DB100.SetPoint
  • 绝对地址访问(非优化块):%DBW 200(假设SetPoint占用2字节)
2. 背景DB访问
  • 与FB关联后自动生成,通过FB调用时传递:
    CALL "MotorCtrl"  // FB1
    DB_Number := DB101  // 背景DB
    Speed := 50.0
    

五、高级功能与注意事项

  1. 数据块的初始化

    • 初始值在下载时写入PLC,运行中修改需重新下载或通过程序覆盖
  2. 运行时修改DB

    • 非优化块:可直接在监视表中修改
    • 优化块:需通过符号表或程序修改
  3. 数据块的下载

    • 首次下载:覆盖PLC中的DB块
    • 在线修改:需停止PLC或使用“仅下载更改”功能
  4. 常见问题

    • 数据不保持:检查Retain属性是否勾选
    • 符号名无效:确认是否启用Optimized Block Access

六、数组的应用

由固定数目组成的相同数据类型元素的数据结构。
例如:10个bool,10个int,100个int。

重点笔记总结

分类关键点
DB类型全局DB(共享)、背景DB(绑定FB)
优化访问符号名优先,禁用绝对地址访问
数据保持通过Retain属性设置断电保持
变量定义支持UDT/ARRAY/STRUCT等复杂类型
访问方式DB块名.变量名(优化)或%DBX/DBW/DBD(非优化)
下载规则在线修改需停止PLC或使用“仅下载更改”

示例代码片段

// 优化DB访问示例
IF "StartButton" THEN
    DB100.SetPoint := 30.0;  // 写入设定值
END_IF;

// 非优化DB访问示例
L 200.0  // 装载DB100的第0字节(BOOL类型)
T MW10   // 传输到中间寄存器

通过合理使用DB块,可显著提升程序的可读性和可维护性。建议优先启用优化块访问并使用符号名编程。

官方文档

如何使用DB数据块
数据块用于存储程序数据。因此,数据块包含由用户程序使用的变量数据。全局数据块存储所有其它块都可使用的数据。

数据块的最大大小因 CPU 的不同而各异。可以以自己喜欢的方式定义全局数据块的结构。

还可以选择使用 PLC 数据类型 (UDT) 作为创建全局数据块的模板。

用户程序中的全局数据块

每个函数块、函数或组织块都可以从全局数据块中读取数据或向其中写入数据。即使在退出数据块后,这些数据仍然会保存在其中。可以同时打开一个全局数据块和一个背景数据块。

下图所示为不同的数据块访问:

在这里插入图片描述
访问模式

S7-1200 和 S7-1500 提供两种不同的全局数据块访问选项:

可优化访问的数据块

可优化访问的数据块没有固定的定义结构。在声明中,仅为数据元素分配一个符号名称,而不分配在块中的固定地址。

可标准访问的数据块(与 S7-300/400 兼容)

可标准访问的数据块具有固定的结构。数据元素在声明中分配了一个符号名,并且在块中有固定地址。

DB属性

DB区别
优化:只能通过符号访问。(应用1200/1500,不兼容300/500)
非优化:通过地址、符号、指针访问。

如何创建数组?

多个数据类型相同的位。
在新的DB块中,数据类型选择Array,可以在后面括号中选择数量,从0开始计数。
在这里插入图片描述

数组的使用

数据的保持性设定。

官方文档

优化和非优化

以下是西门子 1200 中优化 DB(优化的数据块)和非优化 DB(非优化的数据块)的主要区别对比:

对比项目优化 DB非优化 DB
数据访问方式通过符号名访问,不需要关注数据的绝对地址。系统会自动管理数据的存储位置,当数据块结构发生变化时,只要符号名不变,程序中对数据的访问不受影响。通过绝对地址(如 DBX、DBW、DBD)或符号名访问。如果数据块结构改变,可能需要手动调整程序中对数据的绝对地址引用。
数据块属性默认情况下,优化的数据块在下载到 PLC 时,会自动分配地址。在数据块中可以添加、删除或移动变量,而不会影响程序中对这些变量的引用。需要手动分配地址,并且地址必须是连续的。如果要修改数据块结构,可能需要重新分配地址并调整程序中相关的地址引用。
数据块初始化优化 DB 可以在数据块中直接为变量设置初始值,这些初始值会在 PLC 启动时自动加载。非优化 DB 也可以设置初始值,但需要通过编程的方式在程序中进行初始化操作。
内存使用效率由于系统自动管理地址,可能会在一定程度上增加内存的碎片化,但整体上更便于数据块的维护和修改。手动分配地址可以更精确地控制内存使用,减少碎片化,但维护成本较高。
与旧版本兼容性优化 DB 是西门子 S7 - 1200 较新的特性,与旧版本的编程软件或 PLC 可能不兼容。非优化 DB 是传统的数据块类型,与旧版本的编程软件和 PLC 具有更好的兼容性。
示例在优化 DB 中创建一个名为“MotorData”的数据块,包含“Speed”(速度)和“Direction”(方向)两个变量。在程序中可以直接使用“MotorData.Speed”和“MotorData.Direction”来访问这些变量。在非优化 DB 中创建一个数据块,手动分配地址。例如,“DB1.DBW0”存储速度值,“DB1.DBX2.0”存储方向信号。在程序中使用这些绝对地址来访问数据。
学习重点1. 掌握如何通过符号名访问优化 DB 中的数据。
2. 了解优化 DB 数据块结构变化时对程序的影响。
3. 学会在优化 DB 中设置变量的初始值。
1. 理解绝对地址的概念,掌握通过绝对地址和符号名访问非优化 DB 中的数据。
2. 掌握手动分配地址的方法,以及如何在数据块结构改变时重新分配地址。
3. 学会在程序中对非优化 DB 进行初始化操作。

通过以上对比可以看出,优化 DB 更注重数据块的可维护性和编程的便捷性,而非优化 DB 则更强调对内存的精确控制和与旧系统的兼容性。在实际应用中,需要根据具体的项目需求选择合适的数据块类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值