plc主站与从站DB数据如何通过plc中tcpipp交换

本文档中包含以下内容:

  • 设置通信服务的用户操作概述

要理解本功能手册中的内容需要具备以下知识:

  • 工业自动化系统 SIMATIC的知识

所有产品的基础性文档。产品文档基于本攵档

09/2016 版相比,《通信功能手册》版本 12/2017 中新增的内容

通过 OPC UA 配套规范可为多个供应商统一指定相应方法。使用这些指定的方法可轻松哋将不同制造商

的设备集成到工厂和生产过程中。

通过 CPU 接口建立与邮件服务器的安全连接 可直接与邮件服务器建立安全连接 而无需额外咹装硬件装置。 “通过电子邮件实现 OUC

12/2014 版相比《通信功能手册》版本 09/2016 中新增的内容

各种安全防护机制,例如在应用层
中进行合法用户嘚数据交换。
这样客户端可了解变量管理的概览
信息而且可对这些值进行读写。
与其它设备进行数据安全交换
· 开放式用户安全通信
茬某些情况下需要执行该功能。例
如网络中的安全规则不允许使用

说明本文档中包含所述设备的相关图片。这些图可能与所提供的设备畧有不同请特别关注以下注意事项:

这些注意事项中包含有关产品、产品操作和文档中应特别关注部分的重要信息。

Siemens 为其产品及解决方案提供了工业安全功能以支持工厂、系统、机器和网络的安全运行。

为了防止工厂、系统、机器和网络受到网络攻击需要实施并持续維护先进且全面的工业安全保护机制。Siemens 的产品和解决方案仅构成此类概念的其中一个要素

客户负责防止其工厂、系统、机器和网络受到未经授权的访问。只有在必要时并采取适当安全措施(例如使用防火墙和/或网络分段)的情况下,才能将系统、机器和组件连接到企业網络或 Internet

产品手册中包含模块特定信息的简洁描述,如特性、端子图、功能特性、技术数据

CPU、通信模块和通信处理器

与 CPU 上集成的接口相仳,通信处理器 (CP) 接口的功能更多CP 支持一些特殊功能。例如CP 1543-1 支持工业以太网安全功能,可通过其工业以太网接口确保工业以太网安全

進行点到点连接的通信模块接口

下文中所介绍的通信服务,将使用系统中 CPU、通信模块和处理器的接口和通信机制进行通信



在 Web 浏览器中,通过 HTTPS 访问 CPU 网站时需安装该 CPU 的 CA 证书。如果未安装证书则将显示一条警告消息,不建议访问该页面要查看该页面,需显式“添加例外情況”

中的全局安全设置中。之后再将 CA 证书导入浏览器中。

下图简要说明了通信的建立方式(“握手”)并着重介绍了通过 HTTP over TLS 进行数据茭换时所用的密钥协商过程。

该过程可适用于基于 TLS 的所有通信方式即,也可适用于开放式用户安全通信(请参见“安全通信的基本知识”)

验证 Web 服务器可靠性的操作步骤如下所示:

  1. Alice必须获得所有相关颁发机构的公钥。即必须拥有整个证书链,才能对该 Web

服务器证书(即Web 服务器的最终实体证书)进行验证。

可通过以下几种方式获得中间证书:

  • 服务器以消息签名方式将所需的中间证书连同最低层实体证书┅并发送给Alice这样,Alice 即可对证书链的完整性进行验证
  • 在这些证书中,通常包含证书签发者的URLAlice 可通过这些 URL 加载所需的中间证书。

在 STEP 7 中进荇证书处理时通常假设已将所需的中间证书和 Root 证书导入项目中,并已分配给模块

  1. Alice使用这些证书的公钥,对证书链中的签名进行验证
  2. 對称密钥需已经生成并传送到 Web服务器中。

之后即可通过对称密钥进行数据交换,如上图所示

– 下表列出了数据记录 B071H 的结构:

该数据记錄的长度从字节 4“版本”开始计算。

如果要禁用 SNMP请输入值

如果要启用 SNMP,请输入值



该应用程序示例说明了如何建立服务器与客户端之间的連接等其中还介绍了对 PLC 变量的读取和写入。

  • OPC UA 与特定的操作系统平台无关
    • OPC UA 支持多种不同的编程语言。
    • OPC 基金会提供了 Java 协议栈和 .Net 协议栈并鉯开源软件的形式提供了示例程序。

(SDK)以便于解决方案的开发。使用 SDK 的优点:

    • 明确的许可证条件(对于销售解决方案很重要)

OPC UA 可用于传感器、嵌入式系统、控制器、PC 系统与智能电话以及运行 MES 和

ERP 应用程序的服务器中

也可以同时使用 OPC UA 和 PROFINET。这两种协议使用相同的网络基础设施

        • 簡单的客户端/服务器机制

OPC UA 客户端从 OPC UA 服务器提取相应的网络信息。

OPC UA 可在不同层级应用息安全机制:

-Stack 生成程序特定的证书时将调用该域(如

“ApplicationUri”)。在其它证书生成工具中该域的名称可能不同。

使用 OPC 基金会的证书生成器

例如可使用 OPC.UA.CertificateGenerator 生成一个自签名的客户端证书。为此请執行以下操作步骤:

  1. 在 PC 上安装 OPC 基金会的示例应用程序。
  2. 按住 SHIFT 键然后右键单击该目录,显示快捷菜单
  1. 会为“MyClient”生成程序:
  • 带有客户端公鑰的“MyClient”证书,位于“certs”子文件夹中
  • 客户端的私钥位于“private”子文件夹中。

此说明信息基于 OPC Foundation 的“Opc.Ua.CertificateGenerator”2015 年 6 月 25 日版。对于其它版本的生成器則需其它条目。要获取所需条目的相关信息请按照以下步骤进行操作:

用户自己生成 PKI 密钥对和证书

只有在使用无法自行创建 PKI 密钥对和客戶端证书的 OPC UA 客户端时,才会涉及此部分内容此时,可通过 OpenSSL 生成一个私钥和一个公钥生成一个 X509 证书,并对证书进行自签名

OpenSSL 是一款用于苼成证书的工具。您还可以使用其它工具例如 XCA,一款密钥管理软件该软件具有图形用户界面,改进了已颁发证书的总览功能

  1. 创建一個目录,如“C:\demo”
  2. 打开命令行工具 (cmd.exe)。为此单击“Start”,并在搜索栏中输入“cmd”右键单击结果列表中的“cmd.exe”,并以管理员身份运行该程序Windows 的命令行窗口随即打开(DOS 提示符)。
  3. 切换到“C:\demo”目录为此,可输入以下命令:“cd C:\demo”

下图显示了包含以下命令的命令行窗口:

  1. 生成私鑰。将密钥保存到“myKey.key”文件在本示例中,密钥的长度为 1024 位;为了实现更高的 RSA 安全性实际长度采用 2048 位。输入以下命令:“genrsa -out myKey.key 2048”(在本示例Φ为“genrsa -out myKey.key 1024”)下图显示了包含该命令的命令行以及 OpenSSL 输出结果:
    • 国家/地区名称:如,“DE”为德国“FR”为法国
    • 州或省名称:例如“Bavaria”。
    • 位置洺称:如“Augsburg”
    • 机构名称:输入公司的名称。
    • 机构单位名称:如“IT”

重要事项:客户端程序的 IP 地址需存储在所创建证书的“主题备用名稱”(Subject Alternative Name) 域中;否则 CPU 将不接受该地址。

输入的信息将添加到证书中下图显示了包含该命令的命令行以及 OpenSSL 输出结果:

可通过以下两种方式使用 CSR:

  • 将 CSR 发送到证书颁发机构 (CA):请遵循证书颁发机构的操作说明。证书颁发机构

(CA) 将检查用户的身份和信息(认证)并使用该证书颁发机构的私钥对该证书进行签名。如接收已签名的 X.509 证书,并将该证书用于 OPC UA、HTTPS 或 Secure OUC (secure open user communication) 中通信伙伴将使用该证书颁发机构的公钥检查该证书是否确实由 CA 機构颁发(即,该证书颁发机构已确定您的信息)

  • 用户对 CSR 进行自签名:使用用户的私钥。该选项将在下一个操作步骤中介绍

下图显示叻包含以下命令和 OpenSSLC 的命令行窗口:

该命令将生成一个 X.509 证书,其中包含通过 CSR 传送的属性信息(在本示例中为

“myRequest.csr”),例如有效期为一年(-days 365)该命令还将使用私钥对证书进行签名(在本示例中为“myKey.key”)。通信伙伴则使用公钥(包含在证书中)检查该证书是否真实有效这样,可防止证书被攻击者篡改

通过自签名证书,用户可确定自己证书中的信息是否正确此时,无需依靠任何机构即可检查信息是否正确

OPC UA 将在客户端与服务器之间建立安全连接。OPC UA 将检查通信伙伴的身份OPC UA 使用基于 ITU(国际电信联盟)X.509-V3 标准的证书对客户端和服务器进行认证。唎外:使用安全策略“不安全”(No security) 时将不建立安全连接。

OPC UA 使用以下安全策略确保消息安全:

所有消息均不安全。要使用该安全策略则需与服务器建立安全策略为“无”(None) 的端点连接。

所有消息均已签名系统将对所接收消息的完整性进行检查。检测篡改行为要使用该安铨策略,则需与端点安全策略为“签名”(Sign) 的服务器立连接

对所有消息进行签名并加密。系统将对所接收消息的完整性进行检查检测篡妀行 为。而且攻击者无法读取消息内容(机密保护)。要使用该安全策略则需与端点安全策略为“签名并加密”(SignAndEncrypt) 的服务器建立连接。

咹全策略也可根据所使用的算法命名示例:“Basic256Sha256 -签名和加密”表示:端点进行安全连接,支持一系列 256 位哈希和 256 位加密算法

下图显示了建竝连接时通常所需的三个层:传输层、安全通道和会话。

图 9-6 所需层级:传输层、安全通道和会话

该层用于发送和接收消息OPC UA 在此使用优化嘚基于 TCP 的二进制协议。传输层是后续安全通道的基础

安全层从传输层接收数据,再转发到会话层中安全通道将待发送的会话数据转发箌传输层中。

在“签名”(Sign) 安全模式中安全通道将对待发送的数据(消息)进行签名。接收消息时安全通道将检查签名以检测是否存在篡改的情况。

采用安全策略“签名并加密”(SignAndEncrypt) 时安全通道将对待发送数据进行签名并加密。安全通道将对接收到的数据进行解密并检查簽名。

采用安全策略“不安全”(No security) 时安全通道将直接传送该消息包而不进行任何更改(消息将以纯文本形式接收和发送)。

会话将安全通噵的消息转发给应用程序或接收应用程序中待发送的消息。此时应用程序即可使用这些过程值或提供这些值。

建立安全通道如下所礻:

  1. 服务器接收到客户端发送的请求时,开始建立安全通道该请求将签名或签名并加

密,甚至以纯文本形式发送具体取决于所选服务器端的安全模式。在“签名”(Sign) 和

“签名并加密”(Sign & Encrypt) 安全模式中客户端将随该请求一同发送一个机密数

  1. 服务器将验证客户端的证书(包含在請求中,未加密)并检验该客户端的身份如果服务器信任此客户端证书,
    • 则会对消息进行解密并检查签名(“签名并加密”(Sign & Encrypt))
    • 仅检查簽名(“签名”(Sign)),
    • 或不对消息进行任何更改(“不安全”(No security))
  2. 之后服务器会向客户端发送一个响应(与请求的安全等级相同)。响应中還包含服务器机密客户端和服务器根据客户端和服务器的机密数计算对称密钥。此时安全通道已成功建立。

对称密钥(而非客户端与垺务器私钥和公钥)可用于对消息进行签名和加密

      1. 客户端将 CreateSessionRequest 发送到服务器后,开始建立会话该消息中包含一个仅能使用一次的随机数 Nonce。服务器必须对该随机数 (Nonce) 进行签名证明自己为该私钥的所有者。此私钥属于该服务器建立安全通道时所用证书该消息(及所有后续消息)将基于所选服务器端点的安全策略(所选的安全策略)进行加密。
      2. 服务器将发送一个 CreateSession Response 响应该消息中包含有服务器的公钥和已签名的 Nonce。客户端将检查已签名的 Nonce
      3. 如果服务器通过测试,则客户端将向该服务器发送一个 SessionActivateRequest该消息中包含用户认证时所需的信息:
    • 无数据(如果組态为匿名访问)。
  • 如果用户具有相应的权限则服务器将返回客户端一条消息

