龙空技术网

S7-1500 PLC做OPC UA客户端通信

Look自动化 1938

前言:

眼前大家对“c语言 opc”大体比较珍视,我们都想要了解一些“c语言 opc”的相关资讯。那么小编同时在网摘上汇集了一些有关“c语言 opc””的相关资讯,希望看官们能喜欢,你们快快来学习一下吧!

为了实现SIMATIC S7-1500 CPU通过OPC UA客户端与OPC UA服务器进行数据交换

1. 指定客户端接口,为该接口添加要访问的 PLC 变量和 PLC 方法。

2. 组态与 OPC UA 服务器的连接。

3. 使用OPC UA 客户端指令实现读访问。

S7-1500 配置OPC UA服务器的软/硬件需求

已获得操作 OPC UA 功能的运行系统许可证。

西门子S7-1500 V2.6及以上版本支持OPC UA客户端功能,利用 TIA V15.1 及以上版本,可组态和编程读取 OPC UA 服务器中的 PLC 变量的 OPC UA 客户端,还可以将 PLC 变量的新值传送到 OPC UA 服务器。另外还可以在用户程序中调用 OPC UA 服务器提供的方法。OPC UA 客户端的指令基于 “符合 IEC61131-3 规范的 PLCopen OPC UA 客户端” 。

S7-1500的OPC UA客户端实验环境

在本应用实例中,使用以下产品实现OPC UA客户端访问OPC UA服务器数据。

实验环境

软件:

TIA V15.1

硬件:

CPU 1511-1PN V2.6

CPU 1511C-1PN V2.6

配置 S7-1500 的 OPC UA 客户端1、使能 OPC UA 客户端

S7-1500 的 OPC UA 客户端默认是禁用的,需要在配置中启用 OPC UA 客户端。如果未启用客户端,则不会建立连接,收到指令(例如 “OPC_UA_Connect”)的相应错误消息。

1.1、导航至 CPU 的属性常规界面选择 OPC UA 客户端常规选项激活 OPC UA 客户端,如下图。

使能OPC UA客户端

1.2、导航至运行许可证 OPC UA 选择所需许可证类型,如下图4。

运行许可证

2、创建客户端接口

自版本 V15.1 起,TIA Portal 增加了用于客户端接口的编辑器, 从 OPC UA 服务器读取或写入的所有 PLC 变量由客户端接口中读取列表和写入列表来整体读写。 此外,客户端接口还包含 OPC UA 服务器提供的以及要通过用户程序(作为 OPC UA 客户端)调用的所有方法。 创建客户端接口,博途 STEP 7 还会创建数据块,用于对与 OPC UA 服务器进行数据读写 操作要使用的连接进行参数分配。

2.1、导航至作为 OPC UA 客户端使用的 CPU 单击 “OPC UA 通信 > 客户端接口”, 双击 “添加新客户端接口” 。

客户端接口

创建完接口后博途 STEP 7 还会自动创建下列数据块:

– Client interface_1_Configuration

数据块已包含 OPC UA 客户端指令需要的所有系统数据类型。 组态与 OPC UA 服务器的连接时,会填充该数据块。

– Client interface_1_Data

要从 OPC UA 服务器读取或写入的 PLC 变量以及要在 OPC UA 服务器中调用的方法对应的数据块。 在用户程序中使用该数据块。 该数据块当前为空。

2.2、要导入 OPC UA 服务器接口,请单击编辑器右上方的 “导入接口” 按钮,这样便可导入描述 OPC UA 服务器接口的 XML 文件。 此处 OPC UA 服务器接口 XML 文件是由服务器导出,如下图7 所示。

导入接口

导出 XML 文件

还可通过博途 STEP 7 在线浏览 OPC UA 服务器的接口。这样便可提供可通过 OPC UA 客户端读取或设置(写入)已连接 OPC UA 服务器的哪些变量的相关信息,还可提供 OPC UA 服务器的哪些服务器方法可用于 OPC UA 客户端的相关信息。

在编辑器的右侧部分,选择 “在线 []” 作为服务器数据源,单击 “在线访问” 按钮,博途 STEP 7 会显示 “连接到 OPC UA 服务器”对话框,输入服务器地址后单击 “查找所选择的服务器” , 博途 STEP 7 会与 OPC UA 服务器建立连接,并会确定服务器保持在就绪状态的所有安全 设置(服务器端点), 单击将博途 STEP 7 连接到 OPC UA 服务器时要使用的端点,本示例使用 “无安全设置” 的连接方式,若使用安全的方式进行连接请查看第 5 章“OPC UA 客户端安全通道的建立”,这里还可以选择以何种身份登录,本示例使用访客访问方式,如果服务器限制访问的用户身份,则可以通过“用户名和密码” 方式进行用户认证, 单击 “连接” 按钮。

