说明 启用组态控制要写入控制数据记录,则需启用 CPU 的组态控制(选件处理)。具体操作,位于“CPU 属性 > 组态控制”(CPUproperties > Configuration control)。 创建以下变量,在全局数据块中进行数据存储: • 3个通用变量和 6 个用于 WRREC 的变量:程序段 2 的结果: 通过指令 MOVE 和函数SLI_itemisePara_WRREC_Para,结构“#readBYTE”将变量值传送到同名结构“readParaRecord”的变量中。为了便于理解,可使用具体的描述性名称表示“readParaRecord”结构的变量。有关该结构的详细信息,请参见该模块的设备手册。例如,“InputDelay_ProcessEvent”表示 3.2 ms 的输入延时。对于该通道的状态(“ClearanceDiagnosis”),不会输出任何中断(位 0 到 8 为“FALSE”)。程序段 3 的结果:“readError”的信号状态为“TRUE”时,将变量“readStatus”的值保存在变量“reMemErrStat”中。 程序段4 的结果: 如果指令“RDREC”已执行,则“readStatus”的值为“16#0070_0200”。此后,重置程序将变量“startRead”置位为“FALSE” 程序段 5 的结果: 通过指令 MOVE 和函数SLI_itemisePara_WRREC_Para,结构“writeParaRecord”将变量值传送到同名结构“#writeBYTE”的变量中。为了便于理解,可使用具体的描述性名称表示 “writeParaRecord”结构的变量。程序段 6 的结果: 输入参数 REQ(“startWrite”)返回信号状态“TRUE”时,启动指令“WRREC”。该数据记录的新数据将存储在 RECORD(“#writeBYTE”)参数中。通过多次调用,指令“WRREC”将新数据写入数据记录“3”中。根据输入参数 LEN(“maxWriteLength”)的值,待写入的数据记录信息将限制为 4 个字节。 在执行过程中,输出参数BUSY(“writeBusy”)将置位为“TRUE”;DONE(“#writeCheck”)将 置位为“FALSE”。执行完成时,将输出成功写入的结果,如下所示: • 输出参数 DONE(“#writeCheck”)将置位为“TRUE”。 •当“#writeCheck”的信号状态为“TRUE”时,变量“writeCheckedValid”将yongjiu性地置位为“TRUE”。 并在输出参数 STATUS(“writeStatus”)处,显示该块的状态。该过程成功执行且无任何错误。 程序段 7的结果:“writeError”的信号状态为“TRUE”时,将变量“writeStatus”的值保存在变量“wrMemErrStat”中。程序段8 的结果: 如果指令“WRREC”已执行,则“writeStatus”的值为“16#0070_0200”。此后,重置程序将变量“startWrite”置位为“FALSE”。并随后执行指令“RDREC”后,将变量“startRead”置位为“TRUE”。结构“readParaRecord”中,将显示该数据记录新写入的值。由于位 0 中“InputDelay_ProcessEvent”的信号状态为“TRUE”,通道 3 当地的输入延时将为 0.1 ms。 程序代码有关上述示例的更多信息和程序代码,请参见“指令的示例库 (页 713)”。 参见 WRREC: 写数据记录(页 2798) RDREC: 读取数据记录 (页 2778) 通过 WRREC 和 RDREC使用控制数据记录的程序示例 (S7-1200, S7-1500) 简介 在以下示例中,通过 WRREC 写入控制数据记录196,并通过由 RDREC 读取的该数据记录对 其进行检查。在进行组态时,选择统一设置 S7-1500有关数据记录的更多信息,请参见“数据记录类型概述 ”。
数据记录的结构如下所示: –“BlockLength”表示 Byte 中的数据记录长度。 – “BlockID”表示数据记录的编号。 –“Version”表示结构的类型。本示例中为中心结构。在中心结构中,“Subversion”的值为 “0”。 –“Slot_0”到“Slot_..”,与所用的插槽相对应。插槽的值表示所用的编号。常规参数 通过输入参数 ID(“id”),存储CPU 中组态的硬件标识符(“33”)。并通过输入参数 INDEX(“dataRecNbr”)存储控制数据记录(“196”)。根据变量 maxLength 的值(值为“0”,待使用的数据记录信息量不受限制。 说明 启动时,加载到 CPU 中并对程序进行处理。 1. 将 CPU切换至“STOP”模式。将程序加载到 CPU 中。 2. 将项目设置为“在线”(Online) 模式。 3. 将 CPU设置为“RUN”模式。执行“Startup”模式。 在“Startup”模式下,CPU 依次执行启动 OB 中的各个程序段。 启动OB:程序段 1 的结果 输入参数 REQ(“”)的信号状态为“TRUE”时,启动指令“WRREC”。常闭触点(“configDone”)的信号状态为“FALSE”。 控制数据记录的数据将存储在RECORD(“recConfigCtrl_WR”)参数中。为了便于理解,可使用清晰的名称指示“recConfigCtrl_WR”结构的变量,并采用系统手册中指定的结构。通过多次调用,指令“WRREC”将新数据写入该控制数据记录中。在WRREC 的执行过程中,输 出参数BUSY(“busyWR”)将置位为“TRUE”;DONE(“#checkWR”)将置位为“FALSE”。执行完成时,将输出成功写入的结果,如下所示: • 输出参数DONE(“#checkWR”)将置位为“TRUE”,变量“checkedValid_WR”将yongjiu性地置 位为“TRUE”。并在输出参数 STATUS(“statusWR”)处,显示该块的状态。该过程成功执行且无任何错误。启动 OB:程序段 2 的结果如果在 WRREC 的执行过程中发生错误:“errorWR”的信号状态为“TRUE”时,将变量“statusWR”的值保存在变量“memErrStatusWR”中。 启动OB:程序段 3 的结果如果指令“WRREC”已执行,则“statusWR”的值为“16#0070_0200”。变量“configDone”将置位为“TRUE”。并结束 WRREC 的执行。 启动 OB:程序段 4 的结果只要指令“WRREC”的执行尚未结束(“configDone”的值为“FALSE”,且“busyWR”的值为“TRUE”),程序执行将返回程序段 1。 FB:程序段 1 的结果 启动 OB 中的程序段执行完成后,CPU 将处于“RUN”模式。输入参数 EN(“configDone”)的信号状态为“TRUE”时,指令“RDREC”将开始执行。输入参数REQ(“startRead”)返回信号状态“TRUE”时,启动指令“RDREC”。通过输出参数LEN(“#readLength”),可存储所读取数据记录的长度。在 RDREC 的执行过 程中,输出参数BUSY(“busyRD”)将置位为“TRUE”;VALID(“#checkRD”)将置位为 “FALSE”。执行完成时,将输出成功读取的结果,如下所示: • 输出参数VALID(“#checkRD”)将置位为“TRUE#checkRD”,变量“checkedValid_RD”将性地置位为“TRUE”。 • 局部变量“#lengthRD”的值也将yongjiu性地存储在变量“lengthRD”中。并在输出参数 STATUS(“statusRD”)处,显示该块的状态。该过程成功执行且无任何错误。FB:程序段 2 的结果 如果在RDREC 的执行过程中发生错误:“errorRD”的信号状态为“TRUE”时,将变量“statusRD”的值保存在变量“#memErrStatus”中。 FB:程序段3 的结果 如果指令“RDREC”已执行并检查了该数据,则“#checkRD”的值为“TRUE”。变量“startRead”将置位为“FALSE”。之后,指令“RDREC”的执行将结束。 程序代码 有关上述示例的更多信息和程序代码,请参见“指令的示例库(页 713)”。GETIO:读取子模块的所有输入 (S7-1200, S7-1500) 说明使用指令“GETIO”,可一致性地读出一个 DP 标准从站/PROFINET IO 设备子模块的所有输入。如果数据传输过程未发生错误,则所读取的数据将输入到 INPUTS 指定的目标区域内。 以下规则适用于目标区域: •如果所选组件组态的长度为一个字节,则目标区域的长度至少为一个字节。 •如果所选组件组态的长度为多个字节,则目标区域的长度至少与组态字节数相同。 如果读取使用模块化组态或带有多个 DP 标识符的 DP标准从站,则“GETIO”调用每次只访问 组态起始地址处一个组件/DP 标识符的数据。下表列出了“GETIO”指令的参数: 参数 声明数据类型 存储区 说明 ID Input HW_SUBMO DULE I、Q、M、D、L 或常 量 子模块硬件 ID STATUSOutput DWORD I、Q、M、D、L 错误信息 LEN Output INT I、Q、M、D、L 读取的数据量,单位[字节]INPUTS InOut VARIANT I、Q、M、D、L 所读取数据所在的目标区域其长度至少 应与您为选定子模块所组态的长度相同。 建议仅使用数据类型 BYTE 或 ARRAY of BYTE 。 有关有效数据类型的更多信息,请参见“有效数据类型概述。