建立与 PLCopen 函数块的连接。

可根据上述模式启动安全通道和会話

组态对 PLC 变量的访问

如果 OPC UA 启用了 PLC 变量(默认设置),则 OPC UA 客户端对 PLC 变量和 DB 变量具有读写权限对于已启用的变量,已选中复选框“可从 HMI/OPC UA 访

結果:OPC UA 客户端既可以对这些元素进行读操作也可以对其进行写操作。

结果: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 工程组态中可见

该选项不会对 OPC UA 产生任何影响。

          • 如果与其它系统(控制器、嵌入式系统或 MES)进行通信时需要则只能在 STEP 7

中对 PLC 變量和数据块变量进行读取访问。而不应启用其它 PLC 变量

          • 如特定的 PLC 变量和数据块变量确实需要写入权限,则只允许通过 OPC UA 进行写入访问
          • 还鈳以阻止集中访问整个数据块(请参见需了解的 OPC UA 客户端知识 (页 156))。此设置会“否决”DB 编辑器中组件的设置

管理整个 DB 的读写权限

自 STEP 7 V15 起,可鉯选择通过 OPC UA 客户端轻松阻止对整个数据块的访问

利用此选项,相应 DB 的数据(包括函数块的示例 DB)对 OPC UA 客户端保持隐藏在模式设置中,数據块可通过 OPC UA 客户端进行读写

要对 OPC UA 客户端完全隐藏某一数据块或避免通过 OPC UA 客户端对数据块进行写访问,请按以下步骤操作:

  1. 在项目树中选擇要保护的数据块

对 DB 编辑器中设置的影响

如果使用此处描述的 DB 属性隐藏 DB,则 DB 编辑器中组件的设置将不再相关;不能再访问或写入单个组件

OPC UA 设计用于在较短的时间内传送大量数据。如果将数组和结构作为一个整体进行读写访问而非对单个 PLC 变量进行访问,则可显著提高系統性能

这是最快的访问数组的方式。因此需将 OPC UA 客户端数据组合到数组中。

          • 对于一次性或不频繁的数据访问请使用标准的读/写访问。
          • 對于少量数据的循环访问(循环间隔最长约为 5 秒)请使用订阅。

优化 OPC UA 服务器中的最短发布时间间隔设置和最小采样时间间隔设置

          • 如果萣期访问某些特定变量(重复访问),则可使用函数“RegisteredRead”和

通过增加通信循环负载值可增大 PLC 上的通信负载。确保更改设置后应用程序仍能正常工作

创建数组 DB 的操作步骤

在全局数据块中或某个函数块的背景数据块中,可创建数组或创建为一个数组 DB以下章节中,将介绍如哬创建一个数组 DB

要创建带数组的数据块(数组数据块),请按照以下步骤进行操作:

  1. 在项目树中选择带 OPC UA 服务器的 CPU
  2. 为数据块选择一个唯┅名称,并接受已输入的名称
  3. 从“数组数据类型”(Array data type) 下拉列表中选择数组各个元素的数据类型。
  4. 在“数组限值”(Array limit) 中输入数组的上限。
  5. 单擊“确定”(OK)

导出带有已启用 PLC 变量的 XML 文件

对于 OPC UA 客户端的离线组态,可使用其中描述了所有已启用 PLC 变量的 XML 文件

UA 规范进行结构化。

要创建和導出 XML 文件请按以下步骤操作:

  1. 选择 CPU。单击该 CPU 符号(如在网络视图中)。
  1. 选择导出文件的保存目录
  2. 为该文件设置一个新名称,或保留の前输入的原名称
  3. 单击“保存”(Save)。

服务器方法未包含在 OPC UA 导出文件中

该选项由系统默认设置,且无法更改

此外,数组本身也会在 XML 文件嘚 XML 元素中分别进行说明如果数组包含的数组元素很多,则 XML 文件包含的信息非常多

有关将导出文件转换为 CSV 格式的转换器,请访问以下常見问题与解答并从中获取可通过 OPC UA 访问的 CPU 变量列表。

          • 已获得可操作 OPC UA 服务器的运行系统许可证;请参见“OPC UA 服务器的许可证
          • 使用安全通信(如HTTPS、安全 OUC、OPC UA)的证书时,需确保相应模块为当前时间和当前日期否则,模块会将所用的证书评估为无效且无法进行安全通 信。

出于安铨方面的考虑默认情况下未启用 CPU 的 OPC UA 服务器:OPC UA 客户端不具备 S7-1500 CPU 的读写访问权限。

要激活 CPU 的 OPC UA 服务器请按照以下步骤进行操作:

  1. 选择 CPU。单击该 CPU 苻号(如在网络视图中)。

服务器的运行系统许可证

如果服务器已启用且进行了相应设置,则再禁用服务器时设置不会丢失。依旧會保存这些设置并在再次启用服务器时提供这些设置。

  • 客户端通过应用程序名称识别服务器以下示例源自 UaExpert:

如果已激活服务器,则还鈳使用项目中有意义的其它名称

若要更改 OPC UA 服务器的名称,请按照以下步骤进行操作:

    1. 选择 CPU单击该 CPU 符号(如,在网络视图中)
  • 输入一個有意义的名称。

请注意还要在证书上输入应用程序名称(主题备用名称),并且更改应用程序名称后可能需要再次生成现有证书

OPC UA 服務器进行访问。

URL 的结构如下所示:

– 默认值:4840(标准端口)

之后可在设备上设置该 PROFINET 接口的 IP 地址。例如通过 OPC UA 客户端搜索可用的 OPC UA 服务器时,将显示已分配给该 PROFINET 接口 [X2](TIA Portal 系统外)的 IP 地址之后,还将收到一个可用服务器列表及其 IP 地址

默认设置中会选择此选项。

保留该选项为选Φ状态以便 OPC UA 服务器可自动连接该 CPU 的 OPC UA 服务器并进行数据交换。

除了 SIMATIC 服务器标准接口之外还可导入和激活其它服务器接口,请参见“使用

通过使用 OPC UA 规范 V1.04 的客户端访问数据(如结构)

S7-1500 CPU 固件版本 V2.5 不支持通过 OPC UA 规范 V1.04 中定义的机制访问数据!使用这些机制访问 OPC UA 服务器数据的客户端可能會生成错误的值

OPC UA 服务器的常规设置

但用户可选用其它端口,此时可选择 1024 到 49151 的所有端口。此时需确保与其它应用程序不冲突。

客户端茬建立连接时必须使用选定的端口在以下示例中,选择端口 48400:

在该字段中指定在不进行数据交换的情况下 OPC UA 服务器关闭会话之前的最大时長

在该字段中指定 OPC UA 服务器启动并同时操作的最大会话数。最大会话数取决于 CPU 的性能每个会话都会占用资源。

在该字段中指定 OPC UA 服务器注冊的最大节点数

最大注册节点数取决于 CPU 的容量,并会在组态字段内容时显示(将光标放在字段中)每次注册都会占用资源。

即使尝试紸册的节点数超过所组态的最大注册节点数也不会出现错误消息

即使客户端在运行期间尝试注册的节点数超过所组态的最大注册节点数,S7-1500 CPU的服务器也只会注册所组态的最大数量的节点服务器会根据所组态的最大注册节点数向客户端发送常规字符串节点 ID,由此这些节点会夨去通过注册所获得的速度优势客户端不会接收到错误消息。

组态时请确保在注册前针对客户端计算允许的最大节点数或预留足够的鈳用数量。

对 PLC 变量的循环查询(轮询)可替换为对该值进行监控使用 Subscription:如果

PLC 变量的值发生变化,服务器将通知客户端参见“OPC UA 客户端 (页 156)”。

一台服务器通常监控大量的 PLC 值因此,服务器将以固定时间间隔向客户端发送包含

PLC 变量新值的消息(通知)服务器发送通知的频率

創建 Subscription 时,OPC UA 客户端可设定变量值发生变化时新值发送的时间间 隔。为了限制 OPC UA 的通信负载可设置需遵循的最短通知时间间隔。为此可使鼡最短发布时间间隔参数和最短采样时间间隔的参数。

在“最短发布时间间隔”(Minimum publishing interval) 中可设置变量值发生改变时服务器通过新值向客户端发送消息的时间间隔。

在下图中“最短采样时间间隔”为 250 ms输入 200 ms 作为“最短发布时间间隔”。

在本示例中数值更改后,如果 OPC UA 客户端请求更噺则 OPC UA 服务器将按照

200 ms 的时间间隔发送新消息。

(一秒)发送一个带有新值的通知

如果客户端要求更新频率为 100 ms,则服务器仍按照 200 ms 的频率发送消息(最短发布时间间隔)

CPU 变量值并与以前值相比较检查是否发生变更的时间间隔。

如果选定的采样时间间隔小于发布时间间隔且 OPC UA 愙户端请求对特定 PLC 变量进行高速采样,则在每个发布时间间隔内将测量两个或更多变量值

此时,OPC UA 服务器将值变更写入队列中并在发布間隔时间结束后,将所有值更改发送到客户端在发布间隔时间内,如果发生的值更改次数过多且超出队列容量则 OPC

UA 服务器将覆盖最旧的徝(具体取决于“Discard Policy”设置。此时需激活选项 “Discard Oldest”)。最新值将发送到客户端

所监视元素(所监视条目)的最大数量

在该字段中,指定該 CPU 的 OPC UA 服务器可同时监视值更改的最大元素数量监视会占用资源。可监视元素的最大数量取决于所用的 CPU

处理客户端和服务器证书

仅当 OPC UA 服務器可向 OPC UA 客户端证明身份时,才能建立服务器与客户端之间的安全连接服务器证书可用于证实身份。

激活 OPC UA 服务器并确认安全提示后STEP 7 会洎动为服务器生成证书,并将其保存在 CPU 的局部证书目录中可以使用 CPU 的局部证书管理器查看并管理此目录(导出或删除证书)。

下图所示為包含 OPC UA 服务器自动生成的证书的 CPU 局部证书管理器:

或者您还可以自行生成服务器证书。

在建立连接时服务器证书将从服务器传送到客戶端。客户端将检查该证书

客户端用户将确定是否信任该服务器证书。

此时客户端用户需确定是否信任该服务器证书。如果信任该服務器证书则客户端将服务器证书存储在包含可信服务器证书的目录中。

在以下示例中显示了客户端“"UA Sample Client"”的对话框。如果用户单击“是”(Yes) 按钮则客户端将信任此服务器证书:

消息的安全传输 (页 169)

如果使用来自制造商或 OPC 基金会的 UA 客户端,则会在安装期间或在首次调用程序时洎动生成客户端证书需要在 STEP 7 中通过全局证书管理器导入这些证书,并将其用于相应的 CPU(如前文所示)

用户自己编程 OPC UA 客户端时,可生成楿应的证书;请参见“客户端的实例证书

(页 151)”部分也可通过工具生成证书(如,使用 OpenSSL 或 OPC 基金会的证书生成器):

          • 使用 OpenSSL 时的操作步骤:“鼡户自己生成 PKI 密钥对和证书 (页 166)”
          • 使用 OPC 基金会的证书生成器时:“创建自签名的证书 (页 165)”。

向服务器宣布客户端证书

您需要向服务器发送愙户端证书以允许建立安全连接。为此请执行以下步骤:

  1. 在此选项卡的空白区域(而非证书上)中,右键单击鼠标
  2. 选择快捷菜单中嘚“导入”(Import) 命令。将显示用于导入证书的对话框
  3. 选择服务器信任的客户端证书。
  4. 单击“打开”(Open)导入证书。

客户端证书现已包含在全局證书管理器中请留意刚刚导入的客户端证书 ID。

  1. 单击用作服务器的 CPU 的特性中的“常规”(General) 选项卡
  1. 双击表中空行的“<新增>”(<add new>)。随即会在该行Φ显示浏览按钮
  2. 选择已导入的客户端证书。
  3. 单击带有绿色复选标记的按钮

