OPC UA 概述
OPC UA是一项开放标准,适用于从机器到机器间(M2M)的水平通信和从机器直到云端的垂直通信。该标准独立于供应商和平台,支持广泛的安全机制,并且可以与 PROFINET 共享同一工业以太网络。
OPC UA通信的特性及优势
特性:
独立于供应商和平台
集成的安全概念(加密、签名和验证)
一致、端到端,并可扩展
信息模型和语义服务
与PROFINET 不受限制的并行传输
优势:
标准化接口和广泛的可用性
直接按照协议进行安全通信,无需额外硬件
跨所有自动化层的直接连接和通信
简单明了的数据解释
基于以太网的简单网络,使用现有的工业以太网基础设施
简单机器集成用的国际标准化接口(配套规范)
具有 OPC UA接口+支持工具的西门子产品和系统
西门子为全集成自动化(TIA)提供从现场层扩展到控制和操作层的全面硬件和软件组合。作为开放的通信标准,OPC UA 在整个 TIA 产品组合中扮演着重要的角色。
图1:产品概览
应用示例内容及软/硬件需求
此应用示例的内容
为了实现 OPC UA 客户端与 SIMATIC S7-1500 的服务器进行数据交换,这个应用示例将向您详细介绍 SIMATIC S7-1500 的 OPC UA 服务器的配置以及如何通过 OPC UA 客户端软件连接 S7-1500 服务器。
用于测试用途的 OPC UA 客户端
● Unified Automation 的 “UaExpert”。可免费使用的功能丰富的客户端: 下载 UaExpert 的链接 ( https://www.unified-automation.com/downloads/opc-ua-clients.html )
● OPC Foundation 的 “UA Sample Client” 。在 OPC Foundation 注册的用户可免费使用该客户端:下载 OPC Foundation 示例客户端的链接 ( https://opcfoundation.org )
S7-1500 配置 OPC UA 服务器的软/硬件需求
已获得操作 OPC UA 功能的运行系统许可证。
TIA Portal V14 以及S7-1500 V2.0以后开始支持OPC UA服务器功能,除 S7-1500 标准 CPU 之外,这一特性同样适用于 S7-1500F、S7-1500T、S7-1500C、S7-1500pro CPU、ET 200SP CPU、SIMATIC S7-1500 软件控制器和 PLCSIM Advanced。S7-1500 CPU 上所有集成的 PROFINET 接口,均可用于访问该 CPU 的 OPC UA 服务器。 不能借助 CP 或 CM 通过自动化系统的背板总线直接访问 CPU 的 OPC UA 服务器。下表列出了不同版本所支持的功能。
表1:OPC UA功能列表
S7-1500 的 OPC UA 服务器实验环境
在本应用实例中,使用以下产品配置 OPC UA 服务器。
图2:实验环境
软件:
TIA V15.1
UA Expert V1.5.1
硬件:
CPU 1511-1PN V2.6
配置 S7-1500 的 OPC UA 服务器
1、使能 OPC UA 服务器
S7-1500的 OPC UA 服务器默认是禁用的,下面介绍如何使能一个简单的 OPC UA 服务器
1.1、导航至 CPU 的属性常规界面选择 OPC UA 服务器常规选项激活 OPC UA 服务器,如下图。
图3. 使能OPC UA服务器
1.2、导航至 'CPU 属性>运行系统许可证> OPC UA' 选择选择所需许可证类型,如下图4。
运行 S7-1500 CPU 的 OPC UA 服务器需要使用许可证。所需的许可证类型取决于相应 CPU 的性能。将许可证类型分为以下几类:
● SIMATIC OPC UA S7-1500 小型(CPU 1511、CPU 1512、CPU 1513、ET 200SP CPU、CPU 1515SP PC 需要使用这种类型)
● SIMATIC OPC UA S7-1500 中型(适用于 CPU 1515、CPU 1516、软件控制器 CPU 1507、CPU 1516pro-2PN)
● SIMATIC OPC UA S7-1500 大型(CPU 1517、CPU 1518 需要使用这种类型)
图4. 运行许可证
1.3、导航至 'CPU 属性>OPC UA>常规' 选项设置 OPC UA 应用名称,也可以使用默认名称,如下图5。请注意,证书上需要输入应用程序名称(主题备用名称),并且更改应用程序名称后可能需要再次生成现有证书。
图5. 应用名称
1.4、导航至 'CPU 属性>OPC UA>服务器' 选项设置服务器会话数量限制以及采样发布的最短间隔,无特殊需求也可以使用默认设置,如下图6。
● 会话最大超时,在该字段中指定在不进行数据交换的情况下 OPC UA 服务器关闭会话之前的最大时长。 允许值在 1 到 600000 秒之间。
● 最大 OPC UA 会话数,在该字段中指定 OPC UA 服务器启动并同时操作的最大会话数。最大会话数取决于 CPU 的性能。每个会话都会占用资源。
● 最大注册节点数,在该字段中指定 OPC UA 服务器注册的最大节点数。最大注册节点数取决于 CPU 的容量,并会在组态字段内容时显示(将光标放在字段中)。每次注册都会占用资源。
● 最短采样时间间隔, 在“最短采样时间间隔”中,可设置 OPC UA 服务器记录 CPU 变量值并与以前值相比较检查是否发生变更的时间间隔。
● 最短发布时间间隔, 在“最短发布时间间隔”中,可设置变量值发生改变时服务器通过新值向客户端发送消息的时间间隔。
● 所监视元素的最大数量,在该字段中指定该 CPU 的 OPC UA 服务器可同时监视值更改的最大元素数量。 监视会占用资源,可监视元素的最大数量取决于所用的 CPU。
图6. 选项
1.5、编译硬件并下载就可以启用一个简单的 OPC UA 服务器,服务器在其标准配置中允许任意客户端进行连接,如下图7所示。如果需要管理客户端证书以及访问认证管理请继续进行下面配置。
图7. 非安全访问测试
2、使能全局安全设置
为了管理 OPC UA 服务器的证书必须启用TIA项目的全局安全设置。
2.1、导航至项目树下安全设置为项目设置用户名密码,如下图8。
图8. 安全设置
2.2、导航至 'CPU 属性>防护与安全>证书管理器' 选项使能证书管理器,如下图9。
图9. 证书管理器
3、配置安全策略
通过 OPC UA 服务器的安全策略来配置 OPC UA 客户端和服务器之间的加密和身份验证方式,如下图10,选择允许的安全策略。
图10. 安全策略
4、通过管理证书实现安全访问
为了实现只允许指定的 OPC UA 客户端与 OPC UA 服务器进行连接,需要做以下配置
4.1、创建服务器证书,根据需要选择自签署还是 CA 签署,如下图11。
图11. 创建服务器证书
4.2、禁止运行过程中自动接受客户端证书,如下图12。
图12. 禁用自动接受客户端证书
4.3、导出客户端证书,如下图13。
图13. 客户端证书
4.4、管理受信证书,把之前导出的客户端证书导入到受信证书一栏,如下图14。
图14.受信证书导入
4.5、分配可信客户端,如下图15。
图15.可信客户端
5、用户身份认证
S7-1500 OPC UA服务器用户身份认证分为2种,一种是访客认证,另一种是用户名和密码认证。如果需要指定用户登录权限需要禁止访客认证并增加用户名密码认证,如下图16。
图16. 用户身份认证
6、分配 PLC 变量的访问权
对 PLC 中创建的变量分配它的读写权限,默认都可以访问,可以单独为变量分配读写权限,也可以整个 DB 块设置访问权限,如下图17。
图17.变量访问权限
7、项目编译下载后进行访问测试
通过 UA Expert 进行连接访问,选择安全策略及用户身份认证方式后进入证书验证界面,需要信任服务器证书并接受临时会话请求,如下图18。注意这里 UA Expert 通过 Trust Server Certificate 按钮即可完成 Server 证书的导入,如果是其它客户端没有此功能需要手动到 TIA 下的证书管理器中导出 CA 证书和设备证书并拷贝到客户端对应受信证书列表里即可。
图18.建立连接
建立连接成功后浏览PLC数据,并进行读写访问测试,如下图19。
图19.数据访问
8、OPC UA 服务器方法的创建
在 S7-1500 CPU(自固件版本 V2.5 起)的 OPC UA 服务器中,可以选择通过用户程序提供方法。 OPC UA 方法为不同通信节点之间的交互提供了有效机制,该机制提供作业确认和反馈值,因此用户无需再编程握手机制。
OPC UA 方法的工作原理
通常,OPC UA 方法的工作原理与运行系统中由外部 OPC UA 客户端调用的受专有技术保护函数块的原理类似。OPC UA 客户端仅'监视'已定义的输入和输出,函数块、方法或算法的内容对外部 OPC UA 客户端保持隐藏,OPC UA 客户端接收成功执行的反馈以及函数块(方法)返回的值,或者,如果执行不成功,则会收到错误消息。
服务器方法的实现 1. 使用 OPC_UA_ServerMethodPre 查询服务器方法调用该指令将执行以下任务: – 通过该指令询问 CPU 的 OPC UA 服务器是否已通过 OPC UA 客户端调用服务器方法。 – 如果已调用方法,并且服务器方法具有输入参数,服务器方法现在会接收到输入参数。 2. 编辑服务器方法 在这部分服务器方法中,用户提供实际用户程序。如果服务器方法使用输入参数,则可使用这些参数。 仅当 OPC UA 客户端已调用服务器方法时,才可执行服务器方法的这一部分。成功执行方法后,如果方法具有输出参数,需要设置服务器方法的输出参数。 3. 使用 OPC_UA_ServerMethodPost 响应服务器方法 要完成服务器方法,应调用 “OPC_UA_ServerMethodPost” 指令。使用参数通知 “OPC_UA_ServerMethodPost” 指令是否已处理用户程序,如果用户程序已成功执行,则会通过相关参数通知 OPC UA 服务器。OPC UA 服务器随后会将服务器方法的输出参数发送到 OPC UA 客户端。 无论用户程序是由 “OPC_UA_ServerMethodPre” 和 “OPC_UA_ServerMethodPost” 指令处理还是在下一个周期继续执行,始终以成对的形式调用这两个指令。
如下图20所示给出了使用 OPC UA 服务器方法指令为用户程序中所执行的 OPC UA 客户端提供一个方法。需要注意的是服务器方法指令的多重实例必须命名为 “OPC_UA_ServerMethodPre_Instance” 和 “OPC_UA_ServerMethodPost_Instance”,否则不会在服务器上创建方法,还有就是需要声明 “UAMethod_InParameters” 和 “UAMethod_OutParameters” 两个变量分别连接到方法指令引脚上,否则方法指令会报错。
图20.方法程序代码
在客户端内浏览到创建的服务器方法,选中 Method 后鼠标右键来调用方法,在调用方法对话框中传输输入参数点击 Call 按钮,返回输出参数及方法执行后的状态,如下图 21 所示。
图21.方法测试
常见问题及建议
1、通过 OPC UA 客户端访问 OPC UA 服务器的建议
● 对于一次性或不频繁的数据访问,请使用标准的读/写访问。
● 对于少量数据的循环访问(循环间隔最长约为 5 秒),请使用订阅。 优化 OPC UA 服务器中的最短发布时间间隔设置和最小采样时间间隔设置。
● 如果定期访问某些特定变量(重复访问),则可使用函数 “RegisteredRead” 和 “Regist eredWrite” 。
2、导致 OPC UA 服务器连接失败的原因
当建立到 OPC UA 服务器的连接时,需用注意许多要点来保证过程顺利地进行。以下连接建立出错的原因与用到的 OPC UA 客户端和服务器无关。
基于证书连接的日期和时间
基于证书授权的通讯中,在OPC UA 服务器上,需要检查证书的有效期。这就要求终端系统具备当前时间。对证书检查时,OPC UA 服务器可能会给出时间错误响应,状态码为 “BadSecurityChecksFailed” 或者 “BadCertificateTimeInvalid” 。解决方案建议使用 NTP 服务器来实现时钟同步。如果 NTP 无法实现,则只能手动为终端系统设置当前时间。
经过 NAT 路由器的 OPC UA 客户端-服务器连接尝试失败,产生错误信息 “BadCommunicationError” 或 “BadNotConnected” 。
在NAT系统中,IPv4 数据包被路由器处理。?这意味着数据包的源IP?( “Source NAT” ) 或者目的 IP ( “Destination NAT” ) 会被路由器配置的IP地址替换掉 ( 取决于目的端口 )。而客户端和服务器并不知道这个过程。