数据块函数 (S7-1200,S7-1500) CREATE_DB:创建数据块 (S7-1200, S7-1500) 说明 说明 “CREATE_DB”与S7-1500R/H-CPU 结合使用 仅固件版本为 V3.0 及更高版本的 SIMATIC S7-1500R/H-CPU支持指令“CREATE_DB”。 指令“CREATE_DB”用于在装载存储器和/或工作存储器中创建新的数据块。前提条件是未激活SIMATIC 存储卡的写保护。 指令“CREATE_DB”不会更改用户程序的校验和。 仅在工作存储器中生成的数据块具备以下特性: •存储器复位或开机/关机后,该块将不再存在。 • 加载或发生 STOP-RUN 转换时,块内容保持不变。 数据块编号 根据参数LOW_LIMIT(下限)和 UP_LIMIT(上限)定义的范围,为创建的数据块分配一个可用的Zui小编号。该编号将在参数“DB_NUM”中输出。如果该变量位于 CPU 允许的范围内, 则生成数据块。如果要创建具有特定编号的数据块,请针对指定范围的上限和下限输入同一编号。如果工作存储器和/或装载存储器中已存在具有相同编号的数据块,或者该数据块作为复制的数据块 存在,则将中断此指令,并在 RET_VAL参数生成错误消息。数据块的起始值 SRCBLK 参数用于定义待创建数据块的起始值。SRCBLK 参数是指向数据块或数据块区域的指针,在该数据块或数据块区域应用起始值。SRCBLK 参数指向的数据块必须已通过标准访问 权限生成(“优化的块访问”(Optimizedblock access) 属性已禁用)。 • 如果 SRCBLK 参数指定的区域大于生成的数据块,则直至所生成数据块长度的所有值将应用为起始值。 • 如果通过 SRCBLK 参数指定的区域小于生成的数据块,则剩余值将以“0”填充。为了确保数据一致性,正在执行“CREATE_DB”时(这表明只要参数 BUSY = TRUE),不得更 改此数据区域。 说明 指向TEMP 变量的 SRCBLK 标准块的 TEMP 变量位于本地临时数据区内。SRCBLK 中对 TEMP 变量的引用将生成值80A3 并在 RET_VAL 中输出(SRCBLK 参数中的数据块不会创建为带有标准访问方式)。 功能描述“CREATE_DB”为异步执行指令,进行处理时可能会多次调用指令。调用“CREATE_DB”时, REQ = 1可启动该作业。 输出参数 RET_VAL 和 BUSY 用于指示作业状态。 另请参见“同步指令和异步指令之间的不同之处。
使用 ATTRIB参数中字节的前 4 位定义数据块的属性 *: • 第 0 位 = 0:未设置属性“仅存储在装载内存中”(Only store inload memory)。 • 位 0 = 1:已设置属性“仅存储在装载内存中”(Only store in loadmemory)。使用此设置时,数据块在工 作存储器中不占用空间,并且不包括在程序中。也不 能使用位命令访问数据块。当位 0 = 1时,与位 2 的 选择不相关。 要确保与 STEP 7 V5.x 相兼容,位 0 和位 3 必须考虑 (参见下文)。 • 位 1= 0:未设置属性“在设备中写保护数据块”(Data block write-protected in the device)。 •位 1 = 1:已设置属性“在设备中写保护数据块”(Data block write-protected in thedevice)。 • 位 2 = 0:数据块为保持型数据块(仅适用在装载存储 器和工作存储器中生成的数据块)。如果至少一个值设置为保持型,数据块将被视为保持型。 • 位 2 = 1:数据块不是保持型数据块 只存储在装载存储器或工作存储器中的数据块,不具有保持性。调用指令“CREATE_DB”时,如果使用“保持性且仅 装载存储器”和“保持性且仅工作存储器”这两种组合中的某一种,则生成的数据块将不会标记为具有保持性。 • 位 3 = 0:在装载存储器或工作存储器中创建 DB(使 用位 0选择,参见上文) • 位 3 = 1:在装载存储器和工作存储器中,创建 DB(与 位 0 无关)。 要确保与 STEP 7 V5.x相兼容,位 0 和位 3 必须一同使 用。位 3 = 1 时,位 0 不相关。 位 0 位 3 数据块生成 0 0 仅在工作存储器中注:仅位于工作存储器中的数据块不允 许外部客户端(例如 HMI 设备)修改。 注:S7-1500R/H-CPU 中不允许使用 “位 0= 0”和“位 3 = 0”的组合。 1 0 仅在装载存储器中 不相关 1 工作存储器和装载存储器。
READ_DBL:从装载存储器的数据块中读取数据 (S7-1200, S7-1500) 说明 说明 “READ_DBL”与 S7-1500R/H-CPU结合使用 仅固件版本为 V3.0 及更高版本的 SIMATIC S7-1500R/H-CPU支持指令“READ_DBL”。通过该指令,可将装载存储器(MMC 卡)中的数据块或数据块区域复制到目标数据块的数据区域。目标数据块必须为运行系统相关。即,不能使用“仅存储在装载内存中”(Only store in load memory)属性创建源目标数据块。在复制过程中不能更改装载存储器的内容。 为确保数据的一致性,执行“READ_DBL”时(即,BUSY 参数的值为TRUE),不得更改目标 区域。 参数 SRCBLK 和 DSTBLK(源和目标块)的数据类型必须均为VARIANT。请遵循以下限制条 件: • 适用于标准存储区:可通过以下方式,互连 VARIANT 数据类型的参数(源区域或目标区域)和 BOOL 数据类型 ARRAY of BOOL 类型的变量: – 采用符号化寻址方式 示例:参数SRCBLK:"Data_block".myArray – 通过 ANY 指针进行juedui寻址。但需注意,指定的区域长度必须为 8的整数倍,否则 该指令无法执行。 示例:参数 SRCBLK:P#DB123.DBX456.0 BOOL 1000 • 对于STRING 类型的 VARIANT 指针,长度必须是 1。 •源和目标块创建时的块访问方式必须相同。即,这两个块必须为“优化”或“标准” 访问类型。 •如果源数据块和目标数据块的访问类型均为优化访问,则不支持 STRUCT 数据类型。 说明“READ_DBL”是一个异步指令。不适用于频繁(或循环)读取装载存储器中的变量。作业一旦启动,必须完成。如果达到“READ_DBL”指令可激活的Zui大数目,但此时又调用较高优先级的“READ_DBL”,则将返回错误代码 W#16#80C3。不能立即重新启动 具有较高优先级的这一作业。功能描述 “READ_DBL”为异步执行指令,可以跨多个调用执行。调用“READ_DBL”时,REQ = 1 可启动该 作业。输出参数 RET_VAL 和 BUSY 用于指示作业状态。另请参见“同步指令和异步指令之间的不同之处下表列出了“READ_DBL”指令的参数: 参数 声明 数据类型 存储区 说明 REQInput BOOL I、Q、M、D、L 或 常量 REQ = 1:读取请求 SRCBLK Input VARIANT D指向装载存储器中待读取的数据块 RET_VAL Return INT I、Q、M、D、L 错误信息 BUSY Output BOOLI、Q、M、D、L BUSY = 1:读取过程尚未完成。 DSTBLK Output VARIANT D指向工作存储器中待写入数据块的指针有关有效数据类型的更多信息,请参见“有效数据类型概述” 在以下示例中,将读取装载存储器中的数据块内容并加载到到工作存储器的数据块中。要存储互连数据,则需在全局数据块中创建 3 个变量。 要存储发送数据,则需创建 2 个全局数据块,每个数据块包含 3 个数据类型为INT 的变量。 • 装载存储器中的接收数据: • 工作存储器中的接收数据:在函数块“SLI_FB_READ_DBL”中创建以下互连: 程序段1:互连“READ_DBL”指令的参数,如下所示:如果常开触点(“execute”)的信号状态为“TRUE”,则执行“READ_DBL”指令。通过输入参数SRCBLK(“SourceDB_LoadMemory”),将该数据块存储在装载存储器中。 通过输出参数DSTBLK(“TargetDB”),该数据块存储在工作存储器中。指令“READ_DBL”将 调用装载存储器中待传送的数据(SRCBLK),并读取工作存储器中的数据 (DSTBLK)。 输出参数RET_VAL(“returnValue”)用于指示处理无错误。WRIT_DBL:将数据写入到装载存储器的数据块中 (S7-1200,S7-1500) 说明 说明 “WRIT_DBL”与 S7-1500R/H-CPU 结合使用 仅固件版本为 V3.0 及更高版本的SIMATIC S7-1500R/H-CPU 支持指令“WRIT_DBL”。 指令“WRIT_DBL”用于将工作存储器中 DB 或DB 区域的内容传送到装载存储器(MMC 卡)中 的 DB 或 DB 区域。源 DB必须与运行系统有关。即,不能使用“仅存储在装载内存中”(Only store in load memory) 属性创建源 DB。 说明“从设备上传”过程中,初始值的行为 当执行“从设备上传”(Upload from device)操作时,使用指令“WRIT_DBL”更改的起始值将丢 失。 说明 项目树中的在线/离线差异(S7-1200 FW V2.0 和V2.1) 如果使用指令“WRIT_DBL”更改数据块,由此产生的在线和离线块差异Zui初不会通过符号正确显示在项目树中。仅当用户终止了在线连接并重新上线后,才会显示这种差异。为确保数据一致性,在执行“WRIT_DBL”时不允许更改源范围(即,只要 BUSY 参数的值为 TRUE 时便不允许进行该更改)。参数 SRCBLK 和 DSTBLK(源和目标块)的数据类型必须均为 VARIANT。请遵循以下限制条 件: • 对于 BOOL 型VARIANT 指针,长度必须是 8 的倍数。 • 对于 STRING 类型的 VARIANT 指针,长度必须是 1。 •必须使用相同的块访问来创建源和目标块。即,这两个块必须使用“优化的块访 问”(Optimized block access)或必须为这两个块禁用优化的访问。 • 如果源数据块和目标数据块的访问类型均为优化访问,则不支持 STRUCT 数据类型。