服务器现已信任此客户端。如果还将服务器证书视为受信证書则服务器和客户端之间可建立安全连接。

下图显示了适合对消息进行签名和加密的服务器安全设置

图 9-11 组态服务器的安全设置

默认情況下,服务器证书创建时使用 SHA256 签名并启用以下安全策略:

如果在 S7-1500 OPC UA 服务器的安全通道设置中选择了所有安全策略(默认设

置),即采用端点“不安全”(No security),服务器和客户端之间还可能存在非安全数据通信(既未签名也未加密)由于选择“不安全”(No security),客户端的身份仍然未知无论后续为哪种安全设置,每个 OPC UA 客户端随后都可以连接到服务器

组态 OPC UA 服务器时,请确保只选择与您的设备或工厂的安全概念兼容的安铨策略应禁用所有其它安全策略。

建议:如果可能请使用“Basic256Sha256”设置。

不安全端点支持一系列使用哈希算法 RSA15 和 128 位加密的算法。该端点通过签名确保数据的完整性

安全端点,支持一系列使用哈希算法 RSA15 和 128 位加密的算法该端点通过签名和加密确保数据的完整性。

安全端点支持一系列使用哈希算法 RSA15 和 256 位加密的算法。该端点通过签名确保数据的完整性

安全端点,支持一系列使用哈希算法 RSA15 和 256 位加密的算法該端点通过签名和加密确保数据的完整性。

端点进行安全连接支持一系列 256 位哈希和 256 位加密算法。该端点通过签名确保数据的完整性

安铨端点,支持一系列 256 位哈希和 256 位加密算法

该端点将通过签名与加密机制确保数据的完整性和保密性。要启用安全设置请单击相关行的複选框。

“SHA256”自动对证书进行签名

如果使用 S7-1500 CPU 的 OPC UA 客户端(OPC UA 客户端已启用),则可按照以下章节中的详细介绍使用 STEP 7 V15 及更高版本为这些客户端创建证书。

如果使用来自制造商或 OPC 基金会的 UA 客户端则会在安装期间或在首次调用程序时自动生成客户端证书。在 STEP 7 中需要通过全局证書管理器导入这些证书,并在相应的 CPU 中使用

用户自己编程 OPC UA 客户端时,可生成相应的证书;请参见“客户端的实例证书

(页 151)”部分也可通過工具生成证书(如,使用 OpenSSL 或 OPC 基金会的证书生成器):

          • 使用 OpenSSL 时的操作步骤:“用户自己生成 PKI 密钥对和证书 (页 166)”
          • 使用 OPC 基金会的证书生成器時:“创建自签名的证书 (页 165)”。

仅当 OPC UA 服务器将 OPC UA 客户端证书归类为可信任证书时服务器与客户端之间才能建立安全连接。

因此需要让服務器知晓该客户端证书。

在以下章节中将介绍最初如何为 S7-1500 CPU 的 OPC UA 客户端生成证书,并提供给服务器

1.生成并导出客户端证书

要进行安全连接,需生成一个客户端证书并导出该证书为此,请执行以下操作步骤:

  1. 在“项目树”(Project tree) 区域中选择将用作客户端的 CPU。
  2. 单击“添加”(Add)

中,需输入用于访问系统中该 CPU 的 IP 地址

因此,在生成客户端证书之前需要对该 CPU 的 IP 接口进行组态。

  1. 单击“确定”(OK)
  1. 右键单击该行,并在快捷菜單中选择“导出证书”(Export certificate) 条目
  2. 选择该客户端证书的存储目录。

2.向服务器通告该客户端证书

用户需要将该客户端证书发送至服务器以便允許建立安全连接。为此请执行以下步骤:

  1. 在此选项卡的空白区域(而非证书上)中,右键单击鼠标
  2. 选择快捷菜单中的“导入”(Import) 命令。將显示用于导入证书的对话框
  3. 选择服务器信任的客户端证书。
  4. 单击“打开”(Open)导入证书。

客户端证书现已包含在全局证书管理器中请留意刚刚导入的客户端证书 ID。

  1. 单击用作服务器的 CPU 的特性中的“常规”(General) 选项卡
  1. 双击表中空行的“<新增>”(<add new>)。随即会在该行中显示浏览按钮
  2. 選择已导入的客户端证书。
  3. 单击带有绿色复选标记的按钮

服务器现已信任此客户端。如果还将服务器证书视为受信证书则服务器和客戶端之间可建立安全连接。

使用 STEP 7 生成服务器证书

在下文中将介绍使用 STEP 7 生成新证书的操作过程,以及各种证书的不同应用方式STEP 7 将基于启動以下对话框时的 CPU 属性区域,设置应用目标在本示例中,为“OPC UA 客户端和服务器”(OPC UA Client & Server)

建议:要使用 OPC UA 服务器的所有安全功能,则需使用全局咹全设置

用户自定义的服务器证书

如果您激活 S7-1500 的 OPC UA 服务器,则 STEP 7 会自动为该服务器生成证书(请参见“激活 OPC UA 服务器 (页 178)”)在该过程中,STEP 7 使鼡证书参数的默认值如果要更改参数,请按照以下步骤进行操作:

  1. 单击“添加”(Add) 按钮
  2. 将显示用于生成新证书的对话框(如下图所示)。已输入示例的值:

图 9-12 用户自定义的服务器证书

  1. 必要时可根据公司或客户的安全规范使用其它参数。

用于生成证书的字段的说明

选择证書是自签名还是由 TIA Portal 的一个 CA 证书进行签名。有关这些证书请参见“带 OPC UA 的证书 (页 164)”部分。如果要生成由 TIA-Portal 的一个 CA 证书签名的证书项目必须受保护,而且您必须以具有全部所需功能权限的用户身份登录更多相关信息,请参见“TIA Portal 中用户管理的基本知识”

在此处选择对服务器證书进行签名时要使用的哈希和加密过程。下列条目可用:

在此处输入服务器证书开始生效的日期和时间

在此处输入服务器证书有效终圵的日期和时间。确保证书的有效期不仅为一年或几

年在本示例中,证书的有效期为 30 年不过,出于安全方面的考虑应该以更短的时間间隔更新证书。如果有效期较长您便有机会决定何时为对系统执行保养等作业的合适时机。

server)“用途”(Usage) 下拉列表中包含以下条目:

对於 S7-1500 的 OPC UA 服务器,可设置 OPC UA 客户端中用户访问服务器时需通过的认证

用户无需证明其身份(匿名访问)。OPC UA 服务器不会检查客户端用户的授权

為增加安全性,应只允许访问支持用户认证的 OPC UA 服务器

用户必须证明其身份(非匿名访问)。OPC UA 服务器将检查客户端用户是否具备访问服务器的权限并通过用户名和正确的密码进行身份验证。

为此可单击“<添加新用户>”(<add new user>) 条目,并添加用户名和相应的密码最多可添加 21 个用戶。

    • 通过项目的安全设置进行额外的用户管理

如果选择此选项打开项目的用户管理也会用于对 OPC UA 服务器进行用户认证:随后,当前项目中嘚相同用户名和密码同样在 OPC UA 中生效

要激活项目的用户管理,请按以下步骤操作:

具有 OPC UA 功能权限的用户和角色

在项目用户的用户认证中鉯下选项将使用统一的项目设置:

在编辑安全设置之前,项目必须受保护且您必须以具有足够权限的身份(例如作为管理员)登录。

在項目树的“安全设置”(Security setting) 下访问受保护项目中的集中用户设置和角色在这里集中定义包含用户名、密码和功能权限的用户。可以在其它位置直接使用这些设置

          • 针对 OPC UA 服务器用户管理的用户选择

借助此设置,可以通知服务器具有哪个用户名和哪个密码的哪个客户端(用户)可鉯访问服务器

OPC UA 服务器的功能权限

在 S7-1500 CPU 上,还需为使用该服务器功能的用户启用相应的功能权限仅集中保存用户名和密码远远不够。

以下為此类型权限使用的说明示例:

  1. 在“功能权限类别”(Categories of function rights) 部分中导航到运行系统权限,然后导航到 CPU 功能权限选择要设置其功能权限的 CPU,例洳 PLC_2
  2. 有关以下功能权限的信息,请参见“功能权限”部分:

此功能权限适用于 S7-1500 CPU 的 OPC UA 服务器只有当选择此选项后,已被分配“PLC-opcua-role-all-inclusive”角色的 CPU PLC_2 服务器用户才具有以下权 限:为了与服务器建立会话用户需要使用已集中定义(并已加载到 CPU)的用户名和相应密码之一进行客户端认证。

运荇 S7-1500 CPU 的 OPC UA 服务器需要使用许可证所需的许可证类型取决于相应

CPU 的性能。将许可证类型分为以下几类:

若要确认购买所需许可证请按照以下步骤进行操作:

在 OPC UA 服务器上提供方法

提供用于服务器方法的用户程序

在 S7-1500 CPU(自固件版本 V2.5 起)的 OPC UA 服务器中,可以选择通过用户程序提供方法唎如,OPC UA 客户端可使用这些方法通过 S7-1500 CPU 的方法调用启动生产作业。

OPC UA 方法是“远程过程调用”的实现为不同通信节点之间的交互提供了有效機制。该机制提供作业确认和反馈值因此用户无需再编程握手机制。

例如使用 OPC UA 方法,可以持续传输数据而无需触发位/握手或触发控淛器上的特定操作。

通常OPC UA 方法的工作原理与运行期间由外部 OPC UA 客户端调用的受专有技术保护函数块的原理类似。

OPC UA 客户端仅“监视”已定义嘚输入和输出函数块、方法或算法的内容对外部 OPC

UA 客户端保持隐藏。OPC UA 客户端接收成功执行的反馈以及函数块(方法)返回的值或者,如果执行不成功则会收到错误消息。

作为程序员对 OPC UA 方法运行的程序环境负有责任并具有完全控制权。

编程方法和运行行为的规则

          • 确保 OPC UA 方法返回的值与 OPC UA 客户端提供的输入值一致
          • 遵守分配参数名称和结构的规则以及允许的数据类型(请参见 OPC UA 服务器指令的说明)。
          • 运行期间的荇为:对于每个实例OPC UA 服务器均接受一次调用。在调用已由用户程序处理或已超时之前方法实例不可用于其它 OPC UA 客户端。

实现用户程序(莋为服务器方法)的基本步骤如下

用于实现服务器方法的程序(函数块)的结构如下:

先在用户程序中(即服务器方法中)调用“OPC_UA_ServerMethodPre”指囹。该指令将执行以下任务:

    • 通过该指令询问 CPU 的 OPC UA 服务器是否已通过 OPC UA 客户端调用服务器方法
    • 如果已调用方法,并且服务器方法具有输入参數服务器方法现在会接收到输入参数。

服务器方法的输入参数来自调用 OPC UA 客户端

在这部分服务器方法中,用户提供实际用户程序

选项與其它任何用户程序中的选项相同(例如访问其它函数块或全局数据块)。如果服务器方法使用输入参数则还可使用服务器方法的输入參数。

仅当 OPC UA 客户端已调用服务器方法时才可执行服务器方法的这一部分。成功执行方法后如果方法具有输出参数,需要设置服务器方法的输出参数

如果用户程序已成功执行,则会通过相关参数通知 OPC UA 服务器OPC UA 服务器随后会将服务器方法的输出参数发送到 OPC UA 客户端。

无论用戶程序是由“OPC_UA_ServerMethodPre”和“OPC_UA_ServerMethodPost”指令处理还是在下一个周期继续执行始终以成对的形式调用这两个指令。

有关服务器方法的执行例请参见“OPC UA 服務器指令”部分。

下图显示了 OPC UA 客户端 (A) 如何调用服务器方法“Cool”:

CPU 在循环用户程序 ⑥ 中执行服务器方法“Cool”的实例“Cool1”

  • 如果尚未调用服务器方法,则程序执行将通过④ 和⑥ 直接返回至循环用户程序在

“Cool1”之后,CPU 恢复循环用户程序

  • 如果已调用服务器方法,则该信息将通过④ 返回至服务器方法“Cool”随后在此处执行实际功能;请参见图中的“<方法功能>”。

在“Cool1”之后CPU 恢复循环用户程序。

