S71500PLC做OPCUA客户端通信
为了实现SIMATICS71500CPU通过OPCUA客户端与OPCUA服务器进行数据交换
1。指定客户端接口,为该接口添加要访问的PLC变量和PLC方法。
2。组态与OPCUA服务器的连接。
3。使用OPCUA客户端指令实现读访问。
S71500配置OPCUA服务器的软硬件需求已获得操作OPCUA功能的运行系统许可证。
西门子S71500V2。6及以上版本支持OPCUA客户端功能,利用TIAV15。1及以上版本,可组态和编程读取OPCUA服务器中的PLC变量的OPCUA客户端,还可以将PLC变量的新值传送到OPCUA服务器。另外还可以在用户程序中调用OPCUA服务器提供的方法。OPCUA客户端的指令基于符合IEC611313规范的PLCopenOPCUA客户端。S71500的OPCUA客户端实验环境
在本应用实例中,使用以下产品实现OPCUA客户端访问OPCUA服务器数据。
实验环境
软件:
TIAV15。1
硬件:CPU15111PNV2。6
CPU1511C1PNV2。6配置S71500的OPCUA客户端1、使能OPCUA客户端
S71500的OPCUA客户端默认是禁用的,需要在配置中启用OPCUA客户端。如果未启用客户端,则不会建立连接,收到指令(例如OPCUAConnect)的相应错误消息。
1。1、导航至CPU的属性常规界面选择OPCUA客户端常规选项激活OPCUA客户端,如下图。
使能OPCUA客户端
1。2、导航至运行许可证OPCUA选择所需许可证类型,如下图4。
运行许可证2、创建客户端接口
自版本V15。1起,TIAPortal增加了用于客户端接口的编辑器,从OPCUA服务器读取或写入的所有PLC变量由客户端接口中读取列表和写入列表来整体读写。此外,客户端接口还包含OPCUA服务器提供的以及要通过用户程序(作为OPCUA客户端)调用的所有方法。创建客户端接口,博途STEP7还会创建数据块,用于对与OPCUA服务器进行数据读写操作要使用的连接进行参数分配。
2。1、导航至作为OPCUA客户端使用的CPU单击OPCUA通信客户端接口,双击添加新客户端接口。
客户端接口
创建完接口后博途STEP7还会自动创建下列数据块:
Clientinterface1Configuration
数据块已包含OPCUA客户端指令需要的所有系统数据类型。组态与OPCUA服务器的连接时,会填充该数据块。
Clientinterface1Data
要从OPCUA服务器读取或写入的PLC变量以及要在OPCUA服务器中调用的方法对应的数据块。在用户程序中使用该数据块。该数据块当前为空。
2。2、要导入OPCUA服务器接口,请单击编辑器右上方的导入接口按钮,这样便可导入描述OPCUA服务器接口的XML文件。此处OPCUA服务器接口XML文件是由服务器导出,如下图7所示。
导入接口
导出XML文件
还可通过博途STEP7在线浏览OPCUA服务器的接口。这样便可提供可通过OPCUA客户端读取或设置(写入)已连接OPCUA服务器的哪些变量的相关信息,还可提供OPCUA服务器的哪些服务器方法可用于OPCUA客户端的相关信息。
在编辑器的右侧部分,选择在线〔〕作为服务器数据源,单击在线访问按钮,博途STEP7会显示连接到OPCUA服务器对话框,输入服务器地址后单击查找所选择的服务器,博途STEP7会与OPCUA服务器建立连接,并会确定服务器保持在就绪状态的所有安全设置(服务器端点),单击将博途STEP7连接到OPCUA服务器时要使用的端点,本示例使用无安全设置的连接方式,若使用安全的方式进行连接请查看第5章OPCUA客户端安全通道的建立,这里还可以选择以何种身份登录,本示例使用访客访问方式,如果服务器限制访问的用户身份,则可以通过用户名和密码方式进行用户认证,单击连接按钮。
在线访问
博途STEP7随即会与OPCUA服务器建立连接,在编辑器的右侧部分中,博途STEP7会显示OPCUA服务器的地址空间内所有PLC变量和服务器方法来供客户端访问。
地址空间
2。3、为客户端接口创建读取列表、写入列表、方法列表。
在编辑器左侧部分中,单击添加新读写或方法列表,STEP7将添加一个新列表,将OPCUA服务器的变量或方法通过拖拽的方式添加到对应的列表中(如图10中红线部分)。
或者生成新列表时,还可在编辑器的右侧部分(OPCUA服务器接口)选择服务器变量或方法,然后再将其拖动到编辑器左侧部分的添加新读写或方法列表中(如图10中蓝线部分),新读写或方法列表随即包含相关节点或方法。
客户端接口
2。4、一致性检查
检查读取写入列表或方法列表的一致性。选择要检查的列表,单击OPCUA客户端接口区域上方的一致性检查按钮。绿色复选标记指示将变量或方法分配给服务器接口的相应元素时不存在错误。黄色复选标记指示将变量或方法分配给服务器接口的相应元素时存在错误,一旦出错,将在消息窗口列表中显示错误原因。通过该列表,可跳转到相应的错误处。
一致性检查期间,博途STEP7会检查:
在相应列表中使用的所有元素是否同样存在于服务器中。
所用的数据类型是否匹配?
对于方法:方法变量的数量、名称、顺序和数据类型是否匹配?
一致性检查
2。5、编译通过后,在自动生成的Clientinterface1Configuration和Clientinterface1Data数据块中已包含OPCUA客户端接口中创建的读写列表和方法列表。
组态数据块3、分配连接参数
利用OPCUA客户端的指令,可创建与OPCUA服务器交换数据的用户程序。为此需要使用一系列系统数据类型。为了简化对这些系统数据类型的操作,从STEP7(TIAPortal)版本V15。1开始,可对OPCUA客户端进行连接参数分配。可以选择是否使用连接参数分配,并不强制要求使用。还可以手动创建所需系统数据类型。
3。1、右键客户端接口单击属性选项卡,常规选项卡会打开,单击组态选项卡并设置与OPCUA服务器的连接参数。
为会话选择一个描述性名称。在地址字段中,输入用户程序(作为OPCUA客户端运行)要与之建立连接的OPCUA服务器的IP地址。或者,也可以在地址字段中输入有效的DNS名称。DNS名称的长度限制为242个字符。如果地址无效,则会显示错误消息:输入有效地址。如果OPCUA服务器不使用标准端口4840,则必须在此插入端口号。如果地址(Address)、端口(Port)和路径(Path)字段的字符串长度超过254个字符,也会显示错误消息。在OPCUA服务器中输入路径,可限制对该路径的访问,该信息可选,但如果指定了服务器路径,则某些服务器仅建立一条连接。此外,还接受会话超时(30秒)和监视时间(5秒)的默认设置,也可以根据需要来修改。
3。2、单击组态选项卡中的安全区域,此区域包含与OPCUA服务器的连接的所有安全设置。根据需要选择对应的安全连接参数,本示例使用无安全设置和访客访问方式进行连接。
安全模式:从下拉列表中选择与OPCUA服务器的连接必须达到的安全模式。如果服务器不满足所选模式的要求,将不建立连接。
不安全:无安全连接!
签名:OPCUA服务器和OPCUA客户端对数据传输进行签名(所有消息):因此可检测到修改。
签名并加密:OPCUA服务器和OPCUA客户端对数据传输进行签名和加密(所有消息)。
安全策略:设置将为消息签名和加密使用的加密技术。
不安全
Basic128Rsa15
Basic256
Basic256Sha256
客户端证书:证书确认OPCUA客户端的有效性。
博途STEP7会显示证书列表,选择已让服务器知晓的证书。单击带有绿色复选标记的符号。或者创建新证书,如果创建新证书,必须让服务器知晓该证书。
用户身份认证:可为用户身份认证进行以下设置:
访客
用户名和密码
用户(TIAPortal安全设置)
3。3、设置语言
String类型的变量可通过OPCUA进行本地化,也就是说,文本(UA变量的值)能够以不同的语言形式提供给服务器。例如本地化文本可用于节点名称和注释。
在组态选项卡的语言(Languages)区域,选择服务器返回文本的语言。
在第一行中输入的语言或与之关联的本地ID(语言代码)是客户端的首选语言。
如果服务器能够以请求的语言提供UA变量,则会将该变量传送到客户端。
如果服务器不能以请求的语言提供UA变量,则会检查能否以在第二行中输入的语言(第一替代语言)提供UA变量。
服务器会逐个检查列表中的各条目,如果服务器既不能提供请求的语言,也不能提供替代语言,则将提供默认语言。
4、OPCUA客户端程序编写及测试
4。1、OPCUA客户端指令
利用标准化OPCUA客户端指令,用户能够控制以下任务与作为OPCUA客户端的S71500CPU的通信。连接端口OPCUA服务器
读取写入OPCUA服务器的变量
调用OPCUA服务器中的方法
使用可选指令可确定以下信息:
OPCUA客户端与OPCUA服务器之间连接的状态
地址空间层级已知的节点的节点ID
读取或写入操作的运行顺序
用于准备读取和写入操作的指令
读取和写入指令
完成读取或写入操作后用于进行释放资源的指令
OPCUA服务器中方法调用的运行顺序
用于准备方法调用的指令
方法调用
完成方法调用后用于进行释放资源的指令
可选指令(读取连接状态读取地址空间层级已知的节点的节点ID)
用于准备通过插入的指令执行读写操作的指令,可用于请求OPCUA服务器节点的NodeID等信息。
可与其它指令共同确定连接建立与终止之间的连接状态。
用于进行释放资源的指令
4。2、可同时使用的客户端指令数
使用OPCUA客户端指令时,将受表中所列出的限值。
表OPCUA客户端指令的结构数量
4。3、OPCUA客户端读取PLC变量程序示例,这里给出了简单的读取逻辑操作程序
4。3、OPCUA客户端读取服务器变量测试
OB1主程序中调用客户端功能块,连接功能块参数(enable:建立连接请求;read:读取请求;connected:连接是否已建立;done:是否读取成功;busy:忙碌;error:错误;Status:状态位;connectionHdl:连接句柄),编译下载程序进行连接及读访问测试,测试结果如下图所示,成功与服务器建立了连接,并读取服务器中变量,同时节点的状态及时间戳也存放在读取列表中。
5、OPCUA客户端安全通道的建立
5。1、使能全局安全设置
导航至CPU属性防护与安全证书管理器选项使能证书管理器,如下图22。
导航至项目树下安全设置为项目设置用户名密码,如下图23。
5。2、创建客户端证书
导航至CPU属性防护与安全证书管理器选项,新增客户端证书,可以为客户端证书选择签署方式以及证书参数,这里创建的是客户端证书,所以证书用途需要选择OPCUA客户端或是OPCUA客户端服务器,最后单击确定按钮完成客户端证书创建。
5。3、为客户端接口选择安全策略及证书
右键客户端接口单击属性选项卡,常规选项卡会打开,单击组态选项卡并设置与OPCUA服务器的安全连接参数。选择安全策略及上一步创建的客户端证书,也可以在这里新增客户端证书,这里默认自动接受服务器证书,如果不想自动接受也可以在证书管理器中导入受信证书,并为客户端添加伙伴方(服务器)设备证书。
5。3、为服务器导出客户端证书并导入服务器的受信证书列表,分为以下三种应用场景:
场景1:西门子PLC之间在同一项目内进行OPCUA通信
在同一项目内OPCUA客户端和服务器使用的是同一证书管理器,当客户端创建好证书,服务器可以直接查看到伙伴设备的证书并直接添加到可信客户端列表中
场景2:西门子PLC之间在不同项目内进行OPCUA通信
不同项目之间要导出客户端CA证书并导入服务器的受信证书列表中,这里导出的需要是创建客户端时选择的CA证书,把客户端证书导入服务器证书管理器后还要按照图25所示把客户端证书加入可信客户端列表。
场景3:西门子PLC与第三发服务器进行OPCUA通信
与场景2类似,需要导出客户端CA证书并导入第三方服务器受信证书列表中。5。4、以上操作完成后即可为客户端和服务器之间构建一条安全连接通道。