在线访问

博途 STEP 7 随即会与 OPC UA 服务器建立连接,在编辑器的右侧部分中,博途 STEP 7 会显示 OPC UA 服务器的地址空间内所有 PLC 变量和服务器方法来供客户端访问。

地址空间

2.3、为客户端接口创建读取列表、写入列表、方法列表.

在编辑器左侧部分中,单击 “添加新读写或方法列表” ,STEP 7 将添加一个新列表,将 OPC UA 服务器的变量或方法通过拖拽的方式添加到对应的列表中(如图10中红线部分)。

或者生成新列表时,还可在编辑器的右侧部分(OPC UA 服务器接口)选择服务器变量或方法,然后再将其拖动到编辑器左侧部分的添加新读写或方法列表中(如图10中蓝线部分),新读写或方法列表随即包含相关节点或方法。

客户端接口

2.4、一致性检查

检查读取/写入列表或方法列表的一致性。选择要检查的列表,单击 “OPC UA 客户端接口” 区域上方的 “一致性检查” 按钮。绿色复选标记指示将变量或方法分配给服务器接口的相应元素时不存在错误。黄色复选标记指示将变量或方法分配给服务器接口的相应元素时存在错误,一旦出错,将在消息窗口列表中显示错误原因。通过该列表,可跳转到相应的错误处。

一致性检查期间,博途 STEP 7 会检查:

● 在相应列表中使用的所有元素是否同样存在于服务器中。

● 所用的数据类型是否匹配?

● 对于方法:方法变量的数量、名称、顺序和数据类型是否匹配?

一致性检查

2.5、编译通过后,在自动生成的 Client interface_1_Configuration 和 Client interface_1_Data 数据块中已包含 OPC UA 客户端接口中创建的读写列表和方法列表。

组态数据块

3、分配连接参数

利用 OPC UA 客户端的指令,可创建与 OPC UA 服务器交换数据的用户程序。为此需要使用一系列系统数据类型。为了简化对这些系统数据类型的操作,从 STEP 7 (TIA Portal) 版本 V15.1 开始,可对 OPC UA 客户端进行连接参数分配。可以选择是否使用连接参数分配,并不强制要求使用。还可以手动创建所需系统数据类型。

3.1、右键客户端接口单击 “属性” 选项卡, “常规”选项卡会打开,单击“组态”选项卡并设置与 OPC UA 服务器的连接参数。

为会话选择一个描述性名称。 在“地址”字段中,输入用户程序(作为 OPC UA 客户端运行)要与之建立连接的 OPC UA 服务器的 IP 地址。 或者,也可以在“地址”字段中输入有效的 DNS 名称。DNS 名称的长度限制为 242 个字符。 如果地址无效,则会显示错误消息:“输入有效地址”。 如果 OPC UA 服务器不使用标准端口 4840,则必须在此插入端口号。如果“地址(Address)”、“端口(Port)” 和“路径(Path)” 字段的字符串长度超过 254 个字符,也会显示错误消息。在 OPC UA 服务器中输入路径,可限制对该路径的访问,该信息可选,但如果指定了服务器路径,则某些服务器仅建立一条连接。 此外,还接受会话超时(30 秒)和监视时间(5 秒)的默认设置,也可以根据需要来修改。

3.2、单击“组态”选项卡中的“安全”区域,此区域包含与 OPC UA 服务器的连接的所有安全设置。根据需要选择对应的安全连接参数,本示例使用无安全设置和访客访问方式进行连接。

安全模式:从下拉列表中选择与 OPC UA 服务器的连接必须达到的安全模式。如果服务器不满足所选模式的要求,将不建立连接。

● 不安全:无安全连接!

● 签名:OPC UA 服务器和 OPC UA 客户端对数据传输进行签名(所有消息):因此可检测到修改。

● 签名并加密:OPC UA 服务器和 OPC UA 客户端对数据传输进行签名和加密(所有消息)。

安全策略:设置将为消息签名和加密使用的加密技术。

● 不安全

● Basic128Rsa15

● Basic256

● Basic256Sha256

客户端证书:证书确认 OPC UA 客户端的有效性。

博途 STEP 7 会显示证书列表,选择已让服务器知晓的证书。单击带有绿色复选标记的符号。或者创建新证书,如果创建新证书,必须让服务器知晓该证书。

用户身份认证:可为用户身份认证进行以下设置:

● 访客

● 用户名和密码

● 用户(TIA Portal - 安全设置)

3.3、设置语言

String 类型的变量可通过 OPC UA 进行本地化,也就是说,文本(UA 变量的值)能够以不同的语言形式提供给服务器。例如本地化文本可用于节点名称和注释。