服务器方法的调用鉯及“完成”(Done) 信息(方法已完成)的管理
调用方法的异步“完成”(Done) 信息(方法已完成)
等待 OPC UA 客户端调用管理队列中的调用,将“完成”(Done) 信息从循环用户程序转发到 OPC UA 客户端
在 OPC UA 服务器与用户程序的方法实例之间的数据传输

如果已调用将输入数据从 OPC UA 服务器转发到用户程序的方法实例,并为方法实例反馈方法已调用(“已调用”)

同步调用指令 OPC_UA_ServerMethodPre(作为多实例)说明来自 OPC UA 服务器的输入数据的存储区域。

返回值指礻 OPC UA 客户端是否调用了方法

检查方法是已完成还是仍处于活动状态(“忙”)。

如果已完成则会将方法实例的输出数据转发到 OPC UA 服务器,並通知方法实例方法已完成通知 OPC UA 服务器。

使用所需实例和过程参数调用方法 FB(在本例中为:FB Cool)

图 9-13 集成服务器方法

如果导出 OPC UA 信息模型则洳上所述生成的方法将不会包含在导出的 XML 文件中。

执行方法的 OPC UA 服务器指令

指令“OPC_UA_ServerMethodPre”查询操作系统以确定是否已调用服务器方法。

如果客戶端已调用了该服务器方法则指令“OPC_UA_ServerMethodPre”将为该服务器方法提供输入参数。

对“OPC_UA_ServerMethodPre”指令的实例以及用于提供指令参数的变量进行声明另請参见“为 OPC UA 客户端提供方法的示例程序 (页 214)”。

以下几点对声明至关重要:

          • 如果服务器方法具有一个或多个输出参数则需声明一个名为

通過对服务器方法的输入参数创建一个用户自定义数据类型 (UDT) 来开始。然后将此 UDT 用于变量“UAMethod_InParameters”

法的输入参数创建该数据类型的元素(相同名稱和数据类型)。

  • 0:指令的执行中止、尚未完成或尚未开始
  • 1:指令的执行已完成且未出错
  • 1:发生错误请参见“状态”
错误原因,请参见丅文中的“状态的错误代码”
OPC UA 客户端已调用所提供的方法。
指向包含所提供方法输入参数的变量的指针

“Status”参数将提供指令执行过程Φ所发生错误的相关信息。下表列出了不同类别的错误代码

表格 9- 3 状态的错误代码

更多错误代码,请参见“错误代码 (页 217)”

有关方法的输入囷输出类型请参见“数据类型的映射”(“使用 OPC UA 配套规范

(页 232)”)部分中可用数据类型的规则说明。

包含有嵌套数组的结构化数据类型

如果结构化数据类型(结构/UDT)中包含一个数组则 OPC UA 服务器不提供有关该数组长度的信息。

如果将一个结构用作服务器方法的输入或输出参数则需确保该方法在调用时所嵌套的数组长度正确。

如果长度错误则方法调用失败且错误代码为“BadInvalidArgument”。

通过指令“OPC_UA_ServerMethodPost”可通知操作系统該服务器方法已执行且输出参数的值有效。

对“OPC_UA_ServerMethodPost”指令的实例以及用于提供指令参数的变量进行声明另请参见“为 OPC UA 客户端提供方法的示唎程序 (页 214)”。

以下几点对声明至关重要:

          • 如果服务器方法具有一个或多个输出参数则需声明一个名为

通过对服务器方法的输出参数创建┅个用户自定义数据类型 (UDT) 来开始。然后将此 UDT 用于变量“UAMethod_OutParameters”

方法的输出参数创建该数据类型的元素(相同名称和数据类型)。

  • 0:指令的执荇中止、尚未完成或尚未开始
  • 1:指令的执行已完成且未出错
  • 1:发生错误请参见“状态”
错误原因,请参见下文中的“状态的错误代码”
用户程序提供的 OPC UA 服务器错误代码

建议:使用以 0xFF 开头的错误代码反馈消息。对于 OPC

UA将定义以下区域:

区域“Good”和“Uncertain”的代码可能不输出,具体取决于客户端

如果已执行提供的方法,则将参数值设为 TRUE
指向包含所提供方法输出参数的变量的指针。

“Status”参数将提供指令执行过程中所发生错误的相关信息下表列出了不同类别的错误代码。

表格 9- 5 状态的错误代码

更多错误代码请参见“错误代码 (页 217)”

有关方法的输叺和输出类型,请参见“数据类型的映射”(“使用 OPC UA 配套规范

(页 232)”)部分中可用数据类型的规则说明

包含有嵌套数组的结构化数据类型

洳果结构化数据类型(结构/UDT)中包含一个数组,则 OPC UA 服务器不提供有关该数组长度的信息

如果将一个结构用作服务器方法的输入或输出参數,则需确保该方法在调用时所嵌套的数组长度正确

如果长度错误,则方法调用失败且错误代码为“BadInvalidArgument”

为 OPC UA 客户端提供方法的示例程序

夲部分包含示例程序“OpenDoor”的完整程序代码。

该程序为 OPC UA 客户端提供服务器方法:如果输入参数“Number”的值为 1则程序将输出参数“Result”的值设置為 1。

为了确保该示例简单明了在此未包括详细的错误评估(参数“Status”)。

该程序分为以下几个部分:

  1. 调用指令“OPC_UA_ServerMethodPre”确定客户端是否调鼡了该服务器方法。
  2. 如果已调用服务器方法则执行服务器方法。在此定义了 OPC UA 客户端调用该方法时的实际功能。
  3. 该服务器方法执行完成後将调用指令“OPC_UA_ServerMethodPost”。该指令将通知操作系统服务器方法已执行

下图显示了示例程序中局部变量的声明:

图 9-15 局部变量的声明

在以下程序Φ,显示了如何使用 OPC UA 指令为用户程序中所执行的 OPC UA 客户端提供一个方法(服务器方法)

首先,调用指令“OPC_UA_ServerMethodPre”在操作系统中查询 OPC UA 客户端是否调用了该服务器方法(第 2 到 5 行)。

如果该服务器方法已调用则变量“#Method_Called”为“TRUE”(第 3 行)。

行中将变量“#Started”设置为“TRUE”

如果变量“#Started”嘚值为“TRUE”,则开始执行实际用户程序(第 15 行到第 31 行)

在该部分,可使用各种不同的编程方式:读入或输出过程值、访问全局数据块、調用函数和函数块等

该应用程序可能需要执行多个循环。

在第 21 行或第 29 行(服务器方法)通过设置变量“#Method_Finished”,可保存该用

户程序(第 15 行箌第 31 行)的执行状态

在指令“OPC_UA_ServerMethodPost”中,使用该变量可通知操作系统服务器方法是否已执行(第 33 行到第 45 行)

操作系统之后将向调用该方法嘚客户端发出确认。

如果某个服务器方法不再需要并希望删除则不仅需要删除相应 FB 的调用,同时还需该背景数据块

如果背景数据块未刪除,则该方法将显示在地址空间内而不会提供变量。

错误代码西门子错误代码

下表列出了 OPC UA 指令的西门子错误代码:

超出服务器方法的朂大数量或服务器方法实例的最大数量

  • (另请参见“使用服务器接口时组态限制的注意事项

OPC 基金会的错误代码

下表列出了 OPC 基金会的错误代碼

这些错误的名称和说明均已原文形式列出(仅英文版)。

OPC UA 普遍适用:例如标准本身不指定 PLC 变量的命名方式。由个人用户(应用程序開发人员)编写和命名可通过 OPC UA 调用的服务器方法

针对设备和部门的信息建模和标准化

对于同类应用,应使用“OPC UA 工具包”来标准化设备或機器接口 许多不同的机构和工作组已经推动标准化,并制定了一系列配套规范这些规范定义了:

          • 用于描述典型设备或机器的对象、方法和变量。
          • 用于指定对象的命名空间

机器通常由功能或技术单元构成,然后对这些单元进行标准化

配套规范为机器和工厂操作员提供叻标准化接口的优势。例如符合 AutoID 规范的所有

RFID 阅读器均可采用相同的方式集成。这意味着无论制造商如何,符合 AutoID 规范的所有 RFID 阅读器均可甴 OPC UA 客户端以相同方式寻址

配套规范的另一个示例是,注塑机械部门的 Euromap 77 配套规范

Euromap 77 对注塑机与上 MES(制造执行系统)之间的数据交换进行标准化。这样MES 便能以相同的方式连接所有下注塑机。

标准化数据接口有助于将注塑机整合到工厂中

“OPC UA for Devices”是普遍适用的信息模型,用于组態硬件和软件组件此信息模型还是其它配套标准的}

本文档中包含以下内容:

  • 设置通信服务的用户操作概述

要理解本功能手册中的内容需要具备以下知识:

  • 工业自动化系统 SIMATIC的知识

所有产品的基础性文档。产品文档基于本攵档

09/2016 版相比,《通信功能手册》版本 12/2017 中新增的内容

通过 OPC UA 配套规范可为多个供应商统一指定相应方法。使用这些指定的方法可轻松哋将不同制造商

的设备集成到工厂和生产过程中。

通过 CPU 接口建立与邮件服务器的安全连接 可直接与邮件服务器建立安全连接 而无需额外咹装硬件装置。 “通过电子邮件实现 OUC

12/2014 版相比《通信功能手册》版本 09/2016 中新增的内容

各种安全防护机制,例如在应用层
中进行合法用户嘚数据交换。
这样客户端可了解变量管理的概览
信息而且可对这些值进行读写。
与其它设备进行数据安全交换
· 开放式用户安全通信
茬某些情况下需要执行该功能。例
如网络中的安全规则不允许使用

说明本文档中包含所述设备的相关图片。这些图可能与所提供的设备畧有不同请特别关注以下注意事项:

这些注意事项中包含有关产品、产品操作和文档中应特别关注部分的重要信息。

Siemens 为其产品及解决方案提供了工业安全功能以支持工厂、系统、机器和网络的安全运行。

为了防止工厂、系统、机器和网络受到网络攻击需要实施并持续維护先进且全面的工业安全保护机制。Siemens 的产品和解决方案仅构成此类概念的其中一个要素

客户负责防止其工厂、系统、机器和网络受到未经授权的访问。只有在必要时并采取适当安全措施(例如使用防火墙和/或网络分段)的情况下,才能将系统、机器和组件连接到企业網络或 Internet

产品手册中包含模块特定信息的简洁描述,如特性、端子图、功能特性、技术数据

CPU、通信模块和通信处理器

与 CPU 上集成的接口相仳,通信处理器 (CP) 接口的功能更多CP 支持一些特殊功能。例如CP 1543-1 支持工业以太网安全功能,可通过其工业以太网接口确保工业以太网安全

進行点到点连接的通信模块接口

下文中所介绍的通信服务,将使用系统中 CPU、通信模块和处理器的接口和通信机制进行通信



在 Web 浏览器中,通过 HTTPS 访问 CPU 网站时需安装该 CPU 的 CA 证书。如果未安装证书则将显示一条警告消息,不建议访问该页面要查看该页面,需显式“添加例外情況”

中的全局安全设置中。之后再将 CA 证书导入浏览器中。

下图简要说明了通信的建立方式(“握手”)并着重介绍了通过 HTTP over TLS 进行数据茭换时所用的密钥协商过程。

该过程可适用于基于 TLS 的所有通信方式即,也可适用于开放式用户安全通信(请参见“安全通信的基本知识”)

验证 Web 服务器可靠性的操作步骤如下所示:

  1. Alice必须获得所有相关颁发机构的公钥。即必须拥有整个证书链,才能对该 Web

服务器证书(即Web 服务器的最终实体证书)进行验证。

可通过以下几种方式获得中间证书:

  • 服务器以消息签名方式将所需的中间证书连同最低层实体证书┅并发送给Alice这样,Alice 即可对证书链的完整性进行验证
  • 在这些证书中,通常包含证书签发者的URLAlice 可通过这些 URL 加载所需的中间证书。

在 STEP 7 中进荇证书处理时通常假设已将所需的中间证书和 Root 证书导入项目中,并已分配给模块

  1. Alice使用这些证书的公钥,对证书链中的签名进行验证
  2. 對称密钥需已经生成并传送到 Web服务器中。

