浔之漫智控技术(上海)有限公司
西门子授权代理商 , 西门子授权代理商 , 西门子一级代理商
SIEMENS 西门子 S120伺服电机 1FK7022-5AK71-1DG5


              ResolveSymbols:解析多个符号 (S7-1500) 说明 “解析多个符号”指令用于解析多个符号变量名称。执行该指令后,会收到对变量的引用。引 用属于类型化指针,可用于对变量进行读写访问。 在 "nameList" 参数中指定 Array of WSTRING 。运行期间会通过此数组传送待解析的变量名称。 该数组可位于优化的存储区或非优化存储区中。 在参数 "referenceList" 中指定保存引用的 Array of ResolvedSymbol (SDT)。ARRAY 需位于优 化存储区中。这两个数组的限值需相同。 符号变量名称以 WSTRING 格式传输,且长度不得超过 254 个 UTF-16 字符。输入完全限定 的名称(包括命名空间)。不支持表示本地变量的限定符 #。支持数组中的元素,但必须指 定固定下标才能访问元素。不支持通过可变下标(如myArray[myIndexTag])进行访问。 完全限定名称示例:使用 "firstIndex" 和 "lastIndex" 参数,可以仅解析列表中的部分符号。要解析整个符号列表, 可在 "firstIndex" 参数中指定下限,在 "lastIndex" 参数中指定上限。 该指令以异步方式执行。参数“"execute"”出现信号上升沿时开始执行。该指令在执行过程中 (Busy = 1),"nameList" 和 "referenceList" 参数中的值无法更改。以下示例说明了如何使用指令“MoveResolvedSymbolsToBuffer”读取变量值并将其写入缓冲 区中: • 在参数 "src" 中,指定包含对已解析变量引用的 Array of ResolvedSymbol (SDT) 。 • 在 "dst" 参数中指定 Array of BYTE 。该数组用作写入变量值的目标缓冲区。 执行指令 "MoveResolvedSymbolsToBuffer" 时,会通过引用读取变量值,并将其写入目标缓 冲区。 另请参见: MoveResolvedSymbolsToBuffer:从已解析的符号中读取值并写入缓冲区中。

            对符号进行解析前,"referenceList" 参数中位于指定数组范围("firstIndex"和 "lastIndex")内 的数组的值将复位。 该指令执行完成后,"done" 参数值将在一个周期内为 1。参数 "referenceList" 中的数组会填 入对变量的引用。 “execute”参数出现下降沿后,表示“ResolveSymbol”的实例不再处于激活状态。 说明 组态限值 每次Zui多可激活 10 条 "ResolveSymbols" 指令。该指令的所有活动实例总共可解析Zui多 2000 个符号。如果操作数“#Input_Execute”的信号状态更改为“1”,则该指令开始执行。对参数 "nameList" 中的变量名称进行解析,并将变量引用写入参数 "referenceList" 中的操作数 "#InOut_ResolvedSymbols"。该指令执行完成后,"done" 参数值将在一个周期内为 1。系统数据类型 ResolvedSymbol (S7-1500) 说明 执行“运行期间进行符号化访问”功能需要使用系统数据类型 "ResolvedSymbol"。该数据类 型会保存对 PLC 程序中变量的引用,并会保存用于生成这些引用的状态信息。系统数据类型 需位于优化存储器中。 在固件版本 V3.0 及以上版本,系统数据类型“ResolvedSymbol”可声明为 PLC 数据类型的元 素。 系统数据类型的结构 "ResolvedSymbol" 系统数据类型具有以下可见元素: 参数名称 数据类型 说明 resolved BOOL 指示符号是否成功解析: • 已解析 = FALSE,且 STATUS = 0 => 尚未执行符号解析。 • 已解析 = FALSE + status <> 0 => 符号解析失败 status 参数的值指示变量中无法解析的结构等 级。 负值表示无法解析符号,原因包括超出范围等。 正值表示变量不可访问或不可通过 HMI/OPC UA 或 Web API 写入。 • 已解析 = TRUE,且 STATUS = 0 => 符号已成功解析。 • 已解析 = TRUE,且状态 <> 0 => 符号已成功解析,但该 DB 由“RUN”模式下 的后续加载结果覆盖。 status INT "resolved" 元素用于指示某个符号是否已成功解析。如果符号已成功解析,"status" 参数的值 为 0,且 "ResolvedSymbol" 结构中包含正确的信息。 除了这两个参数之外,系统数据类型还包含用于保存变量数据类型、长度和地址信息的内部 参数,但这些参数不可访问。系统数据类型“ResolvedSymbol”中的无效引用 如果在 RUN 模式下因加载导致被引用的变量覆盖,则 SDT "ResolvedSymbol" 中的引用可能 变为无效。引用可能指向不存在的变量。"status" 参数中的错误代码指示引用无效。 以下示例中显示了出错时在 SCL 中如何使用 IF 指令中断 Move 指令的执行以及如何重新解 析该符号:即使符号解析成功,执行 „MoveResolvedSymbolToBuffer“ 时也可能出错。例如,在 RUN 模 式下因加载导致变量覆盖。此时,返回值 „err“ 为复制失败的进程数。 如果识别到复制过程识别,则后续的 IF 指令将 "EnableMove" 设置为 FALSE。这样,系统将 不再执行 "MoveResolvedSymbolsToBuffer"。 之后,FOR 指令将进行检查,确定产生错误代码的相关符号。对于这些符号,会将错误代码 复制到 "status" 参数中。 同时,参数“„resolved“”设置为 FALSE。现在需要再次使用异步操作指令 „ResolveSymbols“ 解 析符号。 参见 运行期间进行符号化访问 (页 1719) MoveResolvedSymbolsToBuffer:从已解析的符号中读取值并写入缓冲区中 (S7-1500) 说明 “从已解析的符号中读取值并写入缓冲区中”指令用于从多个已解析的符号中读取数值并写 入存储区 (Array of BYTE) 中。采用这种方式,可准备符号解析后的相应值,进行后续处理。 如,通过诸如 TSEND 等通信指令进行发送。 "src" 参数是一个 ResolvedSymbol (SDT) 数组,其中包含对之前通过“ResolveSymbols”指令解 析的变量的引用。在“dst”参数中指定一个 BYTE 数组。该数组用作写入变量值的目标缓冲区。 这两个数组的限值需相同。 使用参数 "firstIndex" 和 "lastIndex" 限制将在此次指令调用过程中复制的值列表。在后续的 调用过程中,可复制其它已解析符号的值。如果不希望对列表进行限制,则 "firstIndex" 参 数中的值必须等于该列表的下限且 "lastIndex" 参数中的值需等于该列表的上限。 "mode" 参数的值用于定义 "dst" 参数中的存储器格式。 可通过偏移量确定目标缓冲区中已解析的符号值的存储位置。通过“dstOffsets”(Array of DINT) 参数指定偏移量。每个偏移量均为位偏移,用于确定将值写入缓冲区时的起始位。可在一个 字节中存储多个 BOOL 数据类型的值。其它所有数据类型的值的起始位位置必须可被 8 整除。 例如,如果 "src[i]" 参数引用一个数据类型为 REAL 的变量,同时"dstOffsets[i]"参数中的值为 88,"mode" 参数值为 2#1,则“从已解析的符号中读取值并写入缓冲区中”指令会将值复 制到字节 11 到 14 中(从Zui低有效字节开始)。

           例如,如果 "src[i]" 参数引用一个数据类型为 BOOL 的变量,同时 "dstOffsets[i]" 参数中的值 为 29,则“从已解析的符号中读取值并写入缓冲区中”指令会将该值复制到字节为 3 并且 偏移量为 5 的目标存储器。 为确保 "dstOffsets[i]" 中包含有 "src[i]" 的偏移量,"dstOffsets" 和 "src" 处的数组限值必须相 同。 这样,可准确定义目标缓冲区的结构。但请注意,该指令不会验证所指定的偏移量是否重叠。 此时,不会发送错误消息,而且目标缓冲区中的内容不确定。 目标缓冲区中的内容同样取决于这是值从优化存储器中读取,或是从非优化存储器中。这两 个存储区对字节填充的规则不同。有关字节填充的更多信息,请参见“另请参见”。 "status" 参数是一个 INT 数组。为确保 "status[i]" 中包含有 "src[i]" 的状态,该参数的限值必 须与 "src" 和 "dstOffsets" 参数的相同。 对于 WSTRING 和 STRING,将复制源字符串的当前长度。如果源字符串比目标字符串短,则 目标字符串中的其余字符保持不变。 说明 SDT“ResolvedSymbol”中的引用无效 如果在 RUN 模式下因加载导致被引用的变量覆盖,则 SDT "ResolvedSymbol" 中的引用可能 变为无效。引用可能指向不存在的变量。“status”参数中的错误代码指示引用无效。 此时,需使用“ResolveSymbols”指令对该符号进行重新解析。 参数 下表列出了“从已解析的符号中读取值并写入缓冲区中”指令的参数: 参数 声明 数据类型 存储区 说明 firstIndex Input DINT I、Q、M、D、 L、C 待复制的第一个 已解析符号的下 标。 lastIndex Input DINT I、Q、M、D、 L、C 待复制的Zui后一 个已解析符号的 下标。 src Input Array of ResolvedSymbol D、L 已解析的符号列 表。

展开全文
拨打电话 微信咨询 发送询价