数据块函数 (S7-300, S7-400) READ_DBL: 从装载存储器的数据块中读取数据(S7-300, S7-400) 说明 通过该指令,可将装载内存(MMC 卡)中的某个 DB 或 DB 区域复制到目标 DB的数据区域 中。目标 DB 必须与执行有关;也就是说,不能使用属性 UNLINKED 来创建目标 DB。在复制过程中不能更改装载内存的内容。
为了确保数据一致性,正在执行“READ_DBL”时(这表明只要参数 BUSY = TRUE),不得更改 目标区域。 参数SRCBLK 和 DSTBLK 有以下限制: • 对于类型为 BOOL 的 ANY 指针,长度必须可被 8 除尽。 • 对于类型为STRING 的 ANY 指针,长度必须等于 1。 如果需要,可使用指令“TEST_DB (页 7996)”确定源 DB的长度。 说明 READ_DBL 不是同步处理的。它不适合频繁(或循环)读取装载内存中的变量。作业一旦启动,必须完成。如果达到“READ_DBL”指令可激活的Zui大数目,但此时又调用较高优先级的“READ_DBL”,则将返回错误代码 W#16#80C3。这意味着立即重新启动高 优先级作业没有意义。 功能描述“READ_DBL”指令将异步执行。即,可通过多次调用执行这一指令。通过调用“READ_DBL”,且 REQ =1,可启动该作业。 输出参数 RET_VAL 和 BUSY 用于指示作业状态。 另请参见“同步指令和异步指令之间的不同之处(页 6480)” 参数 下表列出了指令“READ_DBL”的参数: 参数 声明 数据类型 存储区 说明 REQInput BOOL I、Q、M、D、L REQ = 1:读取请求 SRCBLK Input ANY D 指向装载内存中待读取的数据块RET_VAL Return INT I、Q、M、D、L 错误信息 BUSY Output BOOL I、Q、M、D、L BUSY =1:读取过程尚未完成。 DSTBLK Output ANY D 指向工作存储器中待写入的数据块有关有效数据类型的更多信息,请参见“有效数据类型概述。WRIT_DBL: 将数据写入到装载存储器的数据块中 (S7-300,S7-400) 说明 可使用此指令将工作存储器中 DB 或 DB 数据区域的内容传送到装载内存(MMC 卡)中的 DB 或 DB区域。源 DB 必须与执行有关,也就是说,不能使用属性 UNLINKED 来创建源 DB。但 可使用指令“CREAT_DB”来创建源DB。 为了确保数据一致性,正在执行“WRIT_DBL”时(这表明只要参数 BUSY = TRUE),不得更改 源区域。参数SRCBLK 和 DSTBLK 有以下限制: • 对于类型为 BOOL 的 ANY 指针,长度必须可被 8 除尽。 • 对于类型为STRING 的 ANY 指针,长度必须等于 1。 如果需要,可使用指令“TEST_DB (页 7996)”确定目标 DB的长度。 如果写入使用指令创建的 DB,“WRIT_DBL”不会更改用户程序的校验和。在写入已装 载的 DB 时,此 DB中的第一个条目会更改用户程序的校验和。 说明 “WRIT_DBL”不适用于频繁(循环)将变量写入装载存储器中。这是因为 MMC卡的工艺限制 了对此卡的写访问次数。 功能描述“WRIT_DBL”指令将异步执行。即,可通过多次调用执行这一指令。通过调用“WRIT_DBL”,且 REQ =1,可启动该作业。 输出参数 RET_VAL 和 BUSY 用于指示作业状态。 另请参见“同步指令和异步指令之间的不同之处(页 6480)” 参数 下表列出了指令“WRIT_DBL”的参数: 参数 声明 数据类型 存储区 说明 REQInput BOOL I、Q、M、D、L REQ = 1:写入请求 SRCBLK Input ANY D 指向工作存储器中的 DB的指针,需要 从该工作存储器读取数据 RET_VAL Return INT I、Q、M、D、L 错误信息 BUSY OutputBOOL I、Q、M、D、L BUSY = 1:写入过程尚未完成。 DSTBLK Output ANY D指向装载内存中的数据块的指针,需要 向该装载内存写入数据。 有关有效数据类型的更多信息,请参见“有效数据类型概述参数 RET_VAL错误代码 (W#16#...) 说明 0000 无错误 0081 目标区域大于源区域。将源区域完全写入目标区域。目标区域的其余字节保持不变。 7000 首次调用时,REQ = 0:不传送数据;BUSY 值为“0”。7001 首次调用时,REQ = 1:已触发数据传送;BUSY 值为“1”。 7002 中间调用(与 REQ不相关):已激活数据传输;BUSY 的值为“1”。 8081 源区域大于目标区域。 将目标区域全部写满。忽略源区域的其余字节。8092 操作模式不正确:当“WRIT_DBL”处于激活状态时,CPU 进入 STOP 模式。在下次转入 RUN 模式时,将提供此错误代码。调用“WRIT_DBL”。 8093 没有为参数 SRCBLK指定数据块,或指定的数据块不在工作存储器中。 80B1 没有为参数 DSTBLK指定数据块,或指定的数据块不是装载内存中的对象(例如,使用 “CREAT_DB (页 7989)”创建的 DB)。 80B4不能更改带有 F 属性的 DB 80C0 目标当前正由其它指令或通信功能处理。示例:可将 DB 从 CPU 上传到编程设备(PG)。需要 使用“WRIT_DBL”来更改此 DB 的内容。 80C3 已达到“WRIT_DBL”指令可激活的Zui大数目。827F 参数 2 错误,可能是数据类型不受支持 8xyy 常见错误代码 另请参见“通过输出参数 RET_VAL 评估错误(页 184)” DEL_DB: 删除数据块 (S7-300, S7-400) 说明 可使用此指令来删除 CPU的工作存储器中的数据块以及装载内存中的数据块(如果存在)。 不得在当前或任何较低优先级中打开要删除的 DB,换言之,不得在两个 DB寄存器之一或 B 堆栈中输入要删除的 DB。否则,CPU 将在调用此指令时启动 OB 121。 如果 OB 121 不存在,则 CPU切换到 STOP 模 式。 对于 S7-300(例外: CPU 318),未调用 OB 121 而删除 DB。 说明建议不要使用“DEL_DB”来删除实例 DB,因为这样做始终会导致程序错误。请避免使用 “DEL_DB”来删除实例 DB。下表说明了何时可使用“DEL_DB”来删除 DB。 若... 则使用“DEL_DB”... DB是通过调用指令“CREAT_DB”创建的 可将该 DB 删除。 传送到 CPU,未使用属性“仅存储在装载内存中”创建。 可将该 DB删除。 使用属性“仅存储在装载内存中”创建 • 对于可以删除的 S7-300: • 对于无法删除的 S7-400:通过调用指令“CREA_DBL”创建 可以删除 DB 存储在闪存卡上 不能将该 DB 删除。 中断能力 此指令可由较高优先级来中断。如果调用此指令,则将第二次调用终止,并将 W#16#8091 输入到 RET_VAL 中。 参数下表列出了指令“DEL_DB”的参数: 参数 声明 数据类型 存储区 说明 DB_NUMBER Input WORDI、Q、M、D、L 或常 量 要删除的 DB 的编号 RET_VAL Return INT I、Q、M、D、L 错误信息有关有效数据类型的更多信息,请参见“有效数据类型概述。参数 RET_VAL 错误代码 (W#16#...) 说明 0000未发生错误。 8091 "DEL_DB”调用是嵌套的,并且已超过所用 CPU 的Zui大嵌套层数。 8092 当前不能执行“删除DB”功能,原因是: • “压缩用户存储器”功能当前处于激活状态。 • 正在将要删除的 DB 从 CPU 复制到脱机项目。 •WinAC 软 CPU 在安装有 WinAC 的 PC 上的操作系统中检测到错误。 80A1 输入参数 DB_NUMBER 中有错误:所选的实际参数 • 等于“0” • 大于所用 CPU 的Zui大允许 DB 编号。 80B1 CPU 的工作存储器中不存在具有指定编号的DB。 80B3 DB 位于闪存卡上。 80B4 DB 无法删除。 可能的原因: • 该 DB 属于某个 F 程序。 • 该 DB 是S7 通信块的一个实例(jinxian于 S7-400)。 • 该 DB 是一个技术 DB。 80C1由于存在临时资源限制,此时不能执行“删除 DB”功能。 8xyy 常见错误信息 另请参见: 通过输出参数 RET_VAL 评估错误(页 184) CREAT_DB: 创建数据块 (S7-300, S7-400) 说明可使用此指令来创建一个在用户程序中没有预定义值的数据块。 该 DB 存储有随机数据。 此指令可创建一个具有指定区域内的编号且具有预定义大小的数据块。 此指令可将指定区域 中的Zui小编号分配给 DB。 如果要创建具有特定编号的DB,请针对指定区域的上限和下限 输入同一编号。 不能分配用户程序中已有 DB 的编号。 DB 的长度必须用偶数来指定。 中断能力此指令可由较高优先级的 OB 来中断。 如果在较高优先级的 OB 中调用指令“CREAT_DB”,则将拒绝这一调用,下表列出了指令“CREAT_DB”的参数: 参数 声明 数据类型 存储区 说明 LOW_LIMIT InputWORD I、Q、M、D、L 或常 量 下限值是可分配给数据块的编号范围内 的Zui低编号。 UP_LIMIT Input WORDI、Q、M、D、L 或常 量 上限值是可分配给数据块的编号范围内 的Zui高编号。 COUNT Input WORD I、Q、M、D、L或常 量 计数值指示出需要为数据块预留的数据 字节数。必须指定偶数字节(Zui大值为 65534)。 RET_VAL Return INTI、Q、M、D、L 如果执行指令时出错,则返回值中会包 含一个错误代码。 DB_NUMBER Output WORDI、Q、M、D、L 数据块编号就是所创建的数据块的编 号。 发生错误时(设置 RET_VAL 的第 15 位),将在DB_NUMBER 中输入值 “0”。 有关有效数据类型的更多信息,请参见“有效数据类型概述。