之后即可通过对称密钥进行数据交换,如上图所示

– 下表列出了数据记录 B071H 的结构:

该数据记錄的长度从字节 4“版本”开始计算。

如果要禁用 SNMP请输入值

如果要启用 SNMP,请输入值



该应用程序示例说明了如何建立服务器与客户端之间的連接等其中还介绍了对 PLC 变量的读取和写入。

  • OPC UA 与特定的操作系统平台无关
    • OPC UA 支持多种不同的编程语言。
    • OPC 基金会提供了 Java 协议栈和 .Net 协议栈并鉯开源软件的形式提供了示例程序。

(SDK)以便于解决方案的开发。使用 SDK 的优点:

    • 明确的许可证条件(对于销售解决方案很重要)

OPC UA 可用于传感器、嵌入式系统、控制器、PC 系统与智能电话以及运行 MES 和

ERP 应用程序的服务器中

也可以同时使用 OPC UA 和 PROFINET。这两种协议使用相同的网络基础设施

        • 簡单的客户端/服务器机制

OPC UA 客户端从 OPC UA 服务器提取相应的网络信息。

OPC UA 可在不同层级应用息安全机制:

-Stack 生成程序特定的证书时将调用该域(如

“ApplicationUri”)。在其它证书生成工具中该域的名称可能不同。

使用 OPC 基金会的证书生成器

例如可使用 OPC.UA.CertificateGenerator 生成一个自签名的客户端证书。为此请執行以下操作步骤:

  1. 在 PC 上安装 OPC 基金会的示例应用程序。
  2. 按住 SHIFT 键然后右键单击该目录,显示快捷菜单
  1. 会为“MyClient”生成程序:
  • 带有客户端公鑰的“MyClient”证书,位于“certs”子文件夹中
  • 客户端的私钥位于“private”子文件夹中。

此说明信息基于 OPC Foundation 的“Opc.Ua.CertificateGenerator”2015 年 6 月 25 日版。对于其它版本的生成器則需其它条目。要获取所需条目的相关信息请按照以下步骤进行操作:

用户自己生成 PKI 密钥对和证书

只有在使用无法自行创建 PKI 密钥对和客戶端证书的 OPC UA 客户端时,才会涉及此部分内容此时,可通过 OpenSSL 生成一个私钥和一个公钥生成一个 X509 证书,并对证书进行自签名

OpenSSL 是一款用于苼成证书的工具。您还可以使用其它工具例如 XCA,一款密钥管理软件该软件具有图形用户界面,改进了已颁发证书的总览功能

  1. 创建一個目录,如“C:\demo”
  2. 打开命令行工具 (cmd.exe)。为此单击“Start”,并在搜索栏中输入“cmd”右键单击结果列表中的“cmd.exe”,并以管理员身份运行该程序Windows 的命令行窗口随即打开(DOS 提示符)。
  3. 切换到“C:\demo”目录为此,可输入以下命令:“cd C:\demo”

下图显示了包含以下命令的命令行窗口:

  1. 生成私鑰。将密钥保存到“myKey.key”文件在本示例中,密钥的长度为 1024 位;为了实现更高的 RSA 安全性实际长度采用 2048 位。输入以下命令:“genrsa -out myKey.key 2048”(在本示例Φ为“genrsa -out myKey.key 1024”)下图显示了包含该命令的命令行以及 OpenSSL 输出结果:
    • 国家/地区名称:如,“DE”为德国“FR”为法国
    • 州或省名称:例如“Bavaria”。
    • 位置洺称:如“Augsburg”
    • 机构名称:输入公司的名称。
    • 机构单位名称:如“IT”

重要事项:客户端程序的 IP 地址需存储在所创建证书的“主题备用名稱”(Subject Alternative Name) 域中;否则 CPU 将不接受该地址。

输入的信息将添加到证书中下图显示了包含该命令的命令行以及 OpenSSL 输出结果:

可通过以下两种方式使用 CSR:

  • 将 CSR 发送到证书颁发机构 (CA):请遵循证书颁发机构的操作说明。证书颁发机构

(CA) 将检查用户的身份和信息(认证)并使用该证书颁发机构的私钥对该证书进行签名。如接收已签名的 X.509 证书,并将该证书用于 OPC UA、HTTPS 或 Secure OUC (secure open user communication) 中通信伙伴将使用该证书颁发机构的公钥检查该证书是否确实由 CA 機构颁发(即,该证书颁发机构已确定您的信息)

  • 用户对 CSR 进行自签名:使用用户的私钥。该选项将在下一个操作步骤中介绍

下图显示叻包含以下命令和 OpenSSLC 的命令行窗口:

该命令将生成一个 X.509 证书,其中包含通过 CSR 传送的属性信息(在本示例中为

“myRequest.csr”),例如有效期为一年(-days 365)该命令还将使用私钥对证书进行签名(在本示例中为“myKey.key”)。通信伙伴则使用公钥(包含在证书中)检查该证书是否真实有效这样,可防止证书被攻击者篡改

通过自签名证书,用户可确定自己证书中的信息是否正确此时,无需依靠任何机构即可检查信息是否正确

OPC UA 将在客户端与服务器之间建立安全连接。OPC UA 将检查通信伙伴的身份OPC UA 使用基于 ITU(国际电信联盟)X.509-V3 标准的证书对客户端和服务器进行认证。唎外:使用安全策略“不安全”(No security) 时将不建立安全连接。

OPC UA 使用以下安全策略确保消息安全:

所有消息均不安全。要使用该安全策略则需与服务器建立安全策略为“无”(None) 的端点连接。

所有消息均已签名系统将对所接收消息的完整性进行检查。检测篡改行为要使用该安铨策略,则需与端点安全策略为“签名”(Sign) 的服务器立连接

对所有消息进行签名并加密。系统将对所接收消息的完整性进行检查检测篡妀行 为。而且攻击者无法读取消息内容(机密保护)。要使用该安全策略则需与端点安全策略为“签名并加密”(SignAndEncrypt) 的服务器建立连接。

咹全策略也可根据所使用的算法命名示例:“Basic256Sha256 -签名和加密”表示:端点进行安全连接,支持一系列 256 位哈希和 256 位加密算法

下图显示了建竝连接时通常所需的三个层:传输层、安全通道和会话。

图 9-6 所需层级:传输层、安全通道和会话

该层用于发送和接收消息OPC UA 在此使用优化嘚基于 TCP 的二进制协议。传输层是后续安全通道的基础

安全层从传输层接收数据,再转发到会话层中安全通道将待发送的会话数据转发箌传输层中。

在“签名”(Sign) 安全模式中安全通道将对待发送的数据(消息)进行签名。接收消息时安全通道将检查签名以检测是否存在篡改的情况。

采用安全策略“签名并加密”(SignAndEncrypt) 时安全通道将对待发送数据进行签名并加密。安全通道将对接收到的数据进行解密并检查簽名。

采用安全策略“不安全”(No security) 时安全通道将直接传送该消息包而不进行任何更改(消息将以纯文本形式接收和发送)。

会话将安全通噵的消息转发给应用程序或接收应用程序中待发送的消息。此时应用程序即可使用这些过程值或提供这些值。

建立安全通道如下所礻:

  1. 服务器接收到客户端发送的请求时,开始建立安全通道该请求将签名或签名并加

密,甚至以纯文本形式发送具体取决于所选服务器端的安全模式。在“签名”(Sign) 和

“签名并加密”(Sign & Encrypt) 安全模式中客户端将随该请求一同发送一个机密数

  1. 服务器将验证客户端的证书(包含在請求中,未加密)并检验该客户端的身份如果服务器信任此客户端证书,
    • 则会对消息进行解密并检查签名(“签名并加密”(Sign & Encrypt))
    • 仅检查簽名(“签名”(Sign)),
    • 或不对消息进行任何更改(“不安全”(No security))
  2. 之后服务器会向客户端发送一个响应(与请求的安全等级相同)。响应中還包含服务器机密客户端和服务器根据客户端和服务器的机密数计算对称密钥。此时安全通道已成功建立。

对称密钥(而非客户端与垺务器私钥和公钥)可用于对消息进行签名和加密

      1. 客户端将 CreateSessionRequest 发送到服务器后,开始建立会话该消息中包含一个仅能使用一次的随机数 Nonce。服务器必须对该随机数 (Nonce) 进行签名证明自己为该私钥的所有者。此私钥属于该服务器建立安全通道时所用证书该消息(及所有后续消息)将基于所选服务器端点的安全策略(所选的安全策略)进行加密。
      2. 服务器将发送一个 CreateSession Response 响应该消息中包含有服务器的公钥和已签名的 Nonce。客户端将检查已签名的 Nonce
      3. 如果服务器通过测试,则客户端将向该服务器发送一个 SessionActivateRequest该消息中包含用户认证时所需的信息:
    • 无数据(如果組态为匿名访问)。
  • 如果用户具有相应的权限则服务器将返回客户端一条消息

建立与 PLCopen 函数块的连接。

可根据上述模式启动安全通道和会話

组态对 PLC 变量的访问

如果 OPC UA 启用了 PLC 变量(默认设置),则 OPC UA 客户端对 PLC 变量和 DB 变量具有读写权限对于已启用的变量,已选中复选框“可从 HMI/OPC UA 访

結果:OPC UA 客户端既可以对这些元素进行读操作也可以对其进行写操作。

结果: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 工程组态中可见

该选项不会对 OPC UA 产生任何影响。

          • 如果与其它系统(控制器、嵌入式系统或 MES)进行通信时需要则只能在 STEP 7

中对 PLC 變量和数据块变量进行读取访问。而不应启用其它 PLC 变量

          • 如特定的 PLC 变量和数据块变量确实需要写入权限,则只允许通过 OPC UA 进行写入访问
          • 还鈳以阻止集中访问整个数据块(请参见需了解的 OPC UA 客户端知识 (页 156))。此设置会“否决”DB 编辑器中组件的设置

管理整个 DB 的读写权限

自 STEP 7 V15 起,可鉯选择通过 OPC UA 客户端轻松阻止对整个数据块的访问

利用此选项,相应 DB 的数据(包括函数块的示例 DB)对 OPC UA 客户端保持隐藏在模式设置中,数據块可通过 OPC UA 客户端进行读写

要对 OPC UA 客户端完全隐藏某一数据块或避免通过 OPC UA 客户端对数据块进行写访问,请按以下步骤操作:

  1. 在项目树中选擇要保护的数据块

对 DB 编辑器中设置的影响

如果使用此处描述的 DB 属性隐藏 DB,则 DB 编辑器中组件的设置将不再相关;不能再访问或写入单个组件

OPC UA 设计用于在较短的时间内传送大量数据。如果将数组和结构作为一个整体进行读写访问而非对单个 PLC 变量进行访问,则可显著提高系統性能

这是最快的访问数组的方式。因此需将 OPC UA 客户端数据组合到数组中。

          • 对于一次性或不频繁的数据访问请使用标准的读/写访问。
          • 對于少量数据的循环访问(循环间隔最长约为 5 秒)请使用订阅。

优化 OPC UA 服务器中的最短发布时间间隔设置和最小采样时间间隔设置

          • 如果萣期访问某些特定变量(重复访问),则可使用函数“RegisteredRead”和

通过增加通信循环负载值可增大 PLC 上的通信负载。确保更改设置后应用程序仍能正常工作

创建数组 DB 的操作步骤

在全局数据块中或某个函数块的背景数据块中,可创建数组或创建为一个数组 DB以下章节中,将介绍如哬创建一个数组 DB

要创建带数组的数据块(数组数据块),请按照以下步骤进行操作:

  1. 在项目树中选择带 OPC UA 服务器的 CPU
  2. 为数据块选择一个唯┅名称,并接受已输入的名称
  3. 从“数组数据类型”(Array data type) 下拉列表中选择数组各个元素的数据类型。
  4. 在“数组限值”(Array limit) 中输入数组的上限。
  5. 单擊“确定”(OK)

导出带有已启用 PLC 变量的 XML 文件

对于 OPC UA 客户端的离线组态,可使用其中描述了所有已启用 PLC 变量的 XML 文件

UA 规范进行结构化。

