西门子PLC数据块控制使用方法

2019年1月12日14:55:13 发表评论 555 阅读

READ_DBL   和 WRIT_DBL(读取/写入装载存储器中的数据块)指令

 表格 9- 178 READ_DBL 和 WRIT_DBL 指令

表格 9- 179 参数的数据类型

参数和类型 数据类型 说明
REQ IN BOOL 如果 BUSY = 0,则高电平信号会启动操作。
SRCBLK IN VARIANT READ_DBL: 指向装载存储器中源数据块的指针

WRIT_DBL: 指向工作存储器中源数据块的指针

RET_VAL OUT INT 执行条件代码
BUSY OUT BOOL BUSY = 1 表示读取/写入过程尚未完成。
DSTBLK OUT VARIANT READ_DBL: 指向工作存储器中目标数据块的指针

WRIT_DBL: 指向装载存储器中目标数据块的指针

通常,DB 存储在装载存储器(闪存)和工作存储器 (RAM) 中。 起始值(初始值)始终存储在装载存储器中,当前值始终存储在工作存储器中。READ_D       BL 可用于将一组起始值从装载存储器复制到工作存储器中程序引用的 DB 的当前值。 可使用 WRIT_DBL 将存储在内部装载存储器或存储卡中的起始值更新为工作存储器中的当前值。

说明

WRIT_DBL  READ_DBL 指令对闪存的影响

WRIT_DBL 指令会在闪存(内部装载存储器或存储卡)内执行写入操作。 为了避免影响闪存的使用寿命,可以采用 WRIT_DBL 指令进行更新,例如,记录对某个生产工艺的更改。 出于同样的考虑,请避免频繁地调用读操作指令 READ_DBL。

在 STEP 7 程序中,调用 READ_DBL 和 WRIT_DBL 指令前,必须为这些指令创建数据块。 如果源数据块被创建成“标准”类型,则目标数据块也必须为“标准”类型。 如果源数据块被创建成“优化”类型,则目标数据块也必须为“优化”类型。

如果 DB 为标准 DB,则可指定一个变量名称或 P# 值。 P# 值允许指定和复制指定大小(字节、字或双字)的任意数量的元素。 因此,可复制 DB 的全部或部分内容。 如果 DB 是优化 DB,则只能指定一个变量名称;无法使用 P# 操作符。 如果为标准或优化数据块(或者其它工作存储器类型)指定变量名称,则指令会复制此变 量引用的数据。 可以是用户定义类型、数组或基本元素。 如果 DB 是标准 DB 而不是优化 DB,则这些指令只能使用数据类型结构。 如果它是优化存储器中的结构,则必须使用用户定义类型 (UDT)。 仅用户定义类型可确保源结构和目标结构的“数据类型”完全相同。

说明

优化”DB  中使用结构(数据类型 Struct

在“优化”DB 中使用 Struct 数据类型时,首先必须为 Struct 创建一个用户自定义数据类型 (UDT)。 然后通过 UDT 组态源 DB 和目标 DB。 UDT 确保针对两个 DB Struct 内的数据类型保持一致。对于“标准”DB,使用 Struct 时无需创建 UDT。

READ_DBL 和 WRIT_DBL 相对于循环程序扫描异步执行。 处理期间需要多次调用 READ_DBL 和WRIT_DBL 指令。 通过 REQ = 1 来调用指令启动 DB 传输作业,然后监视 BUSY 和 RET_VAL 输出以确定数据传输的完成时间以及是否正确。

WRIT_DBL 和 READ_DBL 指令对通信负荷的影响

WRIT_DBL 或 READ_DBL 指令持续启用时,可能会消耗大量通信资源,使 STEP 7无法与 CPU 进行通信。 因此,对于 REQ 参数,请使用上升沿输入,而不使用常开或常闭型输入。后者在多次扫描期间会一直保持接通状态(即,信号为高电平)。

为确保数据的一致性,请勿在 READ_DBL 处理过程中修改目标区域或在 WRIT_DBL处理过程中修改来源区域(即,不要在 BUSY 参数为 TRUE 时修改)。SRCBLK 和 DSTBLK 参数限制:

●数据块必须先创建,然后才可引用。

●BOOL 类型的 VARIANT 指针长度必须可被 8 整除。

●源指针和目标指针中 STRING 类型的 VARIANT 指针的长度必须相同。

配方和机器设置信息

可使用 READ_DBL 和 WRIT_DBL 指令来管理配方或机器设置信息。 虽然可以限制写入的次数以防止闪存损耗,但以上方法实际上是另一种归档那些值不经常 更改的保持性数据的方法。 这样即可在提供给常规掉电保持性数据的容量的基础上有效增加保持性存储器的容量,至 少可满足不经常更改值的需要。 可使用 WRIT_DBL 指令将配方信息或机器设置信息从工作存储器保存到装载存储器,并使用 READ_DBL 指令将这些信息从装载存储器提取到工作存储器。

表格 9- 180 条件代码

 

RET_VAL (W#16#...) 说明
0000 无错误
0081 警告: 源区域小于目标区域。 源数据已完全复制,目标区域中的额外字节未更改。
7000 REQ = 0 时调用: BUSY = 0
7001 REQ = 1 时首次调用(工作): BUSY = 1
7002 第 N 次调用(工作): BUSY = 1
8051 数据块类型错误
8081 源区域大于目标区域。 目标区域已满,源数据中的剩余字节被忽略。
8251 源数据块类型错误
82B1 缺少源数据块
82C0 源 DB 正在被其它语句或通信功能编辑。
8551 目标数据块类型错误
85B1 缺少目标数据块
85C0 目标 DB 正在被其它语句或通信功能编辑。
80C3 当前已有超过 50 个的 READ_DBL 或 WRIT_DBL 语句排队等候执行。

 

weinxin
plc入门知识问答
每一个PLC工程师都应该关注的微信公众账号,只需输入您的问题,就会有答案

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: