OPC_UA_MethodCall_C:建立会话和调用方法 (S7-1500) 在哪些 CPU上可以使用“OPC_UA_MethodCall_C”指令? 固件版本为 V2.8 及以上版本的 S7-1500 CPU中包含“OPC_UA_MethodCall_C”指令。 说明 “OPC_UA_MethodCall_C”指令会与 OPC UA服务器建立会话,并在该服务器上调用方法。 与“OPC_UA_MethodCall”指令的区别“OPC_UA_MethodCall_C”指令属于 OPC UA 客户端库中的紧凑指令,在指令名称中使用“_C” 进行识别。 与OPC UA 客户端库中所有紧凑指令相似,该指令必须进行参数化,才能作为 OPC UA 客户端执行具体任务。与使用“OPC_UA_MethodCall”时不同,用户不必调用其它指令(例如,建 立连接并确定 OPC UA服务器中命名空间的当前索引)。 功能描述 “OPC_UA_MethodCall_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”中包含已发生的错误。另请参见“同步指令和异步指令之间的不同之处。
下表列出了“OPC_UA_MethodCall_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_MethodCall_C”指令将使用通过 “NamespaceUris”InOut 参数指定的数组大小。MethodHdlCount Input UInt 确定数组“MethodHdls”中要考虑的元素(方法句柄) 的数量。如果为该参数分配的值为 0,则 “OPC_UA_MethodCall_C”指令将使用通过 “MethodHdls”InOut参数指定的数组大小。 MethodHdl Input DWord 要调用的方法的句柄。参数 声明 数据类型 说明 DoneOutput Bool 状态参数,可具有以下值: • 0:作业尚未开始或仍在处理之中。 •1:作业已完成且未出错。此状态仅显示一次调用 的时间。 Busy Output Bool 状态参数,可具有以下值: •0:作业尚未启动或已完成。 • 1:作业尚未完成。无法启动具有该实例的新作业。 Error Output Bool状态参数,可具有以下值: • 0:未发生错误。 • 1:处理期间出错。此状态仅显示一次调用的时间。 Status OutputDWord 指令“OPC_UA_MethodCall_C”的返回值或错误信息, 见下文 NamespaceUris InOutVariant 指向 STRING 或 WSTRING 类型的数组的指针。 提供的命名空间 URI 列表NamespaceStatusList InOut Variant 指向 DWORD 类型的数组的指针。 已解析命名空间列表的状态NamespaceIndexes InOut Variant 指向 UINT 类型的数组的指针。缓存,建立会话时指令会向其中写入命名空间索引, 稍后在调用方法时将使用该缓存 ObjectNodeIDs InOutVariant 指向包含 OPC_UA_NodeId (页 5894) 类型元素的数组 的指针。该数组包含方法所在对象(文件夹)的节点 ID (NodeID)。 MethodNodeIDs InOut Variant 指向包含OPC_UA_NodeId (页 5894) 类型元素的数组 的指针。 该数组包含从服务器为其请求句柄的相应方法的节点 ID(NodeID)。 MethodHdls InOut Variant 指向 DWORD 类型的数组的指针。缓存,建立会话时“OPC_UA_MethodCall_C”指令会将 OPC UA 服务器返回的 MethodHandles写入其中,稍 后在调用方法时将使用该缓存 StatusList InOut Variant 指向 DWORD 类型的数组的指针。状态列表的存储位置,在其中保存各个方法的状态。数 声明 数据类型 说明 MethodResult InOut Variant 指向DWORD 类型变量的指针。 调用的服务器方法的错误代码(结果)。 此错误代码是由 OPC UA 服务器的用户程序或由系统提供的(例如,输入参数不正确时)。 InputArguments InOut Variant 指向 PLC 数据类型 (UDT) 或STRUCT 的变量的指针,变 量的名称、编号、顺序和数据类型与预期输入参数对 应。 OutputArguments InOutVariant 指向 PLC 数据类型 (UDT) 或 STRUCT 的变量的指针,变 量的名称、编号、顺序和数据类型与预期输出参数对应。错误代码 (16#...) 说明 3800_03 00 成功终止与 OPC UA 服务器的连接 3870_00 00未激活任何作业,未建立连接 3870_01 00 连接建立的初次调用 3870_02 00 当前正在建立连接 3870_03 00当前正在终止连接 3870_04 00 连接已建立并且正在受到监视。未激活任何 ReadList 作业。 3870_05 00正在处理所请求的作业。 3870_06 00 该会话无法建立。该指令尝试建立会话前将等待 30 秒钟时间。 7800_00 00功能已成功完成。NodeStatusList 包含其它信息。 7800_01 00 与 OPC UA服务器成功建立连接。更多信息,请参见 NodeStatusList 参数(OPC_UA_ReadList_C 和OPC_UA_WriteList_C)或 StatusList 参数 (OPC_UA_MethodCall_C)。 7870_0200 正在建立连接。增补信息,请参见 NamespaceStatusList 参数。 B880_01 00执行内部系统功能时出错。静态变量 s_OPC_UA_Connect_Instance.Status 包含特定的错误代码。B880_02 00 执行内部系统功能时出错。静态变量 s_OPC_UA_NamespaceGetIndexList_Instance.Status 包含特 定的错误代码。 B880_03 00执行内部系统功能时出错。 • OPC_UA_ReadList_C:静态变量s_OPC_UA_NodeGetHandleList_Instance.Status 包含特定的错 误代码。 •OPC_UA_WriteList_C:静态变量 s_OPC_UA_NodeGetHandleList_Instance.Status包含特定的错 误代码。 • OPC_UA_MethodCall_C:静态变量s_OPC_UA_MethodGetHandleList_Instance.Status 包含特定的错误代码。执行内部系统功能时出错。 • OPC_UA_ReadList_C:静态变量s_OPC_UA_ReadList_Instance.Status 包含特定的错误代码。 •OPC_UA_WriteList_C:静态变量 s_OPC_UA_WriteList_Instance.Status包含特定的错误代码。 • OPC_UA_MethodCall_C:静态变量s_OPC_UA_MethodCall_Instance.Status 包含特定的错误代 码。 B880_05 00执行内部系统功能时出错。 • OPC_UA_ReadList_C:静态变量s_OPC_UA_NodeReleaseHandleList_Instance.Status 包含特定 的错误代码。 •OPC_UA_WriteList_C:静态变量s_OPC_UA_NodeReleaseHandleList_Instance.Status 包含特定 的错误代码。 •OPC_UA_MethodCall_C:静态变量s_OPC_UA_MethodReleaseHandleList_Instance.Status 包 含特定的错误代码。B880_06 00 执行内部系统功能时出错。静态变量 s_OPC_UA_Disconnect_Instance.Status包含特定的错误代码。 B880_07 00 执行内部系统功能时出错。静态变量s_OPC_UA_ConnectionGetStatus_Instance.Status 包含特定 的错误代码。