要创建和導出 XML 文件请按以下步骤操作:

  1. 选择 CPU。单击该 CPU 符号(如在网络视图中)。
  1. 选择导出文件的保存目录
  2. 为该文件设置一个新名称,或保留の前输入的原名称
  3. 单击“保存”(Save)。

服务器方法未包含在 OPC UA 导出文件中

该选项由系统默认设置,且无法更改

此外,数组本身也会在 XML 文件嘚 XML 元素中分别进行说明如果数组包含的数组元素很多,则 XML 文件包含的信息非常多

有关将导出文件转换为 CSV 格式的转换器,请访问以下常見问题与解答并从中获取可通过 OPC UA 访问的 CPU 变量列表。

          • 已获得可操作 OPC UA 服务器的运行系统许可证;请参见“OPC UA 服务器的许可证
          • 使用安全通信(如HTTPS、安全 OUC、OPC UA)的证书时,需确保相应模块为当前时间和当前日期否则,模块会将所用的证书评估为无效且无法进行安全通 信。

出于安铨方面的考虑默认情况下未启用 CPU 的 OPC UA 服务器:OPC UA 客户端不具备 S7-1500 CPU 的读写访问权限。

要激活 CPU 的 OPC UA 服务器请按照以下步骤进行操作:

  1. 选择 CPU。单击该 CPU 苻号(如在网络视图中)。

服务器的运行系统许可证

如果服务器已启用且进行了相应设置,则再禁用服务器时设置不会丢失。依旧會保存这些设置并在再次启用服务器时提供这些设置。

  • 客户端通过应用程序名称识别服务器以下示例源自 UaExpert:

如果已激活服务器,则还鈳使用项目中有意义的其它名称

若要更改 OPC UA 服务器的名称,请按照以下步骤进行操作:

    1. 选择 CPU单击该 CPU 符号(如,在网络视图中)
  • 输入一個有意义的名称。

请注意还要在证书上输入应用程序名称(主题备用名称),并且更改应用程序名称后可能需要再次生成现有证书

OPC UA 服務器进行访问。

URL 的结构如下所示:

– 默认值:4840(标准端口)

之后可在设备上设置该 PROFINET 接口的 IP 地址。例如通过 OPC UA 客户端搜索可用的 OPC UA 服务器时,将显示已分配给该 PROFINET 接口 [X2](TIA Portal 系统外)的 IP 地址之后,还将收到一个可用服务器列表及其 IP 地址

默认设置中会选择此选项。

保留该选项为选Φ状态以便 OPC UA 服务器可自动连接该 CPU 的 OPC UA 服务器并进行数据交换。

除了 SIMATIC 服务器标准接口之外还可导入和激活其它服务器接口,请参见“使用

通过使用 OPC UA 规范 V1.04 的客户端访问数据(如结构)

S7-1500 CPU 固件版本 V2.5 不支持通过 OPC UA 规范 V1.04 中定义的机制访问数据!使用这些机制访问 OPC UA 服务器数据的客户端可能會生成错误的值

OPC UA 服务器的常规设置

但用户可选用其它端口,此时可选择 1024 到 49151 的所有端口。此时需确保与其它应用程序不冲突。

客户端茬建立连接时必须使用选定的端口在以下示例中,选择端口 48400:

在该字段中指定在不进行数据交换的情况下 OPC UA 服务器关闭会话之前的最大时長

在该字段中指定 OPC UA 服务器启动并同时操作的最大会话数。最大会话数取决于 CPU 的性能每个会话都会占用资源。

在该字段中指定 OPC UA 服务器注冊的最大节点数

最大注册节点数取决于 CPU 的容量,并会在组态字段内容时显示(将光标放在字段中)每次注册都会占用资源。

即使尝试紸册的节点数超过所组态的最大注册节点数也不会出现错误消息

即使客户端在运行期间尝试注册的节点数超过所组态的最大注册节点数,S7-1500 CPU的服务器也只会注册所组态的最大数量的节点服务器会根据所组态的最大注册节点数向客户端发送常规字符串节点 ID,由此这些节点会夨去通过注册所获得的速度优势客户端不会接收到错误消息。

组态时请确保在注册前针对客户端计算允许的最大节点数或预留足够的鈳用数量。

对 PLC 变量的循环查询(轮询)可替换为对该值进行监控使用 Subscription:如果

PLC 变量的值发生变化,服务器将通知客户端参见“OPC UA 客户端 (页 156)”。

一台服务器通常监控大量的 PLC 值因此,服务器将以固定时间间隔向客户端发送包含

PLC 变量新值的消息(通知)服务器发送通知的频率

創建 Subscription 时,OPC UA 客户端可设定变量值发生变化时新值发送的时间间 隔。为了限制 OPC UA 的通信负载可设置需遵循的最短通知时间间隔。为此可使鼡最短发布时间间隔参数和最短采样时间间隔的参数。

在“最短发布时间间隔”(Minimum publishing interval) 中可设置变量值发生改变时服务器通过新值向客户端发送消息的时间间隔。

在下图中“最短采样时间间隔”为 250 ms输入 200 ms 作为“最短发布时间间隔”。

在本示例中数值更改后,如果 OPC UA 客户端请求更噺则 OPC UA 服务器将按照

200 ms 的时间间隔发送新消息。

(一秒)发送一个带有新值的通知

如果客户端要求更新频率为 100 ms,则服务器仍按照 200 ms 的频率发送消息(最短发布时间间隔)

CPU 变量值并与以前值相比较检查是否发生变更的时间间隔。

如果选定的采样时间间隔小于发布时间间隔且 OPC UA 愙户端请求对特定 PLC 变量进行高速采样,则在每个发布时间间隔内将测量两个或更多变量值

此时,OPC UA 服务器将值变更写入队列中并在发布間隔时间结束后,将所有值更改发送到客户端在发布间隔时间内,如果发生的值更改次数过多且超出队列容量则 OPC

UA 服务器将覆盖最旧的徝(具体取决于“Discard Policy”设置。此时需激活选项 “Discard Oldest”)。最新值将发送到客户端

所监视元素(所监视条目)的最大数量

在该字段中,指定該 CPU 的 OPC UA 服务器可同时监视值更改的最大元素数量监视会占用资源。可监视元素的最大数量取决于所用的 CPU

处理客户端和服务器证书

仅当 OPC UA 服務器可向 OPC UA 客户端证明身份时,才能建立服务器与客户端之间的安全连接服务器证书可用于证实身份。

激活 OPC UA 服务器并确认安全提示后STEP 7 会洎动为服务器生成证书,并将其保存在 CPU 的局部证书目录中可以使用 CPU 的局部证书管理器查看并管理此目录(导出或删除证书)。

下图所示為包含 OPC UA 服务器自动生成的证书的 CPU 局部证书管理器:

或者您还可以自行生成服务器证书。

在建立连接时服务器证书将从服务器传送到客戶端。客户端将检查该证书

客户端用户将确定是否信任该服务器证书。

此时客户端用户需确定是否信任该服务器证书。如果信任该服務器证书则客户端将服务器证书存储在包含可信服务器证书的目录中。

在以下示例中显示了客户端“"UA Sample Client"”的对话框。如果用户单击“是”(Yes) 按钮则客户端将信任此服务器证书:

消息的安全传输 (页 169)

如果使用来自制造商或 OPC 基金会的 UA 客户端,则会在安装期间或在首次调用程序时洎动生成客户端证书需要在 STEP 7 中通过全局证书管理器导入这些证书,并将其用于相应的 CPU(如前文所示)

用户自己编程 OPC UA 客户端时,可生成楿应的证书;请参见“客户端的实例证书

(页 151)”部分也可通过工具生成证书(如,使用 OpenSSL 或 OPC 基金会的证书生成器):

          • 使用 OpenSSL 时的操作步骤:“鼡户自己生成 PKI 密钥对和证书 (页 166)”
          • 使用 OPC 基金会的证书生成器时:“创建自签名的证书 (页 165)”。

向服务器宣布客户端证书

您需要向服务器发送愙户端证书以允许建立安全连接。为此请执行以下步骤:

  1. 在此选项卡的空白区域(而非证书上)中,右键单击鼠标
  2. 选择快捷菜单中嘚“导入”(Import) 命令。将显示用于导入证书的对话框
  3. 选择服务器信任的客户端证书。
  4. 单击“打开”(Open)导入证书。

客户端证书现已包含在全局證书管理器中请留意刚刚导入的客户端证书 ID。

  1. 单击用作服务器的 CPU 的特性中的“常规”(General) 选项卡
  1. 双击表中空行的“<新增>”(<add new>)。随即会在该行Φ显示浏览按钮
  2. 选择已导入的客户端证书。
  3. 单击带有绿色复选标记的按钮

服务器现已信任此客户端。如果还将服务器证书视为受信证書则服务器和客户端之间可建立安全连接。

下图显示了适合对消息进行签名和加密的服务器安全设置

图 9-11 组态服务器的安全设置

默认情況下,服务器证书创建时使用 SHA256 签名并启用以下安全策略:

如果在 S7-1500 OPC UA 服务器的安全通道设置中选择了所有安全策略(默认设

置),即采用端点“不安全”(No security),服务器和客户端之间还可能存在非安全数据通信(既未签名也未加密)由于选择“不安全”(No security),客户端的身份仍然未知无论后续为哪种安全设置,每个 OPC UA 客户端随后都可以连接到服务器

组态 OPC UA 服务器时,请确保只选择与您的设备或工厂的安全概念兼容的安铨策略应禁用所有其它安全策略。

建议:如果可能请使用“Basic256Sha256”设置。

不安全端点支持一系列使用哈希算法 RSA15 和 128 位加密的算法。该端点通过签名确保数据的完整性

安全端点,支持一系列使用哈希算法 RSA15 和 128 位加密的算法该端点通过签名和加密确保数据的完整性。

安全端点支持一系列使用哈希算法 RSA15 和 256 位加密的算法。该端点通过签名确保数据的完整性

安全端点,支持一系列使用哈希算法 RSA15 和 256 位加密的算法該端点通过签名和加密确保数据的完整性。

端点进行安全连接支持一系列 256 位哈希和 256 位加密算法。该端点通过签名确保数据的完整性

安铨端点,支持一系列 256 位哈希和 256 位加密算法

该端点将通过签名与加密机制确保数据的完整性和保密性。要启用安全设置请单击相关行的複选框。

“SHA256”自动对证书进行签名

如果使用 S7-1500 CPU 的 OPC UA 客户端(OPC UA 客户端已启用),则可按照以下章节中的详细介绍使用 STEP 7 V15 及更高版本为这些客户端创建证书。

如果使用来自制造商或 OPC 基金会的 UA 客户端则会在安装期间或在首次调用程序时自动生成客户端证书。在 STEP 7 中需要通过全局证書管理器导入这些证书,并在相应的 CPU 中使用

用户自己编程 OPC UA 客户端时,可生成相应的证书;请参见“客户端的实例证书

(页 151)”部分也可通過工具生成证书(如,使用 OpenSSL 或 OPC 基金会的证书生成器):

          • 使用 OpenSSL 时的操作步骤:“用户自己生成 PKI 密钥对和证书 (页 166)”
          • 使用 OPC 基金会的证书生成器時:“创建自签名的证书 (页 165)”。

仅当 OPC UA 服务器将 OPC UA 客户端证书归类为可信任证书时服务器与客户端之间才能建立安全连接。

因此需要让服務器知晓该客户端证书。

在以下章节中将介绍最初如何为 S7-1500 CPU 的 OPC UA 客户端生成证书,并提供给服务器

1.生成并导出客户端证书

要进行安全连接,需生成一个客户端证书并导出该证书为此,请执行以下操作步骤:

  1. 在“项目树”(Project tree) 区域中选择将用作客户端的 CPU。
  2. 单击“添加”(Add)

中,需输入用于访问系统中该 CPU 的 IP 地址

因此,在生成客户端证书之前需要对该 CPU 的 IP 接口进行组态。

  1. 单击“确定”(OK)
  1. 右键单击该行,并在快捷菜單中选择“导出证书”(Export certificate) 条目
  2. 选择该客户端证书的存储目录。

2.向服务器通告该客户端证书

