有关OPC UA的特点,及其对智能制造、物联网、工业4.0的价值和意义等,不再赘笔,我们集中于实操。
测试说明
OPC UA采用客户端/服务器架构,因此测试中需要一个服务器,一个客户端。

服务器:S7-1500:CPU 1515-2PN TIA: V15.1
客户端:UaExpert V1.5.1 331
测试有非安全测试和安全测试两种,下文分节介绍:
1、非安全连接测试
非安全测试,设置最简单,我们先短平快得通讯上,感受一下!
①TIA中的相关设置
创建工程等常规操作不详述!TIA中的相关设置都在CPU的属性中!
Step 1: 激活OPC UA服务器

因本CPU的X1口的IP为191.168.0.1,且我们将OPC UA的端口设为48400,因此后续我们会以此地址访问此OPC UA服务器。
Step 2: 勾选CPU需要的运行许可证,本试验需要的是medium许可证

Step 3: 在服务器的选项中,设置端口及其他设置。端口默认为4840,可保持默认!我们此处将其修改为48400。

Step 4: OPC UA的常规中,可设置应用程序名称,此处保持默认

至此,TIA中的基本设置已完成。
②TIA中的编程
需在TIA中创建几个变量,并编几句代码,以验证通讯。创建数据块DB_1,包含5个变量

并在Main中编写如下几行代码:

编译下载,使CPU运行起来,确保程序运行正常! 至此,PLC中的设置完成。
③UaExpert中的测试连接
Step 1: 打开UaExpert软件(电脑需跟PLC建立连接)
Step 2: 添加 OPCUA Server(可1处右键ADD,也可直接点2处的+号)

Step 3: 添加Server的操作(1处双击,2处输入地址及端口号如图),点击OK…

Step 4: 连接
选中刚添加的Server,选中”None-None…”,选项,即无安全校验。因PLC中默认启用访客认证,因此可以在Anonymous处,进行无密码登录。点击OK…

Step 5: 接受服务器证书,Continue…

Step 6: OPC UA服务器已连接上,并显示在AddressSpace中。找到DB_1并将其拖放入右侧的Data Access View中。

Step 7: 通过置位复位几个Bool变量,即可看到几个Float变量按PLC中编程的规律变化。

至此,非安全连接通讯已完成。
2、安全连接测试
①TIA中的相关设置
使能全局安全设置
为了管理 OPCUA 服务器的证书必须启用TIA项目的全局安全设置。
Step 1: 项目树下安全设置中,为项目设置用户名和密码

Step 2: 导航至"CPU 属性>防护与安全>证书管理器" 选项使能证书管理器
Step 3: 配置安全策略(把无安全设置去掉,则必须进行证书验证)

②服务器和客户端证书的处理
Step 1: 创建服务器证书(Security的标签页中,点击服务器证书后面的按钮,新增…)

弹窗中设置必要的参数(一般默认即可),确定后,即可生成服务器证书。

UaExpert连接PLC时,会自动获取此证书,因此不用将此证书导出,并导入到UaExpert中。
Step 2: 客户端证书(需在UaExpert中导出UaClient证书,并导入到S7-1500的客户端信任列表里)。 OK后,UaExpert的Client证书存入PC硬盘。
TIA软件中,项目树下的安全设置中,将导出的Client证书导入受信证书一栏。
CPU属性下,禁止自动接受客户端证书; 在CPU属性下,分配可信客户端
在用户身份认证中,取消“启用访客认证”,在UaExpert中必须输入用户名和密码才能访问OPC UA 服务器。
在用户管理中,可新增用户并为其设置密码。此处需至少新增一个用户,并按规定为其设置密码!
项目编译下载后,在UaExpert中进行访问测试
以”opc.tcp://192.168.0.1:48400”地址添加服务器。 展开服务器,因为在PLC侧没有选中“无安全设置”和“启用访客访问”,因此,在这儿就没有”None-None…”选项,登录的“Anonymous”也是不可选的,只能通过用户名和密码登录。
输入用户名和密码后,弹出认证确认窗口,信任并接受服务器证书后继续…
如果在CPU属性的Security中,Secure Channel选中“无安全设置”,用户身份认证勾选“启用访客认证“,则在UaExpert中添加Server后,连接显示画面如下图:

此时,可以选择加密或不加密策略。可以”Anonymous”也可以用“用户名密码“登录。
有时,带安全策略的登录,会连接不上,报错”BadCertificateTimeInvalid”!

这是因为PLC CPU的系统时间不对。认证证书的时间不符合要求。需在CPU中将系统时间修改为当前时间,或“转至在线“后,在TIA中的”在线与诊断“下的功能下,通过”设置时间“,将CPU时间更新!再次连接即可成功!
登录上以后,就可以如下图,监控并给变量赋值操作了!

以上为非安全和安全UaExpert访问S7-1500 PLC的OPC UA服务器实操过程的简单介绍!
尽管文章较长,然截图较多,操作步骤是简单的!通过这种沉浸式操作体验,及浏览操作软件的相关页面及条目,可对一些概念,如命名空间、Node、对象、证书、签名,安全认证等概念有较深的了解。工程软件的学习,是必须要动手的,必须结合硬件和软件界面,才能有切身体会,不然,仅凭看资料,看再多遍,也是隔靴搔痒。本文操作步骤参考官方指导文档,依序动手做了一遍,其收益是良多的!
另,S7-1500自固件V2.6以后,也支持OPC UA Client功能,Client功能的实现,涉及很多复杂的编程,本篇不做详述。本篇用UaExpert作为OPC UA Client!
纸上得来终觉浅,绝知此事要躬行......
作者:流浪者云轩