SIEMENS西门子 触摸屏TP2200 6AV21240XC020AX1
OPC UA (S7-1200, S7-1500) 客户端指令 (S7-1500) 客户端程序中的 OPC UA 指令 (S7-1500) 简介 在以下章节中,将通过程序示例介绍客户端程序如何执行 OPC UA 指令。 在程序示例中使用的工厂内,使用一个以 S7-1500 CPU 作为服务器,另一个 S7-1500 CPU 作 为客户端: • 该服务器中包含同于读写操作的 PLC 变量和一个服务器方法。 • 客户端访问所生成的值并调用服务器方法。 在创建客户端接口以及使用 OPC UA 的连接参数分配时,可从 STEP 7 中读取各指令的参数。 即,用户无需手动创建多个变量以生成参数。有关如何进行手动操作的信息,请参见 “OPC_UA_TranslatePathList”指令 (页 5775)”部分中的示例。
有关如何轻松使用 OPC UA 参数分配的信息,请参见以下章节中的 OPC UA 指令信息。 SCL 的编程示例 这些程序示例基于 Structured Control Language (SCL) 编程语言。 各程序示例中均包含完整的源代码程序。 基于 PLCopen 标准化指令 客户端中大部分 OPC UA 指令的执行遵循“PLCopen OPC-UA-Client for IEC 61131-3”规范。 实现标准化后,可轻松将用户程序传送到不同制造商的控制器中,该控制器同样使用基于 PLCopen 规范的 OPC UA 指令。 如果已知 OPC UA 客户端的基本结构和过程,则操作将更为简单便捷。 多数客户端指令支持列表处理 多数 OPC UA 客户端指令不仅可以进行数值处理,同时还支持处理列表。 即,“OPC_UA_NamespaceGetIndexList”指令可接收包含命名空间的列表,并返回一个包含 有这些命名空间对应索引的列表。 紧凑指令,操作更为简单便捷 在 TIA Portal V17 及以上版本中,可使用与开放用户通信中紧凑指令类似的紧凑指令。这些 紧凑指令用于可执行读/写方法的同时建立连接或会话。可使用以下指令: • OPC_UA_ReadList_C:建立会话并读取变量 • OPC_UA_WriteList_C:建立会话并写入变量 • OPC_UA_MethodCall_C:建立会话并调用方法 OPC UA 服务器的性能 OPC UA 服务器自身可提供有关服务器性能的信息。 下图显示了 1516-3 PN/DP 类型的 S7 CPU 的地址空间。 例如,在节点“MaxNodesPerRead”处,可指定调用一次“OPC_UA_ReadList”指令时可同时读 取的 PLC 变量数量。 “NodeHdls”参数中提供的数组上限值取决于所用 OPC UA 客户端的属性(参见该客户端的技 术规范)。以下限制适用于所有客户端接口(如,所有列表内的): • CPU 1510SP (F),CPU 1511 (C/F/T/TF),CPU 1512C,CPU 1512SP (F),CPU 1513 (F): 1000 个节点 • CPU 1505 (S/SP/SP F/SP F/SP T/SP TF),CPU 1515 (F/T/TF),CPU 1515 SP PC (F/T/TF),CPU 1516 (F/T/TF):2000 个节点 • CPU 1507S (F),CPU 1517 (F/T/TF),CPU 1518 (F):5000 个节点错误编号 指令的错误编号划分方法如下所示: • 如果错误编号以“16#B0”或“16#C0”开头,则说明该编号为西门子指定,具体参见“西门 子错误代码 (页 5899)”。 示例:以下错误编号为任何客户端指令均可能发生的基本错误编号: B080_C400 ClientNotEnabled 客户端已禁用。 在 TIA Portal 中启用客户端。 B080_C500 ClientNotAvailable 初始化客户端时出错 C080_C300 Simatic_OutOfResources 存储器分配错误或指令的实 例过多 • 如果错误编号以“16#80”开头,则说明该编号由 OPC Foundation 指定,具体参见“OPC 基金会错误代码 (页 5901)”。 • 如果错误编号以“16#A0”开头,则说明该编号由 PLCopen 指定,具体参见“PLCopen 错 误代码 (页 5919)”。 有关 PLCopen 的错误编号列表,另请参见“PLCopen OPC UA Client for IEC 61131-3”规范 的第 4 部分。该规范可从 PLCopen 获取。紧凑指令 (S7-1500) OPC_UA_ReadList_C:建立会话并读取变量 (S7-1500) “OPC_UA_ReadList_C”指令所适用的 CPU “OPC_UA_ReadList_C”指令包含在 S7-1500 CPU 固件版本 V2.8 及以上版本中。 说明 “OPC_UA_ReadList_C”指令用于与 OPC UA 服务器建立会话,并从 NodeSet 中读取指定值。与“OPC_UA_ReadList”指令的区别 “OPC_UA_ReadList_C”指令属于 OPC UA 客户端库中的紧凑指令,在指令名称中使用“_C”进行 标识。 与 OPC UA 客户端库中所有紧凑指令相似,该指令必须进行参数化,才能作为 OPC UA 客户 端执行具体任务。与使用“OPC_UA_ReadList”时不同,用户不必调用其它指令(例如,建立 连接并确定 OPC UA 服务器中命名空间的当前索引)。 功能描述 “OPC_UA_ReadList_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)” 参数 下表列出了“OPC_UA_ReadList_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)” NamespaceUrisCount Input UInt 确定数组“NamespaceUris”中要考虑的命名空间的数 量。 如果为该参数分配的值为 0,则“OPC_UA_ReadList_C” 指令将使用通过“NamespaceUris”InOut 参数指定的数 组大小。 NodeIDCount Input UInt 确定数组“NodeIDs”中要考虑的元素(节点)的数量。 该值为要从服务器中读取的数值。 如果为该参数分配的值为 0,则“OPC_UA_ReadList_C” 指令将使用通过“NodeIDs”InOut 参数指定的数组大小。 Done Output Bool 状态参数,可具有以下值: • 0:作业尚未开始或仍在处理之中。 • 1:作业已完成且未出错。此状态仅显示一次调用 的时间。 Busy Output Bool 状态参数,可具有以下值: • 0:作业尚未启动或已完成。 • 1:作业尚未完成。无法启动具有该实例的新作业。