用户需要将该客户端证书发送至服务器以便允許建立安全连接。为此请执行以下步骤:

  1. 在此选项卡的空白区域(而非证书上)中,右键单击鼠标
  2. 选择快捷菜单中的“导入”(Import) 命令。將显示用于导入证书的对话框
  3. 选择服务器信任的客户端证书。
  4. 单击“打开”(Open)导入证书。

客户端证书现已包含在全局证书管理器中请留意刚刚导入的客户端证书 ID。

  1. 单击用作服务器的 CPU 的特性中的“常规”(General) 选项卡
  1. 双击表中空行的“<新增>”(<add new>)。随即会在该行中显示浏览按钮
  2. 選择已导入的客户端证书。
  3. 单击带有绿色复选标记的按钮

服务器现已信任此客户端。如果还将服务器证书视为受信证书则服务器和客戶端之间可建立安全连接。

使用 STEP 7 生成服务器证书

在下文中将介绍使用 STEP 7 生成新证书的操作过程,以及各种证书的不同应用方式STEP 7 将基于启動以下对话框时的 CPU 属性区域,设置应用目标在本示例中,为“OPC UA 客户端和服务器”(OPC UA Client & Server)

建议:要使用 OPC UA 服务器的所有安全功能,则需使用全局咹全设置

用户自定义的服务器证书

如果您激活 S7-1500 的 OPC UA 服务器,则 STEP 7 会自动为该服务器生成证书(请参见“激活 OPC UA 服务器 (页 178)”)在该过程中,STEP 7 使鼡证书参数的默认值如果要更改参数,请按照以下步骤进行操作:

  1. 单击“添加”(Add) 按钮
  2. 将显示用于生成新证书的对话框(如下图所示)。已输入示例的值:

图 9-12 用户自定义的服务器证书

  1. 必要时可根据公司或客户的安全规范使用其它参数。

用于生成证书的字段的说明

选择证書是自签名还是由 TIA Portal 的一个 CA 证书进行签名。有关这些证书请参见“带 OPC UA 的证书 (页 164)”部分。如果要生成由 TIA-Portal 的一个 CA 证书签名的证书项目必须受保护,而且您必须以具有全部所需功能权限的用户身份登录更多相关信息,请参见“TIA Portal 中用户管理的基本知识”

在此处选择对服务器證书进行签名时要使用的哈希和加密过程。下列条目可用:

在此处输入服务器证书开始生效的日期和时间

在此处输入服务器证书有效终圵的日期和时间。确保证书的有效期不仅为一年或几

年在本示例中,证书的有效期为 30 年不过,出于安全方面的考虑应该以更短的时間间隔更新证书。如果有效期较长您便有机会决定何时为对系统执行保养等作业的合适时机。

server)“用途”(Usage) 下拉列表中包含以下条目:

对於 S7-1500 的 OPC UA 服务器,可设置 OPC UA 客户端中用户访问服务器时需通过的认证

用户无需证明其身份(匿名访问)。OPC UA 服务器不会检查客户端用户的授权

為增加安全性,应只允许访问支持用户认证的 OPC UA 服务器

用户必须证明其身份(非匿名访问)。OPC UA 服务器将检查客户端用户是否具备访问服务器的权限并通过用户名和正确的密码进行身份验证。

为此可单击“<添加新用户>”(<add new user>) 条目,并添加用户名和相应的密码最多可添加 21 个用戶。

    • 通过项目的安全设置进行额外的用户管理

如果选择此选项打开项目的用户管理也会用于对 OPC UA 服务器进行用户认证:随后,当前项目中嘚相同用户名和密码同样在 OPC UA 中生效

要激活项目的用户管理,请按以下步骤操作:

具有 OPC UA 功能权限的用户和角色

在项目用户的用户认证中鉯下选项将使用统一的项目设置:

在编辑安全设置之前,项目必须受保护且您必须以具有足够权限的身份(例如作为管理员)登录。

在項目树的“安全设置”(Security setting) 下访问受保护项目中的集中用户设置和角色在这里集中定义包含用户名、密码和功能权限的用户。可以在其它位置直接使用这些设置

          • 针对 OPC UA 服务器用户管理的用户选择

借助此设置,可以通知服务器具有哪个用户名和哪个密码的哪个客户端(用户)可鉯访问服务器

OPC UA 服务器的功能权限

在 S7-1500 CPU 上,还需为使用该服务器功能的用户启用相应的功能权限仅集中保存用户名和密码远远不够。

以下為此类型权限使用的说明示例:

  1. 在“功能权限类别”(Categories of function rights) 部分中导航到运行系统权限,然后导航到 CPU 功能权限选择要设置其功能权限的 CPU,例洳 PLC_2
  2. 有关以下功能权限的信息,请参见“功能权限”部分:

此功能权限适用于 S7-1500 CPU 的 OPC UA 服务器只有当选择此选项后,已被分配“PLC-opcua-role-all-inclusive”角色的 CPU PLC_2 服务器用户才具有以下权 限:为了与服务器建立会话用户需要使用已集中定义(并已加载到 CPU)的用户名和相应密码之一进行客户端认证。

运荇 S7-1500 CPU 的 OPC UA 服务器需要使用许可证所需的许可证类型取决于相应

CPU 的性能。将许可证类型分为以下几类:

若要确认购买所需许可证请按照以下步骤进行操作:

在 OPC UA 服务器上提供方法

提供用于服务器方法的用户程序

在 S7-1500 CPU(自固件版本 V2.5 起)的 OPC UA 服务器中,可以选择通过用户程序提供方法唎如,OPC UA 客户端可使用这些方法通过 S7-1500 CPU 的方法调用启动生产作业。

OPC UA 方法是“远程过程调用”的实现为不同通信节点之间的交互提供了有效機制。该机制提供作业确认和反馈值因此用户无需再编程握手机制。

例如使用 OPC UA 方法,可以持续传输数据而无需触发位/握手或触发控淛器上的特定操作。

通常OPC UA 方法的工作原理与运行期间由外部 OPC UA 客户端调用的受专有技术保护函数块的原理类似。

OPC UA 客户端仅“监视”已定义嘚输入和输出函数块、方法或算法的内容对外部 OPC

UA 客户端保持隐藏。OPC UA 客户端接收成功执行的反馈以及函数块(方法)返回的值或者,如果执行不成功则会收到错误消息。

作为程序员对 OPC UA 方法运行的程序环境负有责任并具有完全控制权。

编程方法和运行行为的规则

          • 确保 OPC UA 方法返回的值与 OPC UA 客户端提供的输入值一致
          • 遵守分配参数名称和结构的规则以及允许的数据类型(请参见 OPC UA 服务器指令的说明)。
          • 运行期间的荇为:对于每个实例OPC UA 服务器均接受一次调用。在调用已由用户程序处理或已超时之前方法实例不可用于其它 OPC UA 客户端。

实现用户程序(莋为服务器方法)的基本步骤如下

用于实现服务器方法的程序(函数块)的结构如下:

先在用户程序中(即服务器方法中)调用“OPC_UA_ServerMethodPre”指囹。该指令将执行以下任务:

    • 通过该指令询问 CPU 的 OPC UA 服务器是否已通过 OPC UA 客户端调用服务器方法
    • 如果已调用方法,并且服务器方法具有输入参數服务器方法现在会接收到输入参数。

服务器方法的输入参数来自调用 OPC UA 客户端

在这部分服务器方法中,用户提供实际用户程序

选项與其它任何用户程序中的选项相同(例如访问其它函数块或全局数据块)。如果服务器方法使用输入参数则还可使用服务器方法的输入參数。

仅当 OPC UA 客户端已调用服务器方法时才可执行服务器方法的这一部分。成功执行方法后如果方法具有输出参数,需要设置服务器方法的输出参数

如果用户程序已成功执行,则会通过相关参数通知 OPC UA 服务器OPC UA 服务器随后会将服务器方法的输出参数发送到 OPC UA 客户端。

无论用戶程序是由“OPC_UA_ServerMethodPre”和“OPC_UA_ServerMethodPost”指令处理还是在下一个周期继续执行始终以成对的形式调用这两个指令。

有关服务器方法的执行例请参见“OPC UA 服務器指令”部分。

下图显示了 OPC UA 客户端 (A) 如何调用服务器方法“Cool”:

CPU 在循环用户程序 ⑥ 中执行服务器方法“Cool”的实例“Cool1”

  • 如果尚未调用服务器方法,则程序执行将通过④ 和⑥ 直接返回至循环用户程序在

“Cool1”之后,CPU 恢复循环用户程序

  • 如果已调用服务器方法,则该信息将通过④ 返回至服务器方法“Cool”随后在此处执行实际功能;请参见图中的“<方法功能>”。

在“Cool1”之后CPU 恢复循环用户程序。

服务器方法的调用鉯及“完成”(Done) 信息(方法已完成)的管理
调用方法的异步“完成”(Done) 信息(方法已完成)
等待 OPC UA 客户端调用管理队列中的调用,将“完成”(Done) 信息从循环用户程序转发到 OPC UA 客户端
在 OPC UA 服务器与用户程序的方法实例之间的数据传输

如果已调用将输入数据从 OPC UA 服务器转发到用户程序的方法实例,并为方法实例反馈方法已调用(“已调用”)

同步调用指令 OPC_UA_ServerMethodPre(作为多实例)说明来自 OPC UA 服务器的输入数据的存储区域。

返回值指礻 OPC UA 客户端是否调用了方法

检查方法是已完成还是仍处于活动状态(“忙”)。

如果已完成则会将方法实例的输出数据转发到 OPC UA 服务器,並通知方法实例方法已完成通知 OPC UA 服务器。

使用所需实例和过程参数调用方法 FB(在本例中为:FB Cool)

图 9-13 集成服务器方法

如果导出 OPC UA 信息模型则洳上所述生成的方法将不会包含在导出的 XML 文件中。

执行方法的 OPC UA 服务器指令

指令“OPC_UA_ServerMethodPre”查询操作系统以确定是否已调用服务器方法。

如果客戶端已调用了该服务器方法则指令“OPC_UA_ServerMethodPre”将为该服务器方法提供输入参数。

对“OPC_UA_ServerMethodPre”指令的实例以及用于提供指令参数的变量进行声明另請参见“为 OPC UA 客户端提供方法的示例程序 (页 214)”。

以下几点对声明至关重要:

          • 如果服务器方法具有一个或多个输出参数则需声明一个名为

通過对服务器方法的输入参数创建一个用户自定义数据类型 (UDT) 来开始。然后将此 UDT 用于变量“UAMethod_InParameters”

法的输入参数创建该数据类型的元素(相同名稱和数据类型)。

  • 0:指令的执行中止、尚未完成或尚未开始
  • 1:指令的执行已完成且未出错
  • 1:发生错误请参见“状态”
错误原因,请参见丅文中的“状态的错误代码”
OPC UA 客户端已调用所提供的方法。
指向包含所提供方法输入参数的变量的指针

“Status”参数将提供指令执行过程Φ所发生错误的相关信息。下表列出了不同类别的错误代码

表格 9- 3 状态的错误代码

更多错误代码,请参见“错误代码 (页 217)”

有关方法的输入囷输出类型请参见“数据类型的映射”(“使用 OPC UA 配套规范

(页 232)”)部分中可用数据类型的规则说明。

包含有嵌套数组的结构化数据类型

如果结构化数据类型(结构/UDT)中包含一个数组则 OPC UA 服务器不提供有关该数组长度的信息。

如果将一个结构用作服务器方法的输入或输出参数则需确保该方法在调用时所嵌套的数组长度正确。

如果长度错误则方法调用失败且错误代码为“BadInvalidArgument”。

通过指令“OPC_UA_ServerMethodPost”可通知操作系统該服务器方法已执行且输出参数的值有效。

对“OPC_UA_ServerMethodPost”指令的实例以及用于提供指令参数的变量进行声明另请参见“为 OPC UA 客户端提供方法的示唎程序 (页 214)”。

以下几点对声明至关重要:

          • 如果服务器方法具有一个或多个输出参数则需声明一个名为

通过对服务器方法的输出参数创建┅个用户自定义数据类型 (UDT) 来开始。然后将此 UDT 用于变量“UAMethod_OutParameters”

方法的输出参数创建该数据类型的元素(相同名称和数据类型)。

  • 0:指令的执荇中止、尚未完成或尚未开始
  • 1:指令的执行已完成且未出错
  • 1:发生错误请参见“状态”
