OPC_UA_WriteList_C:建立会话和写入变量 (S7-1500) 在哪些 CPU上可以使用“OPC_UA_WriteList_C”指令? 固件版本为 V2.8 及以上版本的 S7-1500 CPU中包含“OPC_UA_WriteList_C”指令。 说明 “OPC_UA_WriteList_C”指令会与 OPC UA服务器建立会话,并描述该 OPC UA 服务器的变量。 与“OPC_UA_WriteList”指令的区别“OPC_UA_WriteList_C”指令属于 OPC UA 客户端库中的紧凑指令,在指令名称中使用“_C”进 行识别。 与 OPCUA 客户端库中所有紧凑指令相似,该指令必须进行参数化,才能作为 OPC UA 客户端执行具体任务。与使用“OPC_UA_WriteList”时不同,用户不必调用其它指令(例如,建立 连接并确定 OPC UA服务器中命名空间的当前索引)。 功能描述 “OPC_UA_WriteList_C”为异步执行指令,进行处理时可能会多次调用指令。操作模式取决于参数“REQ”: • 在 REQ 中没有上升沿时调用 如果MaintainSession=TRUE,则会在没有会话时建立会话。如果MaintainSession=FALSE,则会在未激活任何作业时终止既有会话。 • 在 REQ 中有上升沿时调用作业激活:如果尚不存在会话,则建立会话,执行写入操作。如果MaintainSession=FALSE,则会话在写入操作后终止;如果 MaintainSession=TRUE,则保 持会话。参数“Busy”和“Done”用于指示作业状态。 “Status”参数可以包含有关当前处理步、警告或错误的信息: •只要“Busy”的值为 TRUE,“Status”就会提供有关当前处理步的信息。 • 处理完作业(“Done”的值为TRUE)且“Error”的值为 FALSE 时,对“Status”参数进行检查仍 然有意义。该参数可能包含警告。处理完作业且“Error”的值为 TRUE 时,“Status”中包含已发生的错误。 另请参见“同步指令和异步指令之间的不同之处(页 715)”
参数 声明 数据类型 说明Error Output Bool 状态参数,可具有以下值: • 0:未发生错误。 • 1:处理期间出错。此状态仅显示一次调用的时间。Status Output DWord 指令“OPC_UA_ReadList_C”的返回值或错误信息,见下 文NamespaceUris InOut Variant 指向 STRING 或 WSTRING 类型的数组的指针。 提供的命名空间URI 列表 NamespaceStatusList InOut Variant 指向 DWORD 类型的数组的指针。已解析命名空间列表的状态 NamespaceIndexes InOut Variant 指向 UINT 类型的数组的指针。缓存,建立会话时指令会向其中写入命名空间索引, 稍后在读取变量时将使用该缓存 NodeIds InOut Variant 指向包含OPC_UA_NodeId (页 5894) 类型元素的数组 的指针。 提供的待读取节点的列表 NodeHdls InOutVariant 指向 DWORD 类型的数组的指针。 缓存,建立会话时“OPC_UA_ReadList_C”指令会将NodeHandles 写入其中,稍后在读取变量时将使 用该缓存 NodeStatusList InOut Variant 指向DWORD 类型的数组的指针。 状态列表的存储位置,在其中保存读取节点的状态 TimeStamps InOut Variant节点的时间戳的存储位置 Tag InOut Variant 包含所请求变量的适用数据类型的结构节点数据的存储位置。下表列出了“OPC_UA_WriteList_C”指令的参数。名称以粗体显示的参数为必需参数;必须分配这些参数才能成功编译指令。 参数 声明 数据类型 说明 REQ Input Bool 控制参数 Request上升沿时激活该作业:如果尚不存在会话,则建立会 话,开始写入进程 MaintainSession Input Bool影响与远程服务器的 OPC UA 传输会话: • TRUE:如果会话尚不存在,则该指令将尝试建立并 保持会话。 •FALSE:如果存在会话且没有作业处于激活状态, 则该指令将终止会话。 注:如果“MaintainSession”的值为FALSE,并且“REQ” 检测到上升沿,则建立会话并激活作业。如果作业完 成后,“MaintainSession”的值仍为FALSE,则终止会 话。 ServerEndpointUrl Input String[254] 带有 OPC UA 服务器的地址(URL) 的字符串 支持 IPv4 地址以及 FQDN(完全限定域名),前提是 已在 CPU 属性中组态了 DNS 服务器。SessionConnectInfo Input OPC_UA_Sessio nConnectInfo 会话描述请参见“OPC_UA_SessionConnectInfo (页 5889)” NamespaceUrisCountInput UInt 确定数组“NamespaceUris”中要考虑的命名空间的数 量。 如果为该参数分配的值为0,则“OPC_UA_WriteList_C” 指令将使用通过“NamespaceUris”InOut 参数指定的数 组大小。NodeIDCount Input UInt 确定数组“NodeIDs”中要考虑的元素(节点)的数量。 该值为要写入服务器的数值。如果为该参数分配的值为 0,则“OPC_UA_WriteList_C” 指令将使用通过“NodeIDs”InOut参数指定的数组大小。 Done Output Bool 状态参数,可具有以下值: • 0:作业尚未开始或仍在处理之中。 •1:作业已完成且未出错。此状态仅显示一次调用 的时间。参数 声明 数据类型 说明 Busy Output Bool状态参数,可具有以下值: • 0:作业尚未启动或已完成。 • 1:作业尚未完成。无法启动具有该实例的新作业。 Error OutputBool 状态参数,可具有以下值: • 0:未发生错误。 • 1:处理期间出错。此状态仅显示一次调用的时间。 StatusOutput DWord 指令“OPC_UA_WriteList_C”的返回值或错误信息,见 下文 NamespaceUrisInOut Variant 指向 STRING 或 WSTRING 类型的数组的指针。 提供的命名空间 URI 列表NamespaceStatusList InOut Variant 指向 DWORD 类型的数组的指针。 已解析命名空间列表的状态NamespaceIndexes InOut Variant 指向 UINT 类型的数组的指针。缓存,建立会话时指令会向其中写入命名空间索引, 稍后在写入变量时将使用该缓存 NodeIds InOut Variant 指向包含OPC_UA_NodeId (页 5894) 类型元素的数组 的指针 提供的待写入节点的列表 NodeHdls InOutVariant 指向 DWORD 类型的数组的指针。 缓存,建立会话时“OPC_UA_WriteList_C”指令会将NodeHandles 写入其中,稍后在写入变量时将使 用该缓存 NodeStatusList InOut Variant 指向DWORD 类型的数组的指针。 状态列表的存储位置,在其中保存读取节点的状态 Tag InOut Variant包含所请求变量的适用数据类型的结构 节点数据的存储位置。