在“组态”选项卡的“语言(Languages)” 区域,选择服务器返回文本的语言。

在第一行中输入的语言或与之关联的本地 ID(“语言代码”)是客户端的首选语言。

● 如果服务器能够以请求的语言提供 UA 变量,则会将该变量传送到客户端。

● 如果服务器不能以请求的语言提供 UA 变量,则会检查能否以在第二行中输入的语言(第一替代语言)提供 UA 变量。

● 服务器会逐个检查列表中的各条目,如果服务器既不能提供请求的语言,也不能提供替代语言,则将提供默认语言。

4、OPC UA 客户端程序编写及测试

4.1、OPC UA 客户端指令

利用标准化 OPC UA 客户端指令,用户能够控制以下任务与作为 OPC UA 客户端的 S7-1500 CPU 的通信。

● 连接/端口 OPC UA 服务器

● 读取/写入 OPC UA 服务器的变量

● 调用 OPC UA 服务器中的方法

使用可选指令可确定以下信息:

● OPC UA 客户端与 OPC UA 服务器之间连接的状态

● 地址空间层级已知的节点的节点 ID

读取或写入操作的运行顺序

① 用于准备读取和写入操作的指令

② 读取和写入指令

③ 完成读取或写入操作后用于进行 “释放资源” 的指令

OPC UA 服务器中方法调用的运行顺序

① 用于准备方法调用的指令

② 方法调用

③ 完成方法调用后用于进行 “释放资源” 的指令

可选指令(读取连接状态/读取地址空间层级已知的节点的节点 ID)

① 用于准备通过插入的指令执行读写操作的指令,可用于请求 OPC UA 服务器节点的 NodeID 等信息。

② 可与其它指令共同确定连接建立与终止之间的连接状态。

③ 用于进行 “释放资源” 的指令

4.2、可同时使用的客户端指令数

使用 OPC UA 客户端指令时,将受表中所列出的限值。

表 OPC UA 客户端指令的结构数量

4.3、OPC UA 客户端读取 PLC 变量程序示例,这里给出了简单的读取逻辑操作程序

4.3、OPC UA 客户端读取服务器变量测试

OB1 主程序中调用客户端功能块,连接功能块参数(“enable”:建立连接请求;“read”:读取请求;“connected”:连接是否已建立;“done”:是否读取成功;“busy”:忙碌;“error”:错误;“Status”:状态位;“connectionHdl”:连接句柄),编译下载程序进行连接及读访问测试,测试结果如下图所示,成功与服务器建立了连接,并读取服务器中变量,同时节点的状态及时间戳也存放在读取列表中。

5、OPC UA 客户端安全通道的建立

5.1、使能全局安全设置

导航至 "CPU 属性>防护与安全>证书管理器" 选项使能证书管理器,如下图22。

导航至项目树下安全设置为项目设置用户名密码,如下图23。

5.2、创建客户端证书

导航至 "CPU 属性>防护与安全>证书管理器" 选项,新增客户端证书,可以为客户端证书选择签署方式以及证书参数,这里创建的是客户端证书,所以证书用途需要选择 OPC UA 客户端或是 OPC UA 客户端&服务器,最后单击确定按钮完成客户端证书创建。

5.3、为客户端接口选择安全策略及证书

右键客户端接口单击 “属性” 选项卡, “常规”选项卡会打开,单击“组态”选项卡并设置与 OPC UA 服务器的安全连接参数。选择安全策略及上一步创建的客户端证书,也可以在这里新增客户端证书,这里默认自动接受服务器证书,如果不想自动接受也可以在证书管理器中导入受信证书,并为客户端添加伙伴方(服务器)设备证书。

5.3、为服务器导出客户端证书并导入服务器的受信证书列表,分为以下三种应用场景:

场景1:西门子 PLC 之间在同一项目内进行 OPC UA 通信

在同一项目内 OPC UA 客户端和服务器使用的是同一证书管理器,当客户端创建好证书,服务器可以直接查看到伙伴设备的证书并直接添加到可信客户端列表中

场景2:西门子 PLC 之间在不同项目内进行 OPC UA 通信

不同项目之间要导出客户端 CA 证书并导入服务器的受信证书列表中,这里导出的需要是创建客户端时选择的 CA 证书,把客户端证书导入服务器证书管理器后还要按照图25所示把客户端证书加入可信客户端列表。

场景3:西门子 PLC 与第三发服务器进行 OPC UA 通信

与场景 2 类似,需要导出客户端 CA 证书并导入第三方服务器受信证书列表中。

5.4、以上操作完成后即可为客户端和服务器之间构建一条安全连接通道。

标签: #c语言 opc