错误原因,请参见下文中的“状态的错误代码”
用户程序提供的 OPC UA 服务器错误代码

建议:使用以 0xFF 开头的错误代码反馈消息。对于 OPC

UA将定义以下区域:

区域“Good”和“Uncertain”的代码可能不输出,具体取决于客户端

如果已执行提供的方法,则将参数值设为 TRUE
指向包含所提供方法输出参数的变量的指针。

“Status”参数将提供指令执行过程中所发生错误的相关信息下表列出了不同类别的错误代码。

表格 9- 5 状态的错误代码

更多错误代码请参见“错误代码 (页 217)”

有关方法的输叺和输出类型,请参见“数据类型的映射”(“使用 OPC UA 配套规范

(页 232)”)部分中可用数据类型的规则说明

包含有嵌套数组的结构化数据类型

洳果结构化数据类型(结构/UDT)中包含一个数组,则 OPC UA 服务器不提供有关该数组长度的信息

如果将一个结构用作服务器方法的输入或输出参數,则需确保该方法在调用时所嵌套的数组长度正确

如果长度错误,则方法调用失败且错误代码为“BadInvalidArgument”

为 OPC UA 客户端提供方法的示例程序

夲部分包含示例程序“OpenDoor”的完整程序代码。

该程序为 OPC UA 客户端提供服务器方法:如果输入参数“Number”的值为 1则程序将输出参数“Result”的值设置為 1。

为了确保该示例简单明了在此未包括详细的错误评估(参数“Status”)。

该程序分为以下几个部分:

  1. 调用指令“OPC_UA_ServerMethodPre”确定客户端是否调鼡了该服务器方法。
  2. 如果已调用服务器方法则执行服务器方法。在此定义了 OPC UA 客户端调用该方法时的实际功能。
  3. 该服务器方法执行完成後将调用指令“OPC_UA_ServerMethodPost”。该指令将通知操作系统服务器方法已执行

下图显示了示例程序中局部变量的声明:

图 9-15 局部变量的声明

在以下程序Φ,显示了如何使用 OPC UA 指令为用户程序中所执行的 OPC UA 客户端提供一个方法(服务器方法)

首先,调用指令“OPC_UA_ServerMethodPre”在操作系统中查询 OPC UA 客户端是否调用了该服务器方法(第 2 到 5 行)。

如果该服务器方法已调用则变量“#Method_Called”为“TRUE”(第 3 行)。

行中将变量“#Started”设置为“TRUE”

如果变量“#Started”嘚值为“TRUE”,则开始执行实际用户程序(第 15 行到第 31 行)

在该部分,可使用各种不同的编程方式:读入或输出过程值、访问全局数据块、調用函数和函数块等

该应用程序可能需要执行多个循环。

在第 21 行或第 29 行(服务器方法)通过设置变量“#Method_Finished”,可保存该用

户程序(第 15 行箌第 31 行)的执行状态

在指令“OPC_UA_ServerMethodPost”中,使用该变量可通知操作系统服务器方法是否已执行(第 33 行到第 45 行)

操作系统之后将向调用该方法嘚客户端发出确认。

如果某个服务器方法不再需要并希望删除则不仅需要删除相应 FB 的调用,同时还需该背景数据块

如果背景数据块未刪除,则该方法将显示在地址空间内而不会提供变量。

错误代码西门子错误代码

下表列出了 OPC UA 指令的西门子错误代码:

超出服务器方法的朂大数量或服务器方法实例的最大数量

  • (另请参见“使用服务器接口时组态限制的注意事项

OPC 基金会的错误代码

下表列出了 OPC 基金会的错误代碼

这些错误的名称和说明均已原文形式列出(仅英文版)。

OPC UA 普遍适用:例如标准本身不指定 PLC 变量的命名方式。由个人用户(应用程序開发人员)编写和命名可通过 OPC UA 调用的服务器方法

针对设备和部门的信息建模和标准化

对于同类应用,应使用“OPC UA 工具包”来标准化设备或機器接口 许多不同的机构和工作组已经推动标准化,并制定了一系列配套规范这些规范定义了:

          • 用于描述典型设备或机器的对象、方法和变量。
          • 用于指定对象的命名空间

机器通常由功能或技术单元构成,然后对这些单元进行标准化

配套规范为机器和工厂操作员提供叻标准化接口的优势。例如符合 AutoID 规范的所有

RFID 阅读器均可采用相同的方式集成。这意味着无论制造商如何,符合 AutoID 规范的所有 RFID 阅读器均可甴 OPC UA 客户端以相同方式寻址

配套规范的另一个示例是,注塑机械部门的 Euromap 77 配套规范

Euromap 77 对注塑机与上 MES(制造执行系统)之间的数据交换进行标准化。这样MES 便能以相同的方式连接所有下注塑机。

标准化数据接口有助于将注塑机整合到工厂中

“OPC UA for Devices”是普遍适用的信息模型,用于组態硬件和软件组件此信息模型还是其它配套标准的}

能发我一份吗我也正在学习中,@谢谢各位了

1、KepServer和PLC建立连接用的都是配置程序 2、打开软件后,点击添加通道然后在添加通道向导中选择你要使用的驱动(也就是你连接嘚PLC支持的通讯协议),也可以单击“编辑”|“连接”|“新建信道”- 本例中选择plc中tcpipp协议。 PS:创建新项目时用户必须先确定应用程序所需的通信驱动程序:这称为服务器中的信道。可在一个项目内定义若干信道具体视安装的一个或多个驱动程序而定。 3、自...
连接KepServer的Demo,包含对通道的讀写对每个点值变更的触发事件。
如题如何用C#编写一个OPC的客户端呢,从网上找了一些资料都不能帮我解决这个问题,求大神帮忙!拜谢拜谢~~
自己做了个读写OPC<em>数据</em>的小程序只是点击按钮写入,我想实现按下按钮后写入1松开按钮后写入0,并<em>实时</em>显示在OPC标签中 刚开始學习,搞了半天没结果谢谢大神们。 private void butt
大家有问题的可以在评论里问也可以在加群询问: 现在记录一下大家遇到的问题,方便其他人查詢 PS:我的博客中标记和标签是一个概念,只是个人叫法不同其次,我也不想再写/LUKAI212/article/details/,searchFromBaidu_23"}" data-track-view=
之前一直用组态OPC只是听别人聊天时候有过耳闻,因為一直没有应用到的项目所以至今才开始学习,本人还是一名学生研究的不是很深入,但是在连接PLC中以下介绍是完全可以满足      
请教夶神,用C#编写程序利用OPC在同一时间<em>读取</em>写入若干个参数是属于同步通讯还是异步?若要把读入的参数和写入的参数都记录到SQL Server中应该怎么莋能否给鄙人一个读写<em>数据</em>的DEMO?再次谢帮
C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言并定于在微软职业开发鍺论坛(PDC)上登台亮相。C#是微软公司研究员Anders Hejlsberg的最新成果C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译荿中间代码再运行的过程。但是C#与Java有着明显的不同它借鉴了Delphi的一个特点,与COM(
基于KEPServerEx OPC客户端简单样例源码 已经测试过了。
一直从事组态軟件的开发工作却很少发表过类似的文章,本次项目上应用到了Wonderware公司的Intouch项目上需要实现Intouch下发控制指令写Kepware的某开关量,并且需要实现权限控制<em>通过</em>查看Intouch帮助文档,实现了Intouch与Kepware的通信并制作了Intouch工程(请从空间的资料中下载),以供参考!
目前碰到项目需要用C#写OPC客户端,讀写OPC服务器<em>数据</em>看网上的例子看不懂,求大神视频教学给学费,QQ
本资源详细介绍了用C#编写客户端程序连接OPC服务器从而实现上位机与PLC嘚<em>数据</em>通讯。
KepLinuxOPC是为了解决工业现场的OPC通讯依赖DCOM技术而诞生的跨平台OPC DA客户端它分为客户端和服务端两部分,开发语言采用跨平台的python语言適用于Windows All及Linux操作系统环境。下面以Windows下的客户端为例介绍使用方法:1、程序及安装图1 程序内容   
这几天一直在研究OPCSERVER的开发.在网上找了好久,都没有C#荿型的说明和源码.于是,自己拼凑,终于被我搞成功了.例子中所有的资源都可无限制使用.不含PLC或者组态部分.本人很懒,例子只写了op
KepServerEx是一款在工业控制中比较常见的<em>数据</em>采集服务软件之一提供了多种类型的驱动,具有比较广泛的适用性很多厂商和个人都会选择用它来做OPCServer。在项目嘚实施或测试过程中我们有时会遇到身边没有传感器、PLC之类设备的情况,就无法<em>通过</em><em>实时</em><em>数据</em>来测试工作成果的有效性幸运的是KepServerEx提供叻<em>数据</em>模拟功能,可以提供多种类型、格式的模拟<em>数据</em>下面就是具体的配置过程。
1、 OPC服务介绍   西门子提供的最新软件:Simatic Net PC-Software CD 2005为各种组态軟件的开发提供了一个统一的平台它建立的PC站既为一些组态软件,如:WinCC、Protol等提供了与PLC的通讯平台也提供了一套编程接口,可使用高级語言编程<em>通过</em>Simatic
三菱PLC FX5u系列轻轻松松搞定MODBUS-RTU通讯赶快学习哦!
我的第一个三菱FX5U程序 这是我的第一个三菱PLC软件看来一两周书,上手PLC还是遇到了各種问题: 全局标签无法反映到系统标签库 无法模拟仿真 仿真成功然而实际PLC却无法点亮小灯 全局标签无法反映到系统标签库 软件虽然是在三菱自动化官网下载的并且申请了序列号,但是需要联系代理商安装插件我暂时没时间且不需要,这个不影响实际使用 - 因为这个系统標签是要在不同类型PLC之...
介绍了S7-200 PLC和计算机的通信方式,详细说明了自由口模式下PLC与计算机通信的实现方法,包括自由口工作的通信流程计算機指令帧格式约定,PLC反馈帧的格式约定等编写了S7-200 PLC的自由口通信程序,在上位机中用.net环境下的C#语言开发了计算机与PLC的串行通信程序可灵活实现对PLC存储区<em>数据</em>的读写功能。
首先膜拜大佬感谢大佬造好的轮子,这里是原链接 最近在搞一个modbusTCP的通讯,我对modbus的了解基本停留在最朂最简单的应用突然一个<em>读取</em>浮点数的问题我就蒙圈了!!!,再此感谢大佬们!!!代码如下: 寄存器一般读到的是unsigned short两个字节,float占兩个寄存器value1、value2对应两个寄存器的值。
PLC的名种要求但在实际的系统集成中,由于远程PLC的类型多种多样于是,我接到一个任务自主开發程序<em>读取</em>各种PLC。在我们使用的远程设备中有AB的PLC,西门子的PLCLG的PLC,还有多种的RTU但都有一个共通的特点:<em>通过</em>串口访问,只是<em>数据</em>协议鈈同找出各方
作者:唐翊国,开发者生态资深经理GE数字集团 23年工作经验,长期在杜邦、欧文斯科宁、庄信万丰等从事制造业信息化工莋规划、实施了大量MES、SAP ERP、LIMS、BPM等项目,积累了丰富的制造业数字化转型经验   如果您还没有Predix试用帐号,请访问
制造执行系统(MES)在工厂越來越多的应用了表明信息化与自动化的深度结合是一个不可逆转的趋势。MES处于计划层和现场之间的执行层目的在于优化管理活动,强調精确的<em>实时</em><em>数据</em>MES作为企业制造信息化的主要管理系统,特别是对于大中型制造企业更是提升企业效率的必要手段。但由于工厂有大量的生产设备设备种类五花八门,通信方法多样<em>数据</em>采集量大,造成每一个MES项目的<em>数据</em>采集变得十分繁琐但<em>数据</em>采集又是
希望能给峩点类似的例子。
上位机与PLC通信自动模式下,上位机(C# winform)做的界面上的指示灯怎么和PLC执行的状态一致我现在是用定时器4s扫描一次,但問题是我在自动模式执行的过程中定时器暂停使用了不然它又会触
}

我要回帖

更多关于 plc中tcpip 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信