访问 OPC UA服务器数据OPC UA 服务器的客户端访问和本地访问 OPC UA 服务器为网络中的 OPC UA客户端提供大量信息。以下部分介绍了在 OPC UA 服务器 的地址空间中提供 CPU 变量(PLC 变量和 DB 元素)的几种方式。在 OPC UA 地址空间中通过服务器接口提供 CPU 变量 将 CPU 变量自动传输到 OPC UA 服务器地址空间的便捷方式: •在 CPU 的 OPC UA 属性中,激活标准 SIMATIC 服务器接口。 为 OPC UA 发布的所有 CPU 变量随后也会自动在CPU 名称下的 OPC UA 地址空间中可用。OPC UA 服务器接口的使用方式更灵活、程序结构更清晰;只需在项目树中组态服务器接口(在 CPU 下方的“OPC UA 通信文件夹”)。用户自定义 OPC UA 服务器接口可以轻松映射 OPC UA 变量和 CPU变量(本地数据)。此处,作为客户端的 S7-1500 CPU 将值写入 OPC UA 服务器的 OPC UA 变量。CPU 变量和OPC UA 变量之间的映射看起来就像 OPC UA 客户端直接将值写入 CPU 变量一样。对于 S7-1500 客 户端CPU,将“OPC_UA_WriteList”指令与数据交换所需的附加指令结合使用。将 CPU 变量值直接写入 OPC UA变量(设置 OPC UA DataValue) 自固件版本 V3.0 起,S7-1500 CPU除了映射变量外,还可以通过“OPC_UA_WriteList”指令将值 直接写入服务器的本地 OPC UA 变量节点。通常,CPU客户端程序中的“OPC_UA_WriteList”指 令用于将值写入远程 OPC UA 服务器的 OPC UA 变量中。在服务器中使用“OPC_UA_WriteList”的优势:除了该值之外,还可以为 OPC UA 变量节点提供 以下附加信息: •SourceTimestamp • StatusCode OPC UA提供了一个内置的“DataValue”数据类型。DataValue 是一个结构,用于保存值 (Value) 以及值的更多信息SourceTimestamp 和 StatusCode。DataValue 结构仅供 OPC UA 服务使 用,不能直接在 CPU程序中写入该结构的元素。只有通过使用“OPC_UA_WriteList”指令才能进 行写访问。 应用选项 CPU变量无法记录指示Zui后一次将值写入 CPU 变量的时间戳。如果通过服务器接口映射 CPU 变量和 OPC UA 变量,则 OPC UA服务器不会将 SourceTimestamp 设置为 CPU 变量发生变化的时间,而是设置为服务器中“采集”值的时间;例如,通过读取服务或在订阅环境中采样。例如,如果使用“OPC_UA_WriteList”将 DataValue 直接写入 OPC UA 变量节点,则可以提供在程序中确定的时间戳作为值的 SourceTimestamp。 设置 DataValues 时 OPC_UA_WriteList指令的工作原理 例如 DataValue 结构建模为 UDT,并且此数据类型的变量被传送到“OPC_UA_WriteList”指令。该指令将变量的元素持续传输到 OPC UA变量节点。“ConnectionHdl”指令参数的值定义了“OPC_UA_WriteList”的工作方式:“正常”客户端指令或写入本地 OPC UA 变量节点的指令。在后一种情况下,OPC UA 客户端可以读取带有更多信息的 值并相应地对其进行评估。原理如下图所示,一种情况是使用任意客户端,另一种情况是使用 S7-1500 CPU 作为 OPC UA 客户端。使用 S7-1500CPU 客户端时,显示了将 DataValue 元素分配给 OPC_UA_ReadList 指 令的相应指令参数的情况。可以完全访问DataValue 结构的所有元素。 “OPC_UA_WriteList”指令的“ConnectionHdl”(-42)值导致服务器写入本地 OPC UA 变量节点。其它应用选项 如果 OPC UA 客户端在订阅环境中向 S7-1500 CPU注册值更改(受监视的项目),并且为相应 的 DataValue 提供了上述值和更多信息,则对其它信息的更改也可触发通知。示例:二进制值变化非常快,在采样间隔内就可能恢复其原始值(快速变化 TRUE > FALSE >TRUE)。未检测到值的变化。检测到时间戳的变化。同样,当 StatusCode 发生变化时, 值没有变化,也可以触发通知。限制 • OPC UA 客户端只允许读取 OPC UA 变量;必须为 OPC UA 变量相应地设置读/写权限的“AccessLevel”属性。 • 只能在本地设置用户自定义的服务器接口的 OPC UA 变量。 •在用户自定义的服务器接口中,直接写入的 OPC UA 变量不得映射到 CPU 变量。 图10-16 用户自定义服务器接口 有关“设置 OPCUA-DataValue”时的“OPC_UA_WriteList”指令用法的详细信息,请参见通信指令 帮助的相应部分。管理读写权限启用 OPC UA 的 PLC 变量和 DB 变量 如果 OPC UA 启用了 PLC 变量(默认设置),则 OPC UA 客户端对PLC 变量和 DB 变量具有读 写权限。对于已启用的变量,已选中复选框“可从 HMI/OPC UA 访问”(Accessiblefrom HMI/OPC UA)。 可在 TIA Portal 的设置中更改默认设置:“选项”(Options) 菜单中的命令“设置> PLC 编程 > 常 规”(Settings > PLC programming >General)。“块接口/数据块元素”(Block interface/data block elements)区域中包含相应选项。 以下为数组数据块的示例:结果:OPC UA 客户端既可以对这些元素进行读操作,也可以对其进行写操作。撤消写入权限 如果要对一个变量进行写保护,则可取消选中该变量的“从 HMI/OPC UA 可写”(Writable fromHMI/OPC UA) 选项。这将取消 OPC UA 客户端和 HMI 设备的写入权限。 结果:OPC UA 客户端和 HMI设备仅具备读权限。OPC UA 客户端将无法为该变量赋值,也无法影响 S7 程序的执行。 撤消读写权限要对变量进行读写保护,可禁用该变量的“从 HMI/OPC UA 可访问”(Accessible from HMI/OPC UA)选项(不选中该复选框)。这样,OPC UA 服务器将从地址空间中删除该变量。OPC UA 客 户端无法再访问该 CPU 变量。结果:OPC UA 客户端和 HMI 设备无法对该变量进行读取和写入。 结构的读写权限如果移除某结构组件的读写权限,则无法将该结构或数据块作为一个整体进行写入或读取。 如果移除某个 PLC 数据类型 (UDT)中各组件的读写权限,则将移除该数据类型的所有数 据块的相应权限。 在 HMI 工程组态中可见 “在 HMI工程组态中可见”(Visible in HMI Engineering) 选项将影响西门子的工程组态工具。如 果禁用选项“在 HMI工程组态中可见”(Visible in HMI Engineering)(未勾选),则无法在 WinCC (TIA Portal)对该变量进行组态。 该选项不会对 OPC UA 产生任何影响。 规则 • 如果与其它系统(控制器、嵌入式系统或MES)进行通信时需要,则只能在 STEP 7 中对 PLC 变量和数据块变量进行读取访问。 而不应启用其它 PLC 变量。 •如特定的 PLC 变量和数据块变量确实需要写入权限,则只允许通过 OPC UA 进行写入访 问。 •如果为数据块的所有元素复位“可通过 HMI/OPC UA 访问”(Accessible from HMI/OPC UA) 选 项,则OPC UA 客户端的数据块不再显示在 S7-1500 CPU 的 OPC UA 服务器地址空间中。 •还可以阻止集中访问整个数据块(请参见管理整个 DB 的读写权限 (页 189))。此设置 会“否决”DB 编辑器中组件的设置。更多信息 有关如何协调 CPU 变量的读写权限的信息,请参见“协调 CPU 变量的读写权限 (页 190)”部 分。管理整个 DB的读写权限 隐藏 OPC UA 客户端的 DB 或 DB 内容 可通过 OPC UA 客户端轻松阻止对整个数据块的访问。利用此选项,相应 DB 的数据(包括函数块的示例 DB)对 OPC UA 客户端保持隐藏。 在模式设置中,数据块可通过 OPC UA客户端进行读写。可在 TIA Portal 的设置中更改此默认 设置:“选项”(Options) 菜单中的命令“设置 > PLC编程 > 常规”(Settings > PLC programming >General)。“新块的默认设置”(Default settings for new blocks) 区域中包含相应选项。 操作步骤要对 OPC UA 客户端完全隐藏某一数据块或避免通过 OPC UA 客户端对数据块进行写访问,请 按以下步骤操作: 1.在项目树中选择要保护的数据块。 2. 选择“特性”(Properties) 快捷菜单。 3. 选择“属性”(Attributes)区域。 4. 根据需要选中/清除“DB 可从 OPC UA 访问”(DB Accessible from OPC UA) 复选框。 图10-18 隐藏 OPC UA 客户端的 DB 或 DB 内容 说明 对 DB 编辑器中设置的影响如果使用此处描述的 DB 属性隐藏 DB,则 DB 编辑器中组件的设置将不再相关;不能再访问或 写入单个组件。提示:使用所有程序块的总览图 如果使用多个数据块,则可以使用“程序块”(Program blocks) 文件夹的详细总览图有选择的激活或禁用 OPC UA 可访问性。 请按以下步骤操作: 1. 在项目树中选择“程序块”(Program blocks) 文件夹。 2.在“视图”(View) 菜单中,选择“总览图”(Overview) 命令。 3. 选择“详细信息”(Details) 选项卡。将显示块及其属性的总览图。