西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)

2018年7月3日21:34:30 发表评论 400 阅读
目录
文章目录[隐藏]
SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信

SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信

  1. 前言
  2. 文档指南
  3. 产品概述
  4. 通信服务
  5. PG 通信
  6. HMI 通信
  7. 开放式用户通信
  8. S7 通信
  9. 点到点连接
  10. OPC UA 通信
  11. 路由
  12. 连接资源
  13. 连接诊断
  14. 使用 CP 1543-1 确保工业以
  15. 太网安全

本文档的用途

在本功能手册中,简要介绍了 SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL和 ET 200pro 系统中的通信选件、CPU、通信模块、处理器和 PC 系统。本功能手册主要介绍了基于连接的异步通信。

本文档中包含以下内容:

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

所需基本知识

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

  • 自动化技术的基本知识
  • 工业自动化系统 SIMATIC的知识
  • 有关如何使用STEP 7 (TIA Portal) 的基本知识

本文档的适用范围

本文档是 SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL 和 ET 200pro 系统中

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

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

 

新增内容 客户收益 信息出处
新增内容 OPC UA 配套规范 通过 OPC UA 配套规范,可为多个供应商统一指定相应方法。使用这些指定的方法,可轻松地将不同制造商

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

“使用 OPC UA 信息模型

(页 232)”部分

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

(页 120)”部分

新增内容 客户收益 信息出处
  通过 Modbus TCP 进行安全通信 在 Modbus TCP 客户端与 Modbus

TCP 服务器之间,可建立 TCP 安全连接。

“通过 Modbus TCP 进行

OUC 安全连接 (页 118)”部分

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

新增内容 客户收益 信息出处
新增内容 OPC UA 服务器 OPC UA 是一种独立于操作系统的统 OPC UA 通信 (页 139)”部
    一数据通信标准。
    OPC UA 可在各种自动化系统中集成  
    各种安全防护机制,例如在应用层  
    中,进行合法用户的数据交换。  
    OPC UA 服务器可提供大量数据:  
    · 客户端可访问的 PLC 变量值  
    · 这些 PLC 变量的数据类型  
    · OPC UA 服务器及 CPU 信息  
    这样,客户端可了解变量管理的概览  
    信息而且可对这些值进行读写。  
  开放式用户安全通信 与其它设备进行数据安全交换。 “开放式用户安全通信

(页 101)”部分

  STEP 7 中的证书处理 在 STEP 7 中,可管理以下应用的证书: “使用 STEP 7 管理证书

(页 49)”部分

    · OPC UA 服务器  
    · 开放式用户安全通信  
    · CPU 的 Web 服务器  
  取消激活 CPU 的 SNMP 可以取消激活 CPU 的 SNMP 功能。 “禁用 SNMP (页 62)”部分
  功能 在某些情况下需要执行该功能。例  
    如,网络中的安全规则不允许使用  
    SNMP 时。  

 

约定

STEP 7在本文档中,“STEP 7”是指组态与编程软件“STEP 7 V12 (TIA Portal) 及以上版本”。

S7-1500 CPU”是指 S7-1500F、S7-1500T、S7-1500TF、S7-1500C 系列 CPU 以及

S7-1500pro CPU、ET200SP CPU 和 SIMATIC S7-1500 软件控制器。

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

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

安全信息

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

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

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

文档指南 1

SIMATIC S7-1500 自动化系统、基于 SIMATIC S7-1500 的 CPU 1516pro-2 PN 和分布

式 I/O 系统 SIMATIC ET 200MP、ET 200SP 与 ET 200AL 的文档分为 3 个部分。这样,用户可以根据具体需求快速访问自己所需的特定信息。

基本信息

在系统手册和入门指南中,对 SIMATIC S7-1500、ET 200MP、ET 200SP 和 ET 200AL系统的组态、安装、接线和调试进行了详细介绍。对于 CPU 1516pro-2 PN,可参见相应的操作说明。STEP 7 在线帮助则为用户提供有关组态和编程方面的技术支持。

设备信息

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

产品概述 2

基于 S7-1500, , ET 200MPET 200SPET 200pro 和 ET 200AL 系统的 CPU、通信模块和

处理器以及 PC 系统,可通过 PROFINET, PROFIBUS 和点到点的连接进行通信连接。

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

PROFINET 和 PROFIBUS DP 接口集成在 S7-1500 CPU 中。例如,

CPU 1516-3 PN/DP 上带有 2 个 PROFINET 接口和 1 个 PROFIBUS DP 接口。使用通信模块 (CM) 和通信处理器 (CP) 时,可支持其它 PROFINET 和 PROFIBUS DP 接口。

PROFINET 接口 (X2),带一个端口
PROFINET 接口 (X1),带双端口交换机
PROFIBUS DP 接口 (X3)
PROFINET 接口 (X1),带 3 端口交换机

图 2-1 CPU 1516-3 PN/DP 和 CPU 1512SP-1 PN 的接口

通信模块的接口

通信模块 (CM) 接口对 CPU 的接口进行了扩展(例如,使用通信模块 CM 1542-5 时,

S7-1500 自动化系统将增加一个 PROFIBUS 接口)。

PROFIBUS DP 接口

图 2-2 CM 1542-5 和 CM DP 的 PROFIBUS DP 接口

通信处理器的接口

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

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-5

工业以太网接口

图 2-3 CP 1543-1 的工业以太网接口

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

点到点连接通信模块可通过 RS 232、RS 422 和 RS 485 接口进行通信,如 Freeport 或

Modbus 通信。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-6

点到点连接接口

图 2-4 CM PtP RS422/485 BA 中点到点连接的接口示例。

接口模块上的接口

通过 ET 200MP、ET 200SP 和 ET 200AL 接口模块 (IM) 上的 PROFINET 和

PROFIBUS DP 接口,可将分布式 I/O ET 200MP、ET 200SP 和 ET 200AL 连接到上位

I/O 控制器或 DP 主站的 PROFINET 或 PROFIBUS 中。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-7

PROFINET 接口,带双端口交换机

图 2-5 PROFINET 接口 IM 155-5 PN ST (ET 200MP)、IM 155-6 PN ST (ET 200SP) 和

IM 157-1 PN (ET 200AL)

通信服务

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

通信服务 3

3.1 通信方式概述

通信方式概述

在执行自动化任务时,可使用以下通信方式。

表格 3- 1 通信方式

通信方式 功能 接口:
PN/IE

1

DP 串行
PG 通信 调试、测试、诊断 -
HMI 通信 操作员监控 -
基于 TCP/IP 进行开放式通信 基于 TCP/IP 协议,通过 PROFINET/工业以太网进行数据交换

指令:

  • TSEND_C/TRCV_C
  • TSEND/TRCV
  • TCON
  • T_DISCON
- -
基于 ISO-on-TCP 进行开放式通信 基于 ISO-on-TCP 协议,通过 PROFINET/工业以太网进行数据交换

指令:

  • TSEND_C/TRCV_C
  • TSEND/TRCV
  • TCON
  • T_DISCON
- -
通信方式 功能 接口:
PN/IE

1

DP 串行
基于 UDP 进行开放式通信 基于 UDP 协议,通过 PROFINET/工业以太网进行数据交换

指令:

  • TSEND_C/TRCV_C
  • TUSEND/TURCV/TRCV
  • TCON
  • T_DISCON
- -
基于 ISO 进行开放式通信(仅适用于带有 PROFINET/工业以太网接口的 CP) 基于 ISO 协议,通过 PROFINET/工业以太网进行数据交换

指令:

  • TSEND_C/TRCV_C
  • TSEND/TRCV
  • TCON
  • T_DISCON
- -
基于 FDL 进行开放式通信(仅适用于 CM 1542-5 固件版本 V2.0 及以上版本) 基于 FDL 协议,通过 PROFIBUS 进行数据交换

指令:

  • TSEND_C/TRCV_C
  • TSEND/TRCV
  • TUSEND/TURCV
  • TCON
  • T_DISCON
- -
OPC UA 服务器(仅通过 CPU 的内部 PROFINET 接口进行通信) 通过 OPC UA 客户端进行数据交换 - -
基于 Modbus TCP 进行通信 基于 Modbus TCP 协议,通过 PROFINET

进行数据交换指令:

  • MB_CLIENT
  • MB_SERVER
- -
通信方式概述
通信方式 功能 接口:
PN/IE

1

DP 串行
电子邮件 通过电子邮件发送过程报警指令:

  • TMAIL_C
- -
FTP(仅适于带有 PROFINET/工业以太网接口的 CP) 基于 FTP(文件传输协议)进行文件管理和文件访问时,CP 既可以作为 FTP 客户端也可以作为 FTP 服务器

指令:

  • FTP_CMD
- -
Fetch/Write(仅适于带有

PROFINET/工业以太网接口的CP)

通过 TCP/IP、ISO-on-TCP 和 ISO 执行服务器服务

通过 Fetch/Write 的特殊指令

- -
S7 通信 通过 PROFINET/PROFIBUS,使用 S7 协议进行数据交换。

指令:

  • PUT/GET
  • BSEND/BRCV
  • USEND/URCV
-
点到点串行连接 基于 Freeport、3964(R)、USS 或 Modbus

协议,进行点到点数据交换

通过 PtP、USS 或 Modbus RTU 的特定指令

- -
Web 服务器 通过 HTTP(S) 进行数据交换,如诊断 - -
SNMP(简单网络管理协议) 基于标准 SNMP 协议,通过对 IP 网络组件进行参数设置,可对 IP 网络进行监控和故障

识别

- -
时间同步 通过 PN/IE 接口:CPU 作为 NTP 客户端

(网络时间协议)

- -
通过 DP 接口:CPU/CM/CP 作为时间主站或时间从站 - -

3.1 以太网通信的通信协议和端口号

在本章节中,简要介绍了通过 PN/IE 接口进行通信时支持的协议和端口号。在各种协议中,分别指定了地址参数、相应的通信层以及通信角色和通信方向。

基于这些信息,可将自动化系统所有的安全保护措施与相应的协议进行匹配(如,防火墙)。由于安全措施仅限于以太网或 PROFINET 网络,因此下表中不包含任何

PROFIBUS 协议。

说明

 

使用的端口号

使用的端口号为 S7-1500 CPU 所用的标准端口号。由于支持各种不同的通信协议和通信连接,因此也可使用其它端口号。

在下表中,列示了不同的通信层级以及所用的协议。

下表列出了 S7-1500 CPU、ET 200SP CPU 和 CPU 1516pro-2 PN 支持的协议。S7-

1500 软件控制器也支持下表中所列协议,以太网接口将基于这些协议分配给相应的软件控制器。

 

表格 3- 2 S7-1500 CPU 和软件控制器的通信层和协议(通过 CPU 的 PROFINET 接口)

 

协议 端口号 (2) 链路层

(4) 传输层

功能 说明
PROFINET 协议
DCP

发现和组态协议

不相关 (2) Ethertype 0x8892 (PROFINET) 可访问的设备

PROFINET

发现和组态

PROFINET 通过 DCP 发现 PROFINET 设备并

提供基本设置。

LLDP

链路层发现协议

不相关 (2) Ethertype 0x88CC (LLDP) PROFINET

链路层发现协议

PROFINET 通过 LLDP 发现和管理 PROFINET

设备间的相邻关系。

LLDP 使用特定的多播 MAC 地址:01-80-C2- 00-00-0E

MRP

介质冗余协议

不相关 (2) Ethertype 0x88E3 (IEC 62493-2-2010) PROFINET

介质冗余

MRP 通过环形拓扑结构对冗余传输路径进控制。

MRP 使用标准的多播 MAC 地址:

 

协议 端口号 (2) 链路层

(4) 传输层

功能 说明
PTCP

精确、透明的时钟协议

不相关 (2) Ethertype 0x8892 (PROFINET) PROFINET

基于 IEEE

1588 进行时钟发送和时间同步

PTC 提供 RJ45 端口之间的延时测量,并随后发送时钟同步和时间同步。

PTCP 使用标准的多播 MAC 地址:

PROFINET

IO 数据

不相关 (2) Ethertype 0x8892

(PROFINET)

PROFINET

IO 数据循环传输

PROFINET IO 帧用于基于以太网在

PROFINET IO 控制器和 IO 设备之间对 IO 数据进行循环传输。

PROFINET

上下文管理器

34964 (4) UDP 不带 RPC 的

PROFINET

连接

PROFINET 上下文管理器可作为一个端点映射器,用于建立应用关联 (PROFINET AR)。
面向连接的通信协议
SMTP

简单邮件传输协议

25 (4) TCP 简单邮件传输协议 SMTP 用于发送电子邮件。
SMTPS(通

过 TLS 进行

SMTP 连

接)

465 (4) TCP SMTP 安全连接 SMTP 用于通过安全连接发送电子邮件。
使用

STARTTLS

进行 SMTP

连接

25

587

(4) TCP 使 用 SMTP 命令“STARTTLS”

进行简单邮

件传输协议

“使用 STARTTLS 进行 SMTP 连接”用于通过安全连接发送电子邮件。
HTTP

超文本传输协议

80 (4) TCP 超文本传输协议 HTTP 用于与 CPU 内部 Web 服务器通信。
ISO-on-TCP

(基于

RFC 1006

标准)

102 (4) TCP ISO-on-TCP

协议

ISO-on-TCP(基于 RFC 1006 标准)适用于与远程 CPU 或软件控制器进行面向消息的数据交换。

S7 与 ES、HMI、OPC Server 等通信。

 

协议 端口号 (2) 链路层

(4) 传输层

功能 说明
NTP

网络时间协议

123 (4) UDP 网络时间协议 NTP 用于同步 CPU 系统时间与 NTP 服务器时间。
SNMP

简单网络管理协议

161

162(陷阱)

(4) UDP 简单网络管理协议 SNMP 由 SNMP 管理器用于读取和设置网络管理数据(SNMP 管理的对象)。
HTTPS

安全超文本传输协议

443 (4) TCP 安全超文本传输协议 HTTPS 用于通过安全套接层 (SSL) 与 CPU 内部的 Web 服务器通信。
Modbus TCP

Modbus

传输控制协议

502 (4) TCP Modbus/TC

P 协议

Modbus/TCP 由用户程序中的

MB_CLIENT/MB_SERVER 指令使用。

OPC UA

开放式平台通信

统一架构

4840 (4) TCP 基于 TCP/IP

协议

从企业级到现场级的通信标准。
OUC1

开放式用户通信

OUC 安全连接

1 到 1999

使用范围有限 2

(4) TCP

(4) UDP

开放式用户通信

(TCP/UDP)

安全的开放式用户通信(TLS)

OUC 指令可用于建立连接、终止连接并基于套接层传输数据。
2000 到

5000

(建议)

5001 到

49151

使用范围有限 2

 

协议 端口号 (2) 链路层

(4) 传输层

功能 说明
IGMPv2

Internet 组管理协议

不相关 (3) 网络层 Internet 组管理协议 多播组的组织网络协议
预留 49152 到

65535

(4) TCP

(4) UDP

- 如果应用程序未确定本地端口号,将使用动态端口区域激活连接端点。

1  注:基于开放式通信,可直接访问 UDP/TCP。用户必须遵守 IANA (Internet Assigned Numbers Authority,互联网数字分配机构) 的端口限制/定义。

2 请勿将其它协议已用端口分配给 OUC。

下表列出了 S7-1500 软件控制器支持的协议,通过以太网接口分配给 Windows 系统。

 

表格 3- 3 S7-1500 软件控制器的通信层和协议(通过 Windows 端的以太网接口)

 

协议 端口号 (2) 链路层

(4) 传输层

功能 说明
PROFINET 协议
DCP

发现和组态协议

不相关 (2) Ethertype 0x8892 (PROFINET) 可访问的设备

PROFINET

发现和组态

PROFINET 通过 DCP 发现 PROFINET 设备并

提供基本设置。

面向连接的通信协议
SMTP

简单邮件传输协议

25 (4) TCP 简单邮件传输协议 SMTP 用于发送电子邮件。
HTTP

超文本传输协议

可调节 1 (4) TCP 超文本传输协议 HTTP 用于与 CPU 内部的 Web 服务器进行数据通信。为了避免与 Windows 系统中其它

Web 服务器冲突,可更改端口号。

如果要使用 Web 服务器访问,必须在

Windows 防火墙中激活该端口。

ISO-on-TCP

(基于

RFC 1006

标准)

102 (4) TCP ISO-on-TCP

协议

ISO-on-TCP(基于 RFC 1006)适用于与

PG/PC 或 HMI 进行 S7 通信。

 

 

 

 

协议 端口号 (2) 链路层

(4) 传输层

功能 说明
OUC2 1 到 1999 (4) TCP 开放式用户 OUC 指令可用于建立连接、终止连接并基于套
开放式用户 使用范围 (4) UDP 通信 接层传输数据。
通信 有限 3, 4   (TCP/UDP) 如果要使用 OUC,则必须在 Windows 防火墙

OUC 安全连接

2000 到

5000

(建议)4

  安全的开放式用户通信(TLS) 中激活该端口。
  5001 到

49151

     
  使用范围      
  有限 3, 4      
IGMPv2

Internet 组管理协议

不相关 (3) 网络层 Internet 组管理协议 多播组的组织网络协议
预留 49152 到 (4) TCP - 如果应用程序无法确定本地端口号,则可使用
  65535 (4) UDP   动态端口范围主动连接端点。

如果需使用此类通信,则需在 Windows 防火墙

        中激活这些端口。

1  Windows 分配的接口的默认设置:81

2  注:基于开放式用户通信,可直接访问 UDP/TCP。用户必须遵守 IANA (Internet Assigned Numbers

Authority,互联网数字分配机构) 的端口限制/定义。

3 请勿将其它协议已用端口分配给 OUC。

4  请勿将其它 Windows 应用已用端口分配给 OUC。

 

 

 

 

除 S7-1500 通信模块(如 CP 1543-1)表格已列示的协议之外,下表中列出了支持的更多协议。

 

表格 3- 4 S7-1500 通信模块的层和协议

 

协议 端口号 (2) 链路层

(4) 传输层

功能 说明
PROFINET/工业以太网协议
面向连接的通信协议
FTP

文件传输协议

20(数据)

21(控制)

(4) TCP 文件传输协议 FTP 用于传输文件(仅与 CP 1543-1 连接)。
SecureFTP

文件传输协议

20(数据)

21(控制)

(4) TCP 文件传输协议 SecureFTP 用于通过 TSL 连接传输文件(仅与

CP 1543-1 连接)。

DHCP

主机动态配置协议

68 (4) UDP 主机动态配置协议 DHCP 用于在启动 IE 接口时从 DHCP 服务器检索 IP 地址套件。
安全 NTPv3

网络时间协议

123 (4) UDP 网络时间协议 安全 NTP 用于同步 CP 1543-1 内部系统时钟与 NTP 服务器。
SNMP

简单网络管理协议

161

162(陷阱)

(4) UDP 简单网络管理协议 SNMPv3 允许 CP 1543-1 通过认证从

SNMPv3 代理读取网络管理数据 (MIB)。

有关 S7-1500 MFP 的特殊注意事项:

端口 111:S7-1500 MFP 通过端口 111 与 NFS 服务进行内部通信。

  • 连接资源概览
  • 连接资源概览

连接资源

某些通信服务需要进行连接。连接需要占用所用 CPU、CP 和 CM 中的资源(例如,

CPU 操作系统中的存储区域)。大多数情况下,每个 CPU/CP/CM 都将占用一个连接。在 HMI 通信中,每个 HMI 连接最多需要 3 个连接资源。

具体可用的连接资源,取决于所用的 CPU、CP 和 CM,且不得超出自动化系统中定义的上限。

站中的可用连接资源

站中最大的可用资源数量取决于 CPU。

每个 CPU 都会为 PG、HMI 和 Web 服务器通信预留一定数量的连接资源。此外,还会为

SNMP、电子邮件连接、HMI、S7 通信以及开放式通信提供相应数量的资源。

何时占用连接资源?

连接资源的占用时间,取决于连接建立、自动连接、编程或组态的方式(参见“建立连接

(页 33)”部分)。

更多信息

有关连接资源占用以及连接资源在 STEP 7 中显示的更多信息,请参见“连接资源

(页 258)”部分。

3.4 建立连接

 

自动连接

如果将 PG/PC 接口物理连接到 CPU 的接口,并通过 STEP 7 中的“转至在线”(Go online)

对话框进行了接口分配,则 STEP 7 将自动建立连接(例如,PG 或 HMI 连接)。

建立编程连接

在 STEP 7 的程序编辑器中,可根据所选 CPU 使用相应的通信指令(如 TSEND_C)建立编程连接。

指定连接参数(在巡视窗口、指令属性中)时,通过用户界面使得操作更为方便快捷。

建立组态连接

根据所选的 CPU 或软件控制器,可在 STEP 7 的“设备与网络”(Devices & networks) 编辑器中的网络视图内建立组态的连接。

图 3-2 通过组态建立连接

CPU 连接资源的影响

通常,可以选择通过组态建立连接或者通过编程建立连接。如果选择通过编程建立连接, 则将在数据传输结束后释放连接资源。与路由连接类似,编程的连接仍无法保证,也就是说,仅当资源可用时才会建立这类连接。建立组态的连接时,下载组态后资源处于可用状态,直至组态再次更改。因此,相应资源将预留,通过所组态的连接进行连接建立。在

CPU 巡视窗口中的“连接资源”(Connection resources) 表格中,简要列示了已使用的连接资源和仍然可使用的连接资源。

 

如何建立连接?

 

表格 3- 5 建立连接

 

连接 自动连接 通过编程建立连接 通过组态建立连接
编程设备连接 - -
HMI 连接 -
通过 TCP/IP 连接实现开放式通信 -
通过 ISO-on-TCP 连接实现开放式通信 -
通过 UDP 连接实现开放式通信 -
通过 ISO 连接实现开放式通信 -
通过 FDL 连接实现开放式通信 -
通过 Modbus TCP 连接进行通信 - -
电子邮件连接 - -
FTP 连接 - -
S7 连接* - -

*请注意,S7-1500 CPU 固件版本低于 V2.0 时,必须在 CPU 的属性中启用 PUT/GET 通信。有关该主题的更多信息,请参见 STEP 7 在线帮助。

 

 

 

更多信息

 

有关连接资源占用以及连接资源在 STEP 7 中显示的更多信息,请参见“连接资源

(页 258)”部分。

 

 

 

3.3 数据的一致性

 

定义

在数据传输中,数据一致性至关重要。因此在组态通信任务时,必需注意。否则,可能导致故障发生。

同步运行中无法修改的数据区又称为一致性数据区。即,在超出一致性数据区所允许最大空间的连续数据区中,可同时包含新数据和旧数据。

一个通信指令中断时(如,由高优先级的硬件中断 OB 进行中断),将导致不一致现象。这会导致数据区域传输中断。如果 OB 中的用户程序对通信指令尚未处理的数据进行了更改,则每次传输的数据将不同:

下图显示的数据区空间小于一致性数据区允许的最大空间。此时,可确保进行数据访问时,用户程序不会中断数据区域的传输,从而有效避免了数据变更。

源数据区小于一致性数据区允许的最大空间 (②)。该指令将数据一同传输到目标

数据区中。

一致性数据区的最大空间

图 3-3 数据的一致性传输

下图显示的数据区空间大于一致性数据区允许的最大空间。在这种情况下,数据会因传输中断而发生更改。将该数据区传输到多个地方时,也可能会发生传输中断。如果因传输中断而导致数据更改,则每次传输的数据将不同。

源数据区大于一致性数据区允许的最大空间 (③)。在 T1 时刻,该指令仅将源数据

区中大小与一致性数据区相同的数据量传送到目标数据区中。

在 T2 时刻,该指令将源数据区中其余的数据传输到目标数据区中。传输完成时,

目标数据区中包含不同时刻传输的数据。此时,如果源数据区中的数据发生变更, 则会导致数据不一致。

一致性数据区的最大空间

图 3-4 传输的数据量超出了一致性数据的最大数量

数据不一致的示例

下图举例说明了数据过程中数据的变更。目标数据区中包含不同时刻传输的数据。

一致性数据区的最大空间

图 3-5 示例:在数据传输过程中,数据发生变更

S7-1500 中,系统特定的一致性数据的最大数量:

如果遵循系统中所指定的一致性数据的最大数量,则不会产生不一致现象。在程序循环过程中,S7-1500 最多可将块中 512 个字节的通信数据一致性地复制到或传出用户存储

器。超出该数据区时,将无法确保数据的一致性。如果要定义确保数据的一致性,则

CPU 内用户程序中的通信数据长度不能超过 512 个字节。之后,即可在 HMI 设备上通过

Read/Write 变量对这些数据进行一致性访问。

如果需一致性传输的数据量超出了系统指定的数据最大量,则需在应用程序中使用特殊措施确保数据的一致性。

确保数据一致性

通过指令访问公共数据:

如果在用户程序中通过一些通信指令访问公共数据(如 TSEND/TRCV),则可使用诸如

“DONE”等参数对该数据区进行访问。因此,在用户程序中使用指令进行数据传输,可确保通信过程中数据区中数据的一致性。

 

说明 

用户程序中采取的具体措施

要确保数据一致性,可将待传输数据复制到一个单独的数据区(如,全局数据块)中。用户程序继续传输源数据时,可通过通信指令将一致性地传输单独数据区中存储的数据。

在复制过程中,系统将使用相应的不可中断型指令,如 UMOVE_BLK 或 UFILL_BLK。这些指 16 KB 的数

 

使用 PUT/GET 指令或通过 HMI 通信进行 Write/Read 操作:

使用 PUT/GET 指令进行 S7 通信或通过 HMI 通信进行 Write/Read 操作时,编程或组态中需考虑一致性数据区的大小。将 S7-1500 用作服务器时,用户程序没有可用于数据传输的指令。在用户程序运行过程中,可通过 PUT/GET 指令进行数据交换,对 S7-1500 进行更新。但在循环执行用户程序时,不支持对数据进行一致性传输。待传送数据区的长度应小于 512 个字节。

更多信息

  • 有关通信模块所支持的一致性数据最大数量,请参见设备手册中的相应技术规范。

有关数据一致性的更多信息,请参见 STEP 7 在线帮助中的指令说明。

3.5 安全通信

3.6.1 安全通信的基础知识

在 STEP 7 (TIA Portal) V14 及更高版本和固件版本 V2.0 及更高版本的 S7-1500 CPU

中,设计了大量的安全通信选项。

简介

“安全”(secure) 属性用于识别以 Public Key Infrastructure (PKI) 为基础的通信机制(例  如,RFC 5280 ,用于 Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List Profile)。Public Key Infrastructure (PKI) 是一个可签发、发布和检查数字证书的系统。PKI 通过签发的数字证书确保计算机通信安全。如果 PKI 采用非对称密钥加密机制,则可对网络中的消息进行数字签名和加密。

在 STEP 7 (TIA Portal) 中组态用于安全通信的组件,将使用一个非对称密钥加密机制,使用一个公钥 (Public Key) 和一个私钥 (Private Key) 进行加密。并使用 TLS (Transport Layer Security) 作为加密协议。TLS 是 SSL (Secure Sockets Layer) 协议的后继协议。

安全通信的目的

安全通信可用于实现以下目标:

  • 机密性

即,数据安全/窃听者无法读取。

  • 完整性

即,接收方接收到的消息与发送方发送的消息完全相同,未经更改。消息在传送过程中未经更改。

  • 端点认证

即,端点通信伙伴确实是声称为参与通信的本人。对伙伴方的身份进行检查。

在过去,这些目标通常仅与 IT 和计算机网络相关。但如今,包含有敏感数据的工业设备和控制系统也开始面临相同的信息安全高风险。这是因为,这些设备它们同样实现了网络互联,因而必须满足严格的数据交换安全要求。

在过去,往往会采用单元保护机制,通过防火墙或 VPN 连接保护自动化单元安全(如, 使用安全模块),而如今同样如此。

但是,通过企业内部网或公共网络以加密形式将数据传送到外部计算机变得越来越重要。

安全通信的通用原则

无论采用何种机制,安全通信都基于 Public Key Infrastructure (PKI) 理念,包含以下组成部分:

  • 非对称加密机制:
    • 使用公钥或私钥对消息进行加密/解密。
    • 验证消息和证书中的签名。

发送方/认证机构通过自己的私钥对消息/证书进行签名。接收方/验证者使用发送方/  认证机构的公钥对签名进行验证。

  • 使用X.509 证书传送和保存公钥。
    • X.509证书是一种数字化签名数据,根据绑定的身份对公钥进行认证。
    • X.509证书中还包含有公钥使用的详细说明或使用限制。例如,证书中公钥的生效日期和过期日期。
    • X.509证书中还包含证书颁发方的安全相关信息。

在后续的章节中,将简要介绍在 STEP 7 (TIA Portal) 中管理证书和编写 secure Open User Communication (sOUC) 通信指令等所需的基本知识。

使用 STEP 7 进行安全通信:

在 STEP 7 V14 及其更高版本中,提供了安全通信的组态和操作所需的 PKI。示例:

  • 基于TLS (Transport Layer Security) 协议,将 Hypertext Transfer Protokoll (HTTP)转换成 Hypertext Transfer Protokoll Secure (HTTPS)。由于 HTTPS 中集成了 HTTP和 TLS 协议,因此在相应的 RFC 中,又称为“HTTP over TLS”。在该浏览器中,可清楚地查看到所用的协议为 HTTPS:浏览器地址栏中 URL 为“https://”,而非“http://”。在大多数浏览器中,这类的安全连接将突出显示。
  • 将Open User Communication 转换为 secure Open User Communication。这种通信方式的底层协议同样为 TLS。
  • 电子邮件服务提供商同样支持基于“SecureSMTP over TLS”协议进行访问,从而提高电子邮件通信的安全性。

下图显示了通信层中的 TLS 协议。

图 3-6 通信层中的 TLS 协议。

采用 OPC UA 的安全通信

固件版本 V2.0 及更高版本的 S7-1500 CPU 中,具有 OPC UA 服务器功能。OPC UA

Security 中也涉及使用 X.509 数字证书进行认证、加密以及数据完整性检查,并且同样采用 Public Key Infrastructure (PKI)。根据应用的具体要求,端点安全可选择不同安全等 级。有关 OPC UA 服务器的功能说明,请参见“OPC UA 通信 (页 139)”部分。

3.6.1 通过加密确保数据机密

消息加密是数据安全的一项重要措施。在通信过程中,即使加密的消息被第三方截获,这些潜在的侦听者也无法访问所获取的信息。

在进行消息加密时,采用了大量的数学处理机制(算法)。所有算法都通过一个“密钥”参数,对消息进行加密和解密。

  • 算法 + 密钥 + 消息 => 密文
  • 密文 + 密钥 + 算法 =>(明文)消息

对称加密

对称加密的关键在于,两个通信伙伴都采用相同的密钥对消息进行加密和解密,如下图所示:Bob 使用的加密密钥与 Alice 使用的解密密钥相同。即,我们常说的双方共享一个密钥,可通过该密钥对消息进行加密和解密。

Bob 采用对称密钥对消息进行加密
Alice 采用对称密钥对加密后的消息进行解密

图 3-7 对称加密

该过程类似于一个公文箱,发送方和接收方使用同一把钥匙打开或锁上该公文箱。

  • 优势:对称加密算法(如,AES、AdvancedEncryption Algorithm)的速度较快。
  • 缺点:如何将密钥发送给接收方,而不会落到其他人手中?此为密钥分发问题。如果截获的消息数量足够大,则可推算出所用的密钥,因此必须定期更换。

如果通信伙伴比较多,则需分发的密钥数量巨大。

非对称加密

在非对称加密技术中使用一对密钥:一个公钥和一个私钥。与 PKI 一同使用时,又称为公钥加密系统,简称 PKI 加密系统。通信伙伴(下图中的 Alice)拥有一个私钥和一个公钥。公钥对所有人公开。即,任何通信伙伴都可以获得该公钥。拥有公钥的通信伙伴可对发送给 Alice 的消息进行加密。即下图中的 Bob。

Alice 的私钥为她自己所有而不公开,用于对发送给她的密文进行解密。

Alice 将其公钥提供给 Bob。无需采取防范措施即可实现该过程:只要确定采用的是 Alice 的公钥,所有人都可以发消息给 Alice。
Bob 使用 Alice 的公钥对消息进行加密。
Alice 使用私钥对 Bob 发送的密文进行解密。由于仅 Alice 拥有私有且未公开,因

此只有她才能对该消息进行解密。通过私钥,Alice 可以对使用她所提供的公钥加密的消息进行解密,而不仅仅只是 Bob 的消息。

图 3-8 非对称加密

该系统与邮箱类似,所有人都可以向邮箱发送消息,但只有拥有密钥的人才能删除这些消息。

  • 优势:使用公钥加密的消息,仅私钥拥有者才能进行解密。由于在解密时需要使用另一密钥(私钥),而且加密的消息数量庞大,因此很难推算出解密密钥。这意味着, 公钥无需保持机密性,而这与对称密钥不同。

另一大优点在于,公钥的发布更为方便快捷。在非对称密钥系统中,接收方将公钥发送到发送方(消息加密方)时无需建立专用的安全通道。与对称加密过程相比,密钥管理工作量相对较少。

  • 缺点:算法复杂(如,RSA,以三位数学家Rivest、Shamir 和 Adleman 的名字的首字母命名),因此性能低于对称加密机制。

实际通信中的加密过程

在实际通信过程中(如,与 CPU Web 服务器通信和开发式用户安全通信),通常在相关的应用层之后使用 TLS 协议。例如,应用层采用的协议为 HTTP 或 SMTP,详细信息见前文所述。

例如,TLS (Transport Layer Security) 混合采用非对称加密和对称加密(混合加密)机制确保数据通过 Internet 进行安全传输,并支持以下子协议:

  • TLSHandshake Protocol,对通信伙伴进行身份验证,并在非对称加密的基础上对数据传输所需的算法和密钥进行协商
  • TLSRecord Protocol 采用对称加密机制对用户数据加密以及进行数据交换。

无论是非对称加密还是对称加密,这两种数据安全加密机制在安全性方面没有明显差异。数据安全等级取决于设置的参数,如所选密钥的长度等等。

 

 

加密使用不当

通过位串,无法指定公钥的身份。欺瞒者可使用他们自己的公钥声明为其他人。如果第三方使用该公钥将其认作是指定的通信伙伴,则将导致机密信息被窃取。之后,欺瞒者再使用自己的密钥对这些本消息进行解密,虽然这些消息本不应发送给他们。最终,导致敏感信息泄露,落入他人之手。

为了有效预防此类错误的发生,该通信伙伴必须确信与正确的通信伙伴进行数据通信。此类信任关系是通过 PKI 中的数字证书建立的。

3.6.1 通过签名确保数据的真实性和完整性

由能够截获服务器与客户端之间的通信并将自身伪装成客户端或服务器的程序实施的攻击称为中间人攻击。如果未能检测到这些程序的真实身份,则将造成诸如 S7 程序、CPU 中设定值等重要信息泄漏,进而导致设备或工厂遭受攻击。可使用数字证书避免此类攻 击。

在安全通信过程中,所用的数字证书符合 International Telecommunication Union (ITU)

的 X.509 标准。该证书用于检查(认证)程序、计算机或组织机构的身份。

如何通过证书建立信任关系

X.509 证书主要用于将带有证书的数据身份(如,电子邮件地址或计算机名称)与公钥中的身份绑定在一起。身份可以是个人、计算机,也可以是机器设备。

证书由证书颁发机构(Certificate Authority,CA)或证书主体签发。而 PKI 系统则指定了用户信任证书颁发机构及其所签发证书的规则。

 

证书认证过程:

  1. 要获取一份证书,需要向与证书颁发机构相关联的注册机构提交一份证书申请。
  2. 证书颁发机构将基于既定标准对该申请和申请人进行评估。
  3. 如果可以清晰识别申请人的身份,则证书颁发机构将签发一份已签名的证书进行确认。申请人现成为证书主体。

在下图中,对这一过程进行了简要说明。但不涉及 Alice 对该数字签名的检查过程。

图 3-9 由证书颁发机构对证书进行签名

自签名证书

自签名证书指,由证书主体而非独立的证书颁发机构签名的证书。示例:

  • 用户也可以自己创建证书并签名,对发送给通信伙伴的消息进行加密。在上述示例中,Bob(而非Twent)可以使用私钥对自己的证书进行签名。之后,Alice 将使用

Bob 的公钥检查该签名是否与 Bob 的公钥相匹配。该过程可用于简单的工厂内部数据加密通信。

  • 例如,根证书是一种由证书颁发机构(CA) 签署的自签名证书,其中包含证书颁发机构的公钥。

自签名证书的特性

自签名证书的证书主体“CN”(Common Name of Subject) 和“Issuer”属性相同:用户已完成对证书的签名。字段“CA” (Certificate Autority) 需设置为“False”;自签名证书不得用于对其它证书进行签名。

自签名证书未包含在 PKI 系统中。

证书内容

符合 X.509 V3 标准(同样用于 STEP 7 和 S7-1500 CPU)要求的证书通常包含以下元素:

  • 公钥
  • 证书主体(即,密钥持有者)的详细信息。如,CommonName (CN) of Subject 。
  • 各种属性,如序列号和有效期等等
  • 证书颁发机构(CA) 的数字签名,用于证实信息的正确性。除此之外,还包含以下扩展详细:
  • 指定公钥的使用范围(KeyUsage),如签名或密钥加密。

如在安全的开放式用户通信中,使用 STEP 7 创建一个新的证书,则可从可能的用途列表中选择相应的条目,例如“TLS”。

  • 指定Subject Alternative Name (SAN),用于与 Web 服务器进行安全通信 (HTTP over TLS),以确保 Web 浏览器地址栏中的证书同样属于该 URL 所指定的 Web 服务器。

如何生成并验证签名

非对称密钥可用于证书的验证:在“MyCert”证书示例中,介绍了具体的“签名”与“验证签名”过程。

生成签名:

  1. “MyCert”证书的签发者使用一个特定的哈希函数(例如,SHA-1,SecureHash

Algorithm),根据证书数据生成一个哈希值。

该 HASH 值是一个长度固定的位串。HASH 值长度固定的优势在于,签名的时间始终相同。

  1. 之后,证书的签发者再使用由这种方式生成的 HASH值和私钥,生成一个数字签名。通常采用 RSA 签名机制。
  2. 数字签名将保存在证书中。此时,证书已签名。验证一个签名:
  1. “MyCert”证书的认证方将获得签发者签发的证书和公钥。
  2. 使用签名时所用的哈希算法(例如,SHA-1),根据证书数据生成一个新的哈希值。
  1. 最后,再将由证书签发者公钥确定的 HASH值与签名算法进行比较,对签名进行检查。
  2. 如果签名通过检查,则表示证书主体的身份以及完整性(即,证书内容的可靠性和真实性)均通过验证。拥有该公钥(即,证书颁发机构的证书)的任何人均可对该签名进行检查,并确认该证书确实由该证书颁发机构签发。

下图显示了 Alice 如何采用 Twent(代表证书颁发机构,CA)证书中的公钥,验证 Bob 的公钥签名。因此,在验证时仅需检查证书颁发机构所颁发证书的可用性。验证会在 TLS 会话中自动执行。

图 3-10 使用证书颁发机构的证书公钥对证书进行验证

签名消息

在上文中介绍的签名与验证机制,同样使用 TLS 会话对消息进行签名和验证。

如果发送方基于一条消息生成一个哈希值并使用私钥对该哈希值进行签名,之后将其添加到原始消息中,则消息接收方即可对消息的完整性进行检查。接收方使用发送方的公钥对该 HASH 值进行解密,并将其与所收到消息中的 HASH 进行比较。如果这两个值不同, 则表示该消息在传送过程中被篡改。

Root 证书的证书链

PKI 证书通常按层级进行组织:层级顶部由根证书构成。Root 证书并非由上证书颁发机构签名。Root 证书的证书主体与证书的签发者相同。根证书享受绝对信任。它们构成了信任“点”,因此可作为接收方的可信证书。此类证书存储在专门存储受信证书的区域。

基于该 PKI,Root 证书可用于对下级证书颁发机构颁发的证书(即,所谓的中间证书)进行签名。从而实现从 Root 根证书到中间证书信任关系的传递。由于中间证书可对诸如

Root 证书之类的证书进行签名,因此这两种证书均称为“CA 证书”

这种证书签名层级可通过多个中间证书进行延伸,直至最底层的实体证书。最终实体证书即为待识别用户的证书。

验证过程则反向贯穿整个层级结构:综上所述,先通过签发者的公钥确定证书签发者并对其签名进行检查,之后再沿着整条信任链确定上证书签发者的证书,直至到达根证 书。

结论:无论组态何种安全通信类型,每台设备中都必需包含一条到 Root 证书的中间证书链(即证书路径),对通信伙伴的最低层实体证书进行验证。

3.6.1 使用 STEP 7 管理证书

STEP 7 V14 及更高版本与 S7-1500-CPU 固件版本 V2.0 及更高版本一同使用时,持 Internet PKI (RFC 5280)。因此 S7-1500 CPU 可与同样支持 Internet PKI 的设备进行数据通信。

如,可使用 X.509 证书验证上文中所介绍的证书。

STEP 7 V14 及以上版本使用的 PKI 与 Internet PKI 相似。例如,证书吊销列表 (CRL) 不受支持。

创建或分配证书

对于具有安全特性的设备(如,S7-1500 CPU 固件版本 V2.0 及以上版本),可在 STEP

  • 中根据不同应用创建特定的证书。

在 CPU 巡视窗口的以下区域内,可创建新的证书或选择现有的证书:

  • “保护和安全> 证书管理器”(Protection & Security > Certificate manager)- 用于生成和分配所有类型的证书。生成证书时,将预设开放式用户安全通信的 TLS 证书。
  • “Web服务器 > 服务器安全”(Web server > Server security) - 用于生成和分配 Web 服务器证书。
  • “OPCUA > 服务器 > 安全”(OPC UA > Server > Security)- 用于生成和分配 OPC UA

证书。

图 3-11 STEP 7 中 S7-1500 CPU 的安全设置

保护与安全 > 证书管理器(Protection & Security > Certificate manager) 区域的特性

在巡视窗口中,只有该区域内才能进行全局(即,项目级)和局部(即,设备特定)证书管理器切换(选项“使用证书管理器的全局安全设置”(Use global security settings for certificate manager))。该选项确定了您是否有权访问项目中的所有证书。

  • 如果在全局安全设置中使用证书管理器,则只能访问 CPU的局部证书存储器。例如,无法访问所导入的证书或 Root 证书。如果没有这些证书,则可用功能将受到限制。例如,只能生成自签名证书。
  • 如果在全局安全设置中使用证书管理器并以管理员身份登录,则有权访问全局(项目级)证书存储器。例如,可为 CPU分配所导入的证书,也可创建由项目 CA(项目的证书颁发机构)签发与签名的证书。

下图显示了在 CPU 的巡视窗中激活“使用证书管理器的全局安全设置”(Use global security settings for the certificate manager) 选项后,项目树中的“全局安全设置”(Global security

settings) 显示。

双击项目树中全局安全设置下的“用户登录”(User login) 并进行登录时,则将显示“证书管理器”(Certificate manager) 行。

双击“证书管理器”(Certificate manager) 行,则可访问项目中的所有证书。这些证书分别位于选项卡“CA”(证书颁发机构)、“设备证书”(Device certificates) 和“可信证书与 Root证书颁发机构”(Trusted certificates and root certificate authorities) 内。

私钥

生成设备证书和服务器证书(最终实体证书)时,STEP 7 将生成私钥。私钥的加密存储的位置,取决于证书管理器中是否使用全局安全设置:

  • 如果使用全局安全设置,则私钥将以加密形式存储在全局(项目级)证书存储器中。
  • 如果未使用全局安全设置,则私钥将以加密形式在局部(CPU特定的)证书存储器中。

解密数据时所需的私钥将显示在全局安全设置中证书管理器中“设备证书”(Device certificates) 选项卡的“私钥”(Private key) 列中。

下载硬件配置时,同时会将设备证书、公钥和私钥下载到 CPU 中。

 

注意
“使用证书管理器的全局安全设置”(Use global security settings for certificate manager)选项会影响之前所用的私钥:如果创建证书时未使用证书管理器中的全局安全设置,而且更改了使用该证书管理器的选项,则将导致私钥丢失且证书 ID 发生变更。系统会发出

警告,提示您注意这种情况。因此,在开始组态项目时,需指定证书管理器选项。

 

 

 

3.6.1 证书管理示例。

如前文所述,每种类型的安全通信都需要使用证书。在以下章节中,将举例说明如何通过

STEP 7 进行证书管理,以满足开放式用户安全通信的要求。

不同通信伙伴所用的设备往往不同。为各个通信伙伴提供所需证书的相应操作步骤也各不相同。通常需使用 S7-1500 CPU 或 S7-1500 软件控制器,固件版本 V2.0 及以上版本。

基本规则为:

建立安全连接(“握手”)时,通信伙伴通常仅传送最终实体证书(设备证书)。

因此,验证已传送设备证书所需的 CA 证书必须位于相应通信伙伴的证书存储器中。

 

两个 S7-1500 CPU 之间安全的开放式用户通信

两个 S7-1500 CPU(PLC_1 和 PLC_2)之间通过开放式用户安全通信进行数据交换。使用 STEP 7 生成所需的设备证书,然后将其分配给 CPU,如下所述。

STEP 7 项目证书颁发机构(项目的 CA)用于对设备证书进行签名。

在用户程序中根据证书 ID 对证书进行引用(TCON 通信指令组合相关的系统数据类型, 例如 TCON_IPV4_SEC)。在生成或创建证书时,STEP 7 将自动分配证书 ID。

操作步骤

STEP 7 自动将所需的 CA 证书与硬件配置一同加载到通信伙伴的 CPU 中,确保两个

CPU 中满足证书验证需求。因此,用户只需生成相应 CPU 的设备证书,其余操作将由

STEP 7 完成。

  1. 在“保护和安全”(Protection& Security) 区域中,标记 PLC_1 并激活“使用证书管理器的全局安全设置”(Use global security settings for certificate manager) 选项。
  2. 在项目树的“全局安全设置”(Globalsecurity settings) 区域中,以 user 身份进行登录。对于新项目,首次登录时的身份为“Administrator”。
  3. 返回“保护与安全”(Protection& Security) 区域的 PLC-1 中。在“设备证书”(Device

certificates) 表格中,单击“证书主体”(Certificate subject) 列的一个空行,添加新的证书。

  1. 在下拉列表中,选择一个证书并单击“添加”(Add)按钮。

“创建证书”(Create Certificate) 对话框随即打开。

  1. 保留该对话框中的默认设置。这些设置专用于开放式用户安全通信(用途:TLS)。

提示:补充证书主体的默认名称(此时,为 CPU 名称。为了便于区分,需管理大量设备证书时,建议保留系统默认的 CPU 名称。

示例:PLC_1/TLS 变为 PLC_1-SecOUC-Chassis17FactoryState。

  1. 编译组态。

设备证书和 CA 证书是组态的一部分。

  1. 对于 PLC_2,重复以上操作步骤。

在下一个操作步骤中,需创建用户程序进行数据交换,并加载组态和该程序。

使用自签名证书而非 CA 证书

创建设备证书时,可选择“自签名”(Self-signed) 选项。即使在未登录,也可创建自签名证书进行全局安全设置。但不建议执行该操作。这是因为,采用这种方式创建的证书不会保存在全局证书存储器中,也无法直接分配给伙伴 CPU。

如上文所述,选择证书的主体名称时需小心谨慎,以确保为设备指定的证书正确无误。

对于自签名证书,无法通过 STEP 7 项目的 CA 证书进行验证。要确保自签名证书可通过验证,需要将通信伙伴的自签名证书加入每个 CPU 的可信伙伴设备列表中。为此,必须激活选项“使用证书管理器的全局安全设置”(Use global security settings for certificate

manager),并以 user 身份登录全局安全设置。

要将通信伙伴的自签名证书添加到 CPU 中,请按以下步骤操作:

  1. 选择PLC_1,并导航到“保护与安全”(Protection & Security) 区域中的“伙伴设备证书”(Certificates of partner devices) 表格处。
  2. 在“设备证书”(Devicecertificates) 表格中,单击“证书主体”(Certificate subject) 列的一个空行,添加新的证书。
  3. 在下拉列表中选择该通信伙伴的自签名证书,并进行确认。

在下一个操作步骤中,需创建用户程序进行数据交换,并加载组态和该程序。

S7-1500 CPU作为 TLS 客户端)与外部设备(作为 TLS 服务器)之间的开放式用户安全通信两个设备将通过 TLS 连接或 TLS 会话进行数据交换(如,配方、生产数据或质量数据):

  • S7-1500CPU (PLC_1) 作为 TLS 客户端;该 CPU 采用开放式用户安全通信
  • 外部设备(如,制造执行系统(MES))作为 TLS 服务器

S7-1500 CPU 作为 TLS 客户端,与 MES 系统建立 TLS 连接/会话。

TLS 客户端
TLS 服务器

验证 TLS 服务器时,S7-1500 CPU 需要具有 MES 系统的 CA 证书:用于验证证书路径的 Root 证书和中间证书(如果适用)。

需要将这些证书导入 S7-1500 CPU 的全局证书存储器中。要导入通信伙伴的证书,请按照以下步骤进行操作:

  1. 打开项目树中全局安全设置下的证书管理器。
  2. 选择待导入证书的相应表格(可信证书和Root 证书颁发机构)。
  3. 右键单击该表,打开快捷菜单。单击“导入”(Import),导入所需证书或所需CA 证书。

导入证书时,系统将为该证书指定一个证书 ID,并在下一步操作中将其指定给一个模块。

  1. 选择PLC_1,并导航到“保护与安全”(Protection & Security) 区域中的“伙伴设备证书”(Certificates of partner devices) 表格处。
  2. 单击“证书主体”(Certificatesubject) 列中的空行,添加所导入的证书。
  3. 在下拉列表中选择该通信伙伴所需的 CA证书,并进行确认。

MES 系统还需要提供 CPU 的设备证书,用于对该 CPU 进行验证(即,TLS 客户端)。此时,MES 系统中应包含该 CPU 的 CA 证书。如果要将证书导入 MES 系统,则需先从

CPU 的 STEP 7 项目中导出该 CA 证书。请按以下步骤操作:

  1. 打开项目树中全局安全设置下的证书管理器。
  2. 选择待导出证书的匹配表(CA证书)。
  3. 右键单击所选择的证书,打开快捷菜单。
  4. 单击“导出”(Export)。
  5. 选择证书的导出格式。

在下一个操作步骤中,需创建用户程序进行数据交换,并加载组态和该程序。

S7-1500 CPU(作为 TLS 服务器)和外部设备(作为 TLS 客户端)之间安全的开放式用户通信

如果将 S7-1500 CPU 用作 TLS 服务器,并且外部设备(如,ERP 系统(企业资源规划系统))建立了 TLS 连接/会话,则需要具有以下证书:

  • 对于 S7-1500CPU,需使用私钥生成一个设备证书(服务器证书),并随硬件配置一同下载到

S7-1500 CPU 中。生成服务器证书时,需使用选项“由证书颁发机构签名”(Signed by certificate authority)。

密钥交换需要使用私钥,如示例“基于 TLS 的 HTTP”的图所示。

  • 对于 ERP系统,需先导出 STEP 7 项目中的 CA 证书,然后再将其导入/加载到 ERP

系统中。基于 CA 证书,ERP 系统在建立 TLS 连接/会话时将检查从 CPU 传送到

ERP 系统的 S7-1500 服务器证书。

TLS 服务器
TLS 客户端

图 3-12 S7-1500 CPU 与 ERP 系统间的 OUC 安全通信

相关操作步骤,请参见上文介绍。

图 3-12 S7-1500 CPU 与 ERP 系统间的 OUC 安全通信

相关操作步骤,请参见上文介绍。

与邮件服务器进行开放式用户安全通信 (SMTP over TLS)

S7-1500 CPU 可使用通信指令 TMAIL-C 与邮件服务器建立安全连接。

系统数据类型 TMail_V4_SEC 和 TMail_QDN_SEC 可确定电子邮件服务器的伙伴端口,并通过“SMTP over TLS”协议访问电子邮件服务器。

图 3-13 S7-1500 CPU 与邮件服务器间的 OUC 安全通信

要建立安全的邮件连接,则需将电子邮件服务器(提供方)的根证书和中间证书导入 S7- 1500 CPU 的全局证书存储器中。基于这些证书,CPU 在建立 TLS 连接 / 会话时将检查由邮件服务器发送的服务器证书。

要导入邮件服务器的证书,请按以下步骤操作:

  1. 打开项目树中全局安全设置下的证书管理器。
  2. 选择待导入证书的相应表格(可信证书和Root 证书颁发机构)。
  3. 右键单击该表,打开快捷菜单。单击“导入”(Import),导入所需证书或所需CA 证书。

导入证书后,系统将为该证书指定一个证书 ID,并在下一步操作中将其指定给一个模块。

  1. 选择PLC_1,并导航到“保护与安全”(Protection & Security) 区域中的“伙伴设备证书”(Certificates of partner devices) 表格处。
  2. 单击“证书主体”(Certificatesubject) 列中的空行,添加所导入的证书。
  3. 在下拉列表中选择该通信伙伴所需的 CA证书,并进行确认。

在下一个操作步骤中,需创建该 CPU 中电子邮件客户端功能的用户程序,并加载组态与该程序。

3.6.1 示例:基于 TLS HTTP

下图显示了如何使用后以下机制在 S7-1500 CPU 的 Web 浏览器和 Web 服务器之间建立安全通信。

首先需要在 STEP 7 中更改“仅允许 HTTPS 访问”(Permit access only through HTTPS) 选项。在 STEP 7 V14 及以上版本中,可能会影响 S7-1500 CPU(固件版本 V2.0 及以上版本)中 Web 服务器的服务器证书:服务器证书将在 STEP 7 的以上版本及更改版本中生成。

此外,在该示例中还显示了 PC 的 Web 浏览器端如何基于加密的 HTTPS 连接所调用

CPU 的 Web 服务器网站。

 

S7-1500 CPU(固件版本 V2.0 及以上版本)中 Web 服务器证书的应用

对于固件版本 V2.0 及以下版本的 S7-1500 CPU,设置 Web 服务器属性时,如果无特殊要求,需设置为“只允许通过 HTTPS 访问”(Permit access only with HTTPS)。

对于此类 CPU,无需进行证书处理;CPU 将自动为 Web 服务器生成所需证书。

对于固件版本 V2.0 及更高版本的 S7-1500 CPU,STEP 7 会为 CPU 生成服务器证书

(最终实体证书)。在 CPU 的属性中为 Web 服务器分配服务器证书(“Web 服务器 > 服务器安全”(Web server > Server security))。

由于服务器证书名称通常为系统预设,因此无需任何更改即可轻松完成 Web 服务器的组态:如果激活 Web 服务器和“仅允许 HTTPS 访问”(Permit access only with HTTPS) 选项,则 STEP 7 将在编译过程中使用默认名称生成一个服务器证书。

无论您是否在全局安全设置中使用证书管理器:STEP 7 中包含生成服务器证书所需的全部信息。

此外,还需确定服务器证书的相关特性。如,名称或有效期等。

加载 Web 服务器证书

加载硬件配置时,系统将自动加载 STEP 7 生成的服务器证书。

  • 如果在全局安全设置中使用证书管理器,则项目的证书颁发机构(CA证书)对 Web

服务器的服务器证书进行签名。在加载过程中,项目的 CA 证书也将自动加载。

  • 如果未在全局安全设置中使用证书管理器,则 STEP7 会生成服务器证书作为自签名证书。

通过 CPU 的 IP 地址对 CPU 的 Web 服务器进行寻址时,每次 CPU 中以太网接口的 IP 地址发生更改时,都必须生成新的服务器证书并加载(最终实体证书)。这是由于 CPU 的身份随 IP 地址一同更改。根据 PKI 规则,该身份必须进行签名。

如果使用域名(如,“myconveyer-cpu.room13.myfactory.com”)而非 IP 地址对 CPU 进行寻址,则可避免这一问题。为此,需通过 DNS 服务器对该 CPU 的域名进行管理。

为 Web 浏览器提供一份 Web 服务器的 CA 证书

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

有效的 Root 证书(证书颁发机构),可从 Web 服务器“简介”(Intro) Web 页面的“下载证书”(Download certificate) 中下载。

在 STEP 7 中,可采用另一种方式:使用证书管理器,将项目的 CA 证书导出到 STEP 7

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

安全通信的过程

 

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

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

图 3-14 基于 HTTPS 的通信握手

在本示例图中并不涉及 Alice 端(浏览器端)对 Web 服务器所发送证书的验证措施。

Alice 是否信任收到的 Web 服务器证书、信任该 Web 服务器的身份并接受数据交换,具体取决于验证结果。

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

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

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

Alice 的证书中心通常包含有所需的 Root 证书。安装 Web 浏览器时,将自动安装所有可信的 Root 证书。如果 Alice 没有 Root 证书,则需从证书颁发机构下载并安装到浏览器的证书颁发机构中。证书颁发机构还可以是该 Web 服务器所处的设备。

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

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

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

  1. Alice使用这些证书的公钥,对证书链中的签名进行验证。
  2. 对称密钥需已经生成并传送到 Web服务器中。
  3. 如果采用域名寻址Web 服务器,则 Alice 还必须根据 RFC 2818 中定义的 Internet PKI 规范验证该 Web 服务器的身份。由于该 Web 服务器的 URL(此时,为“Fully Qualified Domain Name”(FQDN))将保存到 Web 服务器的最终实体证书中,因此

Alice 可对该 Web 服务器的身份进行验证。如果字段“Subject Alternative Name”中的证书项与浏览器地址栏中的一致,则通过验证。

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

禁用 SNMP

要禁用 S7-1500 CPU 中某个集成接口的 SNMP 功能,请按以下步骤操作:

  1. 在 STEP7 中,创建一个包含数据记录 B071H 结构的数据块。

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

 

字节 元素 代码 说明
0 到 1 块 ID F003H 标头

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

2 到 3 块长度 8
4 版本 01 H
5 子版本 00 H
6 到 7 预留 - -
8 到 11 SNMP 控制器 禁用/启用 SNMP 如果要禁用 SNMP,请输入值

0。

如果要启用 SNMP,请输入值

1。

  1. 通过WRREC 指令,可将启动 OB (OB100) 中的数据记录 B071H 传送到 CPU 中。并将 CPU 中集成的接口作为硬件 ID。

3.6.1 示例:禁用 CPU 1516-3 PN/DP SNMP 功能

任务

如果网络中的安全规则不允许使用 SNMP,则需禁用 CPU 1516-3 PN/DP 的 SNMP 功能。

要求

  • CPU1516-3 PN/DP,固件版本 V2.0
  • STEP7 V14

解决方法

首先,创建一个包含数据记录 B071H 结构的数据块。下图显示了数据块“Deactivate SNMP”。数据块“Deactivate SNMP”中不仅包含数据记录 B071H,还包含用于传输该数据记录的其它变量。变量“snmp_deactivate”用于触发 WRREC 作业。该变量应放置在保持性存储区中,以便启动 OB (OB100) 也可使用该值。

图 3-15 示例:禁用 SNMP 的数据块

 

通过 WRREC 指令(写数据记录),可将启动 OB (OB100) 中的数据记录 B071H 传送到

CPU 1516-3 PN/DP 中。

在以下程序代码中,在 REPEAT UNTIL 循环中使用 WRREC 指令传输数据记录

B071H

ORGANIZATION_BLOCK "Startup"

TITLE = "Complete Restart"

{ S7_Optimized_Access := 'TRUE' } VERSION : 0.1

BEGIN REPEAT

"WRREC_DB_1"

(REQ := "Deactivate SNMP".snmp_deactivate,

//Transfer data record INDEX:=16#B071,

//Data record number for SNMP deactivation ID:="Local~PROFINET_interface_1",

//any integrated PROFINET Interface DONE => "Deactivate SNMP".snmp_done, ERROR => "Deactivate SNMP".snmp_error, STATUS => "Deactivate SNMP".snmp_status, RECORD := "Deactivate SNMP".snmp_record)

//Data record

UNTIL "Deactivate SNMP".snmp_done OR "Deactivate SNMP".snmp_error

END_REPEAT; END_ORGANIZATION_BLOCK

使用程序代码

有关完整的程序代码,请访问这里。

要在项目中用于该程序代码,请按以下步骤操作:

  1. 使用快捷键Ctrl+A 和 Ctrl+C,将完整的程序代码复制到剪贴板中。
  2. 打开文本编辑器(如,“Editor”)。
  3. 使用快捷键Ctrl+V,将剪贴板中的内容粘贴到文本编辑器中。
  4. 将文档另存为scl 文件,如 SNMP_DEACT.scl。
  5. 在 STEP7 中打开项目。
  6. 将该 scl文件作为外部资源导入。

有关导入外部源文件的更多信息,请参见 STEP 7 在线帮助。

  1. 生成启动OB 和数据块。(右键单击该 scl 文件,选择快捷菜单:“从源生成块”(Generate blocks from source))

重新启用 SNMP

只需对以上程序代码进行少量改动,即可启用 SNMP。

在用户程序中,将变量 "Deactivate SNMP".snmp_record.SNMPControl 的值赋值为“1”:

"Deactivate SNMP".snmp_record.SNMPControl := 1;

SNMP 将在 CPU 下一次启动时重新启用。

PG 通信

特性

使用 PG 进行通信时,CPU 或其它具备通信功能的模块可在工程师站进行数据交换(例如,PG、PC)。可以通过 PROFIBUS 和 PROFINET 子网进行数据交换。此外,还支持

S7 子网之间的网关。

PG 通信具有装载程序和组态数据、运行测试以及评估诊断信息所需的功能。这些功能集成在具有通信功能的模块的操作系统中。

PG/PC 可以在线连接到一个 CPU。PG/PC 同时可操作最多 4 个在线连接(例如,连接 4

个 CPU)。

要求

  • 编程设备/PC与具有通信功能的模块进行物理连接。
  • 如果需要通过 S7路由来访问具有通信功能的模块,则必须在参与的站(S7 路由器和端点)中装载硬件组态。

在线连接步骤

若要实现编程设备通信,必须建立与 CPU 的在线连接:

  1. 在 STEP7 的项目树中选择 CPU。
  2. 选择“在线> 转至在线”(Online > Go online) 菜单命令。
  3. 在“转至在线”(Goonline) 对话框中,针对在线连接进行以下设置:
    • 在“编程设备/PC接口类型”(Type of PG/PC interface) 下拉列表中,选择接口类型

(如 PN/IE)。

  • 在“PG/PC接口”(PG/PC interface) 下拉列表中,选择待建立在线连接的 PG/PC 接口(如,工业以太网卡)。
  • 从“连接到接口/子网”(Connectionto interface/subnet) 下拉列表,选择用于将编程设备/PC 物理连接的接口或 S7 子网。
  • 如果可以通过S7 路由器(网关)访问具有通信功能的模块,请从“第一网关”(1st

Gateway) 下拉列表选择用于连接相关子网的 S7 路由器。

  1. 单击“开始搜索”(Startsearch)。

PG 通信可寻址的所有设备随后都将显示在表格“目标子网中的兼容设备”(Compatible devices in target subnet) 中。

  1. 在表格“目标子网中的兼容设备”(Compatibledevices in the target subnet) 中,选择相应的 CPU,并通过“转至在线”(Go online) 进行确认。

更多信息

有关“转至在线”(Go online) 的信息,请参见 STEP 7 的在线帮助。

HMI 通信

特性

基于 HMI 通信,CPU 可通过 PROFINET 或 PROFIBUS DP 接口与一个或多个 HMI 设备

(如,HMI 精简面板/精智面板/移动面板)进行数据交换,进行操作员监控。通过 HMI 连接进行数据交换。

如果要设置与 CPU 之间的多个 HMI 连接,可使用:

  • CPU 的 PROFINET 和 PROFIBUS DP 接口
  • 带相关接口的 CP 和 CM

建立 HMI 通信的操作步骤

拖放标签时,例如,将标签从全局数据块中拖入 HMI 画面或 HMI 标签表时,STEP 7 会自动建立 HMI 连接。此外,也可手动建立 HMI 连接。

要建立 HMI 连接,请按以下步骤操作:

  1. 在 STEP 7“设备与网络”(Devices & networks) 编辑器的网络视图中,可以在 CPU 的当前组态中组态 HMI 设备。
  2. 选择“连接”(Connections) 按钮,并从下拉列表中选择“HMI 连接”(HMI connection)。
  3. 在连接的断点(HMI 设备和 CPU)之间拖出一条线。端点将使用颜色突出显示。如果所需的 S7 子网尚不存在,则系统将自动创建。

通信

69 功能手册, 12/2017, A5E03735819-AF

  1. 在“连接”(Connections) 选项卡中,选择 HMI 连接所在的行。

在“属性”(Properties) 选项卡的“常规”(General) 区域中,将显示 HMI 连接的属性,其中一些属性可以更改。

|hardcopy|2014/10/14 16:59:29
z00334xp
MD19XY8C

图 5-1 建立 HMI 通信

  1. 将硬件配置下载到 CPU。
  2. 将硬件配置下载到 HMI 设备。

HMI 通信

更多信息

有关 HMI 的 S7 路由的信息,请参见“S7 路由 (页 251)”部分。有关设置 HMI 连接的信息,请参见 STEP 7 的在线帮助。

开放式用户通信 6

开放式用户通信概述

开放式用户通信的特性

通过开放式用户通信(也称为“开放式通信”),CPU 可以与具有通信功能的其它模块进行数据交换。开放式用户通信具有以下功能及特性:

      • 开放式标准(通信伙伴可以是两个 SIMATIC CPU,也可以是 SIMATIC CPU 和适当的第三方设备)。
      • 通过各种协议(在 STEP 7 中称为“连接类型”)进行通信
      • 可传输的数据结构上具有高度灵活性。因此,通信设备只要支持这些连接类型,都可以进行开放式数据交换。
      • 安全通信:要保护自动化系统的安全,可通过“开放式用户通信”进行安全数据交换。 使用“开放式用户安全通信”时,将对数据进行签名并加密:
      • 开放式用户通信适用于各种自动化系统中,具体参见相应手册中的技术规范。示例:
        • CPUCPU 的以太网接口(S7-1500、ET 200SP CPU、S7-1500 软件控制器、CPU 1516pro-2 PN)
        • 通信模块的 PROFINET/工业以太网接口(如,CP 1543-1, CM 1542-1)有关“开放式用户安全通信”的信息,请参见“安全通信 (页 40)”部分。

通信

功能手册, 12/2017, A5E03735819-AF 72

开放式用户通信协议
    1. 开放式用户通信协议

开放式用户通信协议

以下协议适用于开放式通信:

表格 6- 1 开放式通信的传输协议

传输协议 所用接口
TCP,符合 RFC 793 标准 PROFINET/工业以太网
ISO-on-TCP,符合 RFC 1006 (Class 4) 标准 PROFINET/工业以太网
ISO,符合 ISO/IEC 8073 标准 工业以太网(仅 CP 1543-1)
UDP,符合 RFC 768 标准 PROFINET/工业以太网
FDL PROFIBUS

表格 6- 2 开放式通信的应用协议

应用协议 所用传输协议
Modbus TCP TCP,符合 RFC 793 标准
电子邮件 TCP,符合 RFC 793 标准
FTP TCP,符合 RFC 793 标准

TCP、ISO-on-TCP、ISO、UDP

在进行数据传输之前,这些协议(UDP 除外)首先会建立与通信伙伴的传输连接。如需防止数据丢失,则可使用面向连接的协议。

采用 UDP 协议时,可以:

      • 通过 CPU 的 PROFINET 接口或 CP 1543-1 的工业以太网接口,向 PROFINET 上的一个设备进行单播或向所有设备进行广播。
      • 通过 CPU* 的 PROFINET 接口或 CP 1543-1 的 PROFINET/工业以太网接口向多播组的所有接收方进行多播。

* CPU 固件版本 V2.0 及以上版本,PROFINET 接口最多支持 5 个多播组

UDP 用户数据的最大长度:有关 UPD 所支持的用户数据最大长度,请参见相应手册中的技术数据。

开放式用户通信协议

通过 PROFIBUS 进行通信的协议:FDL

通过 FDL 连接(现场总线数据链路)的数据传输适用于将相关数据块传送到 PROFIBUS通信伙伴。这些通信伙伴基于符合 EN 50170 标准(第 2 卷)的 FDL 服务 SDA(需要确认的数据发送)对数据进行发送及接收。两个伙伴具有同样的权限;即,每个伙伴都可进行基于事件的发送和接收操作。

基于符合 EN 50170(第 2 卷)标准的 FDL 服务 SDN(无需确认的数据发送)时,可通过 FDL 执行以下操作:

      • 通过 CM 1542-5 的 PROFIBUS 接口,向 PROFIBUS 上的所有设备进行广播
      • 通过 CM 1542-5 的 PROFIBUS 接口,向一个多播组中的所有接收方进行多播

Modbus TCP

Modbus 协议是是一种基于主站/从站架构的通信协议,采用线形拓扑结构。在 Modbus

TCP(传输控制协议)中,数据作为 TCP/IP 数据包进行传输。只有用户程序中的相关指令才能对通信进行控制。

电子邮件和 FTP

例如,可使用邮件来发送数据块内容的附件(如过程数据)。

可以使用 FTP 连接(FTP = 文件传输协议)与 S7 设备之间双向传输文件。通信由客户端用户程序中的指令控制。

应用示例:SIMATIC S7-1500 CPU 的 MQTT 发布方

“消息队列遥测传输” (MQTT) 是一种 TCP/IP 层级的简单通信协议。该协议适用于在功能较少的设备间进行消息交换,以及通过非可靠网络进行数据传输。

在本应用示例中,通过一个函数块在 SIMATIC S7-1500 中实施 MQTT 协议。

开放式用户通信的指令

简介

通过以下方式,可基于相应的连接(如,TCP 连接)建立开放式用户通信:

      • 通过编程通信伙伴的用户程序
      • 通过在 STEP 7 的硬件和网络编辑器中组态连接

无论是通过编程建立连接还是通过组态建立连接,都需要在通信双方的用户程序中使用相应的指令发送和接收数据。

通过用户程序建立连接

如果通过编程建立连接,则需在用户程序中使用相应的指令建立和终止连接。

在某些应用领域中,通过用户程序建立连接而非通过硬件配置中的组态静态通信连接,优势更为明显。必要时,只需一个特定的应用程序指令即可建立连接。如果选择通过编程建立连接,则将在数据传输结束后还将释放连接资源。

每个通信连接中都需要一个数据结构,用于保存建立连接的参数(例如,TCP 中的系统数据类型“TCON_IP_v4”)。

系统数据类型 (SDT) 由系统提供,这种数据类型预定义的结构不能更改。

各个协议都有自己的数据结构(见下表)。这些参数将保存在系统数据类型(如,

TCON_IP_v4)的数据块中(“连接描述 DB”)。可通过以下两种方式创建带该数据结构的数据块:

      • 建议:在组态 TSEND_C、TRCV_C 和 TCON 指令的连接期间,在程序编辑器中的属性中自动创建数据块。
      • 手动创建这种数据块,进行参数分配并直接写入指令中进行以下连接时所需:
        • OUC 安全连接
        • 通过 DNS 进行连接
        • 电子邮件
        • FTP

可以在“连接描述 DB”中修改连接的参数。

通过编程建立连接时的协议、系统数据类型和可用指令

下表列出了开放式用户通信的通信协议以及相对应的系统数据类型和指令。

表格 6- 3 通过编程建立连接的指令

协议 系统数据类型 指令
TCP
  • TCON_QDN
  • TCON_IP_v4
建立连接并通过以下指令收/发数据:

  • TSEND_C/TRCV_C 或
  • TCON,TSEND/TRCV 或
  • TCON,TUSEND/TURCV

(可通过 TDISCON 终止连接)

ISO-on-TCP
  • TCON_IP_RFC
ISO,符合 ISO/IEC 8073

(Class 4) 标准

  • TCON_ISOnative1
  • TCON_Configured
UDP
  • TCON_IP_v4
  • TADDR_Param
  • TADDR_SEND_QDN
  • TADDR_RCV_IP
建立连接并通过以下指令收/发数据:

  • TSEND_C/TRCV_C
  • TUSEND/TURCV/TRCV

(可通过 TDISCON 终止连接)

FDL1
  • TCON_FDL
建立连接并通过以下指令收/发数据:

  • TSEND_C/TRCV_C 或
  • TCON,TSEND/TRCV 或
  • TCON, TUSEND/TURCV

(可通过 TDISCON 终止连接)

Modbus TCP
  • TCON_IP_v4
  • TCON_QDN
  • MB_CLIENT
  • MB_SERVER
协议 系统数据类型 指令
电子邮件
  • TMAIL_v4
  • TMAIL_v6
  • TMAIL_FQDN
  • TMAIL_C
FTP2
  • FTP_CONNECT_IPV 43
  • FTP_CONNECT_IPV 63
  • FTP_CONNECT_NA ME3
  • FTP_CMD

1 此协议仅适用于 CM 1542-5

2 此协议仅适用于 CP 1543-1

3 用户自定义数据类型

下表列出了开放式用户安全通信的各种不同连接方式以及相对应的系统数据类型和指令。

OUC 安全连接 系统数据类型 指令
S7-1500 CPU 作为 TLS 客户

端时,与第三方 PLC(TLS

服务器)进行 TCP 安全连接

S7-1500 CPU 作为 TLS 服务

器时,与第三方 PLC(TLS

客户端)进行 TCP 安全连接

  • TCON_QDN_SEC
  • TSEND_C/TRCV_C
  • TCON
在两个 S7-1500 站之建立

TCP 安全连接

  • TCON_IP_V4_SE C1
与邮件服务器建立安全连接 2
  • TMAIL_V4_SEC
  • TMAIL_QDN_SEC
  • TMAIL_C(V5.0 或更高版本)
建立 Modbus TCP 安全连接
  • TCON_IP_V4_SE C1
  • MB_Client
  • MB_Server
  • TCON_QDN_SEC

1 同样适用于 CP 1543-1

2 CP1543-1 也可使用 TMAIL_C (V4.0) 与邮件服务器建立安全连接

通过连接组态建立连接

通过连接组态建立连接时,需要在 STEP 7 的硬件和网络编辑器中指定连接的地址参数。数据发送和接收指令与通过编程建立连接的相同:

表格 6- 4 通过组态建立连接的发送/接收指令

协议 通过组态建立连接的数据发送/接收
支持的指令:
TCP 通过以下指令发送/接收数据:

  • TSEND_C/TRCV_C 或
  • TSEND/TRCV 或
  • TUSEND/TURCV
ISO-on-TCP
ISO,符合 ISO/IEC 8073

(Class 4) 标准

UDP 通过以下指令发送/接收数据:

  • TSEND_C/TRCV_C 或
  • TUSEND/TURCV
FDL 通过以下指令发送/接收数据:

  • TSEND_C/TRCV_C 或
  • TSEND/TRCV 或
  • TUSEND/TURCV
Modbus TCP 不支持
电子邮件 不支持
FTP 不支持

开放式通信的其它指令

通过用户程序中建立的连接以及通过组态建立的连接,可使用以下指令:

  • T_RESET:终止和建立连接
  • T_DIAG:检查连接

更多信息

STEP 7 在线帮助中介绍了:

  • 用户数据类型和系统数据类型
  • 开放式通信的指令
  • 连接参数

有关连接资源的分配和释放的信息,请参见“连接资源分配 (页 262)”部分。

参见

开放式用户安全通信 (页 101)

通过域名进行寻址的开放式用户通信

S7-1500 CPU、ET 200SP CPU 和 CPU 1516pro-2 PN 固件版本 V2.0 及以上版本,支持通过域名系统 (DNS) 寻址的开放式用户通信。CPU 中集成有 DNS 客户端。在通过

DNS 进行通信的情况下,可使用域名作为 IP 地址的别名来对通信伙伴进行寻址。对于通过 TCP 和 UDP 进行的开放式通信,可通过域名对通信伙伴进行寻址。

通过 DNS 进行通信时,要求网络中必须存在至少一台 DNS 服务器。

对于分配给 S7-1500 软件控制器的所有接口,该款软件控制器支持通过 DNS 进行通信。

通过 DNS 建立通信

CPU 的 DNS 客户端需至少确定一个 DNS 服务器的 IPv4 地址,才能确保 CPU 可通过其域名与通信伙伴建立连接。CPU 最多支持 4 个 不同的 DNS 服务器。

要通过域名建立 S7-1500 CPU 通信,请按以下步骤操作:

  1. 在 STEP 7 的网络视图中选择 CPU。
  2. 在巡视窗口中,选择“属性 > 常规 > DNS 配置”(Properties > General > DNS configuration)。
  3. 在表格“服务器列表”(Server list) 的“DNS 服务器地址”(DNS server addresses) 列中,输入 DNS 服务器的 IPv4 地址。

最多可输入 4 个 DNS 服务器的 IPv4 地址。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-29

图 6-1 输入 DNS 服务器地址(以 CPU 1516-3 PN/DP 为例)

通过通信伙伴的域名建立 TCP 连接。

要通过域名进行 TCP 通信,需要手动创建 TCON_QDN 系统数据类型的数据块,然后分配相应参数并在指令中直接调用该数据块。TCON、TSEND_C 和 TRCV_C 指令支持系统数据类型 TCON QDN:

要通过通信伙伴的域名建立 TCP 连接,请按以下步骤操作:

    1. 在项目树中,创建一个全局数据块。
    2. 在该全局数据块中,定义一个 TCON_QDN 数据类型的变量。

在以下示例中,显示了一个全局数据块“Data_block_1”。其中,定义了数据类型

TCON_QDN 的变量“DNS Connection1”。

|hardcopy|2016/04/08 14:32:59
z00334xp
MD1FE52C

图 6-2 数据类型 TCON_QDN

    1. 在数据类型为 TCON_QDN 的变量中,编程 TCP 连接(如,全限定的域名 (FQDN))的参数。
    2. 在程序编辑器中,创建一个 TCON 指令。
    3. 将 TCON 指令的 CONNECT 参数与 TCON_QDN 数据类型的变量进行互连。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-31 在以下示例中,TCON 指令的 CONNECT 参数已与变量“DNS connection1”(数据类型 TCON_QDN)互连。

图 6-3 TCON 指令

基于通信伙伴的域名对 UDP 连接进行寻址

对于S7-1500 CPU 固件版本 V2.0 及以上版本,通过 UDP 发送数据时,可通过全限定域名 (FQDN) 进行寻址。使用参数 ADDR 中的指令 TUSEND 时,可引用

TADDR_SEND_QDN 类型的结构。

接收方可返回 IPv4 地址或 IPv6 地址。使用参数 ADDR 中的指令 TURCV 时,可引用

TADDR_RCV_IP 类型的结构。只有这种结构才能包含两种 IP 地址类型。

说明

网路负载

与 TCP 协议不同,UDP 通信协议不是面向连接的。在块参数 REQ 的每个跳变沿,

TUSEND 或 TURCV 命令都会执行一次 DNS 服务器查询。这将导致网络负载或 DNS 服务器上的负载过高。

更多信息

有关系统数据类型 TCON_QDN、TADDR_SEND_QDN 和 TADDR_RCV_IP 的更多信息,请参见 STEP 7 在线帮助。

有关基于通信伙伴的域名建立 TCP 安全连接的信息,请参见“开放式用户安全通信

(页 101)”部分。

通过 TCP、ISO-on-TCP、UDP 和 ISO 建立开放式用户通信

组态 TSEND_C、TRCV_C 或 TCON 指令的连接

要求:已在程序编辑器中,创建了 TSEND_C、TRCV_C 或 TCON 指令。

  1. 在程序编辑器中,选择开放式用户通信的 TCON、TSEND_C 或 TRCV_C 块。
  2. 在巡视窗口中,打开“属性 > 组态”(Properties > Configuration) 选项卡。
  3. 选择“连接参数”(Connection parameters) 组。在选择连接伙伴之前,只显示伙伴端点的空下拉列表。其它所有输入选项均禁用。

同时显示一些已知的连接参数:

  • 本地端点的名称
  • 本地端点的接口
  • 本地端点的 IPv4 地址

|hardcopy|2014/10/13 16:56:07
z00334xp
MD19XY8C

图 6-4 TSEND_C 的连接参数

  1. 从伙伴端点的下拉列表框中,选择一个连接伙伴。可以选择项目中未指定的设备或

CPU 作为通信伙伴。之后,系统将自动输入一些特定的连接参数。用户需要设置以下参数:

    • 伙伴端点的名称
    • 伙伴端点的接口
    • 伙伴端点的 IPv4 地址

如果连接伙伴已联网,则显示子网名称。

  1. 在“组态类型”(Configuration type) 下拉列表中,选择使用程序块或使用组态的连接。
  2. 在“连接数据”(Connection data) 下拉列表中选择现有连接描述 DB,或者对于已组态的连接,在“连接名称”(Connection name) 下选择现有连接。也可以新建连接描述 DB 或已组态的连接。之后,仍可以选择其它连接描述 DB 或已组态的连接,或者更改连接描述 DB 的名称,以创建新的数据块:
  • 也可以在所选 TCON、TSEND_C 或 TRCV_C 指令的 CONNECT 输入参数互连中查看所选的数据块。
  • 如果已使用 TCON、TSEND_C 或 TRCV_C 指令的 CONNECT 参数为连接伙伴指定了连接描述 DB,则可使用此 DB 或创建一个新 DB。
  • 如果编辑下拉列表中所显示的数据块的名称,则会生成一个新数据块用于该连接, 新数据块使用更改的名称,但结构和内容不变。
  • 更改的数据块名称在通信伙伴系统中必须唯一。
  • 连接描述 DB 必须具有结构 TCON_Param、TCON_IP_v4 或 TCON_IP_RFC,具体取决于 CPU 类型和连接。
  • 无法为未指定的伙伴选择数据块。

在选择或创建连接描述 DB 或已组态的连接后确定并输入其它值。以下适用于指定的连接伙伴:

  • ISO-on-TCP 连接类型
  • 默认值为 1 的连接 ID
  • 由本地伙伴方创建的主动连接建立
  • TSAP ID

对于 S7-1200/1500:E0.01.49.53.4F.6F.6E.54.43.50.2D.31

以下适用于未指定的连接伙伴:

  • TCP 连接类型
  • 伙伴端口 2000

以下适用于带有指定连接伙伴的已组态连接:

  • TCP 连接类型
  • 默认值为 257 的连接 ID
  • 由本地伙伴方创建的主动连接建立
  • 伙伴端口 2000

以下适用于带有未指定连接伙伴的已组态连接:

    • TCP 连接类型
    • 本地端口 2000
  1. 输入连接伙伴所需的连接 ID。不能为未指定的伙伴分配任何连接 ID。

说明

必须为已知连接伙伴的连接 ID 输入一个唯一值。连接参数的设置不会检查连接 ID 的唯一性。因此,在创建新连接时,不会输入连接 ID 的默认值。

  1. 从相关的下拉列表中选择所需的连接类型。根据连接类型设定详细地址信息的默认值。可选择以下通信协议:
    • TCP
    • ISO-on-TCP
    • UDP
    • ISO(仅适用于组态模式“使用已组态的连接”(Use configured connection))

可以编辑地址详细信息中的输入框。根据所选的协议,可以编辑端口(TCP 和 UDP) 或 TSAP(ISO-on-TCP 和 ISO)。

  1. 使用“主动连接建立”(Active connection establishment) 复选框来设置 TCP、ISO 和

ISO-on-TCP 的连接建立特性。用户可以决定主动建立连接的通信伙伴。

连接组态将立即检查更改后的值是否存在输入错误,然后将值输入连接描述数据块中。

说明

只有在将伙伴端点的程序段下载到硬件后,两个通信伙伴之间才能进行开放式用户通信。要实现功能完整的通信,应确保在设备上不仅装载了本地 CPU 的连接描述,而且还装载了伙伴 CPU 的连接描述。

组态 TSEND/TRCV 的连接

如果要在开放式通信中使用 TSEND/TRCV 指令,则需先组态一个连接(如,TCP 连接)。

要组态 TCP 连接,请按以下步骤操作:

  1. 在 STEP 7 的“设备与网络”(Devices & networks) 编辑器的网络视图中,组态通信伙伴。
  2. 单击“连接”(Connections) 按钮,然后从下拉列表中选择“TCP 连接”(TCP connection)

连接类型。

  1. 使用拖放操作,互连通信伙伴(通过接口或本地端点)。如果所需的 S7 子网尚不存在,则系统将自动创建。

还可以设置与未指定伙伴的连接。

  1. 从网络视图中选择已创建的连接。
  2. 在“属性”(Properties) 选项卡的“常规” (General) 区域中,设置连接的属性(例如,连接名称和将使用的通信伙伴接口)。

如果要连接一个未指定的伙伴,则需设置该伙伴的地址。

本地 ID(用户程序中的连接参考)位于“本地 ID”(Local ID) 区域中。

  1. 在项目树中,选择用于 1 个 CPU 的“程序块”(Program blocks) 文件夹。双击文件夹,打开文件夹中的 OB1。将打开程序编辑器。
  2. 从“指令”(Instructions) 任务卡中“通信”(Communication) 区域内的“开放式通信”(Open

communication) 中,选择所需的指令(如 TSEND)并拖放到 OB1 中的程序段中。

  1. 通过该指令的 ID 参数,指定要用于数据传输的已组态连接的本地 ID。
  2. 互连 TSEND 指令的“DATA”参数和数据块中的用户数据。
  3. 将硬件配置和用户程序下载到 CPU。

按照以上步骤,通过接收指令 TRCV 建立与伙伴 CPU 的连接,并将下载到该 CPU 上。

使用 CP 1543-1 进行 ISO 连接时的注意事项

使用“ISO 连接”(ISO connection) 连接类型时,如果要通过 MAC 地址进行寻址,则需在

CP 的属性中选中复选框“使用 ISO 协议”(Use ISO protocol)。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-33

图 6-5 选择 CP 1543-1 ISO 协议

更多信息

STEP 7 在线帮助介绍了:

  • 开放式通信的指令
  • 连接参数

建立 FDL 通信

要求

      • 组态软件:STEP 7 Professional V14
      • 连接的端点:CPU S7-1500 固件版本 V2.0 或更高版本,带有通信模块 CM 1542-5

固件版本 V2.0

建立组态的 FDL 连接

要在 STEP 7 中建立组态的 FDL 连接,请按以下步骤操作:

  1. 在程序编辑器中,创建一个 TSEND_C 指令。
  2. 在巡视窗口中,选择该 TSEND_C 指令并转至“属性 > 常规 > 连接参数”(Properties > General > Connection parameters)。
  3. 在端点下,选择伙伴端点。选择以下两个伙伴端点中的一个:

– CPU S7-1500,带有 CM 1542-5

    • 未指定
  1. 在“组态类型”(Configuration type) 中,选择“使用组态的连接”(Use configured connection)。
  2. 在“连接类型”(Connection type) 中,选择“FDL”。
  3. 在“接口”(Interface) 中,选择以下接口:
    • “本地”(Local):CM 1542-5 的 PROFIBUS 接口
    • “指定的伙伴”(Specified partner):CM 1542-5 的 PROFIBUS 接口
  4. 在“连接数据”(Connection data) 中,选择“设置<新>”(setting <new>)。
    1. 建立 FDL 通信

下图显示了 STEP 7 中 FDL 连接的完整组态。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-34

图 6-6 组态 FDL 连接

在用户程序中建立 FDL 连接

要通过 FDL 进行数据通信,在任何情况下都需要手动创建 TCON_FDL 系统数据类型的数据块、分配相应参数,并在指令中直接调用该数据块。请按以下步骤操作:

  1. 在项目树中,创建一个全局数据块。
  2. 在该全局数据块中,定义一个 TCON_FDL 数据类型的变量。

在以下示例中,显示了一个全局数据块“FDL_connection”。其中,变量

“FDL_connection”的数据类型为 TCON_FDL。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-35

图 6-7 编程 FDL 连接

  1. 在数据类型为 TCON_FDL 的变量中,编程 FDL 连接的参数(如,PROFIBUS 地址)。
  2. 在程序编辑器中,创建一个 TCON 指令。
  3. 将 TCON 指令的 CONNECT 参数与 TCON_FDL 数据类型的变量进行互连。

在以下示例中,TCON 指令的 CONNECT 参数已互连到变量“FDL_Connection”(数据类型 TCON_FDL)。

图 6-8 示例:FDL 连接的 TCON 指令

    1. 建立与 Modbus TCP 的通信

建立与 Modbus TCP 的通信

通过用户程序建立 Modbus TCP 连接

使用指令 MB_CLIENT 或 MB_SERVER,可以在程序编辑器中分配参数。

通过 Modbus TCP 建立通信的操作步骤

MB_CLIENT 指令作为 Modbus TCP 客户端通过 TCP 连接进行通信。通过该指令,可以在客户端和服务器之间建立连接、向服务器发送 Modbus 请求并接收相应的 Modbus 响应。通过该指令,还可控制 TCP 连接的设置。

MB_SERVER 指令作为 Modbus TCP 服务器通过 TCP 连接进行通信。该指令将处理

Modbus 客户端的连接请求、接收并处理 Modbus 请求并发送响应。也可用于控制 TCP

连接的设置。

要求:客户端可通过网络中的 IP 通信访问服务器。

      1. 在 STEP 7 的“设备与网络”(Devices & Networks) 编辑器的网络视图中,组态带有

CPU 的 S7-1500 自动化系统。

      1. 在项目树中,选择“程序块”(Program blocks) 文件夹。双击该文件夹,打开文件夹中的

OB1。将打开程序编辑器。

      1. 从“指令”(Instructions) 任务卡中“通信”(Communication) 区域内的“其它”(Other) 中的

“MODBUS TCP”,选择所需的指令(如 MB_CLIENT)并拖放到 OB1 的程序段中。

    1. 建立与 Modbus TCP 的通信
      1. 分配 MB_CLIENT 或 MB_SERVER 指令的参数。请遵守以下规则:必须为每个 MB_CLIENT 连接指定 IPv4 服务器地址。

每个 MB_CLIENT 或 MB_SERVER 连接都必须使用一个数据结构为 TCON_IP_v4 或

TCON_QDN 的唯一背景数据块。

每个连接都需要一个唯一的连接 ID。而且该连接 ID 与背景数据块组合成对,对于每个连接而言均唯一。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-37

图 6-9 MB_CLIENT

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-38

图 6-10 MB_SERVER

      1. 将硬件配置和用户程序下载到 CPU。
通过电子邮件建立通信

Modbus TCP 服务器作为连接到 Modbus RTU 的网关

如果将 Modbus TCP 服务器用作连接 Modbus RTU 协议的网关,则使用静态参数

MB_UNIT_ID 对串行网络中的从站设备进行寻址。MB_UNIT_ID 参数与 Modbus RTU 协议中的从站地址字段相对应。在此情况下,MB_UNIT_ID 参数会将请求转发到正确的 Modbus RTU 从站地址。

用户无需编程网关功能。

MB_UNIT_ID 参数位于与 MB_CLIENT 指令相关的背景数据块中。有关 MB_UNIT_ID 参数的更多信息,请参见 STEP 7 在线帮助。

通过电子邮件建立通信

通过用户程序建立电子邮件连接

在通过电子邮件进行通信时,需要手动创建相关系统数据类型的数据块并分配参数和直接调用指令。在下文中,将介绍具体的操作步骤。

建立通过电子邮件进行通信的步骤

CPU 可以发送电子邮件。通过 TMAIL_C 指令,从 CPU 的用户程序发送电子邮件。要求:可通过 IPv4 网络访问 SMTP 服务器。

      1. 在 STEP 7 的“设备与网络”(Devices & Networks) 编辑器的网络视图中,组态带有

CPU 的 S7-1500 自动化系统。

      1. 为 TMAIL_C 指令分配参数。如,在“主题”(Subject) 中输入电子邮件的主题。
      2. 在一个全局数据块中,创建类型为 TMAIL_v4、TMAIL_v6(仅 CP 1543-1)或 TMAIL_FQDN(仅 CP 1543-1)的变量。
      3. 在该变量的“起始值”(Start value) 列中,设置 TCP 连接的连接参数。在

“MailServerAddress”中,输入邮件服务器的 IPv4 地址(TMAIL_v4)

说明

连接参数 InterfaceId 和 ID

请注意,在指令版本 V5.0 或更高版本的 TMAIL_C 指令中,数据类型为

TMAIL_V4_SEC 的接口 ID 和 ID 可输入值“0”。此时,CPU 将自行搜索相匹配的本地

CPU 接口或空闲的连接 ID。

将该变量连接到 TMAIL_C 指令的 MAIL_ADDR_PARAM 参数。

      1. 将硬件配置和用户程序下载到 CPU。

更多信息

STEP 7 在线帮助中介绍了:

  • 系统数据类型
  • 开放式通信的指令
  • 连接参数

通过 FTP 建立通信

通过用户程序建立 FTP 连接

在通过 FTP 进行通信时,必须手动创建相关系统数据类型的数据块,并分配参数和直接调用指令。在下文中,将介绍具体的操作步骤。

FTP 客户端和服务器的功能

CPU 可以将文件发送到 FTP 服务器,也可以从 FTP 服务器接收文件。S7-1500 中只能通过 CP 1543-1 进行 FTP 通信。该 CP 既可以作为 FTP 服务器,也可以作为 FTP 客户端,或者可以同时作为服务器和客户端。FTP 客户端可以是第三方系统/PC。

在 STEP 7 中对 CP 进行相应的组态后,FTP 服务器才能正常运行。

使用 FTP 的客户端功能,可以建立和终止 FTP 连接、传输以及删除服务器上的文件。

FTP 的客户端功能将调用 FTP_CMD 指令。

设置 FTP 服务器功能的步骤

要求:可通过 IPv4 网络访问 FTP 服务器。

      1. 在 STEP 7 的“设备与网络”(Devices & Networks) 编辑器的设备视图中,组态带有

CPU 和 CP 1543-1 的 S7-1500 自动化系统。

同时,需要在“连接机制”(Connection mechanisms) 部分的“保护”(Protection) 区域导航下 S7-1500 CPU 的硬件配置内选中复选框“允许借助 PUT/GET 通信从远程伙伴

(PLC、HMI、OPC...)访问”(Permit access with PUT/GET communication from remote partner (PLC, HMI, OPC, ...))。

      1. 在“FTP 组态”(FTP configuration) 中的 CP 属性内,进行以下设置:
  • 选择复选框“使用 FTP 服务器传送 S7 CPU 数据”(Use FTP server for S7 CPU data)。
  • 指定要存储 FTP DB 的 CPU、数据块和文件名称。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-39

图 6-11 设置 FTP 组态

      1. 将硬件配置下载到 CPU。

设置 FTP 客户端功能的步骤

要求:可通过 IPv4 网络访问 FTP 服务器。

        1. 在 STEP 7 的“设备与网络”(Devices & Networks) 编辑器的设备视图中,组态带有

CPU 和 CP 1543-1 的 S7-1500 自动化系统。

同时,需要在“连接机制”(Connection mechanisms) 部分的“保护”(Protection) 区域导航下 S7-1500 CPU 的硬件配置内选中复选框“允许借助 PUT/GET 通信从远程伙伴

(PLC、HMI、OPC...)访问”(Permit access with PUT/GET communication from remote partner (PLC, HMI, OPC, ...))。

        1. 在 CPU 的用户程序中调用 FTP_CMD 指令。
        2. 在指令 FTP_CMD 中设置 FTP 服务器的连接参数。
        3. 创建一个全局数据块,并在此数据块内创建一个 FTP_CONNECT_IPV4、 FTP_CONNECT_IPV6 或 FTP_CONNECT_NAME 类型的变量。
        4. 将数据块内的变量与 FTP_CMD 指令互连。
        5. 要连接 FTP 服务器,需要在 DB 中指定以下参数:

– 进行 FTP 访问的相关数据类型(FTP_CONNECT_IPV4、FTP_CONNECT_IPV6或 FTP_CONNECT_NAME)的用户名、密码和 IP 地址

        1. 将硬件配置和用户程序下载到 CPU。
    1. 建立和终止通信关系

建立和终止通信

下表显示了如何建立和终止开放式通信中的通信。

表格 6- 5 建立和终止通信

设置连接 建立通信 终止通信
通过用户程序 将用户程序下载到 CPU 之后: 通信被动方将通过调用

TSEND_C/TRCV_C 或 TCON 建立本地通信访问。 通信主动方则通过调用TSEND_C/TRCV_C 或 TCON 开始建立连接。 如果无法建立连接,则将向用户程序中的指令发送一条正反馈。

在终止与 T_RESET 指令的连接后,将会重新建立连接。

如果连接中止,则通信主动方将尝试重新建立连接。 仅当事先与 TCON 成功建立了连接时,才会这样。

  • 使用 TSEND_C/TRCV_C、 TDISCON 和 T_RESET 指令
  • 将 CPU 从 RUN 模块切换到 STOP

模式时

  • CPU 断电/通电
通过组态建立连接时 将连接组态和用户程序下载到 CPU 之后。 删除 STEP 7 中的连接组态并将更改后的组态下载到 CPU 中。

开放式用户安全通信

S7-1500 CPU(作为 TLS 客户端)与外部 PLC(TLS 服务器)之间的安全

OUC

在以下章节中,将介绍如何通过 TCP 建立 S7-1500 CPU(作为 TLS 客户端)与 TLS 服务器之间的开放式用户通信。

建立 S7-1500 CPU(作为 TLS 客户端)与 TLS 服务器之间的安全 TCP 连接

S7-1500 CPU 固件版本 V2.0 及以上版本支持通过域名系统 (DNS) 进行寻址的安全通信。

要通过域名进行 TCP 安全通信,则需手动创建一个 TCON_QDN_SEC 系统数据类型的数据块,并分配参数,之后在 TSEND_C、TRCV_C 或 TCON 指令中直接调用该数据块。

要求:

        • 在 CPU 中,设置当前的日期和时间。
        • 网络中包含至少一台 DNS 服务器。
        • 已为 S7-1500 CPU 组态至少一台 DNS 服务器。
        • TLS 客户端和 TLS 服务器具有所需的全部证书。

要建立与 TLS 服务器的 TCP 安全连接,请按以下步骤操作:

  1. 在项目树中,创建一个全局数据块。
  2. 在该全局数据块中,定义一个 TCON_QDN_SEC 数据类型的变量。

在以下示例中,显示了一个全局数据块“Data_block_1”,其中,定义了数据类型

TCON_QDN_SEC 的变量“DNS ConnectionSEC”。

|hardcopy|2016/04/19 17:09:06
z00334xp
MD1FE52C

图 6-12 数据类型 TCON_QDN_SEC

  1. 在“起始值”(Start value) 列中,设置 TCP 连接的连接参数。例如,在 "RemoteQDN"中输入 TLS 服务器全限定的域名 (FQDN)。
  2. 在“起始值”(Start value) 列中,设置安全通信的参数。
    • “ActivateSecureConn”:激活该连接的安全通信。如果该参数的值为 FALSE,则忽略后面的安全参数。此时,可建立非安全的 TCP 或 UDP 连接。
    • “ExtTLSCapabilities”:如果输入值 1,则客户端将通过验证服务器端 X.509-V3 证书中的 subjectAlternateName,验证该服务器的身份。验证过程将由该指令执行。
    • 西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-41 “TLSServerCertRef”:X.509-V3 证书(通常为 CA 证书)的 ID,TLS 客户端使用该 ID 验证 TLS 服务器的身份。如果该参数为 0,则 TLS 客户端将使用客户端证书中心当前加载的所有 (CA) 证书对服务器的身份进行验证。

图 6-13 从作为 TLS 客户端的 S7-1500 的角度处理证书

    • “TLSClientCertRef”:自身 X.509-V3 证书的 ID。
  1. 在程序编辑器中,创建一个 TSEND_C、TRCV_C 或 TCON 指令。
  2. 将 TSEND_C、TRCV_C 或 TCON 指令的 CONNECT 参数与 TCON_QDN_SEC 数据类型的变量进行互连。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-42 在以下示例中,TCON 指令的 CONNECT 参数已与变量“DNS connectionSEC”(数据类型 TCON_QDN_SEC)互连。

图 6-14 TCON 指令

更多信息

有关 TCON_QDN_SEC 系统数据类型的更多信息,请参见 STEP 7 在线帮助。有关安全通信的更多信息,请参见“安全通信 (页 40)”部分。

S7-1500 CPU(作为 TLS 服务器)与外部 PLC(TLS 客户端)之间的安全

OUC

在以下章节中,将介绍如何通过 TCP 建立 S7-1500 CPU(作为 TLS 服务器)与 TLS 客户端之间的开放式用户通信。

通过通信伙伴的域名建立 TCP 安全连接。

S7-1500 CPU 固件版本 V2.0 及以上版本支持通过域名系统 (DNS) 进行寻址的安全通信。

要通过域名进行 TCP 安全通信,则需手动创建一个 TCON_QDN_SEC 系统数据类型的数据块,并分配参数,之后在 TSEND_C、TRCV_C 或 TCON 指令中直接调用该数据块。

要求:

        • 在 CPU 中,设置当前的日期和时间。
        • 网络中包含至少一台 DNS 服务器。
        • 已为 S7-1500 CPU 组态至少一台 DNS 服务器。
        • TLS 客户端和 TLS 服务器具有所需的全部证书。

要建立与 TLS 客户端的安全 TCP 连接,请按以下步骤操作:

  1. 在项目树中,创建一个全局数据块。
  2. 在该全局数据块中,定义一个 TCON_QDN_SEC 数据类型的变量。

在以下示例中,显示了一个全局数据块“Data_block_1”。其中,定义了数据类型为

TCON_FDL_SEC 的变量“DNS ConnectionSEC”。

|hardcopy|2016/04/19 17:37:31
z00334xp
MD1FE52C

图 6-15 TCON_QDN_SEC_Server

  1. 在“起始值”(Start value) 列中,设置 TCP 连接的连接参数。例如,在“ID”中输入 TCP

连接的本地 ID。

  1. 在“起始值”(Start value) 列中,设置安全通信的参数。
  • “ActivateSecureConn”:激活该连接的安全通信。如果该参数的值为 FALSE,则忽略后面的安全参数。此时,可建立非安全的 TCP 或 UDP 连接。
  • “TLSServerReqClientCert”:TLS 客户端需具有 X.509-V3 证书。
  • 西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-44 “TLSServerCertRef”:自身 X.509-V3 证书的 ID。

图 6-16 从作为 TLS 服务器的 S7-1500 的角度处理证书

  • “TLSClientCertRef”:X.509-V3 证书(或 X.509-V3 证书组)的 ID,TLS 服务器使用该 ID 验证 TLS 客户端的身份。如果该参数为 0,则 TLS 服务器将使用服务器证书中心当前加载的所有 (CA) 证书对客户端的身份进行验证。
  1. 在程序编辑器中,创建一个 TSEND_C、TRCV_C 或 TCON 指令。
  2. 将 TSEND_C、TRCV_C 或 TCON 指令的 CONNECT 参数与 TCON_QDN_SEC 数据类型的变量进行互连。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-45 在以下示例中,TCON 指令的 CONNECT 参数已与变量“DNS connectionSEC”(数据类型 TCON_QDN_SEC)互连。

图 6-17 TCON 指令

更多信息

有关 TCON_QDN_SEC 系统数据类型的更多信息,请参见 STEP 7 在线帮助。有关安全通信的更多信息,请参见“安全通信 (页 40)”部分。

两个 S7-1500 CPU 之间的安全 OUC

在以下章节中,介绍如何通过 TCP 在两个 S7-1500 CPU 之间建立开放式用户安全通信。在此过程中,一个 S7-1500 CPU 用作 TLS 客户端(主动建立连接)而另一个S7-1500 CPU 则用作 TLS 服务器(被动建立连接)。

建立两个 S7-1500 CPU 之间的安全 TCP 连接

要在两个 S7-1500 CPU 之间建立 TCP 安全通信,则需为每个 CPU 手动创建

TCON_IPv4_SEC 系统数据类型的数据块,并分配相应参数,之后在 TSEND_C、

TRCV_C 或 TCON 指令中直接调用该数据块。要求:

        • 在 CPU 中,设置当前的日期和时间。
        • 两个 S7-1500 CPU 的固件版本为 V2.0 及以上版本
        • 西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-46 TLS 客户端和 TLS 服务器具有所需的全部证书。

图 6-18 两个 S7-1500 CPU 之间安全 OUC 的证书处理过程

TLS 客户端的设置

要在 TLS 客户端中建立安全的 TCP 连接,请按以下步骤操作:

  1. 在项目树中,创建一个全局数据块。
  2. 在该全局数据块中,定义一个数据类型为 TCON_IP_4_SEC 的变量。 以下示例中显示了全局数据块“Data_block_1”,其中,定义了数据类型为

TCON_IP_V4_SEC 的变量“SEC 连接 1 TLS 客户端”(SEC connection 1 TLS-Client)。

|hardcopy|2016/04/21 10:05:05
z00334xp
MD1FE52C

图 6-19 IP_V4_SEC_Client

  1. 在“起始值”(Start value) 列中,设置 TCP 连接的连接参数。例如,在“RemoteAddress”中输入 TLS 服务器的 IPv4 地址。

说明

连接参数 InterfaceId 和 ID

请注意,数据类型为 TMAIL_V4_SEC 的接口 ID 和 ID 可输入值“0”。此时,CPU 将自行搜索相匹配的本地 CPU 接口或空闲的连接 ID。

  1. 在“起始值”(Start value) 列中,设置安全通信的参数。
          • “ActivateSecureConn”:激活该连接的安全通信。如果该参数的值为 FALSE,则忽略后面的安全参数。此时,可建立非安全的 TCP 或 UDP 连接。
          • “TLSServerCertRef”:输入值“2”(引用 TIA Portal 项目 (SHA256) 的 CA 证书),或输入值“1”(引用 TIA Portal 项目 (SHA1) 的 CA 证书)。如果使用不同的 CA 证书,则需在证书管理器的全局安全设置中输入相应的 ID。
          • “TLSClientCertRef”:自身 X.509-V3 证书的 ID。
  2. 在程序编辑器中,创建一个 TSEND_C、TRCV_C 或 TCON 指令。
  3. 将 TSEND_C、TRCV_C 或 TCON 指令的 CONNECT 参数与 TCON_IP_V4_SEC 数据类型的变量进行互连。

TLS 服务器的设置

要在 TLS 服务器中建立安全的 TCP 连接,请按以下步骤操作:

  1. 在项目树中,创建一个全局数据块。
  2. 在该全局数据块中,定义一个数据类型为 TCON_IP_4_SEC 的变量。 以下示例中显示了全局数据块“Data_block_1”,其中,定义了数据类型为

TCON_IP_V4_SEC 的变量“SEC 连接 1 TLS 服务器”(SEC connection 1 TLS-

Server)。

|hardcopy|2016/04/21 11:03:47
z00334xp
MD1FE52C

图 6-20 IP_V4_SEC_Server

  1. 在“起始值”(Start value) 列中,设置 TCP 连接的连接参数。例如,在“RemoteAddress”中输入 TLS 客户端的 IPv4 地址。
  2. 在“起始值”(Start value) 列中,设置安全通信的参数。
    • “ActivateSecureConn”:激活该连接的安全通信。如果该参数的值为 FALSE,则忽略后面的安全参数。此时,可建立非安全的 TCP 或 UDP 连接。
    • “TLSServerReqClientCert”:TLS 客户端需具有 X.509-V3 证书。输入值“true”。
    • “TLSServerCertRef”:自身 X.509-V3 证书的 ID。
    • “TLSClientCertRef”:输入值“2”(引用 TIA Portal 项目 (SHA256) 的 CA 证书),或输入值“1”(引用 TIA Portal 项目 (SHA1) 的 CA 证书)。如果使用不同的 CA 证书,则需在证书管理器的全局安全设置中输入相应的 ID。
  3. 在程序编辑器中,创建一个 TSEND_C、TRCV_C 或 TCON 指令。
  4. 将 TSEND_C、TRCV_C 或 TCON 指令的 CONNECT 参数与 TCON_IP_V4_SEC 数据类型的变量进行互连。

在以下示例中,TSEND_C 指令的 CONNECT 参数将与变量“SEC connection 1 TLS

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-49 client”(数据类型 TCON_IP_4_SEC)进行互连。

图 6-21 TSEND_C

更多信息

有关 TCON_IP_4_SEC 系统数据类型的更多信息,请参见 STEP 7 在线帮助。有关安全通信的更多信息,请参见“安全通信 (页 40)”部分。

通过 CP 接口进行安全 OUC 连接

在以下章节中,将介绍通过 CP 接口进行开放式用户安全通信时应注意的特殊事项。至少一个站为 S7-1500 站,并包含以下模块:

        • S7-1500 CPU 固件版本 V2.0 及以上版本(S7-1500 软件控制器除外)
        • CP 1543-1 固件版本 V2.0 及以上版本,或 CP 1543SP-1 V1.0 及以上版本

该 CP 在 S7-1500 站中将作为 TLS 客户端(主动建立连接)或 TLS 服务器(被动建立连接)。

通过 CP 接口进行安全通信的基本操作步骤与概念,与通过 S7-1500 CPU 接口进行安全通信的类似。在此,必须将证书分配给作为 TLS 服务器或 TLS 客户端的 CPU,而非其它 CPU。因此,也可使用其他角色和操作步骤。在下文中,将对此进行详细介绍。

管理 CP 的证书

以下规则普遍适用:在入全局安全设置中,需登录证书管理器。生成自签名的证书时,需登录全局安全设置。需要具有足够的用户权限(管理员权限,或具有“安全组态”权限的“标 准”用户)。

在 CP 中,可在“安全 > 安全属性”(Security > Security properties) 部分生成或分配证书。在此部分中,可登录全局安全设置。

操作步骤:

  1. 在 STEP 7 的网络视图中,选中该 CP 并在巡视窗口中选择“安全 > 安全属性”(Security > Security properties) 部分。
  2. 单击“用户登录”(User logon) 按钮。
  3. 使用用户名和密码进行登录。
  4. 启用“激活安全功能”(Activate security functions) 选项。系统将初始化相应的安全属性。
  5. 单击“设备证书”(Device certificates) 表格的第一行,生成一个新的证书或选择现有的设备证书。
  6. 如果通信伙伴也是一个 S7-1500 站,则需按照上述操作,使用 STEP 7 为通信伙伴或该 S7-1500 CPU 指定一个设备证书。

示例:通过 CP 接口,在两个 S7-1500 CPU 之间建立 TCP 安全连接

要在两个 S7-1500 CPU 之间建立 TCP 安全通信,则需为每个 CPU 手动创建

TCON_IPv4_SEC 系统数据类型的数据块,并分配相应参数,之后在 TSEND_C、

TRCV_C 或 TCON 指令中直接调用该数据块。要求:

    • 这两个 S7 1500 CPU 的固件版本为 V2.0 及以上版本如果使用 CP 1543SP-1:固件

V1.0 及以上版本。

    • 这两个 CP(如 CP 1543-1)的固件版本必须 V2.0 及以上版本
    • TLS 客户端和 TLS 服务器具有所需的全部证书。
      • 必须为该 CP 生成设备证书(最终实体证书)并存储在该 CP 的证书存储器中。如果通信伙伴是一个外部设备(如,MES 或 ERP 系统),则需确保该设备上包含有设备证书。
      • 对通信伙伴设备证书进行签名的 root 证书(CA 证书)也必须位于该 CP 的证书存储器中,或位于外部设备的证书存储器中。如果使用中间证书,则必须确保所验证设备中的证书路径完整。设备将通过这些证书验证通信伙伴的设备证书。
    • 这些通信伙伴需通过 IPv4 地址进行寻址,而不能通过域名进行寻址。

下图显示了两个通信伙伴通过 CP 1543-1 进行通信时,设备中的不同证书。此外,在该图中还显示了建立连接时设备证书的传输(“Hello”)。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-50

图 6-22 通过 CP 接口,在两个 S7-1500 CPU 之间进行 OUC 安全连接的证书处理操作。

TLS 客户端的设置

要在 TLS 客户端中建立安全的 TCP 连接,请按以下步骤操作:

  1. 在项目树中,创建一个全局数据块。
  2. 在该全局数据块中,定义一个数据类型为 TCON_IP_4_SEC 的变量。为此,需在“数据类型”(Data type) 字段中输入字符串“TCON_IP_V4_SEC”。

以下示例中显示了全局数据块“Data_block_1”,其中,定义了数据类型为

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-51 TCON_IP_V4_SEC 的变量“SEC 连接 1 TLS 客户端”(SEC connection 1 TLS-Client)。该接口 ID 的值为本地 CP(TLS 客户端)中 IE 接口的硬件标识符。

图 6-23 IP_V4_SEC_Client

  1. 在“起始值”(Start value) 列中,设置 TCP 连接的连接参数。例如,在“RemoteAddress”中输入 TLS 服务器的 IPv4 地址。
  2. 在“起始值”(Start value) 列中,设置安全通信的参数。
    • “ActivateSecureConn”:激活该连接的安全通信。如果该参数的值为 FALSE,则忽略后面的安全参数。此时,可建立非安全的 TCP 或 UDP 连接。
    • “TLSServerCertRef”:输入值“2”(引用 TIA Portal 项目 (SHA256) 的 CA 证书),或输入值“1”(引用 TIA Portal 项目 (SHA1) 的 CA 证书)。如果使用不同的 CA 证书,则需在证书管理器的全局安全设置中输入相应的 ID。
    • “TLSClientCertRef”:自身 X.509-V3 证书的 ID。
  3. 在程序编辑器中,创建一个 TSEND_C、TRCV_C 或 TCON 指令。
  4. 将 TSEND_C、TRCV_C 或 TCON 指令的 CONNECT 参数与 TCON_IP_V4_SEC 数据类型的变量进行互连。

TLS 服务器的设置

要在 TLS 服务器中建立安全的 TCP 连接,请按以下步骤操作:

  1. 在项目树中,创建一个全局数据块。
  2. 在该全局数据块中,定义一个数据类型为 TCON_IP_4_SEC 的变量。 以下示例中显示了全局数据块“Data_block_1”,其中,定义了数据类型为

TCON_IP_V4_SEC 的变量“SEC 连接 1 TLS 服务器”(SEC connection 1 TLS-

Server)。

该接口 ID 的值为本地 CP(TLS 服务器)中 IE 接口的硬件标识符。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-52

图 6-24 IP_V4_SEC_Server

  1. 在“起始值”(Start value) 列中,设置 TCP 连接的连接参数。例如,在“RemoteAddress”中输入 TLS 客户端的 IPv4 地址。
  2. 在“起始值”(Start value) 列中,设置安全通信的参数。
    • “ActivateSecureConn”:激活该连接的安全通信。如果该参数的值为 FALSE,则忽略后面的安全参数。此时,可建立非安全的 TCP 或 UDP 连接。
    • “TLSServerReqClientCert”:TLS 客户端需具有 X.509-V3 证书。输入值“true”。
    • “TLSServerCertRef”:自身 X.509-V3 证书的 ID。
    • “TLSClientCertRef”:输入值“2”(引用 TIA Portal 项目 (SHA256) 的 CA 证书),或输入值“1”(引用 TIA Portal 项目 (SHA1) 的 CA 证书)。如果使用不同的 CA 证书,则需在证书管理器的全局安全设置中输入相应的 ID。
  3. 在程序编辑器中,创建一个 TSEND_C、TRCV_C 或 TCON 指令。
  4. 将 TSEND_C、TRCV_C 或 TCON 指令的 CONNECT 参数与 TCON_IP_V4_SEC 数据类型的变量进行互连。

上传设备作为新站

在将带有证书的组态进而组态的开放式用户安全通信作为新站上传到 STEP 7 项目中时, 与 CPU 的证书不同,CP 的证书不会上传。在将设备加载为新站后,在 CP 的设备证书表格中不会包含更多证书。

上传后,需再次对证书进行组态。否则,重新加载组态将导致 CP 之前存在的证书删除, 无法进行安全通信。

通过 CPU 和 CP 接口的 OUC 安全连接(操作相似)

  • 连接资源:

OUC 和安全 OUC 之间无差别。编程的 OUC 安全连接将使用诸如 OUC 连接之类的连接资源,而不考虑与该站通信的 IE/PROFINET 接口。

  • 连接诊断:

OUC 和 OUC 安全连接诊断之间无差别。

  • 将带有 OUC 安全连接的项目加载到 CPU 中:

如果还需加载证书,则只能 CPU STOP 模式下进行。

建议:加载到设备 > 硬件和软件 (Load to device > Hardware and software)。原因:需确保带有安全 OUC 的程序、硬件配置和证书一致。

证书随硬件配置一同加载。因此,加载过程中需要停止 CPU 的运行。仅当所需的证书位于模块中时,才能在 RUN 模式下重新加载使用其它 OUC 安全连接的块。

通过 Modbus TCP 进行 OUC 安全连接

要进行 Modbus TCP 安全连接,需手动创建一个 TCON_IP_V4_SEC 或

TCON_QDN_SEC 系统数据类型的数据块,分配相应参数并在 MB_Server 或

MB_CLIENT 指令中直接调用该数据块。

要求:

  • S7-1500 CPU 固件版本 V2.5 或更高版本
  • Modbus 客户端(TLS 客户端)可通过网络中的 IP 通信访问 Modbus 服务器(TLS 服务器)。
  • TLS 客户端和 TLS 服务器具有所需的全部证书。

与 Modbus TCP 服务器建立 Modbus TCP 安全连接的示例

在下文章节中,介绍如何通过 Modbus TCP 在 Modbus TCP 客户端与 Modbus TCP 服务器之间建立开放式用户安全通信。

要在 Modbus TCP 客户端(TLS 客户端)与 Modbus TCP 服务器(TLS 服务器)之间建立安全连接并设置邮件服务器的 Ipv4 地址,请按以下步骤操作:

  1. 在项目树中,创建一个全局数据块。
  2. 在该全局数据块中,定义一个 TCON_IP_V4 SEC 数据类型的变量。

|hardcopy|2017/11/02 18:07:37
z00334xp
MD1FE52C

图 6-25 TCON_IP_V4_SEC

  1. 在“起始值”(Start value) 列中,设置 TCP 连接的连接参数。例如,在

“MailServerAddress”中输入邮件服务器的 IPv4 地址。

  1. 在“起始值”(Start value) 列中,设置安全通信的参数。例如,在“TLSServerCertRef”中输入通信伙伴的 CA 证书的证书 ID。
    • “ActivateSecureConn”:激活该连接的安全通信。如果该参数的值为 FALSE,则忽略后面的安全参数。此时,可设置一个 Modbus TCP 非安全连接。
    • “TLSServerCertRef”:对 Modbus TCP 服务器中 X.509 V3 (CA) 证书的引用,TLS客户端使用该信息对 Modbus TCP 服务器进行身份验证。
  2. 在程序编辑器中,创建一个 MB_CLIENT 指令。
  3. 将 MB_Client 指令的 CONNECT 参数与 TCON_IP_4_SECC 数据类型的变量进行互连。

通过电子邮件实现 OUC

通过 CPU 接口建立与邮件服务器的安全连接

要建立与邮件服务器的安全通信,需手动创建一个 TMAIL_V4_SEC 或

TMAIL_QDN_SEC 系统数据类型的数据块,分配参数并在 TMAIL_C 指令中直接调用该数据块。

要求:

  • TMAIL_C 指令,版本 V5.0 或更高版本
  • STEP 7 V15 及更高版本
  • S7-1500 CPU V2.5 及更高版本
  • 已经为 CPU(TLS 客户端)分配了邮件服务器(TLS 服务器)的所有 CA 证书,且组态已下载到 CPU 中。
  • 在 CPU 中,设置当前的日期和时间。

与邮件服务器建立安全连接的操作过程

与邮件服务器建立安全连接时,可选择以下两种操作过程:

    • SMTPS:客户端尝试与邮件服务器立即建立 TLS 连接(“握手”过程)如果邮件服务器不支持 TLS,则不建立连接。
    • STARTTLS:客户端与邮件服务器建立 TCP 连接。客户端将发送一个请求,“更新”当前通过 TCP 连接与 TLC 安全连接的连接。如果邮件服务器支持 TLS,则客户端将发生该命令建立安全连接。为此,邮件服务器将使用 SMTP 命令“STARTTLS”。之后,客户端将建立与邮件服务器的安全连接。优势:如果邮件服务器不支持 TLS,则客户端和邮件服务器之间可进行非安全通信。

在块参数“MAIL_ADDR_PARAM”的数据类型中设置“远程端口”(Remote Port),可定义进行通信的进行。

表格 6- 6 SMTPS 和 STARTTLS 进程的端口号

进程 端口
SMTPS: 4651
STARTTLS: 任意端口 (≠465)2

1 指令 TMAIL_C 仅在 465 端口采用 SMTPS 通信协议。其它所有端口将使用 STARTTLS

通信协议。

2 根据 RFC,邮件服务器使用端口 25,而 STARTTLS 安全连接则使用端口 587。RFC 不建议 SMTP 使用其它端口号,否则无法确保与邮件服务器的通信成功。

示例:通过 IPv4 与邮件服务器建立安全连接

在以下章节中,将介绍如何使用 TMAIL_C 通信指令与 IPv4 邮件服务器建立安全连接。

要通过邮件服务器的 IP4 地址建立安全连接,请按以下步骤操作:

  1. 在项目树中,创建一个全局数据块。
  2. 在该全局数据块中,定义一个 TMAIL_V4_SEC 数据类型的变量。

在以下示例中,显示了一个全局数据块“MailConnDB”,其中,定义了数据类型为

TMAIL_V4_SEC 的变量“MailConnectionSEC”。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-54

图 6-26 数据类型 TMAIL_V4_SEC

  1. 在“起始值”(Start value) 列中,设置 TCP 连接的连接参数。例如,在

“MailServerAddress”中输入邮件服务器的 IPv4 地址。

说明

连接参数 InterfaceId 和 ID

请注意,在指令版本 V5.0 或更高版本的 TMAIL_C 指令中,数据类型为

TMAIL_V4_SEC 的接口 ID 和 ID 可输入值“0”。此时,CPU 将自行搜索相匹配的本地

CPU 接口或空闲的连接 ID。

  1. 在“起始值”(Start value) 列中,设置安全通信的参数。例如,在“TLSServerCertRef”中输入通信伙伴的 CA 证书的证书 ID。
      • “ActivateSecureConn”:激活该连接的安全通信。如果该参数的值为 FALSE,则忽略后面的安全参数。此时,可建立非安全的 TCP 或 UDP 连接。
      • “TLSServerCertRef”:对电子邮件服务器中 X.509 V3 (CA) 证书的引用,供 TLS 客户端用来对邮件服务器进行身份验证。
  2. 在程序编辑器中,创建一个 TMAIL_C 指令。
  3. 将 TMAIL_C 指令的 MAIL_ADDR_PARAM 参数与 TMAIL_V4_SEC 数据类型的变量进行互连。

在以下示例中,TMAIL_C 指令的 MAIL_ADDR_PARAM 参数已与

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-55 “MailConnectionSEC”变量(TMAIL_V4_SEC 数据类型)进行互连。

图 6-27 TMAIL_C 指令

通过通信模块接口与邮件服务器建立安全连接

要通过一个通信模块与邮件服务器建立安全通信,则需手动创建一个系统类型为

TMAIL_V4_SEC、TMAIL_QDN_SEC 或 TMAIL_V6_SEC 的数据块,分配参数并在

TMAIL_C 指令中直接调用该数据块。要求:

  • TMAIL_C 指令,版本 V4.0
  • S7-1500 CPU 固件版本 V2.0 及以上版本,通信模块 CP 1543-1 固件版本 V2.0 及以上版本
  • ET 200SP CPU 固件版本 V2.0 及以上版本,通信模块 CP 1542SP-1 (IRC) 固件版本

V1.0 及以上版本

  • 已将邮件服务器的所有 CA 证书分配给 CP(TLS 客户端),而且已将组态下载到

CPU 中。

  • 在 CPU 中,设置当前的日期和时间。

有关如何通过通信模块的接口与邮件服务器建立安全连接的信息,请参见 STEP 7 在线帮助。

S7 通信 7

S7 通信的特点

S7 通信作为 SIMATIC 的同构通信,属于 SIMATIC CPU 之间进行供应商相关的通信(非开放式标准)。在移植和连接现有系统(S7-300、S7-400)进行通信时通常使用 S7 通信。

对于两个 S7-1500 自动化系统之间的数据传输,建议使用开放式通信(请参见“开放式用户通信 (页 72)”部分)。

S7 通信的属性

通过 S7 通信,CPU 可与另一个 CPU 交换数据。一旦用户在接收端接收到数据,就将自动向发送端 CPU 确认已接收到数据。

通过所组态的 S7 连接进行数据交换。S7 连接可以在一端或者同时在两端进行组态。

S7 通信可通过以下方式进行:

  • CPU 的集成 PROFINET 或 PROFIBUS DP 接口
  • CP/CM 的接口

在一端组态 S7 连接

对于在一端组态的 S7 连接,仅在一个通信伙伴中组态此连接并且仅下载到此伙伴。

可以组态一个连接到一台 CPU 的单向 S7 连接,该 CPU 仅作为 S7 连接的服务器(例如,CPU 315-2 DP)。该 CPU 已组态,因此其地址参数和接口也是已知的。

另外,还可以组态一个连接到伙伴的单向 S7 连接,该伙伴不在项目中,其地址参数和接口都未知。因此,需要输入地址;STEP 7 不对其进行检查。开始时未指定伙伴(创建

S7 连接时未注册伙伴地址)。输入地址后,该地址是“未知”的(即虽然已命名,但项目是未知的)。

这样便可在项目之外使用 S7 连接。本地项目将无法识别该通信伙伴(未指定),将在另一个 STEP 7 或第三方项目中进行组态。

在两端组态 S7 连接

在两端同时组态 S7 连接时,将同时在两个通信伙伴中组态和下载所组态的 S7 连接参数。

S7 通信的指令

与 S7-1500 进行 S7 通信时,可以使用以下指令:

  • PUT/GET

可使用指令“PUT”,将数据写入一个远程 CPU。使用指令“GET”从远程 CPU 读取数据。PUT 和 GET 指令是单向指令,也就是说,只需在一个通信伙伴中有该指令即可。通过连接组态,可方便地设置 PUT 和 GET 指令。

说明

PUT/GET 指令的数据块

使用 PUT/GET 指令时,只能使用进行绝对寻址的数据块。不能使用进行符号寻址的数据块。

用户还必须在“保护”(Protection) 区域启用此服务以保护 CPU 组态。

    • BSEND/BRCV

指令“BSEND”可将数据发送到类型为“BRCV”的远程伙伴指令。指令“BRCV”从类型为

“BSEND”的远程伙伴指令接收数据。 可通过指令对 BSEND/BRCV 进行 S7 通信,以实现安全数据传输。

    • USEND/URCV

指令“USEND”可将数据发送到类型为“URCV”的远程伙伴指令。指令“URCV”从类型为

“USEND”的远程伙伴指令接收数据。无论通信伙伴的处理时间如何,用户都可通过

USEND/URCV 指令对进行 S7 通信,以实现快速的非安全数据传输,例如,传输操作和维护消息。

在从站模式下,通过 PROFIBUS DP 接口进行 S7 通信

在 STEP 7 中的通信模块(如 CM 1542-5)PROFIBUS DP 接口属性中,有一个“测试、调试和路由”(Test, commissioning, routing) 复选框。通过该复选框,可以确定将 DP 从站上的 PROFIBUS DP 作为 PROFIBUS 上的主动设备或被动设备。

  • 选中复选框:该从站将作为 PROFIBUS 上的主动设备。
  • 禁用复选框:DP 从站将作为 PROFIBUS 上的被动设备。只能为该 DP 从站建立一端组态的 S7 连接。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-56

图 7-1 “测试、调试和路由”(Test, commissioning, routing) 复选框

组态 PUT/GET 指令的 S7 连接

可以创建 S7 连接并在指定 PUT/GET 指令的连接参数时分配这些连接的参数。分配连接参数时,会立即检查更改的值有无输入错误。

要求:PUT 或 GET 指令是在程序编辑器中创建的。要使用 PUT/GET 组态 S7 连接,请按以下步骤操作:

  1. 在程序编辑器中,选择调用 PUT 或 GET 指令。
  2. 在巡视窗口中,打开“属性 > 组态”(Properties > Configuration) 选项卡。
  3. 选择“连接参数”(Connection parameters) 组。在选择连接伙伴之前,只显示伙伴端点的空下拉列表。其它所有输入选项均禁用。

同时显示一些已知的连接参数:

    • 本地端点的名称
    • 本地端点的接口
    • 本地端点的 IPv4 地址

|hardcopy|2014/10/10 17:25:23
z00334xp
MD19XY8C

图 7-2 PUT 指令的连接组态

  1. 从伙伴端点的下拉列表框中,选择一个连接伙伴。可以选择项目中未指定的设备或

CPU 作为通信伙伴。

选择连接伙伴后,会自动输入以下参数:

    • 伙伴端点的名称
    • 伙伴端点的接口。如果有多个接口,则可根据需要更改接口。
    • 伙伴端点的接口类型
    • 两个端点的子网名称
    • 伙伴端点的 IPv4 地址
    • 用于通信的连接的名称。
  1. 如果需要,请在“连接名称”(Connection name) 输入框中更改连接名称。如果要创建新的连接或编辑现有连接,则可单击连接名称输入框右侧的“选择连接”(Select

connection) 按钮。

说明

仅当已将伙伴端点的硬件配置和程序部分加载到硬件中后,两个通信伙伴之间的 PUT 和 GET 指令才能运行。要实现功能完整的通信,应确保在设备上不仅装载了本地CPU 的连接描述,而且还装载了伙伴 CPU 的连接描述。

组态 BSEND/BRCV 的 S7 连接

例如,如果要使用 BSEND/BRCV 指令进行 S7 通信,首先需要组态 S7 连接。要组态 S7 连接,请按以下步骤操作:

  1. 在 STEP 7 的“设备与网络”(Devices & networks) 编辑器的网络视图中,组态通信伙伴。
  2. 选择“连接”(Connections) 按钮,并从下拉列表中选择“S7 连接”(S7 connection) 条目。
  3. 使用拖放操作,互连通信伙伴(通过接口或本地端点)。如果所需的 S7 子网尚不存在,则系统将自动创建。

还可以设置与未指定伙伴的连接。

  1. 在选项卡“连接”(Connections) 中,选择 S7 连接所在的行。
  2. 在“属性”(Properties) 选项卡的“常规” (General) 区域中,设置 S7 连接的属性(例如,连接名称和将使用的通信伙伴接口)。

若要建立与未指定的伙伴间的 S7 连接,请设置该伙伴的地址。

可在“本地 ID”(Local ID) 区域中找到本地 ID(用户程序中的 S7 连接参考)。

  1. 在项目树中,选择用于 1 个 CPU 的“程序块”(Program blocks) 文件夹。双击文件夹,打开文件夹中的 OB1。将打开程序编辑器。
  2. 在程序编辑器中,如果在一端组态 S7 连接,则在通信伙伴的用户程序中调用相关的指令进行 S7 通信;如果在两端组态,则在通信伙伴的用户程序中调用。例如,从“指

令”(Instructions) 任务卡中的“通信” (Communication) 区域内,选择 BSEND 和 BRCV

指令,并将其拖放到 OB1 的一个程序段中。

  1. 通过该指令的 ID 参数,指定要用于数据传输的已组态连接的本地 ID。
  2. 指定指令的参数,以标识待读取/写入的数据以及数据的来源和目的地。
  3. 将硬件配置和用户程序下载到 CPU。

通过 CP 1543-1 进行 S7 通信

如果通过 CP 1543-1 的工业以太网接口建立 S7 通信,则可以在 S7 连接属性的“常规”(General) 区域中选择数据传输的传输协议:

  • 选中“TCP/IP”复选框(默认选中):ISO-on-TCP (RFC1006):在 S7-1500 CPU 间进行 S7 通信
  • 禁用“TCP/IP”复选框:ISO 协议 (IEC8073):使用 MAC 地址进行寻址

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-58

图 7-3 选择 CP 1543-1 的传输协议

建立不同 S7 子网间 S7 连接的步骤

可通过各种 S7 子网(PROFIBUS、PROFINET/工业以太网)建立 S7 连接(S7 (页 251)

路由)。

  1. 在 STEP 7 的“设备与网络”(Devices & networks) 编辑器的网络视图中,组态通信伙伴。
  2. 选择“网络”(Network) 按钮。
  3. 通过拖放操作,连接 S7 子网(PROFIBUS、PROFINET/工业以太网)中的相应接口。
  4. 选择“连接”(Connections) 按钮,并从下拉列表中选择“S7 连接”(S7 connection) 条目。
  5. 在本例中,通过拖放操作将左侧 S7 子网 (PROFIBUS) 中的 PLC_1 连接到右侧 S7 子网 (PROFINET) 中的 PLC_3。

已组态 CPU 1 和 CPU 3 之间的 S7 连接。

|hardcopy|2014/10/14 17:16:19
z00334xp
MD19XY8C

图 7-4 通过不同子网进行 S7 连接

ET 200SP 开放式控制器作为 S7 连接的路由器

如果将 "PROFINET onboard [X2]" 接口分配给 SIMATIC PC 站的 CPU 1515SP

PC (F) ,CPU 1515SP PC (F) 便可用作 S7 连接的路由器。如果 CP 接口设置为“无,或其它 Windows 设置”(None, or a different Windows setting),则开放式控制器无法用作路由的 S7 连接的路由器。

如果 CPU 1515SP PC (F) 分配的接口从“SIMATIC PC 站”(SIMATIC PC station) 更改为

“无,或其它 Windows 设置”(None, or a different Windows setting),则 CPU 1515SP PC (F) 路由的现有 S7 连接将失效。由于 PLC 现在不再处理此连接的路由功能,因此在编译 CPU 1515SP PC (F) 时,将不会显示与无效连接相关的消息。在编译连接的端点时,将仅显示路由的无效 S7 连接。

路由的 S7 连接所需的接口必须在 CPU 1515SP PC (F) 上明确指定。可以在“PROFINET内置 [X2] > 接口分配”(PROFINET onboard [X2] > Interface assignment) 下的属性中编辑 CPU 1515SP PC (F) 的接口分配。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-60

图 7-5 S7 路由 PC 站

更多信息

有关 S7 连接组态和如何在用户程序中使用 S7 通信指令的详细信息,请参见 STEP 7 在线帮助。

点到点连接 8

功能

通过带有串口(RS232、RS422 或 RS485)的通信模块 (CM),可建立 S7-1500、 ET 200MP 和 ET 200SP 的点到点连接。

  • S7-1500/ET 200MP:
    • CM PtP RS232 BA
    • CM PtP RS422/485 BA
    • CM PtP RS232 HF
    • CM PtP RS422/485 HF
  • ET 200SP:
    • CM PtP

通过点到点连接,通信模块与具有通信能力的第三方系统或设备之间可以进行双向数据交换。进行点到点通信时,需要至少两个通信伙伴。通过 RS422 和 RS485,可以在两个以上通信伙伴间进行通信。

点到点连接的通信协议

  • Freeport 协议(也称为 ASCII 协议)
  • 3964(R) 程序
  • RTU 格式的 Modbus 协议(RTU:远程终端设备)
  • USS 协议(通用串行接口协议)

根据 ISO/OSI 参考模型,这些协议将使用不同层:

  • Freeport:使用第 1 层(物理层)
  • 3964 (R)、USS 和 Modbus:使用第 1 层和第 2 层(物理层和数据链路层。因此,与

Freeport 相比,传输的可靠性更高)。USS 和 Modbus 还另外使用第 4 层。

Freeport 协议的特性

  • 通过一个可选择的结束条件(例如,超出字符延时时间、收到结束字符、收到一定数量的数据),接收方可以识别出数据传输是否结束。
  • 但发送方无法识别接收方所接收到的发送数据有无错误。

3964 (R) 程序的特性

  • 发送数据时,将添加一些控制字符(起始、结束和块校验字符)。请确保这些控制字符不作为数据包含在帧中。
  • 可通过这些控制字符建立和终止连接。
  • 如果发生传输错误,则将自动重新传输数据。

通过 Freeport 或 3964 (R) 通信进行数据交换

待发送的数据将存储在相应 CPU 数据块的用户程序(发送缓冲区)中。通信模块上的接收缓冲区将用于存储接收数据。检查接收缓冲区的属性,必要时进行调整。必须创建用于在 CPU 中接收的数据块。

在 CPU 的用户程序中,可通过“Send_P2P”和“Receive_P2P”指令在 CPU 和 CM 间进行数据传输。

建立 Freeport 或 3964 (R) 通信的步骤

  1. 在 STEP 7 的硬件和网络编辑器的设备视图中,组态一个带有 CPU 和 CM 的

S7-1500 组态。

  1. 在 STEP 7 的设备视图中,选择 CM 的接口。
  2. 在 STEP 7 巡视窗口的“属性 > 常规”(Properties > General) 下,分配接口的参数(例如连接通信、消息发送组态)。
  3. 在“通信 > 通信处理器”(Communication >Communications processor)下的“指

令”(Instructions) 任务卡中,选择“Send_P2P”或“Receive_P2P”指令,并将指令拖放到用户程序中(例如拖入 FB)。

  1. 根据组态,指定这些指令的参数。
  2. 将硬件配置和用户程序下载到 CPU。

或者:通信模块的动态参数分配

在某些类型的应用中,动态建立通信连接更有优势。即,通过一个特定的应用中的程序建立通信。

这种应用的典型示例有串行计算机生产商。为了用户更为便捷地使用用户接口,这些制造商可以按照特定的操作要求对通信服务进行调整。

Freeport 的通信指令

一共有 3 条指令可在用户程序中动态组态 Freeport 通信。以下情况适用于所有 3 条指令:之前有效的组态数据将被覆盖,但不会在目标系统中永久保存。

    • “Port_Config”指令可用于对通信模块的相关端口进行程序控制的组态。
    • “Send_Config”指令可用于对相关的端口进行动态组态。例如,传输的时间间隔和中断

(串行传输参数)。

    • “Receive_Config”指令可用于对相关的端口进行动态组态。例如,消息传输的开始和结束条件(串行接收参数)

3964 (R) 通信的指令

一共有 2 种指令可在用户程序中动态组态 3964 (R) 通信。以下情况适用于这些指令:之前有效的组态数据将被覆盖,但不会在目标系统中永久保存。

    • “Port_Config”指令可用于对通信模块的相关端口进行程序控制的组态。
    • “P3964_Config”指令可用于对协议的参数进行动态组态。

USS 协议的特性

  • 一种简单的串行数据传输协议,采用半双工模式并通过循环帧进行数据传输,为驱动技术量身定制。
  • 根据主站/从站模式进行数据传输。
    • 主站可以访问驱动器的功能,并可以控制驱动器,读取状态值,对驱动器参数进行读/写操作。

通过 USS 通信进行数据交换

该通信模块将作为主站。主站可以向最多 16 个驱动器连续发送帧(任务帧),并将收到每个所寻址驱动器的响应帧。

在以下条件下,驱动器发送一个响应帧:

      • 接收到的帧无错误
      • 驱动器在此帧中寻址

如果不满足以上这些条件,或者在广播帧中对驱动器进行寻址,则驱动器将不发送响应帧。

如果主站在一定的处理时间(响应延时时间)之后从驱动器接收到一条响应帧,则主站与相应的驱动器之间存在连接。

建立 USS 通信的步骤

  1. 在 STEP 7 的硬件和网络编辑器的设备视图中,组态一个带有 CPU 和 CM 的

S7-1500 组态。

  1. 在项目树中,选择“程序块”(Program blocks) 文件夹。双击该文件夹,打开文件夹中的

OB1。将打开程序编辑器。

  1. 从“指令”(Instructions) 任务卡的“通信”(Communication) 区域中的“通信处理

器”(Communications processor) 文件夹,根据当前的任务选择 USS 通信的指令,并将其拖放到 OB1 的一个程序段中:

    • 使用“USS_Port_Scan”指令,可通过 USS 程序段进行通信。
    • “USS_Drive_Control”指令为驱动器准备发送数据并评估驱动器的响应数据。
    • “USS_Read_Param”指令可用于读出驱动器的参数。
    • “USS_Write_Param”指令可用于更改驱动器的参数。
  1. 根据组态,指定这些指令的参数。
  2. 将硬件配置和用户程序下载到 CPU。

Modbus 协议 (RTU) 的特性

  • 采用串行、异步传输的通信方式,传输速率高达 115.2 kbps,半双工。
  • 根据主站/从站模式进行数据传输。
  • Modbus 主站可发送向 Modbus 从站进行读写操作的作业:
    • 读取输入、定时器、计数器、输出、存储位、数据块
    • 写入输出、存储位、数据块
  • 还可以向所有从站进行广播。

通过 Modbus 通信 (RTU) 进行数据交换

通信模块可以作为 Modbus 主站,也可以作为 Modbus 从站。Modbus 主站可与一个或多个 Modbus 从站进行通信(具体数量取决于物理接口)。只允许 Modbus 主站通过对

Modbus 从站进行显式寻址,向 Modbus 主站返回数据。从站将检测数据传输是否终止, 并进行确认。如果发生错误,将向主站发送一个错误代码。

建立 Modbus 通信 (RTU) 的步骤

  1. 在 STEP 7 的硬件和网络编辑器的设备视图中,组态一个带有 CPU 和 CM 的

S7-1500 组态。

  1. 在项目树中,选择“程序块”(Program blocks) 文件夹。双击该文件夹,打开文件夹中的

OB1。将打开程序编辑器。

  1. 从“指令”(Instructions) 任务卡的“通信”(Communication) 区域中的“通信处理

器”(Communications processor) 文件夹,根据当前的任务选择 Modbus 通信的指令,并将其拖放到 OB1 的一个程序段中:

    • “Modbus_Comm_Load”指令将对 Modbus 通信的 CM 端口进行组态。
    • “Modbus_Master”指令可用于调用 Modbus 主站的功能。
    • “Modbus_Slave”指令可用于调用 Modbus 从站的功能。
  1. 根据组态,指定这些指令的参数。
  2. 将硬件配置和用户程序下载到 CPU。
  • 有关如何在用户程序中使用点到点连接指令的说明,请参见 STEP 7 在线帮助。
  • 有关带有串行接口的通信模块的信息,请参见特定的通信模块手册。
OPC UA 通信 9

需了解的 OPC UA 知识

OPC UA 和工业 4.0

数据交换的统一标准

工业 4.0 是指在企业层级对 IT 系统中的大量生产数据进行统一应用、评估和分析。借助工业 4.0,生产与企业层级间的数据交换正在迅速增长。但前提条件是,在数据交换中采用统一标准。

由于 OPC UA (OPC Unified Architecture) 标准独立于特定的操作系统,并采用安全传送机制和数据语义描述,尤其适合于跨层级的数据交换。OPC UA 不仅可以传递数据,而且还可传递与数据有关的信息(数据类型),从而可对数据继续机器解析访问。

描述结构

在 OPC UA 中,一个系统作为服务器运行,并为其它系统(客户端)提供数据和方法。

OPC UA 客户端可对 OPC UA 服务器上的数据进行读访问和写访问。OPC UA 客户端可调用 OPC UA 服务器中的方法。

系统可同时为客户端和服务器。

S7-1500 CPU 的 OPC UA 服务器

自固件版本 2.0 起,S7-1500 CPU 配备 OPC UA 服务器。

以下章节将介绍如何组态 S7-1500 CPU 的 OPC UA 服务器才能使数据和方法可用于 OPC UA 客户端,以便客户端可对 CPU 上的 PLC 变量进行读访问和写访问以及可以调用服务器方法。

以下章节还将介绍如何将配套规范集成到 OPC UA 服务器的地址空间中。

OPC UA 客户端的常规使用

以下说明使用了几种不同的 OPC UA 客户端来说明 OPC UA 客户端的使用情况:

        • Unified Automation 的“UaExpert”。可免费使用的功能丰富的客户端:
        • OPC Foundation 的“UA Sample Client”。在 OPC Foundation 注册的用户可免费使用该客户端:

工业在线支持中的应用示例

Siemens 工业在线支持免费提供客户端 API 应用示例。.NET 开发人员可使用此接口的功能访问 S7-1500 的 OPC UA 服务器。客户端 API 基于 OPC 基金会的 .NET OPC UA 协议栈。

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

SIMATIC S7-1500 OPC UA 服务器的 OPC UA .NET 客户端

OPC UA 的常规特性

OPC UA 的主要特性

        • OPC UA 与特定的操作系统平台无关。

OPC UA 支持 Windows、Linux、Mac OS X、实时操作系统或移动操作系统(如 Android)。

        • OPC UA 支持多种不同的编程语言。

OPC 基金会已推出了不同编程语言版本的 OPC UA 标准:ANSI C、.NET 和 Java 中的栈。

        • OPC 基金会提供了 Java 协议栈和 .Net 协议栈,并以开源软件的形式提供了示例程序。
        • 许多公司使用包含有 OPC Foundation 栈和其它功能的 Software Development Kits

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

          • 供应商支持
          • 经测试的软件
          • 详细的文档
          • 明确的许可证条件(对于销售解决方案很重要)
        • 易于扩展

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

ERP 应用程序的服务器中。

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

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

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

  • 集成信息安全机制

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

    • 仅当 OPC UA 客户端和 OPC UA 服务器均通过 X.509-v3 证书进行注册并接受对方的证书时,服务器与客户端之间才能建立安全连接(应用层的信息安全)。可以使用多种安全策略,包括服务器和客户端之间的非安全连接(安全策略:“不安

全”)。

    • 在允许用户访问信息之前,服务器可能会向用户请求以下各项:
      • 证书(无法在 STEP 7 中组态)
      • 用户名和密码

– 无用户认证

信息安全机制为可选项且可以组态。

  • 独立于特定的传输层

OPC UA 当前支持以下传输机制:

    • 通过 TCP/IP,将消息作为二进制流直接传输
    • 通过 TCP/IP 和 HTTP 采用 XML 形式传送消息。这种方式只允许慢速传送,因此很少使用。无法在 STEP 7 中对其组态,且不受 S7-1500 CPU 支持。

所有 OPC UA 应用均支持二进制数据交换(基于 OPC UA 技术规范)。

  • PLC 变量映射

OPC UA 服务器中的信息(如,PLC 变量)可建模为节点,通过引用进行连接。这样,即可通过 OPC UA 客户端从一个节点浏览到另一个节点,查找可读取、监视或写入的内容。

  • 信息

OPC UA 服务器可提供大量信息。如有关 CPU、OPC UA 服务器、数据和数据类型的信息。

  • 实例机制

OPC UA 基于类型实例机制。无论是实例还是类型定义,都在运行过程中使用。

  • 通过配置文件区分不同功能:例如,S7-1500 支持嵌入式 UA 服务器配置文件

从标准 OPC 接口到 OPC UA

标准化接口

标准 OPC 仅支持 Windows 操作系统。

为了应对这一限制条件,OPC Foundation 研发出了 OPC UA 标准。

该标准并不特定于某个平台,并且针对高性能应用使用优化的基于 TCP 的二进制协议。因此,支持不同系统间的数据交换,例如:

    • 控制器与 MES 和 ERP 系统
    • 西门子的控制器与其他制造商的控制器
    • 智能电话与控制器
    • 嵌入式系统与控制器
    • 智能传感器与控制器

S7-1500 CPU 的 OPC UA 服务器

S7-1500 CPU 固件版本 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”同样包括上述的 CPU 类型。

S7-1500 CPU OPC UA 服务器的基本知识

通过 S7-1500 CPU 上所有集成的 PROFINET 接口,可访问该 CPU 中的 OPC UA 服务器。

不能借助 CP 或 CM 通过自动化系统的背板总线直接访问 CPU 的 OPC UA 服务器。

通过客户端进行访问时,服务器将以节点形式保存启用的 PLC 变量和其它信息(参见“组态对 PLC 变量的访问 (页 173)”)。这些节点相互连接并形成一个网络。OPC UA 将定义该网络的接入点(已知节点),可导航到下级节点。

通过 OPC UA 客户端,可对 PLC 程序中的变量值执行读取、监视或写入,并调用服务器中可用的方法。在固件版本 V2.5 及以上版本中,可执行这些方法。具体信息,请参见“服务器方法 (页 202)”。

节点类别

OPC UA 服务器将基于节点提供相应的信息。例如,节点可以为对象、变量或方法。在以下示例中,显示了 S7-1500 CPU 中 OPC UA 服务器的地址空间(摘自 Unified

Automation 的 OPC UA 客户端“UaExpert”)。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-61

图 9-1 S7-1500 CPU 的 OPC UA 服务器地址空间示例

在上图中,已选择“MyValue”变量(以灰色突出显示)。此变量位于节点类别为“Object”的“Memory”节点下。

“Memory”位于“"PLC_1”节点下(也是一个 Object)。

地址空间

节点通过引用进行连接(如,引用“HasComponent”)。即,节点与子节点之间为层级关系。通过引用,这些节点将构成一个网络。该网络可以为树形结构等。

因此,节点网络也可称为地址空间。可从根节点开始,访问地址空间中的所有节点。

节点寻址

OPC UA 地址空间内的所有节点均由一个 NodeId(节点 ID 或节点标识符)进行唯一标识。

NodeId 由一个标识符、标识符类型和一个命名空间索引构成。使用命名空间可避免命名时发生冲突。OPC 基金会定义了大量节点,用于提供指定 OPC UA 服务器的有关信息。这些节点可以在 OPC Foundation 的命名空间中找到且索引为 0。

OPC Foundation 还定义有数据类型和变量类型。

Namespace

Identifier

S7-1500 的所有变量和方法都包括在该命名空间 (Namespace)“http://www.siemens.com/simatic-s7-opcua”中。系统默认,该命名空间的索引为 3。如果在服务器中插入其它命名空间或删除现有的某个命名空间,则索引将随之更改。因此,在读取或写入值之前,需要从服务器上请求该命名空间的当前索引。

下图所示为这类查询的结果。在此示例中,将使用西门子的“UaClient”程序;具体请参见

Identifier 对应于引号内的 PLC 变量名称。在 STEP 7 中,引号是唯一不能用作名称的符号。引号可避免发生命名冲突。

在以下示例中介绍了如何读取“StartTimer”变量的值:

|hardcopy|2016/05/27 17:01:34
User
REDAKTION

Identifier 可包含多个组成部分。各个组成部分之间以句点进行分隔。下图举例说明了

“MyDB”数组数据块的完整读取。该数据块包含带十个整数值的数组。全部十个值应一次性读取。因此,需在数组范围中输入“0:9”。

|hardcopy|2016/05/27 17:07:46
User
REDAKTION

OPC UA 服务器地址区中的 PLC 变量

下图所示为示例程序的 PLC 变量在 OPC UA 服务器地址空间中所处的位置(摘自 UA 客户端):

“MyDB”数据块是一个全局数据块。因此,该数据块位于节点“DataBlocksGlobal”下。

“StartTimer”是一个内存变量,存储在“Memory”节点下。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-64

图 9-2 OPC UA 服务器地址范围内的 PLC 变量

OPC UA 服务器地址范围内的方法

如果通过用户程序执行某个方法,则在 OPC UA 服务器的地址空间中将采用以下形式请参见“执行方法的 OPC UA 服务器指令 (页 206)”):

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-65

图 9-3 OPC UA 服务器地址范围内的方法

数据类型映射

SIMATIC 和 OPC UA 数据类型

SIMATIC 数据类型通常与 OPC UA 数据类型不对应。

S7-1500 CPU 将 SIMATIC 变量(SIMATIC 数据类型)提供给其自己的 OPC UA 服务器作为 OPC UA 数据类型,以便 OPC UA 客户端可以通过 OPC UA 数据类型的服务器接口访问这些变量。

客户端可以从这样的变量中读取属性“Datatype”,并在 SIMATIC 中重建原始数据类型。

示例

一个变量的 SIMATIC 数据类型为“COUNTER”。在表中可读取 COUNTER → UInt16。现在了解到不需要进行转换;COUNTER 值以 UInt16 数据类型通过该线路发送。

客户端可以从“Datatype”属性得知其实际上是 COUNTER 数据类型,且可以以此重建它。

表格 9- 1 SIMATIC 和 OPC UA 数据类型

SIMATIC 数据类型 OPC UA 数据类型性
BOOL Boolean
BYTE BYTE

→ Byte

WORD WORD

→ UInt16

DWORD DWORD

→ UInt32

LWORD LWORD

→ UInt64

SINT SByte
INT Int16
DINT Int32
LINT Int64
USINT Byte
UINT UInt16
SIMATIC 数据类型 OPC UA 数据类型性
UDINT UInt32
ULINT UInt64
REAL Float
LREAL Double
S5TIME S5TIME

→ UInt16

TIME TIME

→ Int32

LTIME LTIME

→ Int64

DATE DATE

→ UInt16

TIME_OF_DAY (TOD) TOD

→ UInt32

LTIME_OF_DAY (LTOD) LTOD

→ UInt64

DATE_AND_TIME (DT) DT

→ Byte[8]

LDT DateTime
DTL 映射为结构
CHAR CHAR

→ Byte

WCHAR WCHAR

→ UInt16

STRING

(代码页或 1252 或

Windows-1252)

STRING

→ String

WSTRING

(UCS-2;通用编码字符集)

String
SIMATIC 数据类型 OPC UA 数据类型性
TIMER TIMER

→ UInt16

COUNTER COUNTER

→ UInt16

数组

使用 OPC UA 进行的读取或写入作业通常是数组访问的实例,即它具有索引和长度,因此单个变量只是数组的一种特殊情况(索引为 0 且长度为 1)。只是在该线路上重复发送此数据类型。对于变量,“Datatype”属性指示基本数据类型。属性“ValueRank”和

“ArrayDimensions”显示用户是否在处理数组以及该数组的大小。

结构

结构作为 ExtensionObject 进行传送。S7-1500 服务器使用二进制表示来在线路上传输

ExtensionObjects;各结构元素相继出现。在前面的是数据类型的 NodeId;客户端使用其来建立结构。

对于 OPC UA 规范 V1.03 及以下版本,要实现该功能,客户端需读取、解码和解析完整的 DataTypeDictionary(除非已通过 XML 导入功能离线完成)。

更多信息

有关基本数据类型、数组和结构映射的更多详细信息,请参见 OPC UA 规范第 6 部分“映射”的 OPC UA BINARY。

OPC UA 服务器的端点

在 OPC UA 服务器的端点,将定义连接的安全级别。基于所用或期望的安全级别,在端点处需执行相应的连接设置。

不同的安全设置

建立安全连接之前,OPC UA 客户端会询问服务器采用哪些安全设置进行连接。服务器将返回服务器提供的所有安全设置(端点)的列表。

端点结构

端点由以下几部分组成:

        • OPC 的标识符:“opc.tcp”
        • IP 地址:192.168.178.151(在本示例中)
        • OPC UA 的端口号:4840(标准端口)

端口号可组态,参见“OPC UA 服务器的设置 (页 182)”部分。

        • 消息的安全设置(消息安全模式):“无”(None)、“签名”(Sign)、SignAndEncrypt。
        • 加密和 HASH 程序 (Security Policy):无,Basic128Rsa15、Basic256、

Basic256Sha256(在本示例中)。

下图显示了 OPC Foundation 的“UA Sample Client”。

客户端已与 S7-1500 CPU 中 OPC UA 服务器的端点“opc.tcp://192.168.178.151:4840 - [SignAndEndCrypt: Basic128Rsa15:Binary]”建立了安全连接。端点的安全设置为 “SignAndEndCrypt:Basic128Rsa15”。

说明

选择安全策略尽可能严格的端点

根据具体应用,为端点选择相应的安全策略,并在 OPC UA 服务器上禁用较不严格的安全策略。

S7-1500 CPU OPC UA 服务器的两个最安全的端点 (Basic256Sha256) 要求具有 Sha256

证书。

|hardcopy|2016/04/15 10:37:12
User
REDAKTION

图 9-4 OPC Foundation 的“UA Sample Client”程序

仅当 OPC UA 客户端符合服务器端点的安全政策时,才能与服务器端点建立连接。

OPC UA 服务器提供的信息

OPC UA 服务器可提供大量数据:

  • 客户端可能访问的 DB 元素以及 PLC 变量的值。
  • 这些 PLC 变量和 DB 元素的数据类型。
  • 有关 OPC UA 服务器和 CPU 的信息。

因此,客户端可了解并读取相应的特定信息,无需具备之前的 PLC 程序和 CPU 数据。读取 PLC 变量时,无需询问 PLC 程序的研发人员。所有相关信息均存储在服务器中

(如,PLC 变量的数据类型)。

OPC UA 服务器信息的显示

可通过以下几种方式:

        • 在线:已在 OPC UA 服务器运行期间显示了所有可用信息。为此,请导航到(浏览) 该服务器的地址空间。
        • 离线:可导出基于 OPC 基金会的 XML 架构的 XML 文件。

不导出用户创建的服务器方法(可通过 OPC UA 客户端调用的函数块实例)(STEP 7 (TIA Portal) V15),请参见在 OPC UA 服务器上提供方法 (页 202)。

        • 离线并使用开放性 API:在程序中,可通过 TIA Portal 的 API(应用程序编程接口)访问导出 OPC UA 可读取的所有 PLC 变量的功能。需要安装有 .NET Framework

4.0;

        • 如果您熟知相关语法和 PLC 编程,则可直接访问 OPC UA 服务器,而无需先了解相关信息。

OPC UA 服务器运行期间的行为

运行过程中的 OPC UA 服务器

激活服务器并将项目下载到 CPU 后,S7-1500 CPU 的 OPC UA 服务器会启动。此处 (页 178)介绍了如何激活 OPC UA 服务器。

对 CPU STOP 模式的响应

即使 CPU 切换到“STOP”模式,已激活的 OPC UA 服务器仍然保持运行状态。OPC UA

服务器会继续响应来自 OPC UA 客户端的请求。服务器响应的详细信息:

        • 如果用户请求 PLC 变量的值,则会获得 CPU 切换到或被设置为“STOP”模式之前的最新值。
        • 如果用户向 OPC UA 服务器写入值,则 OPC UA 服务器将接受这些值。

但是,由于用户程序不是在“STOP”模式下执行的,所以 CPU 不会处理这些值。尽管如此,OPC UA 客户端可以从 CPU 的 OPC UA 服务器读取新的值。

        • 调用某个服务器方法时,系统将因为服务器方法(用户程序)当前未运行而输出错误消息 16#00AF_0000 (BadInvalidState)。

服务器重新启动

每次将内容下载到 CPU 后(例如下载组态或块后),OPC UA 服务器都会停止运行,随后会重新启动。重新启动 OPC UA 服务器需要等待一段时间,具体取决于数据结构的大小。

通过 OPC UA 服务器读取 CPU 的操作模式

通过 OPC UA 服务器可读出 CPU 模式,如下图所示:

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-67

图 9-5 通过 OPC UA 服务器读取 CPU 的操作模式

除了 CPU 的操作状态之外,还可读出服务器的状态 (State)。

需了解的 OPC UA 客户端知识

OPC UA 客户端的基本知识

OPC UA 客户端程序可用于执行以下操作:

        • 从 OPC UA 服务器读取和写入信息,例如 S7-1500 CPU
        • 通过 OPC UA 服务器执行方法

但是,OPC US 客户端可以访问针对此目的启用的数据(请参见“管理读写权限

(页 173)”)。

要建立与 OPC UA 服务器的连接,需通过服务器的端点(请参见“OPC UA 服务器的端点

(页 151)”)。

从 OPC UA 服务器读取信息

如果存在与服务器端点的连接,则可使用客户端的导航功能:从既定的起始点(“根”节点)开始,浏览服务器的地址空间。

该过程提供了以下信息:

        • 启用的 PLC 变量、数据块和数据块元素
        • 这些 PLC 变量、数据块和 DB 元素的命名空间索引及标识符
        • PLC 变量和 DB 元素的数据类型
        • 数组中的元素数量(读取和写入数组时需要)

此外,还可读取有关 OPC UA 服务器自身的信息,以及基于 OPC Foundation 中“OPC UA for Devices”标准的 S7-1500 信息(如,序列号和固件版本)

从服务器中读取数据和写入服务器中的数据

现在,您已明确 PLC 变量的命名空间、标识符和数据类型。即,用户可特定读取具体的PLC 变量和 DB 元素以及整个数组和结构。有关读取布尔型变量和数组型数据块的示例,请参见“寻址节点 (页 145)”。

基于浏览服务器地址空间时所读取的信息(索引、标识符和数据类型),还可通过 OPC UA 客户端将这些值传输到 S7-1500 中。在以下示例中,介绍了如何覆盖数组数据块 “MyDB”中的前三个值。

|hardcopy|2016/05/27 18:19:44
User
REDAKTION

对于“Array Range”,可指定待覆盖的数组元素。状态代码“Good”用于指示数据传输已成功。不过,您只能向 S7-1500 写入值,而不能写入这些值的时间戳。时间戳为只读。

通过注册提高访问速度

在以上示例中,将字符串用作 Identifier。如,“MyBD2"."THIS”。但如果将 Identifier 用作数值型节点 ID 而非字符串型节点 ID,则访问速度将极大加快。如需定期访问某些特定变量,则可使用函数“RegisteredRead”和“RegisteredWrite”。

此时,客户端将在服务器上中注册 PLC 变量,之后服务器将返回一个 Identifier,客户端将使用该标识符进行实际访问。该 Identifier 仅适用于当前会话。会话连接中断/丢失时,需重新查询。

在以下示例中,首先在服务器上注册一个“StartTimer”变量。之后,将使用快速功能

“RegisteredWrite”对该值进行设置。

|hardcopy|2016/05/27 18:13:16
User
REDAKTION

    1. 需了解的OPC UA 知识

在相同模式中,也可使用函数“RegisteredRead”。在重复读出数据时,该函数优势彰显。但在具体应用中,则建议使用 Subscription 进行代替。

建议:由于注册需要等待一段时间,因此建议在将注册信息保存在 OPC UA 客户端的启动程序中。

请注意 S7-1500 CPU 属性中可设置的注册节点最大数目,同时客户端需也需符合该数目的要求。具体信息,请参见“OPC UA 服务器的常规设置 (页 182)”。

订阅

术语“Subscription”时一个函数,该函数仅传输 OPC UA 服务器上已注册 OPC UA 客户端中的变量。数值发生变更后,OPC UA 服务器仅向 OPC UA 客户端发送一条有关已注册变量的消息 (Subscriptions)。通过对这些变量进行监视,OPC UA 客户端无需再进行固定采样,因此可降低网络负荷。

要使用该功能,需创建一个 Subscription。为此,需在 UA 客户端中指定“发布间

隔”(Publishing Interval),并单击“创建”(Create) 按钮。“发布间隔”(Publishing interval) 为向客户端发送新值的时间间隔。

在下面的示例中,已创建了一个订阅:客户端将每隔 50 ms 接收一条包含新值的消息

(发布间隔为 50 ms)。

|hardcopy|2016/05/27 18:22:32
User
REDAKTION

防止服务器过载

通过将 S7-1500 CPU 的 OPC UA 服务器设置为“最小发布时间间隔”(Minimum publishing interval),可避免客户端要求极短的发送时间间隔;具体消息,请参见“OPC UA 服务器的设置 (页 182)”。

示例:如上所述,客户端想要以 50 ms 的发布时间间隔进行操作。但是,这样短的发布时间间隔会导致网络负荷和服务器负荷较高。因此,应将服务器的“最短发布时间间隔”设 置为 1000 ms。订阅需要更短发布时间间隔的客户端将被“限制”至 1000 ms,以防止服务器过载。

监视 PLC 变量

Subscription 创建后,系统将通知服务器该功能待监视的变量。在以下示例中,将

“Voltage”变量添加到订阅中。

|hardcopy|2016/05/27 18:26:50
User
REDAKTION

在“Voltage”变量中,包含 S7-1500 CPU 检测的电压值(通过模拟量输入模块 AI 4xU/I 2- wire)。

Sampling Intervall 的值为负数 (-1),表示 OPC UA 服务器将使用最短时间间隔检查值的变更。

在本示例中,该队列的长度设置为“1”:每隔 50 ms,从 CPU 中仅读取一个值,并在该值发生变更后发送到 OPC UA 客户端。

在本示例中,“死区”(Deadband) 参数设置为“0.1”:值的更改值需要达到 0.1 V;只有这样,发送方才会向客户端发送新值。若值的更改幅度小于该值,则服务器不会发送。例如,可使用该参数禁用信号噪声:没有实际意义的过程变量的轻微变化。

OPC UA 的信息安全

安全设置

寻址风险

OPC UA 支持过程和生产层级中的不同系统之间以及这些系统与控制与企业层级中的系统之间的数据交换。

这同样将导致信息安全风险。正因为此,OPC UA 采用了一系列安全防护机制:

  • OPC UA 服务器和客户端的身份验证。
  • 检查用户的身份。
  • 在 OPC UA 服务器和客户端间,对已签名/加密的数据进行交换。仅在绝对有必要的情况下,才应绕过这些安全策略:
  • 调试过程中
  • 在没有外部以太网连接的独立项目中

例如,如果 OPC Foundation 的“UA Sample Client”端点选择了“无”(None),则程序将发出一条明确的警告消息:

|hardcopy|2016/04/16 17:35:42
User
REDAKTION

说明

禁用不需要的安全策略

如果在 S7-1500 OPC UA 服务器的安全通道设置中选择了所有安全策略(默认设置),即采用端点“无”(None)(不安全),服务器和客户端之间还可能存在非安全数据通信(既未签名也未加密)。S7-1500 CPU 的 OPC UA 服务器还会向设置为“无”(None)(不安 全)的客户端发送公用证书。某些客户端会检查该证书。但客户端不会向服务器发送证书。由于选择“无”(None),客户端的身份仍然未知。无论后续为哪种安全设置,每个 OPC UA 客户端随后都可以连接到服务器。

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

建议:使用“Basic256Sha256”设置,即服务器只接受 Sha256 证书。

附加安全规则

  • 仅在特殊情况下,使用端点“无”(None)。
  • 仅在特殊情况下,使用“访客身份验证”。
  • 如果确实有必要,则仅允许通过 OPC UA 访问 PLC 变量和 DB 元素。
  • 在 S7-1500 OPC UA 客户端的设置中使用可信客户端列表,以仅允许对特定客户端进行访问。

ITU X.509 证书

OPC UA 的多个层级中,都集成有安全机制。其中,数字证书至关重要。仅当 OPC UA 服务器接受 OPC UA 客户端的数字证书并将其归类为可信时,客户端才能与服务器建立安全连接。

请参见“组态 S7-1500 CPU 的 OPC UA 服务器 (页 178)”部分。

与此同时,客户端还必须检查并信任服务器的证书。服务器和客户端必须显示自己的身 份,并证明该身份与声明的相同。即,服务器和客户端必须证明自己的身份。例如,客户端和服务器的相互验证可有效防止中间人攻击。

“中间人”攻击

“中间人”可能会出现在服务器和客户端之间。中间人是一种程序,会截获服务器与客户端 之间的通信并将自身伪装为客户端或服务器,以获取 S7 程序的相关信息或设置 CPU 的值,进而对设备或工厂进行攻击。

OPC UA 使用的数字证书符合国际电信联盟 (ITU) 的 X.509 标准,可识别(认证)一个程序、计算机或机构的身份。

X.509 证书

X.509 证书包含以下信息:

  • 证书的版本号
  • 证书的序列号
  • 证书颁发机构对证书进行签名的算法。
  • 证书颁发机构的名称
  • 证书有效期的起始和结束时间
  • 由证书颁发机构签名证书的程序、个人或机构名称。
  • 程序、个人或机构的公钥。

因此,X509 证书将身份(程序、个人或机构的名称)与该程序、个人或机构的公钥关联在一起。

在连接建立期间检查

客户端和服务器之间建立连接后,设备将从证书中检查建立完整性所需的所有信息,例如签名、有效性、应用程序名称 (URN)。

签名和加密

要检查证书是否篡改,则需对证书进行签名。可通过以下几种方式进行操作

    • 联系一家证书颁发机构 (CA) 并对证书进行签名。

此时,认证颁发机构将核实您的身份,并通过该证书颁发机构的私钥对您的证书进行签名。为此,您应向证书颁发机构发送 CSR(证书签名请求)。此处介绍了使用

OpenSSL 工具自行 (页 165)创建 CSSR 的过程。

    • 自行创建证书并对其进行签名。

例如,为实现上述过程,您应使用 OPC 基金会的“Opc.Ua.CertificateGenerator”程 序。此处 (页 40)介绍了相关步骤。或使用 OpenSSL:在用户自行生成 PKI 密钥对和证书 (页 166)下提供了相关说明。

    • 最简单的方式:在 TIA Portal 中可以采用这两种方式。TIA Portal 可以生成并签署证书。如果您已对项目进行保护,并以具有可进行安全设置的功能权限的用户身份登 录,则可以使用全局安全设置。通过全局安全设置可访问证书管理器,由此也可访问TIA Portal 的证书颁发机构 (CA)。

有用信息:证书类型

      • 自签名证书

每个设备都可生成并签署自己的证书。应用示例:通信节点数量有限的静态组态。不能从自签名证书派生新的证书。但是,需要将所有自签名证书从伙伴设备加载到

CPU(需要在 STOP 模式下执行)。

      • CA 证书:

所有证书都由证书颁发机构生成和进行签名。应用示例:动态添加设备。

只需将证书从证书颁发机构下载到 CPU。证书颁发机构可以生成新的证书(添加伙伴设备无需在 CPU STOP 模式下)。

签名

如下所述,通过该签名,可验证消息的完整性和来源。

首先,发送方根据纯文本信息(纯文本消息)生成 HASH 值。之后,再通过私钥对该

HASH 值进行加密,并将该纯文本消息连同加密后的 HASH 值一同发送到接收方。验证签名时,接收方需要一个发送方的公钥(包含在发送方的 X509 证书中)。接收方基于发送方的公钥,对接收到的 HASH 值进行解密。然后,接收方再根据接收到的纯文本消息生成自己的 HASH 值(HASH 过程包含在发送方的证书中)。接收方对这两个 HASH 值进行比较:

      • 如果两个 HASH 值相同,则表示从发送方接收到的纯文本消息未经更改并未被篡改。
      • 如果两个 HASH 不匹配,则表示到达接收方的的纯文本消息发生了更改。纯文本消息在传送过程中被篡改或受损。

加密

加密数据可防止非经授权的读取。X509 证书不加密;这些证书为公开证书,任何人均可查看。

在加密过程中,发送方将使用接收方的公钥对纯文本消息进行加密。为此,发送方需要接收方的 X509 证书。这是因为,该证书中包含接收方的公钥。接收方使用自己的私钥对消息进行解密。只有接收方才能对该消息进行解密:只有他们才拥有相应的私钥。因此,任何时候私钥都不得泄露。

安全通道

OPC UA 使用客户端与服务器的私钥和公钥建立安全连接,即安全通道。建立安全连接后,客户端和服务器将生成一个只有它们才了解的内部密钥,它们使用此密钥对消息进行签名和加密。较非对称加密过程(私钥和公钥)过程,对称加密过程(共享密钥)的运行速度要快得多。

OPC UA 证书

使用 OPC UA 的 X509 证书

OPC UA 可使用三种不同类型的 X.509 证书在客户端与服务器之间建立连接:

        • OPC UA 应用程序证书

这类 X.509 证书用于标识软件实例、客户端或服务器软件的安装。在“机构名称”(Organization name) 属性中,可输入该软件使用方的名称。

说明

如果安全设置为“无”(None)(不安全),则 S7-1500 的 OPC UA 服务器还会使用应用程序证书。这可保证与 OPC UA V1.1 及更早版本的兼容性。

        • OPC UA 软件证书

这类 X509 证书用于标识客户端或服务器软件的特定版本。这些证书中包含有关属性,用于说明通过 OPC 基金会(或认可的测试实验室)认证时的软件版本。在“机构名称”(Organization name) 属性中,可输入该软件的研发或销售方名称。

说明

STEP 7 V15 不支持软件证书。

        • OPC UA 用户证书

此类 X509 证书用于识别特定的用户,例如,访问 S7-1500 CPU 的 OPC UA 服务器中的过程数据的用户。如果用户通过密码进行认证或组态为匿名访问,则无需使用该证书。

说明

STEP 7 V15 不支持用户证书。

此类证书属于最底层实体证书:这些证书用于识别个人、机构、公司或软件实例(安装) 等信息。

创建自签名证书

只有在使用无法创建客户端证书的 OPC UA 客户端时,才会涉及以下部分的内容。可使用 STEP 7 创建自签名证书。

为此,请执行以下操作步骤:

  1. 在 CPU 特性中,双击“保护和安全 > 证书管理器”(Protection & Security > Certificate

manager) 下的“<新增>”(<Add new>),

  1. 并单击“添加”(Add)。
  2. 在“创建新证书”(Create a new certificate) 对话框中,为“使用”(Usage) 选择“OPC UA

客户端”(OPC UA client) 选项。

  1. 单击“确定”(OK)。

以下章节将详细介绍如何使用 STEP 7 以外的工具生成自签名证书。

在“主题备用名称”(Subject Alternative Name) 字段中,STEP 7 将自动输入所生成证书的

URI。在使用 OPC Foundation 的 .Net-Stack 生成程序特定的证书时,将调用该域(如

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

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

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

  1. 从 OPC Foundation 网站下载该工具。程序在 OPC 基金会网站 (https://opcfoundation.org/developer-tools/developer-kits-unified-architecture)上提供,例如“资源 > 样本/代码 > 统一架构”(Resources > Samples / Code > Unified

Architecture) 下的“示例应用程序”(Sample Applications) 中。

  1. 在 PC 上安装 OPC 基金会的示例应用程序。
  2. 使用 Windows 资源管理器打开安装目录:该程序位于“C:\Program Files (x86)\OPC Foundation\UA 1.02\Sample Applications”中。
  3. 按住 SHIFT 键,然后右键单击该目录,显示快捷菜单。
  4. 选择“在此处打开命令提示”(Open command prompt here)。
  5. 在命令提示窗口的提示符后,输入命令“Opc.Ua.CertificateGenerator -cmd issue -sp .

-an MyClient”

  1. 单击 Enter 键。
  2. 会为“MyClient”生成程序:
  • 带有客户端公钥的“MyClient”证书,位于“certs”子文件夹中
  • 客户端的私钥,位于“private”子文件夹中。

“MyClient”仅仅只是一个示例。在此,假设 OPC UA 客户端的名称为“SuperClient”。之后,可在命令提示窗口中输入以下字符串:“Opc.Ua.CertificateGenerator -cmd issue -sp . -an SuperClient”下图所示为命令行中的条目:

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-73

其它生成器版本的帮助

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

  1. 在命令提示中,输入以下命令:“Opc.Ua.CertificateGenerator -?”

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-74

随即显示帮助。

  1. 使用在“Create a self-signed Application Certificate”下输入的选项。

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

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

使用 OpenSSL

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

要在 Windows 系统中使用 OpenSSL,请按以下步骤操作:

  1. 在 Windows 系统中,安装 OpenSSL。如果操作系统为 64 位,则 OpenSSL 将安装在 “C:\OpenSSL-Win64”目录中。OpenSSL-Win64 作为开源软件,可从不同的软件提供商处下载。
  2. 创建一个目录,如“C:\demo”。
  3. 打开命令行工具 (cmd.exe)。为此,单击“Start”,并在搜索栏中输入“cmd”。右键单击结果列表中的“cmd.exe”,并以管理员身份运行该程序。Windows 的命令行窗口随即打开(DOS 提示符)。
  4. 切换到“C:\demo”目录。为此,可输入以下命令:“cd C:\demo”。
  5. 设置以下网络变量:
    • set RANDFILE=c:\demo\.rnd
    • set OPENSSL_CONF=C:\OpenSSL-Win64\bin\openssl.cfg

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

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-75

  1. 现在,启动 OpenSSL。如果 OpenSSL 已安装在 C:\OpenSSL-Win64 目录中,则可输入:C:\OpenSSL-Win64\bin\openssl.exe。下图显示的命令行窗口中包含以下命令:

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-76

  1. |hardcopy|2016/02/09 19:04:17
z0033mjr
DV00329C 生成私钥。将密钥保存到“myKey.key”文件。在本示例中,密钥的长度为 1024 位;为了实现更高的 RSA 安全性,实际长度采用 2048 位。输入以下命令:“genrsa -out myKey.key 2048”(在本示例中为“genrsa -out myKey.key 1024”)。下图显示了包含该命令的命令行以及 OpenSSL 输出结果:
  2. 生成一个 CSR (Certificate Signing Request)。为此,可输入以下命令:“req -new - key myKey.key -out myRequest.csr”。在该命令的执行过程中,OpenSSL 将查询有关证书的信息:
    • 国家/地区名称:如,“DE”为德国,“FR”为法国
    • 州或省名称:例如“Bavaria”。
    • 位置名称:如,“Augsburg”
    • 机构名称:输入公司的名称。
    • 机构单位名称:如,“IT”
    • 公共名称:如,“OPC UA client of machine A”
    • 电子邮件地址:

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

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

|hardcopy|2016/02/09 19:45:06
z0033mjr
DV00329C

该命令将在包含有 Certificate Signing Request (CSR) 的 C:\demo 目录中创建一个文件;在本示例中,为“myRequest.csr”。

使用 CSR

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

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

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

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

自签名证书

输入以下命令,生成一个证书并对该证书进行自签名(自签名证书):“x509 -req -days 365 -in myRequest.csr -signkey myKey.key -out myCertificate.crt”。

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

|hardcopy|2016/02/10 09:07:13
z0033mjr
DV00329C

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

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

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

消息的安全传送

使用 OPC UA 建立安全连接

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

消息的安全模式

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

  • 不安全

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

  • 签名

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

  • 签名和加密

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

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

所需层级

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

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-80

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

  • 传输层:

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

  • 安全通道

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

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

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

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

  • 会话

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

建立安全通道

建立安全通道,如下所示:

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

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

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

(随机数)。

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

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

    1. OPC UA 的信息安全

建立会话

执行会话,如下所示:

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

(ActivateSessionResponse)。激活会话。 OPC UA 客户端与服务器已成功建立安全连接。

建立与 PLCopen 函数块的连接。

PLCopen 规范针对 OPC UA 客户端定义了一系列 IEC 61131 函数块。指令 UA_Connect

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

将 S7-1500 用作 OPC UA 服务器

组态对 PLC 变量的访问

管理读写权限

启用 OPC UA 的 PLC 变量和 DB 变量

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

|hardcopy|2016/05/19 15:26:30
z0033mjr
DV00329C 问”(Accessible from HMI/OPC UA)。以下为数组数据块的示例:

图 9-7 启用 OPC UA 的 PLC 变量和 DB 变量

通过 OPC UA 客户端,可完整地一次性读取该数组(参见“寻址节点 (页 145)”)。同时,该数组中的所有元素都将激活“从 HMI/OPC UA 可访问”(Accessible from HMI/OPC UA)和“从 HMI/OPC UA 可写入”(Writable from HMI/OPC UA) 复选框。

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

撤消写入权限

如果要对一个变量进行写保护,则可取消选中该变量的“从 HMI/OPC UA 可写”(Writable from HMI/OPC UA) 选项。这将取消 OPC UA 客户端和 HMI 设备的写入权限。

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

“在 HMI 工程组态中可见”(Visible in HMI Engineering) 选项将影响西门子的工程组态工具。如果禁用选项“在 HMI 工程组态中可见”(Visible in HMI Engineering)(未勾选),则无法在 WinCC (TIA Portal) 对该变量进行组态。

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

规则

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

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

          • 如特定的 PLC 变量和数据块变量确实需要写入权限,则只允许通过 OPC UA 进行写入访问。
          • 如果为数据块的所有元素复位“可通过 HMI/OPC UA 访问”(Accessible from HMI/OPC

UA) 选项,则 OPC UA 的数据块不再显示在 S7-1500 CPU 的 OPC UA 服务器地址空间中。

          • 还可以阻止集中访问整个数据块(请参见需了解的 OPC UA 客户端知识 (页 156))。此设置会“否决”DB 编辑器中组件的设置。

管理整个 DB 的读写权限

隐藏 OPC UA 客户端的 DB 或 DB 内容

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

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

操作步骤

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

  1. 在项目树中选择要保护的数据块。
  2. 选择“特性”(Properties) 快捷菜单。
  3. 选择“属性”(Attributes) 区域。
  4. 根据需要选中/清除“DB 可从 OPC UA 访问”(DB Accessible from OPC UA) 复选框。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-82

图 9-8 隐藏 OPC UA 客户端的 DB 或 DB 内容

说明

对 DB 编辑器中设置的影响

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

访问 OPC UA 服务器数据

符合应用程序的高性能

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

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

关于通过 OPC UA 客户端访问 OPC UA 服务器的建议

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

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

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

“RegisteredWrite”。

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

创建数组 DB 的操作步骤

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

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

  1. 在项目树中选择带 OPC UA 服务器的 CPU。
  2. 双击“程序块”(Program blocks)。
  3. 双击“添加新块”(Add new block)。
  4. 单击“数据块”(Data block)。
  5. 为数据块选择一个唯一名称,并接受已输入的名称。
  6. 从“类型”(Type) 下拉列表中选择“数组 DB”(Array DB) 条目。
  7. 从“数组数据类型”(Array data type) 下拉列表中选择数组各个元素的数据类型。
  8. 在“数组限值”(Array limit) 中,输入数组的上限。
  9. 单击“确定”(OK)。

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

生成 OPC UA 导出文件

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

可以通过 STEP 7 (TIA Portal) 从项目中导出 OPC UA XML 文件;该文件已按照 OPC

UA 规范进行结构化。

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

  1. 选择 CPU。单击该 CPU 符号(如,在网络视图中)。
  2. 单击 CPU 属性中的“常规 > OPC UA > 服务器 > 导出”(General > OPC UA > Server >

Export)。

  1. 单击“导出 OPC UA XML 文件”(Export OPC UA XML file) 按钮。
  2. 选择导出文件的保存目录。
  3. 为该文件设置一个新名称,或保留之前输入的原名称。
  4. 单击“保存”(Save)。

说明

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

单独导出所有数组元素

如果在“OPC UA > 服务器 > 导出”(OPC UA > Server > Export) 下的 CPU 属性中选择了

“将所有数组元素作为单独节点导出”(Export all array elements as separate nodes) 选项,则 OPC UA XML 文件包含数组的所有元素,每个元素都作为单独的 XML 元素。

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

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

提示信息

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

组态 S7-1500 CPU 的 OPC UA 服务器

启用 OPC UA 服务器

要求

          • 已获得可操作 OPC UA 服务器的运行系统许可证;请参见“OPC UA 服务器的许可证

(页 201)”。

          • 使用安全通信(如,HTTPS、安全 OUC、OPC UA)的证书时,需确保相应模块为当前时间和当前日期。否则,模块会将所用的证书评估为无效,且无法进行安全通 信。

调试 OPC UA 服务器

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

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

  1. 选择 CPU。单击该 CPU 符号(如,在网络视图中)。
  2. 单击 CPU 属性中的“OPC UA > 服务器”(OPC UA > Server)。
  3. 激活 CPU 的 OPC UA 服务器。
  4. 确认安全说明。
  5. 转至 CPU 属性,选择“运行系统许可证”(Runtime licenses),并设置所获得的 OPC UA

服务器的运行系统许可证。

  1. 编译项目。
  2. 将项目下载到 CPU。CPU 的 OPC UA 服务器现在启动。

设置始终存储

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

应用程序名称

应用程序名称即为 OPC UA 应用程序(服务器)的名称。该名称显示在“OPC UA > 常规”(OPC UA > General) 下:

  • 服务器名称的默认设置为:“SIMATIC.S7-1500.OPC-UAServer:PLC1”。
  • 默认名称由“SIMATIC.S7-1500.OPC-UAServer:”和“常规 > 产品信息 >名

称”(General > Product information > Name) 中选择的 CPU 名称组成(本示例中为

“PLC_1”)。

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

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-83

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

更改应用程序名称

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

    1. 选择 CPU。单击该 CPU 符号(如,在网络视图中)。
    2. 单击 CPU 属性中的“OPC UA > 常规”(OPC UA > General)。
    3. 输入一个有意义的名称。

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

访问 OPC UA 服务器

服务器地址

S7-1500 CPU 的 OPC UA 服务器可通过 CPU(自固件版本 V2.0 起)内部的所有

PROFINET 接口进行访问,但不能通过 CP/CM 的 PROFINET 接口进行访问。

使用 SIMATIC S7-1500 软件控制器时,只能通过分配给软件 PLC 的 PROFINET 接口对

OPC UA 服务器进行访问。

在本示例中,将通过以下 URL (Uniform Resource Locator) 与 CPU 的 OPC UA 服务器建立连接:

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-84

URL 的结构如下所示:

  • 协议标识符opc.tcp://”
  • IP 地址

– 192.168.178.151

用于从以太网子网 192.168.178 访问 OPC UA 服务器的 IP 地址。

– 192.168.1.1

用于从以太网子网 192.168.1 访问 OPC UA 服务器的 IP 地址。

  • TCP 端口号

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

可以在“OPC > UA > 服务器 > 端口”(OPC > UA > Server > Port) 下更改端口号。

动态 IP 地址

在以下示例中,未指定 PROFINET 接口 [X2] 的 IP 地址。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-85

在表格中,将显示占位符“<dynamically>”。

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

激活 SIMATIC 服务器标准接口

如果选择了“激活 SIMATIC 服务器标准接口”(Activate Standard SIMATIC server interface)选项,则该 CPU 的 OPC UA 服务器将基于 OPC UA 规范中的规定为客户端提供已启用的 PLC 变量和各种服务器方法。

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

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

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

OPC UA 信息模型 (页 232)”。

支持用于版本不高于 OPC UA V1.03 的 OPC UA 客户端

通过 OPC UA 规范 (<= V1.03) 中定义的相关机制,可通过 TypeDictionaries 从服务器中读取用户自定义结构 (UDT) 的数据类型定义。

在交付 STEP 7 Professional (TIA Portal) V15 和 S7-1500 CPU 固件版本 V2.5 时,该 OPC UA 规范将以 Release Candidate V1.04 形式提供。在 OPC UA 规范的更新版本中,支持对结构进行进行更为高效的访问。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-86警告
通过使用 OPC UA 规范 V1.04 的客户端访问数据(如结构)

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

OPC UA 服务器的常规设置

OPC UA 的 TCP 端口

OPC UA 默认使用 TCP 端口 4840。

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

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-87 OPC UA 客户端在建立连接时必须使用选定的端口。在以下示例中,选择端口 48400:

会话设置

          • 会话最大超时

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

允许值在 1 到 600000 秒之间。

          • 最大 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 作为“最短发布时间间隔”。

|hardcopy|2017/11/15 15:19:44
z00334xp
MD1FE52C

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

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

如果 OPC UA 客户端要求的更新频率为 1000 ms,则 OPC UA 服务器将仅隔 1000 ms

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

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

最短采样时间间隔

在“最短采样时间间隔”(Minimum sampling interval) 中,可设置 OPC UA 服务器记录

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

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

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

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

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

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

处理客户端和服务器证书

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

OPC UA 服务器的证书

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

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

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-89

图 9-9 CPU 的本地证书管理器

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

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

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

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

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

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-90

图 9-10 客户端 "UA Sample Client" 的对话框

另请参见

使用 STEP 7 生成服务器证书 (页 194)

消息的安全传输 (页 169)

客户端证书来自哪里?

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

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

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

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

向服务器宣布客户端证书

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

  1. 选择服务器本地证书管理器中的“使用证书管理器的全局安全设置”(Use global security settings for certificate manager) 选项。这会使全局证书管理器可用。

可以在用作服务器的 CPU 的特性“保护和安全 > 证书管理器”(Protection & Security >

Certificate manager) 下找到此选项。

如果项目未受保护,请在 STEP 7 的项目树中选择“安全设置 > 设置”(Security settings > Settings),然后单击“保护此项目”(Protect this project) 按钮并登录。

“全局安全设置”(Global security settings) 菜单项随即显示在 STEP 7 项目树的“安全设置”(Security setting) 下。

  1. 双击“全局安全设置”(Global security settings)。
  2. 双击“证书管理器”(Certificate manager)。 STEP 7 将打开全局证书管理器。
  3. 单击“设备证书”(Device certificates) 选项卡。
  4. 在此选项卡的空白区域(而非证书上)中,右键单击鼠标。
  5. 选择快捷菜单中的“导入”(Import) 命令。将显示用于导入证书的对话框。
  6. 选择服务器信任的客户端证书。
  7. 单击“打开”(Open),导入证书。

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

  1. 单击用作服务器的 CPU 的特性中的“常规”(General) 选项卡。
  2. 单击“OPC UA > 服务器 > 安全 > 安全通道”(OPC UA > Server > Security > Secure Channel)。
  3. 在“安全通道”(Secure Channel) 对话框中向下滚动至“受信客户端”(Trusted clients)

部分。

  1. 双击表中空行的“<新增>”(<add new>)。随即会在该行中显示浏览按钮。
  2. 单击该按钮。
  3. 选择已导入的客户端证书。
  4. 单击带有绿色复选标记的按钮。
  5. 编译项目。
  6. 将组态加载到 S7-1500 CPU。

结果

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

自动接受客户端证书

如果选择选项“运行时自动接受所有客户端证书”(Automatically accept all client certificates during runtime)(位于“受信客户端”(Trusted clients) 列表下),则服务器会自动接受所有客户端证书。

注意
调试后的设置

为了避免安全风险,在调试后,需再次取消选中“运行过程中自动接受客户端证书”(Automatically accept client certificates during runtime) 选项。

组态服务器的安全设置

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

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-91

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

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

不安全端点

说明

禁用不需要的安全策略

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

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

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

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

    • Basic128Rsa15 - 签名

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

    • Basic128Rsa15 - 签名和加密

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

    • Basic256Rsa15 - 签名

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

    • Basic256Rsa15 - 签名和加密

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

    • Basic256Sha256 - 签名

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

    • Basic256Sha256 - 签名和加密

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

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

说明

如果设置为“Basic256Sha256 - 签名”(Basic256Sha256 -Sign) 和“Basic256Sha256 - 签名并加密”(Basic256Sha256 -Sign & Encrypt),则 OPC UA 服务器和 OPC UA 客户端必须使用“SHA256”签名的证书。

对于“Basic256Sha256-签名”(Basic256Sha256 -Sign) 和“Basic256Sha256-签名并加密”(Basic256Sha256 -Sign & Encrypt) 设置,STEP 7 中的证书颁发机构将使用

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

S7-1500 CPU 的客户端证书处理

客户端证书来自何处?

如果使用 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)”。

S7-1500 CPU 的 OPC UA 客户端证书

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

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

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

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

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

  1. 在“项目树”(Project tree) 区域中,选择将用作客户端的 CPU。
  2. 双击“设备组态”(device configuration)。
  3. 在该 CPU 的属性中,单击“保护和安全 > 证书管理器”(Protection & Security > Certificate manager)。
  4. 在“设备证书”(Device certificates) 表格中,双击“<添加>”(add)。在 STEP 7 中,将打开一个对话框。
  5. 单击“添加”(Add)。
  6. 在“使用”(Usage) 中的列表内,选择“OPC UA 客户端”(OPC UA client) 条目。注意:

在“证书持有者的备用名称 (SAN)”(Alternative name of the certificate holder (SAN))

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

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

  1. 单击“确定”(OK)。

此时,STEP 7 将在“设备证书”(Device certificates) 表格中列出该客户端证书。

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

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

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

  1. 选择服务器本地证书管理器中的“使用证书管理器的全局安全设置”(Use global security settings for certificate manager) 选项。这会使全局证书管理器可用。

可以在用作服务器的 CPU 的特性“保护和安全 > 证书管理器”(Protection & Security >

Certificate manager) 下找到此选项。

如果项目未受保护,请在 STEP 7 的项目树中选择“安全设置 > 设置”(Security settings > Settings),然后单击“保护此项目”(Protect this project) 按钮并登录。

“全局安全设置”(Global security settings) 菜单项随即显示在 STEP 7 项目树的“安全设置”(Security setting) 下。

  1. 双击“全局安全设置”(Global security settings)。
  2. 双击“证书管理器”(Certificate manager)。 STEP 7 将打开全局证书管理器。
  3. 单击“设备证书”(Device certificates) 选项卡。
  4. 在此选项卡的空白区域(而非证书上)中,右键单击鼠标。
  5. 选择快捷菜单中的“导入”(Import) 命令。将显示用于导入证书的对话框。
  6. 选择服务器信任的客户端证书。
  7. 单击“打开”(Open),导入证书。

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

  1. 单击用作服务器的 CPU 的特性中的“常规”(General) 选项卡。
  2. 单击“OPC UA > 服务器 > 安全 > 安全通道”(OPC UA > Server > Security > Secure

Channel)。

  1. 在“安全通道”(Secure Channel) 对话框中向下滚动至“受信客户端”(Trusted clients)

部分。

  1. 双击表中空行的“<新增>”(<add new>)。随即会在该行中显示浏览按钮。
  2. 单击该按钮。
  3. 选择已导入的客户端证书。
  4. 单击带有绿色复选标记的按钮。
  5. 编译项目。
  6. 将组态加载到 S7-1500 CPU。

结果

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

使用 STEP 7 生成服务器证书

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

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

在 CPU 特性的“保护和安全 > 证书管理器”(Protection & Security > Certificate manager)

下启用全局安全设置。

用户自定义的服务器证书

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

  1. 单击 CPU 属性中“常规 > OPC UA > 服务器 > 安全 > 安全通道 > 服务器证

书”(General > OPC UA > Server > Security > Secure channel > Server certificate) 下的“浏览”(Browse) 按钮。随即会显示一个对话框,用于显示局部可用的证书。

  1. 单击“添加”(Add) 按钮。
  2. 西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-92 将显示用于生成新证书的对话框(如下图所示)。已输入示例的值:

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

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

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

          • CA

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

          • 证书持有者

在默认设置中,通常包括项目名称和“\OPCUA-1”。在本示例中,项目名称为“PLC1”。在 CPU 属性的“常规 > 项目信息 > 名称”("General > Project information > Name) 下设置项目名称。保留默认设置,或者在“证书持有者”(Certificate holder) 下为 OPC-UA 服务器输入其它更有意义的名称。

          • 签名

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

“sha1RSA”、

“sha256RSA”。

          • 生效日期

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

          • 截止日期

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

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

  • 用途

默认设置为“OPC UA 客户端和服务器”(OPC UA client & server)。保留该 OPC UA 服务器的默认值。在 STEP 7 中,可从多个位置处调用“生成新证书”(Generate new certificate) 对话框。例如,如果在 CPU 的 Web 服务器中调用此对话框,则需在“应用程序”(Application) 下输入“Web 服务器”(Web server)。“用途”(Usage) 下拉列表中包含以下条目:

    • “OPC UA 客户端”(OPC UA client)
    • “OPC UA 客户端和服务器”(OPC UA client & server)
    • “OPC UA 服务器”(OPC UA server)
    • “TLS”
    • “Web 服务器”(Web server)
  • 证书持有者的备用名称

在上述示例中输入以下内容:“URI:urn:SIMATIC.S7-1500.OPC- UAServer:PLC1,IP:192.168.178.151,IP:192.168.1.1”。以下条目也将有效:“IP:

192.168.178.151,IP:192.168.1.1”。在此,需输入访问 CPU 中 OPC UA 服务器的IP 地址(请参见“访问 OPC UA 服务器 (页 180)”)。借此,OPC UA 客户端可验证是否要与 S7-1500 的 OPC UA 服务器真正建立连接,或验证实际上是否攻击者在尝试将另一台 PC 的篡改值发送至 OPC UA 客户端。

用户认证

用户认证的类型

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

可通过以下几种方式:

  • 访客认证

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

如需使用这种认证方式,则可在“OPC UA > 服务器 > 安全 > 用户认证”(OPC UA >

Server > Security > User authentication) 中选择“启用访客认证”(Enable guest

authentication) 选项。

说明

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

  • 用户名和密码认证

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

如需采用这种用户认证方式,则可在“OPC UA > 服务器 > 安全 > 用户认证”(OPC

UA > Server > Security > User authentication) 中选择“启用用户名和密码认证”(Enable user name and password authentication) 选项。

取消激活访客认证。

在“用户管理”(User management) 表中输入用户。

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

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

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

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

      • 在项目树中单击“安全设置 > 设置”(Security settings > Settings)。
      • 单击“保护此项目”(Protect this project) 按钮。
      • 输入用户名和密码。
      • 在“安全设置 > 用户和角色”(Security settings > Users and roles) 下输入其它用户。
    • 如果组态项目中的其它 OPC UA 服务器,还应选择“通过项目的安全设置启用额外用户管理”(Enable additional user administration via the security settings of the project)选项。随后不需要重复输入用户名和密码。

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

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

用于组态 CPU 特性(“OPC UA > 服务器 > 安全 > 用户认证”(OPC UA > Server > Security > User authentication))。该选项为:“通过项目的安全设置启用额外用户管理”(Enable additional user administration via the security settings of the project)

要求

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

项目树中“安全设置”(Security setting) 下的设置

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

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-93

重用集中安全设置

有关重用的示例:

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

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

OPC UA 服务器的功能权限

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

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

  1. 例如,在“安全设置 > 用户和角色”(Security settings > Users and roles) 下的“角色”(Roles) 选项卡中定义新角色(名称为“PLC-opcua-role-all-inclusive”)。
  2. 在“功能权限类别”(Categories of function rights) 部分中,导航到运行系统权限,然后导航到 CPU 功能权限,选择要设置其功能权限的 CPU,例如 PLC_2。
  3. 有关以下功能权限的信息,请参见“功能权限”部分:

– OPC UA 服务器访问

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

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-94

仍需将“PLC-opcua-role-all-inclusive”角色分配给相关用户(项目树中“安全设置”(Security

settings) 下的“用户”(Users) 选项卡)。

OPC UA 服务器的许可证

运行系统许可证

运行 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 需要使用这种类型)所需许可证类型显示在“属性 > 常规 > 运行许可证 > OPC-UA > 所需许可证类

型”(Properties > General > Runtime licenses > OPC-UA > Type of required license) 下:

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-95

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

  1. 单击 CPU 属性中的“运行许可证 > OPC UA”(Runtime licenses > OPC UA)。
  2. 在“购买的许可证类型”(Type of purchased license) 下拉列表中,选择所需的许可证。

在 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 客户端。

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

服务器方法的实现

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

  1. 使用 OPC_UA_ServerMethodPre 查询服务器方法调用

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

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

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

  1. 编辑服务器方法

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

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

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

  1. 使用 OPC_UA_ServerMethodPost 响应服务器方法

要完成服务器方法,应调用“OPC_UA_ServerMethodPost”指令。

使用参数通知“OPC_UA_ServerMethodPost”指令是否已处理用户程序。

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

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

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

集成服务器方法

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

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

CPU 首先使用指令“OPC_UA_ServerMethodPre”查询 ④ OPC UA 客户端是否调用了服务器方法“Cool”①。

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

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

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

然后服务器方法使用指令“OPC_UA_ServerMethodPost”⑤ 通知固件 (B) 已执行 ③。固件通过② 将该信息返回至调用 OPC UA 客户端 (A)。

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

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-96

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

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

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

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

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

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

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

图 9-13 集成服务器方法

说明

方法不包含在 OPC UA XML 导出中

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

参见

为 OPC UA 客户端提供方法的示例程序 (页 214)

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

OPC_UA_ServerMethodPre

简介

本部分介绍指令“OPC_UA_ServerMethodPre”。

在用户程序中,由于指令“OPC_UA_ServerMethodPre”和“OPC_UA_ServerMethodPost”通常需要成对调用,因此还需考虑到指令“OPC_UA_ServerMethodPost”的相关内容。

指令的功能

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

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

变量声明

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

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

          • 创建指令“OPC_UA_ServerMethodPre”,作为调用函数块中的多实例。

说明

多实例名称

多实例必须命名为“OPC_UA_ServerMethodPre_Instance”,否则不会在服务器上创建方法。

使用拖放功能将指令从“指令 > 通信 > OPC UA > OPC UA 服务器”(Instructions >

Communication > OPC UA > OPC UA Server) 文件夹移到编辑器。然后,单击“多实例”(Multi-instance)。

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

UAMethod_InParameters”的变量。

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

在该示例中,该数据类型名为“UDT_OpenDoorInArguments”,且包括元素 Number。或者:

也可以向变量“UAMethod_InParameters”分配数据类型“Struct”。然后,根据服务器方

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-97 法的输入参数创建该数据类型的元素(相同名称和数据类型)。

“OPC_UA_ServerMethodPre”的参数

表格 9- 2 “OPC_UA_ServerMethodPre”指令的参数

参数 声明 数据类型 含义
Done Output BOOL 执行的状态:

  • 0:指令的执行中止、尚未完成或尚未开始
  • 1:指令的执行已完成且未出错
Busy Output BOOL 执行状态参数:

  • 0:指令未在执行
  • 1:指令当前正在执行
Error Output BOOL 错误显示

  • 0:无错误
  • 1:发生错误。请参见“状态”

参数。

Status Output DWORD 错误原因,请参见下文中的“状态的错误代码”。
UAMethodCalled Output BOOL OPC UA 客户端已调用所提供的方法。
UAMethod_InParameters InOut VARIANT 指向包含所提供方法输入参数的变量的指针。

状态的错误代码

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

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

错误代码

(十六进制值)

说明
0000_0000 指令已成功完成。
8xxx_xxxx OPC UA 特定错误
Axxx_xxxx PLCopen 特定错误
B080_C300 资源不足
B08x_yz00 SIMATIC 特定错误
更多错误代码,请参见“错误代码 (页 217)”

数据类型的分配 (SIMATIC – OPC UA)

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

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

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

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

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

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

OPC_UA_ServerMethodPost

简介

本部分介绍指令“OPC_UA_ServerMethodPost”。

在用户程序中,由于指令“OPC_UA_ServerMethodPre”和“OPC_UA_ServerMethodPost”通常需要成对调用,因此还需考虑到指令“OPC_UA_ServerMethodPre”的相关内容。

指令的功能

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

变量声明

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

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

          • 创建指令“OPC_UA_ServerMethodPost”,作为调用函数块中的多实例。

说明

多实例名称

多实例必须命名为“OPC_UA_ServerMethodPost_Instance”,否则不会在服务器上创建方法。

使用拖放功能将指令从“指令 > 通信 > OPC UA > OPC UA 服务器”(Instructions > Communication > OPC UA > OPC UA Server) 文件夹移到编辑器。然后,单击“多实例”(Multi-instance)。

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

UAMethod_OutParameters”的变量。

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

在该示例中,数据类型名为“UDT_OpenDoorOutArguments”;唯一的输出参数为

Result。或者:

也可以向变量“UAMethod_OutParameters”分配数据类型“Struct”。然后,根据服务器

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-98 方法的输出参数创建该数据类型的元素(相同名称和数据类型)。

图 9-14 变量声明

"OPC_UA_ServerMethodPost" 的参数

表格 9- 4 “OPC_UA_ServerMethodPost”指令的参数

参数 声明 数据类型 含义
Done Output BOOL 执行的状态:

  • 0:指令的执行中止、尚未完成或尚未开始
  • 1:指令的执行已完成且未出错
Busy Output BOOL 执行状态参数:

  • 0:指令未在执行
  • 1:指令当前正在执行
Error Output BOOL 错误显示

  • 0:无错误
  • 1:发生错误。请参见“状态”

参数。

Status Output DWORD 错误原因,请参见下文中的“状态的错误代码”。
UAMethod_Result Input DWORD 用户程序提供的 OPC UA 服务器错误代码

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

UA,将定义以下区域:

  • Good:0x0000_0000 到

0x3FFF_FFFF

  • Uncertain:0x4000_0000

到 0x7FFF_FFFF

  • Bad:0x8000_0000 到

0xFFFF_FFFF

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

参数 声明 数据类型 含义
UAMethod_Finished Input BOOL 如果已执行提供的方法,则将参数值设为 TRUE。
UAMethod_OutParameters InOut VARIANT 指向包含所提供方法输出参数的变量的指针。

状态的错误代码

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

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

错误代码

(十六进制值)

说明
0000_0000 指令已成功完成。
8xxx_xxxx OPC UA 特定错误
Axxx_xxxx PLCopen 特定错误
B080_C300 资源不足
B08x_yz00 SIMATIC 特定错误
更多错误代码,请参见“错误代码 (页 217)”

数据类型的分配 (SIMATIC – OPC UA)

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

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

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

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

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

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

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

服务器方法的示例程序

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

该示例介绍用户程序如何使用指令“OPC_UA_ServerMethodPre”和

“OPC_UA_ServerMethodPost”。

有关这些指令的说明,请参见“OPC_UA_ServerMethodPre (页 206) ”和 “OPC_UA_ServerMethodPost (页 210)”部分。

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

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

程序结构

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

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

声明

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

|hardcopy|2017/10/19 09:44:22
User
REDAKTION

图 9-15 局部变量的声明

SCL 程序

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

调用指令“OPC_UA_ServerMethodPre”

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

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

如果指令“OPC_UA_ServerMethodPre”也已成功执行 (#Pre_Done = TRUE),则在第 10

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

服务器方法

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

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

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

如需指示用户程序结束,则需要将变量“#Method_Finished”设置为“TRUE”。通过“#Method_Result”,可传送指令“OPC_UA_ServerMethodPost”中块参数

“UAMethod_Result”内使用的自定义错误代码。

调用指令“OPC_UA_ServerMethodPost”

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

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

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

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

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-100

图 9-16 调用指令“OPC_UA_ServerMethodPost”

删除方法

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

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

参见

服务器方法 (页 202)

错误代码西门子错误代码

OPC UA 指令的 SIMATIC 错误代码

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

表格 9- 6 OPC UA 指令的 SIMATIC 错误代码

错误代码(十六进制) 说明
B080_C300 InsufficientResources:

资源不足。

(a) 存储器分配错误 (b) SFB 实例过多

B080_0B00 ArrayElements_TooMany:

数据元素太多。

B080_B000 TooManyMethods:

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

(调用指令 OPC_UA_ServerMethodPre、 OPC_UA_ServerMethodPost):

  • S7-1510 to S7-1513 ...:最多 20 个
  • S7-1515、S7-1516...:最多 50 个
  • S7-1517、S7-1518、S7-1507S...:最多 100 个
  • (另请参见“使用服务器接口时组态限制的注意事项

(页 249)”)

OPC 基金会的错误代码

错误代码

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

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

错误代码

表格 9- 7 OPC 基金会的错误代码

状态 "Good" (0000_0000 - 3FFF_FFFF)
错误代码

(十六进

制)

名称 含义
00000000 Good Success, no error.
002D0000 GoodSubscriptionTransf erred The subscription was transferred to another session.
002E0000 GoodCompletesAsynchr onously The processing will complete asynchronously.
002F0000 GoodOverload Sampling has slowed down due to resource limitations.
00300000 GoodClamped The value written was accepted but was clamped.
00960000 GoodLocalOverride The value has been overridden.
00A20000 GoodEntryInserted The data or event was successfully inserted into the historical database.
00A30000 GoodEntryReplaced The data or event field was successfully replaced in the historical database.
00A50000 GoodNoData No data exists for the requested time range or event filter.
00A60000 GoodMoreData The data or event field was successfully replaced in the historical database.
00A70000 GoodCommunicationEve nt The communication layer has raised an event.
00A80000 GoodShutdownEvent The system is shutting down.
00A90000 GoodCallAgain The operation is not finished and needs to be called again.
00AA0000 GoodNonCriticalTimeout A non-critical timeout occurred.
00BA0000 GoodResultsMayBeInco mplete The server should have followed a reference to a node in a re- mote server but did not. The result set may be incomplete.
00D90000 GoodDataIgnored The request pecifies fields which are not valid for the EventType or cannot be saved by the historian.
状态 "Good" (0000_0000 - 3FFF_FFFF)
错误代码

(十六进

制)

名称 含义
00DC0000 GoodEdited The value does not come from the real source and has been ed- ited by the server.
00DD0000 GoodPostActionFailed There was an error in execution of these post-actions.
00E00000 GoodDependentValueC hanged A dependent value has been changed but the change has not been applied to the device.

表格 9- 8 OPC 基金会的错误代码

状态 "Uncertain" (4000_0000 - 7FFF_FFFF)
错误代码

(十六进

制)

名称 含义
406C0000 UncertainReferenceOut OfServer One of the references to follow in the relative path references to a node in the address space in another server.
408F0000 UncertainNoCommunica tionLastUsableValue Communication to the data source has failed. The variable value is the last value that had a good quality.
40900000 UncertainLastUsableVal ue Whatever was updating this value has stopped doing so.
40910000 UncertainSubstituteValu e The value is an operational value that was manually overwritten.
40920000 UncertainInitialValue The value is an initial value for a variable that normally receives its value from another variable.
40930000 UncertainSensorNotAcc urate The value is at one of the sensor limits.
40940000 UncertainEngineeringUni tsExceeded The value is outside of the range of values defined for this pa- rameter.
40950000 UncertainSubNormal The value is derived from multiple sources and has less than the required number of Good sources.
40A40000 UncertainDataSubNorm al The value is derived from multiple values and has less than the required number of Good values.
状态 "Uncertain" (4000_0000 - 7FFF_FFFF)
错误代码

(十六进

制)

名称 含义
40BC0000 UncertainReferenceNot Deleted The server was not able to delete all target references.
40C00000 UncertainNotAllNodesAv ailable The list of references may not be complete because the underly- ing system is not available.
40DE0000 UncertainDominantValue Changed The related EngineeringUnit has been changed but the Variable Value is still provided based on the previous unit.
40E20000 UncertainDependentVal ueChanged A dependent value has been changed but the change has not

been applied to the device. The quality of the dominant variable is uncertain.

表格 9- 9 OPC 基金会的错误代码

状态 "Bad" (8000_0000 - FFFF_FFFF)
错误代码

(十六进

制)

名称 含义
80010000 BadUnexpectedError An unexpected error occurred
80020000 BadInternalError An internal error occurred as a result of a programming or config- uration error.
80030000 BadOutOfMemory Not enough memory to complete the operation.
80040000 BadResourceUnavailabl e An operating system resource is not available
80050000 BadCommunicationError A low level communication error occurred.
80060000 BadEncodingError Encoding halted because of invalid data in the objects being seri- alized.
80070000 BadDecodingError Decoding halted because of invalid data in the stream.
80080000 BadEncodingLimits- Exceeded The message encoding/decoding limits imposed by the stack have been exceeded.
80090000 BadUnknownResponse An unrecognized response was received from the server.
80B80000 BadRequestTooLarge The request message size exceeds limits set by the server.
状态 "Bad" (8000_0000 - FFFF_FFFF)
错误代码

(十六进

制)

名称 含义
80B90000 BadResponseTooLarge The response message size exceeds limits set by the client.
800A0000 BadTimeout The operation timed out.
800B0000 BadServiceUnsupported The server does not support the requested service.
800C0000 BadShutdown The operation was cancelled because the application is shutting down.
800D0000 BadServerNotConnected The operation could not complete because the client is not con- nected to the server.
800E0000 BadServerHalted The server has stopped and cannot process any requests.
800F0000 BadNothingToDo There was nothing to do because the client passed a list of oper- ations with no elements.
80100000 BadTooManyOperations The request could not be processed because it specified too many operations.
80110000 BadDataTypeIdUnknown The extension object cannot be (de)serialized because the data type id is not recognized.
80120000 BadCertificateInvalid The certificate provided as a parameter is not valid.
80130000 BadSecurityChecksFaile d An error occurred verifying security. The certificate provided as a parameter is not valid.
80140000 BadCertificateTimeInvali d The Certificate has expired or is not yet valid.
80150000 BadCertificateIssuer TimeInvalid An Issuer Certificate has expired or is not yet valid.
80160000 BadCertificateHost NameInvalid The HostName used to connect to a Server does not match a HostName in the Certificate.
80170000 BadCertificateUriInvalid The URI specified in the Application Description does not match the URI in the Certificate.
80180000 BadCertificateUseNotAll owed The Certificate may not be used for the requested operation.
80190000 BadCertificateIssuerUse NotAllowed The Issuer Certificate may not be used for the requested opera- tion.
801A0000 BadCertificateUntrusted The Certificate is not trusted.
状态 "Bad" (8000_0000 - FFFF_FFFF)
错误代码

(十六进

制)

名称 含义
801B0000 BadCertificateRevocatio n

Unknown

It was not possible to determine if the Certificate has been re- voked.
801C0000 BadCertificateIssuer RevocationUnknown It was not possible to determine if the Issuer Certificate has been revoked.
801D0000 BadCertificateRevoked The Certificate has been revoked.
801E0000 BadCertificateIssuerRev oked The Issuer Certificate has been revoked.
801F0000 BadUserAccessDenied User does not have permission to perform the requested opera- tion.
80200000 BadIdentityTokenInvalid The user identity token is not valid.
80210000 BadIdentityTokenReject ed The user identity token is valid but the server has rejected it.
80220000 BadSecureChannelIdInv alid The specified secure channel is no longer valid.
80230000 BadInvalidTimestamp The timestamp is outside the range allowed by the server.
80240000 BadNonceInvalid The nonce does appear to be not a random value or it is not the correct length.
80250000 BadSessionIdInvalid The session id is not valid.
80260000 BadSessionClosed The session was closed by the client.
80270000 BadSessionNotActivated The session cannot be used because ActivateSession has not been called.
80280000 BadSubscriptionIdInvalid The subscription id is not valid.
802A0000 BadRequestHeaderInvali d The header for the request is missing or invalid.
802B0000 BadTimestampsTo ReturnInvalid The timestamps to return parameter is invalid.
802C0000 BadRequestCancelled ByClient The request was cancelled by the client.
状态 "Bad" (8000_0000 - FFFF_FFFF)
错误代码

(十六进

制)

名称 含义
80310000 BadNoCommunication Communication with the data source is defined, but not estab- lished, and there is no last known value available.
80320000 BadWaitingForInitialData Waiting for the server to obtain values from the underlying data source.
80330000 BadNodeIdInvalid The syntax of the node id is not valid.
80340000 BadNodeIdUnknown The node id refers to a node that does not exist in the server ad- dress space.
80350000 BadAttributeIdInvalid The attribute is not supported for the specified Node.
80360000 BadIndexRangeInvalid The syntax of the index range parameter is invalid.
80370000 BadIndexRangeNoData No data exists within the range of indexes specified.
80380000 BadDataEncodingInvalid The data encoding is invalid.
80390000 BadDataEncoding Unsupported The server does not support the requested data encoding for the node.
803A0000 BadNotReadable The access level does not allow reading or subscribing to the Node.
803B0000 BadNotWritable The access level does not allow writing to the Node.
803C0000 BadOutOfRange The value was out of range.
803D0000 BadNotSupported The requested operation is not supported.
803E0000 BadNotFound A requested item was not found or a search operation ended without success.
803F0000 BadObjectDeleted The object cannot be used because it has been deleted.
80400000 BadNotImplemented Requested operation is not implemented.
80410000 BadMonitoringModeInval id The monitoring mode is invalid.
80420000 BadMonitoredItemIdInval id The monitoring item id does not refer to a valid monitored item.
80430000 BadMonitoredItem FilterInvalid The monitored item filter parameter is not valid.
状态 "Bad" (8000_0000 - FFFF_FFFF)
错误代码

(十六进

制)

名称 含义
80440000 BadMonitoredItem FilterUnsupported The server does not support the requested monitored item filter.
80450000 BadFilterNotAllowed A monitoring filter cannot be used in combination with the attrib- ute specified.
80460000 BadStructureMissing A mandatory structured parameter was missing or null.
80470000 BadEventFilterInvalid The event filter is not valid.
80480000 BadContentFilterInvalid The content filter is not valid.
80490000 BadFilterOperandInvalid The operand used in a content filter is not valid.
804A0000 BadContinuation PointInvalid The continuation point provide is longer valid.
804B0000 BadNoContinuationPoint s The operation could not be processed because all continuation points have been allocated.
804C0000 BadReferenceTypeIdInv alid The operation could not be processed because all continuation points have been allocated.
804D0000 BadBrowseDirectionInva lid The browse direction is not valid.
804E0000 BadNodeNotInView The node is not part of the view.
804F0000 BadServerUriInvalid The ServerUri is not a valid URI.
80500000 BadServerNameMissing No ServerName was specified
80510000 BadDiscoveryUrlMissing No DiscoveryUrl was specified.
80520000 BadSempahoreFileMissi ng The semaphore file specified by the client is not valid.
80530000 BadRequestTypeInvalid The security token request type is not valid.
80540000 BadSecurityModeReject ed The security mode does not meet the requirements set by the Server.
80550000 BadSecurityPolicyReject ed The security policy does not meet the requirements set by the Server.
80560000 BadTooManySessions The server has reached its maximum number of sessions.
80570000 BadUserSignatureInvalid The user token signature is missing or invalid.
状态 "Bad" (8000_0000 - FFFF_FFFF)
错误代码

(十六进

制)

名称 含义
80580000 BadApplicationSignature Invalid The signature generated with the client certificate is missing or invalid.
80590000 BadNoValidCertificates The client did not provide at least one software certificate that is valid and meets the profile requirements for the server.
805A0000 BadRequestCancelled ByRequest The request was cancelled by the client with the Cancel service.
805B0000 BadParentNodeIdInvalid The parent node id does not to refer to a valid node.
805C0000 BadReferenceNotAllowe d The reference could not be created because it violates con- straints imposed by the data model.
805D0000 BadNodeIdRejected The requested node id was reject because it was either invalid or server does not allow node ids to be specified by the client.
805E0000 BadNodeIdExists The requested node id is already used by another node.
805F0000 BadNodeClassInvalid The node class is not valid.
80600000 BadBrowseNameInvalid The browse name is invalid.
80610000 BadBrowseNameDuplica ted The browse name is not unique among nodes that share the same relationship with the parent.
80620000 BadNodeAttributesInvali d The node attributes are not valid for the node class.
80630000 BadTypeDefinitionInvalid The type definition node id does not reference an appropriate type node.
80640000 BadSourceNodeIdInvalid The source node id does not reference a valid node.
80650000 BadTargetNodeIdInvalid The target node id does not reference a valid node.
80660000 BadDuplicateReference NotAllowed The reference type between the nodes is already defined.
80670000 BadInvalidSelfReference The server does not allow this type of selfreference on this node.
80680000 BadReferenceLocalOnly The reference type is not valid for a reference to a remote server.
80690000 BadNoDeleteRights The server will not allow the node to be deleted.
806A0000 BadServerIndexInvalid The server index is not valid.
806B0000 BadViewIdUnknown The view id does not refer to a valid view node.
状态 "Bad" (8000_0000 - FFFF_FFFF)
错误代码

(十六进

制)

名称 含义
806D0000 BadTooManyMatches The requested operation has too many matches to return.
806E0000 BadQueryTooComplex The requested operation requires too many resources in the server.
806F0000 BadNoMatch The requested operation has no match to return.
80700000 BadMaxAgeInvalid The max age parameter is invalid.
80710000 BadHistoryOperationInv alid The history details parameter is not valid.
80720000 BadHistoryOperation Unsupported The server does not support the requested operation.
80730000 BadWriteNotSupported The server not does support writing the combination of value, status and timestamps provided.
80740000 BadTypeMismatch The value supplied for the attribute is not of the same type as the attribute's value.
80750000 BadMethodInvalid The method id does not refer to a method for the specified object.
80760000 BadArgumentsMissing The client did not specify all of the input arguments for the meth- od.
80770000 BadTooManySubscriptio ns The server has reached its maximum number of subscriptions.
80780000 BadTooManyPublish Requests The server has reached the maximum number of queued publish requests.
80790000 BadNoSubscription There is no subscription available for this session.
807A0000 BadSequenceNumber Unknown The sequence number is unknown to the server.
807B0000 BadMessageNotAvailabl e The requested notification message is no longer available.
807C0000 BadInsufficientClientProf ile The Client of the current Session does not support one or more Profiles that are necessary for the Subscription.
80BF0000 BadStateNotActive The sub-state machine is not currently active.
807D0000 BadTcpServerTooBusy The server cannot process the request because it is too busy.
状态 "Bad" (8000_0000 - FFFF_FFFF)
错误代码

(十六进

制)

名称 含义
807E0000 BadTcpMessageTypeInv alid The type of the message specified in the header invalid.
807F0000 BadTcpSecureChannel Unknown The SecureChannelId and/or TokenId are not currently in use.
80800000 BadTcpMessageTooLar ge The size of the message specified in the header is too large.
80810000 BadTcpNotEnough Resources There are not enough resources to process the request.
80820000 BadTcpInternalError An internal error occurred.
80830000 BadTcpEndpointUrlInvali d The Server does not recognize the QueryString specified.
80840000 BadRequestInterrupted The request could not be sent because of a network interruption.
80850000 BadRequestTimeout Timeout occurred while processing the request.
80860000 BadSecureChannelClos ed The secure channel has been closed.
80870000 BadSecureChannelToke n

Unknown

The token has expired or is not recognized.
80880000 BadSequenceNumberIn valid The sequence number is not valid.
80890000 BadConfigurationError There is a problem with the configuration that affects the useful- ness of the value.
808A0000 BadNotConnected The variable should receive its value from another variable, but has never been configured to do so.
808B0000 BadDeviceFailure There has been a failure in the device/data source that generates the value that has affected the value.
808C0000 BadSensorFailure There has been a failure in the sensor from which the value is derived by the device/data source.
808D0000 BadOutOfService The source of the data is not operational.
状态 "Bad" (8000_0000 - FFFF_FFFF)
错误代码

(十六进

制)

名称 含义
808E0000 BadDeadbandFilterInvali d The dead band filter is not valid.
80970000 BadRefreshInProgress This Condition refresh failed, a Condition refresh operation is already in progress.
80980000 BadConditionAlreadyDis abled This condition has already been disabled.
80990000 BadConditionDisabled Property not available, this condition is disabled.
809A0000 BadEventIdUnknown The specified event id is not recognized.
809B0000 BadNoData No data exists for the requested time range or event filter.
809D0000 BadDataLost Data is missing due to collection started/stopped/lost.
809E0000 BadDataUnavailable Expected data is unavailable for the requested time range due to an unmounted volume an off-line archive or tape or similar rea- son for temporary unavailability.
809F0000 BadEntryExists The data or event was not successfully inserted because a matching entry exists.
80A00000 BadNoEntryExists The data or event was not successfully updated because no matching entry exists.
80A10000 BadTimestampNotSupp orted The client requested history using a timestamp format the server

does not support (i. e. requested ServerTimestamp when server only supports SourceTimestamp).

80AB0000 BadInvalidArgument One or more arguments are invalid.
80AC0000 BadConnectionRejected Could not establish a network connection to remote server.
80AD0000 BadDisconnect The server has disconnected from the client.
80AE0000 BadConnectionClosed The network connection has been closed.
80AF0000 BadInvalidState The operation cannot be completed because the object is closed uninitialized or in some other invalid state.
80B00000 BadEndOfStream Cannot move beyond end of the stream.
80B10000 BadNoDataAvailable No data is currently available for reading from a non-blocking stream.
状态 "Bad" (8000_0000 - FFFF_FFFF)
错误代码

(十六进

制)

名称 含义
80B20000 BadWaitingForResponse The asynchronous operation is waiting for a response.
80B30000 BadOperationAbandone d The asynchronous operation was abandoned by the caller.
80B40000 BadExpectedStreamToB lock The stream did not return all data requested (possibly because it is a non-blocking stream).
80B50000 BadWouldBlock Non-blocking behavior is required and the operation would block.
80B60000 BadSyntaxError A value had an invalid syntax.
80B70000 BadMaxConnections Reached The operation could not be finished because all available connec- tions are in use.
80BB0000 BadEventNot Acknowledgeable The event cannot be acknowledged.
80BD0000 BadInvalidTimestamp Argument The defined timestamp to return was invalid.
80BE0000 BadProtocolVersion Unsupported The applications do not have compatible protocol versions.
80C10000 BadFilterOperatorInvalid An unrecognized operator was provided in a filter.
80C20000 BadFilterOperator Unsupported A valid operator was provided, but the server does not provide support for this filter operator.
80C30000 BadFilterOperandCount Mismatch The number of operands provided for the filter operator was less than expected for the operand provided.
80C40000 BadFilterElementInvalid The referenced element is not a valid element in the content filter.
80C50000 BadFilterLiteralInvalid The referenced literal is not a valid value.
80C60000 BadIdentityChangeNotS upported The Server does not support changing the user identity assigned to the session.
80C80000 BadNotTypeDefinition The provided Nodeid was not a type definition nodeid.
80C90000 BadViewTimestampInval id The view timestamp is not available or not supported.
80CA0000 BadViewParameterMism atch The view parameters are not consistent with each other.
状态 "Bad" (8000_0000 - FFFF_FFFF)
错误代码

(十六进

制)

名称 含义
80CB0000 BadViewVersionInvalid The view version is not available or not supported.
80CC0000 BadConditionAlready Enabled This condition has already been enabled.
80CD0000 BadDialogNotActive The dialog condition is not active.
80CE0000 BadDialogResponseInva lid The response is not valid for the dialog.
80CF0000 BadConditionBranch AlreadyAcked The condition branch has already been acknowledged.
80D00000 BadConditionBranch AlreadyConfirmed The condition branch has already been confirmed.
80D10000 BadConditionAlreadySh elved The condition has already been shelved.
80D20000 BadConditionNotShelve d The condition is not currently shelved.
80D30000 BadShelvingTimeOutOf Range The shelving time not within an acceptable range.
80D40000 BadAggregateListMisma tch The requested number of Aggregates does not match the re- quested number of NodeIds.
80D50000 BadAggregateNotSuppo rted The requested Aggregate is not support by the server.
80D60000 BadAggregateInvalidInp uts The aggregate value could not be derived due to invalid data inputs.
80DB0000 BadTooManyMonitoredIt ems The request could not be processed because there are too many monitored items in the subscription.
80D70000 BadBoundNotFound No data found to provide upper or lower bound value.
80D80000 BadBoundNotSupported The server cannot retrieve a bound for the variable.
80DA0000 BadAggregateConfigurat ion

Rejected

The aggregate configuration is not valid for specified node.
状态 "Bad" (8000_0000 - FFFF_FFFF)
错误代码

(十六进

制)

名称 含义
80E10000 BadDominantValueChan ged The related EngineeringUnit has been changed but this change has not been applied to the device. The Variable Value is still dependent on the previous unit but its status is currently bad.
80E30000 BadDependentValueCha nged A dependent value has been changed but the change has not

been applied to the device. The quality of the dominant variable is bad.

80E40000 BadRequestNotAllowed The request was rejected by the server because it did not meet the criteria set by the server.
80E50000 BadTooManyArguments Too many arguments were provided.
80E60000 BadSecurityModeInsuffic ient The operation is not permitted over the current secure channel.
810D0000 BadCertificateChainInco mplete The certificate chain is incomplete.
810E0000 BadLicenseExpired The server requires a license to operate in general or to perform a service or operation, but existing license is expired.
810F0000 BadLicenseLimitsExcee ded The server has limits on number of allowed operations / objects, based on installed licenses, and these limits where exceeded.
81100000 BadLicenseNotAvailable The server does not have a license which is required to operate in general or to perform a service or operation.
81110000 BadNotExecutable The executable attribute does not allow the execution of the method.
81120000 BadNumericOverflow The number was not accepted because of a numeric overflow.
81130000 BadRequestNotComplet e The request has not been processed by the server yet.

使用 OPC UA 信息模型

使用 OPC UA 配套规范

简介

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

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

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

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

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

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

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

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

以下部分以 Euromap 77 为例详细介绍了如何在 STEP 7 (TIA Portal) 中应用配套规范,以及创建必要的 PLC 变量。

示例:Euromap 77

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

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

使用配套规范:概述

在 OPC UA XML 文件“Opc_Ua.EUROMAP77.NodeSet2.xml”中对 Euromap 77 进行了介绍。

说明

Euromap 77、Euromap 83 和 OPC UA for Devices (DI)

候选版本 2 中已将一些 Euromap 定义传至 Euromap 83。因此,还需要导入 Euromap

83 的 OPC UA 服务器接口。

“OPC UA for Devices”是普遍适用的信息模型,用于组态硬件和软件组件。此信息模型还是其它配套标准的基础,因此也要导入。

Euromap OPC UA XML 文件定义了符合 Euromap 77 配套标准的注塑机的 OPC UA 服务器接口。

按照以下步骤根据 Euromap 77 标准对 S7-1500 CPU 的 OPC UA 服务器进行建模:

  1. 通过创建“IMM_MES_InterfaceType”类型的实例来生成 XML 文件。

“IMM_MES_InterfaceType是 Euromap 77 中最高级别的节点该数据类型直接源自

OPC UA 数据类型 "BaseObjectType"

在“IMM_MES_InterfaceType”下定义所有 Euromap 77 (83) 变量和方法。

“步骤 1”详细说明了相应过程。

  1. 将 PLC 变量和 FB 实例(服务器方法)从 S7-1500 CPU 分配至 Euromap 77

(Euromap 77 信息模型)的变量和方法。

“步骤 2”详细说明了相应过程。

  1. 将 XML 文件作为“服务器接口”导入。

“步骤 3”详细说明了相应过程。编译 STEP 7 项目。

将项目下载到用作注塑机的控制器的 CPU。

  1. 在 STEP 7 项目中,创建已在 2 中向其分配 Euromap 77 变量和方法的 PLC 变量和服务器方法。

PLC 变量的数据类型必须兼容;请参见“映射数据类型”。

启用符合 Euromap 77 的 OPC UA 客户端的这些 PLC 变量的读写访问。例如,在数据块中保存 PLC 变量。

“步骤 4”详细说明了相应过程。

结果:Euromap 77 变量和服务器方法位于 OPC UA 客户端中(在 CPU 的 OPC UA 服务器地址空间中)。

步骤 1:创建实例

以下示例使用来自 Unified Automation 的“UaModeler”程序。还可使用其它工具创建 OPC UA XML 文件(服务器接口)。用于设计信息模型的工具不断完善和改进。因此,应始终使用制造商提供的文档。该文档的优先级高于此处提供的说明。

可以在此处下载“UaModeler”:Unified_Automation_Download (https://www.unified- automation.com/downloads/opc-ua-development.html)

使用 UaModeler 为 OPC UA 服务器设计信息模型/地址空间,并且可创建 OPC UA 节点的新类型和实例。还可以使用 UaModeler 定义 UA 变量或 UA 方法的扩展,以将 UA 变量和 UA 方法映射到 PLC 变量和 PLC 函数块(实例)。

按以下步骤使用“IMM_MES_InterfaceType”实例创建 XML 文件:

  1. 从 Euromap 网站下载文件“Opc_Ua.EUROMAP77.NodeSet2.xml”和

“Opc_Ua_EUROMAP83_NodeSet2.xml”(见上文)。

  1. 在 UaModeler 中新建项目并输入项目名称。在本示例中,项目名称为“Demo”。
  2. 转至“Generate Code”,单击“modeling > v1_0”,然后单击“Next”。
  3. 在“Choose Base Models”下,如果文件“Ua.EUROMAP77.NodeSet2.ua”或

“Opc_Ua_EUROMAP83_NodeSet2.xml”尚未加载,请单击“Find another model”。

UaModeler 采用扩展名 ".ua" 以内部格式保存 XML 文件。

  1. 在“添加信息模型”(Add Information Model) 对话框中,选择“信息模型

(*.xml)”(Information Model (*.xml)) 作为文件类型。然后,在计算机的文件系统中选择

XML 文件“Opc_Ua.EUROMAP77.NodeSet2.xml”和

“Opc_Ua_EUROMAP83_NodeSet2.xml”。

  1. 将显示所选模型基于多个模型的警告。单击“Yes”。这还选择了基本模型“Opc.Ua.Di.Nodset2.ua”。
  2. “New Model”对话框随即打开。

在该示例中,不更改设置的值,单击“Finish”应用值。

在“Namespace URI”下输入“http://yourorganisation.org/Demo/”。在项目中使用有意义的业务命名空间。

  1. UaModeler 将打开项目。

在“信息模型”(Information Model) 下,右键单击“DeviceSet”,然后单击“Add

|hardcopy|2017/09/15 12:30:56
User
REDAKTION Instance”。

  1. 在本示例中,对 NodeIds 使用字符串。

|hardcopy|2017/09/15 12:44:30
User
REDAKTION 因此,从“Additonal Attributes”下的下拉列表中选择“String”。如果节点 ID 的格式无法编辑,请选中“Enable editing of NodeIds”;必须选择该选项。

在本示例中,输入“MyIMM_MES_Interface”作为节点 ID。

  1. 从“Type Definition”下拉列表中选择“IMM_MES_InterfaceType”,并输入实例的名称。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-103 在本示例中,使用名称 "MyIMM_MES_Interface":

  1. 在 UaModeler 的右下角单击“确定”(OK) 按钮。
  2. 西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-104 打开新节点“MyIMM_MES_Interface”:单击“MyIMM_MES_Interface”前的箭头:

结果:OPC UA 服务器的地址空间包含基于 Euromap 77 或 Euromap 83 的对象(作为注塑机的表示),例如用于 MES(管理执行系统)。可根据需要以相同方式生成其它子对象和任何其它组态来设计 OPC UA 服务器。

  1. 保存该项目。
  2. 西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-105 在“项目”(Project) 下,选择演示项目:
  3. 右键单击“demo.ua”,然后在快捷菜单中选择“Export XML”。

UaModeler 会将项目导出到“demo.xml”文件。

  1. 关闭 UaModeler。

步骤 2:分配 PLC 变量

以下描述以变量为例来说明如何为 Euromap 77 的变量和方法分配特定的 PLC 变量和服务器方法。

请按以下步骤操作:

  1. 使用编辑器打开在“步骤 1”中创建的文件“demo.xml”。在 XML 文件中,搜索 UA 变量(基于

NodeId="ns=1;s=MyIMM_MES_Interface.InjectionUnits.NodeVersion")。在下一步中这些变量被分配一个 PLC 变量。

  1. 要为此 OPC UA 变量分配一个 PLC 变量,请将扩展添加到 OPC UA 变量的 XML 元素。

之后,可将类型为“<si:VariableMapping>”的元素 添加到该扩展中:

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-106

  1. 在 XML 命名空间

"http://www.siemens.com/OPCUA/2017/SimaticNodeSetExtensions" 中定义 XML 元素“<si:VariableMapping>”。

|hardcopy|2017/09/15 17:47:33
User
REDAKTION 因此,需要将此命名空间分配至 XML 元素“<UANodeSet>”(例如在 XML 文件开头,通过以下代码行采用一次性操作实现):

如果不添加命名空间,文件中的元素“<si:VariableMapping>”将未知。

  1. 保存“demo.xml”文件并关闭编辑器。

有用信息:分配 PLC 方法

除了分配变量,还可将方法分配给 FB 实例(用户程序或函数块,作为方法的表示)。

要将 OPC UA 方法分配给 FB 实例,还需要按照下述步骤向 OPC UA XML 文件添加扩展。请注意,必须向实例名称添加不带引号的后缀“.Method”。

将类型为“<si:MethodMapping>”的元素添加到该扩展中:

具有 BrowseName“InputArguments”和“OutputArguments”的 OPC UA 方法的特性是

OPC UA 变量,被分配。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-108

步骤 3:导入服务器接口

要将 OPC UA XML 文件作为“服务器接口”导入,请按以下步骤操作:

    1. 打开 STEP 7 项目。
    2. 单击“OPC UA 通信 > 服务器接口”(OPC UA communication > Server interfaces)。
    3. 双击“导入服务器接口”(Import server interface)。
    4. 在“导入”(Import) 对话框中,选择要作为服务器接口导入的文件。在本示例中,此为文件“demo.xml”。
    5. 单击“导入”(Import) 按钮。
    6. 还导入文件“Opc.Ua.Di.NodeSet2.xml”、“Opc_Ua.EUROMAP77.NodeSet2.xml”和

“Opc_Ua.EUROMAP83.NodeSet2.xml”。

“demo.xml”文件与刚才指定的文件相关。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-109 始终使用这些文件的最新版本,因为 STEP 7 无法编译有错误的 OPC UA XML 文件。

上面根据 Euromap 77 规范生成的机器图现在 OPC UA 服务器的地址空间中可用。

步骤 4:在 STEP 7 项目中创建 PLC 变量和服务器方法

在该示例中,已将 PLC 变量“MyIMM_MES_Interface.InjectionUnits.NodeVersion”分配给

UA 变量(基于

NodeId="ns=1;s=MyIMM_MES_Interface.InjectionUnits.NodeVersion");参见“步骤 2:分配 PLC 变量”。

请按以下步骤来创建所需 PLC 变量(基于 STEP 7 (TIA Portal)):

  1. 生成“MyIMM_MES_Interface”数据块。
  2. 生成 DB 元素“InjectionUnits.NodeVersion”。使用与 OPC UA 数据类型兼容的

SIMATIC 数据类型。本示例中的 UA 变量的 OPC UA 数据类型为 "String"

(DataType="String"). 兼容 SIMATIC 数据类型为 WSTRING。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-110

  1. 编译项目。
  2. 将项目下载到 CPU。

将已导出 OPC UA XML 文件导入到 S7-1500 CPU

导入来自 S7-1500 的 OPC UA XML 导出的服务器接口时,请注意以下信息。

说明

对于命名空间“http://www.siemens.com/simatic-s7-opcua,导入被阻止

不能将命名空间为“http://www.siemens.com/simatic-s7-opcua的服务器接口导入到 S7- 1500 CPU,因为该命名空间为 S7-1500 CPU(标准 SIMATIC 服务器接口)预留,不可导入。

如果要导入命名空间为“http://www.siemens.com/simatic-s7-opcua”的服务器接口,请打开要导入的服务器接口(OPC UA XML 文件)并在相关位置更改命名空间。然后可以导入更改后的文件。

OPC UA XML 文件的完整性

OPC UA XML 文件用于说明服务器的地址空间。例如,在调整应用程序后,用户可根据OPC UA Companion 规范导入这些文件,并与硬件配置一同加载到 S7-1500 CPU 中进行测试。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-111

警告

系统不会对导入的 OPC UA XML 文件进行检查

由于 STEP 7 不会检查这些文件的完整性,因此需确保这些 OPC UA XML 文件防止未经授权的篡改。

建议

对服务器的地址空间进行控制或调整时,为了将风险降至最低,可执行以下操作步骤:

    1. 保护项目(项目导航:“安全设置 > 设置”(Security settings > Settings))。
    2. 对地址空间进行扩展或调整前,导出相应的服务器接口。
    3. 修改该 OPC UA XML 文件。
    4. 再次将该文件导入为服务器接口。

映射数据类型

下表显示了各个 OPC UA 数据类型的兼容 SIMATIC 数据类型。

如下图所示,进行数据类型分配(SIMATIC 数据类型 – OPC UA 数据类型)。系统不支持其它分配方式。STEP 7 不会检查是否遵循该规则,因此也不会预防分配错误。用户需确保所做的选择和数据类型分配符合规则。

例如,所列出的数据类型,也可用作自定义服务器方法中输入和输出参数结构 / UDT 的元素(UAMethod_InParameters 和 UAMethod_OutParameters)。

表格 9- 10 数据类型的映射

SIMATIC 数据类型 OPC UA 数据类型性
BOOL Boolean
SINT SByte
INT Int16
DINT Int32
LINT Int64
USINT Byte
UINT UInt16
UDINT UInt32
ULINT UInt64
REAL Float
LREAL Double
LDT DateTime
WSTRING String
SIMATIC 数据类型 OPC UA 数据类型性
DINT Enumeration (Encoding Int32) 和所有派生数据类型
所需的用户自定义数据类型

(UDT,user-defined data type)

必须使用前缀“Union_”创建用户自定义数据类型,例如“Union_MyDatatype”;见下表示例。

此 UDT 中的第一个元素 (Selector)

必须具有“UDINT”数据类型。

UNION 和所有派生数据类型

所需的 UNION 用户自定义数据类型

下图显示了具有数据类型“Union_MyDatatype”的变量“MyVariable”。此 SIMATIC 数据类型对应于数据类型为 UNION 的 OPC UA 变量。

下图显示了声明示例:当 Selector = 1 时,Union 收到一个 ByteString;当 Selector = 2

时,Union 收到一个 WString。

|hardcopy|2017/09/15 11:38:30
User
REDAKTION

使用其它 OPC UA 基本数据类型

除了“映射数据类型”部分列出的 OPC UA 数据类型以及 SIMATIC 端对应的数据类型之外,还可使用以下 OPC UA 基本数据类型:

  • OpcUa_NodeId
  • OpcUa_QualifiedName
  • OpcUa_Guid
  • OpcUa_LocalizedText
  • OpcUa_ByteString
  • OpcUa_XmlElement

在应用程序中使用上文中所示基本数据类型的变量时,应满足以下要求:基本数据类型需用作复杂数据类型,且结构与相应的 OPC UA 基本数据类型完全相同。

          • OpcUa_NodeId 和 OpcUa_QualifiedName 可用作系统数据类型;因此,这些数据类型不仅可用于单个变量,也可用作结构中的元素。
          • 对于其余基本类型,需基于 OPC UA 规范创建一个 PLC 数据类型,之后再将其用作某个结构中的元素,以便使用 Typedictionary 对这些元素进行解析。在下文中,介绍了每个基本数据类型所对应的 PLC 数据类型。例如,在“EUInformation”示例中,使用了数据结构 UDT“LocalizedText”。“EUInformation”中包含有关 EngineeringUnits 的信息。有关 EUInformation 数据结构的实现示例,请参见 PLC 数据类型说明的结尾处。

系统数据类型“OPC_UA_NodeId”

在下表中,列出了 OPC UA 基本数据类型“OpcUa_NodeId”各个参数的含义。

OPC_UA_NodeId 用于识标 OPC UA 服务器中的节点。

参数 S7 数据类型 含义
NamespaceIndex UINT OPC UA 服务器中,节点的命名空间索引。例如,节点可以是一个变量。
Identifier WSTRING[254] 节点(对象或变量)的名称取决于标识符类型:

  • 数字标识符:节点使用一个数字进行标记, 如“12345678”。
  • 字符串标识符:节点使用一个名称进行标记,如“MyTag”。不区分大小写。
IdentifierType UDINT 标识符的类型

  • 0:数字标识符
  • 1: 字符串标识符
  • 2: GUID
  • 3:Opaque

系统数据类型“OPC_UA_QualifiedName”

请参见下表中系统数据类型“OPC_UA_QualifiedName”的结构:

名称 S7 数据类型 含义
NamespaceInd ex UINT 名称的命名空间索引。
Name WSTRING[64] 节点或变量的名称。

UDT“Guid”

为基本数据类型“Guid”创建以下 PLC 数据类型。示例中使用的默认值也可设置为不同值。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-113

UDT“LocalizedText”

为基本数据类型“LocalizedText”创建以下 PLC 数据类型:

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-114

EncodingByte 用于指示可用的字段(Locale 或 Text):

编码字节 含义
0 字段 Locale 和 Text 为空
1 字段 Locale 中有内容,字段 Text 为空
2 字段 Locale 为空,字段 Text 中有内容
3 字段 Locale 和 Text 中均有内容

UDT“ByteString”

为基本数据类型“ByteString”创建以下 PLC 数据类型;例如,创建一个包含有 12 个元素的 ByteString 数组:

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-115

UDT“XmlElement”

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-116 XmlElement 是一种序列化的 XML 程序段(UTF 8 字符串)为基本数据类型“XmlElement”创建以下 PLC 数据类型:

示例:UDT 为“LocalizedText”的 EUInformation 的结构

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-117

变量的 MinimumSamplingInterval 属性

除了“Value”、“DataType”和“AccessLevel”之外,在表示服务器地址空间的 XML 文件中还可为变量设置“MinimumSamplingInterval”属性。该属性用于指定服务器采样变量值的速 度。

以下规则适用于 S7-1500 CPU 上 OPC UA 服务器中的 MinimumSamplingInterval 值:

  • 仅支持 0 到 4294967 之间的正值。

不支持以逗号作为小数点的小数值(如,0,55)。这是因为,系统无法正确解释这些值。对于采用最多 7 个数字并使用逗号作为小数点的十进制数,系统将移除逗号;如果十进制

数的超过 7 个数字,则该值将设置为最大值:4294967.295。支持的最大负数为 4294967.295。

协调 CPU 变量的读写权限

信息模型 (OPC UA XML) 中读写权限的定义

在 OPC UA 信息模型中,属性“AccessLevel”调节对变量的访问权限。

AccessLevel 按位定义:

位 0 = CurrentRead,位 1 = CurrentWrite。位组合的含义如下:

          • AccessLevel = 0:无访问权
          • AccessLevel = 1:只读
          • AccessLevel = 2:只写
          • 西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-118 AccessLevel = 3:读+写 读写权限(读+写)的分配示例

STEP 7 中读写权限的定义

定义变量时,使用“从 HMI/OPC UA 可访问”(Accessible from HMI/OPC UA) 和“从

HMI/OPC UA 可写”(Writable from HMI/OPC UA) 特性来指定访问权限。

读写权限的分配示例

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-119

读写权限之间的交互

如果已导入 OPC UA 服务器接口,并且在此 OPC UA XML 文件中设置了 AccessLevel

属性,则通过以下规则定义读写权限:各个设置的最不广泛访问权限适用。

示例

  • OPC UA 服务器接口中的 AccessLevel = 1(只读)
  • 在 PLC 变量表中选择了“从 HMI/OPC UA 可访问”(Accessible from HMI/OPC UA) 和

“从 HMI/OPC UA 可写”(Writable from HMI/OPC UA)。结果:变量为只读型。

规则

如果需要写权限:

  • AccessLevel = 2 或 3
  • 启用“从 HMI/OPC UA 可写”(Writable from HMI/OPC UA)

如果需要读权限:

  • AccessLevel = 1(AccessLevel 3 也可以,但是具有误导性。该设置表示 OPC UA 客户端具有读写权限)
  • 启用“从 HMI/OPC UA 可访问”(Accessible from HMI/OPC UA),禁用“从 HMI/OPC

UA 可写”(Writable from HMI/OPC UA)

如果不授予读写权限(无访问权限):

  • AccessLevel = 0
  • 禁用“从 HMI/OPC UA 可访问”(Accessible from HMI/OPC UA)

要阻止所有访问权限,需满足两个条件之一。在这种情况下,请检查 OPC UA 服务器接口中的变量实际上是否完全需要。

访问表

如果要通过 OPC UA 进行访问,必须设置“从 HMI/OPC UA 可访问”(Accessible from HMI/OPC UA)。如果要允许 OPC UA 客户端写入变量/DB 元素,必须设置“从 HMI/OPC

UA 可写”(Writable from HMI/OPC UA)。请参见下表了解实现的访问权限。

表格 9- 11 访问表

OPC UA XML STEP 7 (TIA Portal),例如变量表
AccessLevel 从 HMI/OPC UA 可

访问

从 HMI/OPC UA 可

实现的访问权限
0 x x 无访问权
x 0 x 无访问权
1 启用 x 只读
2 启用 禁用 无访问权
3 启用 禁用 只读
2 启用 启用 只写
3 启用 启用 读+写

(x = 无关)

使用服务器接口时组态限制的注意事项

使用 OPC UA 服务器接口时,必须遵循依据 S7-1500 CPU 性能等级的以下对象的限制:

          • 服务器接口数
          • OPC UA 节点数
          • 加载对象数据量
          • 如果方法已执行:服务器方法或服务器方法实例的数量

9.3 S7-1500 用作OPC UA 服务器

OPC UA 服务器接口的组态限制

下表列出了 S7-1500 CPU 的组态限制;编译和加载组态时也必须考虑到这些限制。违反组态限制会导致出现错误消息。

表格 9- 12 OPC UA 服务器接口的组态限制

技术规范值 CPU 1510SP (F) CPU 1511 (C/F/T/TF) CPU 1512C

CPU 1512SP (F) CPU 1513 (F)

CPU 1505

(S/SP/SP F/SP T/SP T F)

CPU 1515 (F/T/TF) CPU 1515 SP PC (F/T

/TF)

CPU 1516 (F/T/TF)

CPU 1507S (F) CPU 1517 (F/T/TF)

CPU 1518 (F)

OPC UA 服务器接口(信息模型)的最大数 10 10 10
OPC UA 节点的最大数 1000 5000 30000
可加载 OPC UA 服务器接口的最大大小 1024 KB 5120 KB 15360 KB
可使用的服务器方法或服务器方法实例的最大数量

(指令

OPC_UA_ServerMethodPr

e、OPC_UA_ServerMethodP

ost)

20 50 100

说明

使用容量足够的存储卡

根据要加载的服务器接口的数量和规模,将硬件配置下载到 CPU 的过程可能会中止,并生成错误消息。

终止的原因不显示在诊断缓冲区中。

使用足够容量的存储卡,并禁用不需要的服务器接口(服务器接口的特性“启用服务器接口并下载到 CPU”(Enable server interface and download to CPU) 选项)。

路由 10

S7 路由

S7 路由的定义

S7 路由就是跨 S7 子网传输数据。可以跨越几个 S7 子网将信息从发送方传送到接收方。

S7 路由器提供从一个 S7 子网到一个或多个其它子网的网关。S7 路由器具有连接至相应

S7 子网的接口。S7 路由可通过各种 S7 子网 (PROFINET/工业以太网和/或

PROFIBUS)实现。

S7 路由的要求

  • 在 STEP 7 的项目中已对网络中可访问的所有设备进行了组态和下载。
  • S7 路由中涉及的所有设备必须接收有关可通过特定 S7 路由器访问的 S7 子网的信息。由于 CPU 扮演着 S7 路由器的角色,这些设备通过将硬件配置下载到 CPU 来获取路由信息。

在具有多个连续 S7 子网的拓扑中,必须按照以下顺序进行下载:首先,将硬件配置下载到同一 S7 子网中作为 PG/PC 的 CPU;然后,按照 S7 子网自近到远的顺序,逐一下载到 S7 子网的 CPU。

  • 必须将用于通过 S7 路由器建立连接的 PG/PC 分配给与其物理连接的 S7 子网。可以根据菜单命令“在线诊断 > 在线访问 > 连接到接口/子网(Online & Diagnostics > Online accesses > Connection to interface/subnet) ,将该 PG/PC 指定为 STEP 7 中的

PG/PC。

  • 对于类型为 PROFIBUS 的 S7 子网:CPU 必须组态为 DP 主站。如果要组态为 DP从站,则必须选中 DP 从站上 DP 接口属性内的“测试、调试、路由”(Test, commissioning, routing) 复选框。
  • 从 STEP 7 V13 SP1 起,支持 HMI 连接的 S7 路由。

说明

防火墙和 S7 路由

如果发送方位于与防火墙相邻的 S7 子网之外,则防火墙在 S7 路由过程中无法识别该发送方的 IP 地址。

用于在线连接的 S7 路由

通过 PG/PC,可访问 S7 子网以外的设备。如,可执行以下操作:

    • 下载用户程序
    • 下载硬件配置
    • 执行测试和诊断功能

在下图中,CPU 1 为 S7 子网 1 和 S7 子网 2 间的 S7 路由器。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-120

图 10-1 S7 路由:PROFINET - PROFINET

下图举例说明了从 PG 通过 PROFINET 访问 PROFIBUS 的过程。CPU 1 是 S7 子网 1

和 S7 子网 2 间的 S7 路由器;CPU 2 是 S7 子网 2 和 S7 子网 3 间的 S7 路由器。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-121

图 10-2 S7 路由:PROFINET - PROFIBUS

用于 HMI 连接的 S7 路由

可通过不同的子网(PROFIBUS、PROFINET 或工业以太网),在 HMI 与 CPU 间建立

S7 连接。在下图中,CPU 1 为 S7 子网 1 和 S7 子网 2 间的 S7 路由器。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-122

图 10-3 通过 HMI 连接实现的 S7 路由

用于 CPU-CPU 通信的 S7 路由

可通过不同的子网(PROFIBUS、PROFINET 或工业以太网),在 CPU 间建立 S7 连接。有关连接建立的具体操作步骤,请参见“S7 通信 (页 124)”部分中的示例。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-123

图 10-4 通过 CPU-CPU 通信实现的 S7 路由

使用 S7 路由

对于 CPU,在 STEP 7 的“转至在线”(Go online) 对话框中,选择 PG/PC 接口和 S7 子网。S7 路由将自动执行。

S7 路由的连接数量

有关 S7 路由器(CPU、CM 或 CP)上 S7 路由的连接数量,请参见相关 CPU/CM/CP

手册中的技术规范。

S7 路由:应用示例

下图举例说明了如何使用 PG 对系统进行远程维护。这里,两个 S7 子网之间通过调制解调器进行连接。

可以在 STEP 7 的“在线访问”(Online access) 或“转至在线”(Go online) 中组态一个通过

TeleService 的远程连接。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-124

图 10-5 使用 TeleService 对设备进行远程维护

更多信息

  • 有关 S7 路由的连接资源分配,请参见“连接资源分配 (页 262)”部分。
  • 有关设置 TeleService 连接的信息,请参见 STEP 7 的在线帮助。
  • 有关 S7 路由和 TeleService 适配器的更多信息,可通过以下链接访问 Internet。
    • 设备手册《工业软件工程组态工具 TS Adapter 的 IE 基础知识

(http://support.automation.siemens.com/WW/view/ch/51311100)》

参见

HMI 通信 (页 69)

数据记录路由
    1. 数据记录路由

数据记录路由的定义

可以通过 PROFINET,从工程师站将数据发送到多个网络中的现场设备。由于工程师站使用标准化的记录对现场设备寻址且这些记录通过 S7 设备来路由,因此使用“数据记录路由”这个术语来表示这种路由。

通过数据记录路由发送的数据包括使用的现场设备(从站)的参数分配,以及设备的特定信息(如,设定值、限值等)。

例如,在使用不同厂商的现场设备时,可使用数据记录路由。为进行组态和诊断,将使用标准数据记录 (PROFINET) 来寻址现场设备。

使用 STEP 7 实现数据记录路由

通过借助于 TCI 接口(工具调用接口)调用设备工具(如 PCT) 并传递调用参数,可使用

STEP 7 执行数据路由。设备工具使用的通信路径也可供 STEP 7 用来与现场设备通信。除了在 STEP 7 PC 上安装 TCI 工具外,这种路由不需要其它组态。

10.2 数据记录路由

示例:通过 Port Configuration Tool (PCT) 实现的数据记录路由

可以使用端口组态工具 (PCT) 来组态 ET200 的 IO Link 主站,并向连接的 IO Link 设备分配参数。子网通过数据记录路由器来连接。例如,数据记录路由器可以是 CPU、CP、IM 或 IO Link 主站。

有关 PCT 支持的数据记录路由器的配置,请参见本常见问题与解答

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-125 (http://support.automation.siemens.com/WW/view/zh/87611392)。下图显示了通过 PCT 实现数据记录路由的组态示例。

图 10-6 通过 PCT 实现数据记录路由的组态示例

更多信息

      • 有关 CPU、CP 或 CM 是否支持数据记录路由,请参见相关手册。
      • 有关数据记录路由的连接资源分配的信息,请参见“连接资源分配 (页 262)”部分。
      • 有关使用 STEP 7 进行组态的更多信息,请参见 STEP 7 在线帮助。
连接资源 11

11.1 站中的连接资源

简介

某些通信服务需要进行连接。将占用自动化系统(站)中的连接资源。CPU、通信处理器

(CP) 和通信模块 (CM) 可为站提供所需的连接资源。

站中的连接资源

可用连接资源取决于所使用的 CPU、CP 和 CM,且不得超过单个站的最大可用连接资源数量。

站中最大的可用资源数量取决于 CPU。

每个 CPU 都会为 PG、HMI 和 Web 服务器通信预留一定数量的连接资源。这样可确保无论多少个通信服务使用连接资源时,PG 与 CPU 间始终保留至少一条在线连接。

此外,存在动态资源。最大连接资源数量减去预留的连接资源数量,即为动态连接资源的最大数量。PG 通信、HMI 通信、S7 通信、开放式用户通信、Web 通信和其它通信(例如 OPC UA)等通信服务会使用资源池中的动态连接资源。

通信

功能手册, 12/2017, A5E03735819-AF 258

下图举例说明了各个组件如何使连接资源用于 S7-1500 站。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-126

① 站的可用连接资源的分配 A 站中预留的连接资源A + B CPU 1518 的连接资源

  1. 通信模块 CM 1542-1 的连接资源
  2. 通信处理器 CP 1543-1 的连接资源

② 在采用 CPU 1518、CM 1542-1 和 CP 1543-1 的组态示例中,该站通信资源的最大数量

图 11-1 站中的连接资源

站中的连接资源

站中连接资源的数量

表格 11- 1 某些 CPU 型号所支持的连接资源最大数量

站中的连接资源 1511

1511C

1512C

1513

1515 1516 1517 1518
站中连接资源的最大数 96 128 192 256 320 384
预留 10
动态 86 118 182 246 310 374
CPU 中的连接资源 64 88 108 128 160 192
插入 CM/CP 时,可额外使用的连接资源最大数 32 40 84 128 160 192
CM 1542-1 可额外使用的连接资源数量 64
CP 1543-1 可额外使用的连接资源 118
CM 1542-5 可额外使用的连接资源数量 40
CP 1542-5 可额外使用的连接资源 16

CPU 或通信模块所支持的连接资源数在设备手册的“技术参数”中指定。

示例

在 CPU 1518-4PN/DP 组态中,包含一个通信模块 CM 1542-1 和一个通信处理器 CP 1542-5。

      • 站中连接资源的最大数:384
      • 可用的连接资源:

– CPU 1518-4 PN/DP:192

– CM 1542-1:64

– CP 1542-5:16

– 总计:272

在该组态中,可使用 272 个连接资源。通过增加其它通信模块,该站最多可额外支持

112 个连接资源。

预留的连接资源

为带有 S7-1500 CPU 的站、ET 200SP CPU 和基于 S7-1500 的 ET 200pro CPU,预留了 10 个连接资源

  • 4 个连接资源,用于 STEP 7 所需的 PG 通信,如进行测试和诊断或将数据下载到

CPU 中

  • 4 个连接资源,用于 STEP 7 中所组态的第一个 HMI 连接的 HMI 通信
  • 2 个连接资源,用于与 Web 服务器进行通信

连接资源分配

概览 - 连接资源的分配

下图描述了不同连接方式中 S7-1500 资源的分配。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-127

① HMI 通信:见下文。

② 开放式用户通信:开放式用户通信连接会占用每个端点的一个连接资源。

③ S7 通信:S7 通信连接会占用每个端点的一个连接资源。

④ Web 通信:Web 服务器连接会占用站中至少一个连接资源。占用的连接数取决于具体的浏览器。

⑤ PG 通信:PG 通信连接会占用站中一个连接资源。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-128 ⑥ OPC UA 通信:作为一项规则,CPU 的 OPC UA 服务器与 OPC UA 客户端建立的每个会话都占用站中的一个连接资源(其它通信)。HMI 通信的连接资源

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-129 西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-130 西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-131 西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-132 开放式用户通信的连接资源S7 通信的连接资源Web 通信的连接资源PG 通信的连接资源

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-133 其它通信(例如 OPC UA)的连接资源

图 11-2 连接资源分配

HMI 通信的连接资源

进行 HMI 通信时,站中所占用的连接资源数量取决于所使用的 HMI 设备。

表格 11- 2 不同 HMI 设备占用的连接资源的最大数

HMI 设备 各 HMI 连接占用的站中连接资源的最大数
精简面板 1
精智面板 21
RT Advanced 21
RT Professional 3

1 如果未使用系统诊断或报警组态,每个 HMI 连接仅占用该站的一个连接资源。

示例:已组态 CPU 1516-3 PN/DP 的以下 HMI 连接:

      • 至 HMI TP700 Comfort 的两个 HMI 连接。(每个连接占用 2 个连接资源)
      • 至 HMI KTP1000 Basic 的一个 HMI 连接。(1 个连接资源)

CPU 中的 HMI 通信总共占用 5 个连接资源。

路由的连接资源

如果要在 S7 子网中进行数据传输(“S7 路由”),则需在两个 CPU 之间建立一条 S7 连接。S7 子网将通过网关(即,S7 路由器)进行连接。在 S7-1500 中,CPU、CM 和 CP 可作为 S7 路由器。

以下信息说明了 S7 连接中的路由数据情况:

  • 在两个端点上,路由的连接各占用一个连接资源。STEP 7 在“连接资源”(Connection

resources) 表中显示这些连接资源。

  • 在 S7 路由器中,S7 路由将占用两个特定的连接资源。STEP 7 不会在“连接资

源”(Connection resources) 表中显示 S7 路由的专用连接资源。S7 路由时所需的连接资源数量取决于 CPU。有关 S7 路由所需的连接资源数量,请参见 CPU 技术规范中的“S7 路由的连接数量”。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-134

S7 通信的连接资源

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-135 西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-136 S7 路由时所需的特定连接资源

图 11-3 S7 路由的连接资源

数据记录路由还可以跨 S7 子网进行数据传输,通过 PROFIBUS 从连接到 PROFINET 的工程师站将数据传输到各种现场设备。

数据记录路由功能与 S7 路由功能类似,每一个数据记录路由器也会占用两个用于 S7 路由的特定连接资源。

说明

数据记录路由的连接资源

进行数据记录路由时,数据记录路由器会占用两个用于 S7 路由的特定连接资源。数据记录连接和分配的连接资源都不会显示在连接资源表中。

何时占用连接资源?

连接资源的占用时间取决于连接的建立方式(参见“建立连接 (页 33)”部分)。

  • 通过编程设置连接:

在用户程序中调用连接建立指令(TSEND_C/TRCV_C 或 TCON)时,将立即占用连接资源。

通过对 TSEND_C/TRCV_C 指令的 CONT 参数进行相应设置或调用 TDISCON 指令,可在数据传输后终止连接并释放连接资源。连接终止时,CPU/CP/CM 中的连接资源将再次可用。

  • 已组态连接(如 HMI 连接):

如果在 STEP 7 中组态了一条连接,则在硬件配置下载到 CPU 时将立即占用连接资源。

通过组态的连接完成数据传输后,连接不会终止。该连接资源为永久性占用。要再次释放该连接资源,则需在 STEP 7 中删除所组态的这一连接,并将修改后组态下载到

CPU 中。

  • PG 连接:

在 STEP 7 中,在线连接 PG 与 CPU 时,将会立即占用连接资源。

  • Web 服务器:

只要在浏览器中打开 CPU 的 Web 服务器,就占用 CPU 中的连接资源。

  • OPC UA 服务器:

只要 CPU 的 OPC UA 服务器与 OPC UA 客户端之间存在会话,就会占用 CPU 中的一个连接资源。

监视连接资源的最大数

离线

在组态连接时,STEP 7 将监视连接资源的占用情况。如果超出了连接资源的最大数量, 则 STEP 7 将发出一条相应的警告消息。

在线

CPU 将监视自动化系统中连接资源的使用情况。如果用户程序中创建的连接数量超出了自动化系统可提供的数量,则 CPU 将确认该指令建立连接并显示相应错误。

连接资源的显示

在 STEP 7 中显示连接资源(离线视图)

在硬件配置中,可显示自动化系统的连接资源。这些连接资源将显示在 CPU 属性中的巡视窗口内。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-137

图 11-4 示例:预留和可用的连接资源(离线视图)

① 站特定连接资源

在“站特定的连接资源”列中,显示有关站中已用和可用的连接资源信息。 在本示例中,自动化系统中最多可使用 256 个站特定的连接资源。

      • 10 个预留的连接资源中,4 个已使用,其余 6 个可用。已使用的资源分别为:
        • 4 个连接资源,用于 HMI 通信
      • 246 个动态连接资源。其中,81 个已使用,其余 165 个可用。已使用的资源分别为:
        • 6 个连接资源,用于 HMI 通信
        • 23 个连接资源,用于 S7 通信
        • 52 个连接资源,用于开放式用户通信

由于 CPU、CP 和 CM 中可用连接资源的最大数(294 个连接资源)超出了站的限值 256

个,因此将在动态站资源列中显示一个三角形警告标志。

说明

超出可用的连接资源数

STEP 7 通过一个警告表示超出站特定的连接资源数量。要确保 CPU、CP 和 CM 中连接资源的充分利用,可使用具有较大站特定连接资源数量的 CPU,也可减少通信连接的数量。

② 模块特定的连接资源

在模块特定的连接资源列中,显示有关自动化系统中的 CPU、CP 和 CM 的使用资源的信息:

在此,将按照模块而非接口分别显示。

在本示例中,CPU 中共由 128 个可用的连接资源。其中,47 个已使用,其余 81 个可用。

已使用的资源分别为:

  • 6 个连接资源,用于 HMI 通信
  • 2 个连接资源,用于 S7 通信
  • 39 连接个资源,用于开放式用户通信

在 STEP 7 中显示连接资源(在线视图)

如果已在线连接 CPU,在“连接信息”(Connection information) 下还可查看当前正在使用的资源数量。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-138

图 11-5 连接资源 - 在线

除离线视图外,“连接资源”(Connection resources) 表格的在线视图中也包含有正在使用的连接资源列。因此,在线视图中会显示自动化系统中所有已使用的连接资源,而不考虑采用的连接方式。

在“其它通信”(Other communication) 行中,将为与外部设备通信而分配的连接资源。该表格将自动进行更新。

说明

如果路由的 S7 连接经过某一 CPU,则该 CPU 所需的连接资源不出现在连接资源表中!

显示 HMI 的连接资源

有关 HMI 连接中可用的连接资源和具体分配,请参见巡视窗口中离线视图(HMI 设备)内的“连接资源”(Connection resources) 属性。

|hardcopy|2015/04/07 18:06:39
z00334xp
MD1FE52C

图 11-6 连接资源 - HMI 通信

在连接资源区域中,将显示以下信息:

  • 为 HMI 通信和 HTTP 通信预留的 HMI 连接资源数量
  • HMI 离线时,进行 HMI 离线通信和 HTTP 通信可使用的连接资源数量

如果超出 HMI 设备可用的最大连接资源数量,则 STEP 7 将输出一条相关消息。

  • “每个 HMI 连接所用的 PLC 资源最大数量”。该参数是一个系数,将乘与离线使用的

HMI 连接数量。乘积结构为 CPU 中已占用的 HMI 资源数量。

在 Web 服务器中显示连接资源

除了可在 STEP 7 中显示连接资源,也可在浏览器中显示 Web 服务器的相关资源页面。

有关在 Web 服务器中显示连接资源的信息,请参功能手册《Web 服务器

(http://support.automation.siemens.com/WW/view/zh/59193560)》。

连接诊断 12

在线视图中的连接表

在 STEP 7 的“设备与网络”(Devices & networks) 编辑器中选择了一个 CPU 后,将在连接表的在线视图中显示连接的状态。

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-140

图 12-1 连接表的在线视图

在连接表中选择连接之后,可在“连接信息”(Connection information) 选项卡中查看详细诊断信息。

通信

功能手册, 12/2017, A5E03735819-AF 270

“连接信息”(Connection information) 选项卡: 连接的详细信息

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-141

图 12-2 连接诊断 - 连接的详细信息

连接诊断

“连接信息”(Connection information) 选项卡: 地址详细信息

西门子PLC通信设置(SIMATIC S7-1500、ET 200MP、ET 200SP、ET 200AL、ET 200pro 通信)-142

图 12-3 连接诊断 - 地址的详细信息

通过 Web 服务器进行诊断

通过 CPU 的集成 Web 服务器并使用 Web 浏览器,可以从 CPU 分析诊断信息。

在“通信”(Communication) 网页中,可在各个选项卡中查看通过 PROFINET 进行通信的以下信息:

      • 有关 CPU 的 PROFINET 接口的信息(例如,地址、子网、物理属性)。
      • 有关数据传输质量的信息(例如,正确发送/接收的数据包数量)。
      • 有关分配的/可用的连接资源的信息。
      • “连接”(Connections) 页面类似于 STEP 7 中的视图,还通过详细视图提供所有连接的概览。

通信

272 功能手册, 12/2017, A5E03735819-AF

用户程序中的诊断

在编程 T_DIAG 指令时,可使用用户程序来评估有关 CPU 的已组态和已编程连接的诊断信息。

附加信息

有关 Web 服务器的功能介绍,请参见功能手册“Web 服务器

(http://support.automation.siemens.com/WW/view/zh/59193560)”。

使用 CP 1543-1 确保工业以太网安全 13

全方位保护 - 工业以太网安全的任务

通过工业以太网安全,可以对以太网中的单个设备、自动化单元或网段进行保护。此外, 还可以通过组合其它不同的安全措施,对数据传输提供如下保护:

      • 数据侦听
      • 数据操纵
      • 未经授权的访问

安全措施

  • 防火墙
    • 全状态数据包检测型 IP 防火墙 (第 3 层和第 4 层)
    • 符合 IEEE 802.3 标准的以太网“非 IP”帧的防火墙(第 2 层)
    • 带宽限制
    • 全局防火墙规则

防火墙将保护 CP 1543-1 内网段中的所有网络节点。

  • 日志记录

在监视过程中,事件将存储在日志文件中,可通过组态工具进行读取或者自动发送到

Syslog 服务器中。

  • HTTPS

对网站传输进行加密,例如在过程控制期间。

  • FTPS(显式模式) 对文件传输进行加密。
  • 安全 NTP

对时间同步和传输进行保护

  • SNMPv3

对网络分析信息的传输进行安全保护,以防窃听。

通信

功能手册, 12/2017, A5E03735819-AF 274

13.1 防火墙

  • VPN 组

通过组态,可将 CP 1543-1 及其它安全模块整合到 VPN 组中。在 VPN 组 (VPN) 的所有安全模块之间建立 IPsec 隧道。这些安全模块的所有内部节点可通过此隧道互相进行安全通信。

  • 对设备和网段进行保护

防火墙与 VPN 组的保护功能可应用于单个设备、多个设备或整个网段的操作。

防火墙

防火墙的任务

防火墙的目的是保护网络和站点免受外部的影响和干扰。 这意味着,只能与之前指定的通信伙伴进行通信。

可通过 IPv4 地址、IPv4 子网、端口号或 MAC 地址等信息对为数据流进行过滤。可以为以下协议层组态防火墙功能:

      • 全状态数据包检测型 IP 防火墙 (第 3 层和第 4 层)
      • 符合 IEEE 802.3 标准的以太网“非 IP”帧的防火墙(第 2 层)

防火墙的规则

在防火墙规则中将介绍允许或禁止传输的数据包以及传输的方向。

使用CP 1543-1 确保工业以太网安全

日志记录
    1. 日志记录

功能

安全模块可以通过诊断和日志功能进行测试和监视。

      • 诊断功能

包括各种可在线使用的系统和状态功能。

      • 记录功能

记录系统和安全事件。 根据事件类型的不同,记录的信息将包含在 CP 1543-1 的易失性或非易失性的本地缓冲区中。 此外,也可以存储在网络服务器中。

只能通过网络连接对这些功能进行参数分配和评估。

通过日志功能记录事件

通过日志设置,指定待记录的事件。 在此,可组态以下记录方式:

      • 本地日志记录

通过这种记录方式,可以将事件记录在 CP 1543-1 的本地缓冲区中。 并通过安全组态工具的在线对话框访问和显示这些记录,并在服务站中进行归档。

      • 网络 Syslog

使用网络 Syslog,可以记录到网络中的 Syslog 服务器上。 使用这种方式时,将根据日志设置中的组态信息对事件进行记录。

NTP 客户端

功能

要检查证书时间的有效性以及日志条目的时间戳,则需在 CPU 上对 CP 1543-1 中的日期和时间进行维护。 时间可以与 NTP 同步。 CP 1543-1 通过自动化系统的背板总线将同步的时间转发到 CPU。 这样 CPU 还可以在执行程序时接收时间事件的同步时间。

可通过安全型或非安全型 NTP 服务器对时间进行自动设置和定期同步。 最多可为

CP 1543-1 分配 4 个 NTP 服务器。 但不能混合使用非安全型和安全型 NTP 服务器的组态。

通信

276 功能手册, 12/2017, A5E03735819-AF

SNMP
    1. SNMP

功能

与 CPU 类似,CP 1543-1 也可基于简单网络管理协议 (SNMP) 传输管理信息。为此,需在 CP/CPU 上安装一个“SNMP 代理”,用于接收和响应 SNMP 查询。有关具有 SNMP 功能设备的属性信息保存在 MIB(管理信息库)文件中,需要具有相应权限才能访问。

在使用 SNMPv1 安全措施时,还将发送“社区字符串”。“社区字符串”类似于一个密码,与

SNMP 查询一起发送。在“社区字符串”正确时,发送请求的信息。在此字符串不正确时, 丢弃该请求。

在使用 SNMPv3 安全措施时,将对数据进行加密传输。为此,需要选择一种认证方法或者一种认证和加密方法。

可选择:

      • 认证算法:无、MD5、SHA-1
      • 加密算法:无、AES-128、DES

用户也可取消激活 CP/CPU 的 SNMP 应用。如果网络的安全准则不允许使用 SNMP 或需使用用户自己的 SNMP 解决方案时,则可取消激活 SNMP。

有关取消激活 CPU 中 SNMP 功能的信息,请参见“禁用 SNMP (页 62)”部分。

VPN

功能

对于保护内部网络的安全模块,可借助 VPN(虚拟专用网络)隧道,通过非安全外部网络实现安全的数据连接。

该模块采用 IPsec 协议(IPsec 隧道模式)建立隧道。

在 STEP 7 中,可向安全模块分配 VPN 组。在 VPN 组的所有模块之间会自动建立 VPN

隧道。在该过程中,一个项目中的某个模块可能同时属于多个不同的 VPN 组。

术语表>

CA 根证书

另请参见根证书

CM

通信模块

CP

通信处理器

CPU

中央处理单元 (CPU) - S7 自动化系统的核心模块,带有控制和算术逻辑运算单元、存储器、操作系统以及编程设备的接口。

DP 从站

PROFIBUS 上分布式 I/O 中的从站,采用 PROFIBUS DP 协议且符合 EN 50170 标准的第 3 部分。

另请参见“DP 主站

DP 主站

在 PROFIBUS DP 中,分布式 I/O 中的主站符合 EN 50170 标准的第 3 部分。

另请参见“DP 从站

FETCH/WRITE

使用 TCP/IP、ISO-on-TCP 和 ISO 协议的服务器服务,用于访问 S7 CPU 的系统存储区。可以从 SIMATIC S5 或第三方设备/PC 进行访问(客户端功能)。FETCH:直接读取数据;WRITE:直接写入数据。

通信

功能手册, 12/2017, A5E03735819-AF 278

Freeport 协议

可任意编程的 ASCII 协议;使用该协议可通过点到点连接进行数据传输。

FTP 连接

文件传输协议 (FTP) 是一种网络协议,用于通过 IP 网络进行文件传输。FTP 用于在服务器与客户端间进行文件的上传或下载。FTP 目录可以创建并读取,也可以重命名或删

除。

HMI

人机界面 (HMI),用于显示和控制自动化过程的设备。

IE

工业以太网

IM

接口模块

IO 控制器、PROFINET IO 控制器

PROFINET 系统中的中央设备,通常为典型的可编程逻辑控制器或 PC。IO 控制器将建立与 IO 设备的连接,与这些设备进行数据交换,并对系统进行监控。

IO 设备、PROFINET IO 设备

PROFINET 系统中分布式 I/O 内的设备,通过 IO 控制器(例如,分布式 I/O、阀岛、变频器和交换机)进行监控。

IP 地址

用作采用 Internet 协议 (IP) 、PC 网络中唯一地址的二进制数。根据该二进制数,可对这些设备进行唯一寻址和单独访问。使用可分离网络部分或主机部分结构的子网掩码来分析

IPv4 地址。例如,一个 IPv4 地址的文本表示由 4 个十进制数字组成,值范围为 0 到

255。这些十进制数使用句点进行分隔。

IPv4 子网掩码

二进制掩码,用于将 IPv4 地址(二进制数)划分为“网络部分”和“主机部分”。

ISO 协议

以太网中对消息或数据包进行数据传输的通信协议。该协议面向硬件、速度快、支持动态数据长度,ISO 协议适用于大中型数据传输。

ISO-on-TCP 协议

支持 S7 路由功能的通信协议,用于在以太网中对数据包进行数据传输,支持网络寻址,

ISO-on-TCP 协议适用于大中型数据传输,并支持动态数据长度。

MAC 地址

所有以太网设备在全球范围内都唯一的设备标识码。MAC 地址由制造商分配,其中 3 字节为供应商 ID,另外 3 字节(以连续数字表示)为设备 ID。

Modbus RTU

远程终端单元 (Remote Terminal Unit);基于主站/从站架构的开放式串行接口通信协议。

Modbus TCP

传输控制协议 (Transmission Control Protocol);基于主站/从站架构的开放式以太网通信协议。数据以 TCP/IP 数据包的形式传输。

NTP

网络时间协议 (Network Time Protocol, NTP) 规定了由工业以太网建立的自动化系统中同步时钟的标准。NTP 采用适用于 Internet 的 UDP 传输协议。

OPC UA

OPC Unified Automation 协议由 OPC 基金会制定,用于在机器间进行数据通信。

PG

编程设备

PNO

→ PROFIBUS 用户组织

PROFIBUS

过程现场总线 (Process Field Bus) - 欧洲现场总线标准。

PROFIBUS DP

支持 DP 协议且符合 EN 50170 的 PROFIBUS。DP 即为分布式 I/O,可进行快捷实时的周期性数据交换。从用户程序的角度来看,分布式 I/O 与集中式 I/O 的寻址方式完全相同。

PROFIBUS 地址

连接到 PROFIBUS 上的设备的唯一标识符。PROFIBUS 地址通过帧形式发送,用于寻址一个设备。

PROFIBUS 设备

该设备上至少有 1 个 PROFIBUS 接口为电气接口(如 RS-485)或光纤接口(如聚合物光纤)。

PROFIBUS 用户组织

该技术委员会致力于 PROFIBUS 和 PROFINET 标准的定义和开发。

PROFINET

基于组件的开放式工业通信系统,以分布式自动化系统的以太网为基础。这种通信技术由

PROFIBUS 用户组织推出。

PROFINET 接口

模块的 PROFINET 接口具备通信功能(如 CPU、CP),带有 1 个或多个端口。出厂前已为该接口分配有 MAC 地址。接口地址与 IP 地址和设备名称(来自各个组态)一起使用,可确保在网络中唯一识别 PROFINET 设备。该接口可以是电气接口、光学接口或者是无线接口。

PROFINET 设备

始终带有一个 PROFINET 接口(电气、光学或无线)的设备。

PROFINET IO

IO 即为输入/输出,分布式 I/O 可进行快速实时的周期性数据交换。从用户程序的角度来看,分布式 I/O 与集中式 I/O 的寻址方式完全相同。

PROFINET IO 作为 PROFIBUS 和 PROFINET International 基于以太网的自动化标准,它定义了跨厂商的通信、自动化系统和工程组态模式。

借助 PROFINET IO,实现一种允许所有设备随时访问网络的交换技术。因此,通过多个设备的并行数据传输,可以更为高效地使用网络。数据的并行发送和接收通过交换式以太网的全双工操作来实现。

PROFINET IO 基于交换式以太网的全双工操作,其带宽为 100 Mbps。

PtP

点到点 (PtP),是两个(只能是两个)通信伙伴间进行双向数据交换的接口和/或传输协议。

RS232、RS422 和 RS485

串行接口标准。

RTU

Modbus RTU(RTU:远程终端设备 (RTU),用于传输二进制格式的数据,具有较高的数据吞吐率。在对数据进行评估之前,必须将其转换为一种可读取的格式。

S7 路由

通过作为 S7 路由器的一个或多个网络节点,可以在不同 S7 子网中的 S7 自动化系统、

S7 应用或 PC 站之间进行通信。

SDA 服务

发送数据,需要进行确认。SDA 是一种基本服务。通过这种该服务,发起方(例如,DP 主站)可以向其它设备发送一条消息,并在之后接收从接收方发回的确认消息。

SDN 服务

发送数据,无需进行确认。该服务主要用于向多个站发送数据,但无需进行确认。该服务适用于发送同步任务和状态消息。

SNMP

简单网络管理协议 (SNMP),使用无线 UDP 传输协议。SNMP 的工作模式与客户端/服务器的非常类似。SNMP 管理器对网络节点进行监视。SNMP 代理收集各网络节点中的各

种网络特定信息,并以一种以结构化的形式将这种信息存储在管理信息库 (Management Information Base) 中。网络管理系统可以使用该信息进行详细的网络诊断。

TCP/IP

传输控制协议/因特网协议 (TCP / IP),一种面向连接的网络协议,通常作为异构网络中数据传输的标准。

UDP

用户数据报协议 (UDP),适用于快速简单数据传输的通信协议,无需进行确认。TCP/IP

中未定义错误检查机制。

USS

通用串行接口协议 (USS),根据主站/从站原理定义了一种通过一根串行总线进行通信的访问方式。

Web 服务器

通过因特网进行数据交换的软件/通信服务。Web 服务器通过标准传输协议(HTTP、

HTTPS)将文档传输到 Web 浏览器。文档可以是静态文档,也可以是由 Web 服务器根据 Web 浏览器的请求从不同的数据源动态生成的文档。

编程设备

编程设备实质上是一种适用于工业应用的紧凑型便携式 PC。它们通过用于可编程逻辑控制器的特定硬件和软件组态进行识别。

操作系统

使用和操作计算机的软件。操作系统将对诸如内存、输入和输出设备等资源进行管理,并控制程序的执行。

从站

现场总线系统中的分布式设备,只有在主站提出请求后才能与主站进行数据交换。

另请参见“DP 从站

点到点连接

通过通信模块上的串行接口,在两个通信伙伴(只能是两个)间进行双向数据交换。

端口

用于将设备连接到 PROFINET 的物理连接器。PROFINET 接口具有一个或多个端口。

服务器

可提供某些特定服务的设备或(广义上的)对象,并根据客户端的请求执行这些服务。

根证书

该证书为一个证书颁发机构的证书:它使用其私钥对最终实体证书和中间 CA 证书进行签名。

这种证书的“主体”(Subject) 与“颁发者”(Issuer) 属性必须相同。该证书颁发机构对自己的证书进行签名。

字段“CA”必须设置为“True”。

TIA Portal V14 包含一个这样的 CA 根证书:

如果要在 TIA Portal 中组态 S7-1500 的 OPC UA 服务器,则 TIA Portal 将为该 OPC UA

服务器生成一个最终实体证书并使用私钥对该证书进行签名。

该最终实体证书的签名可通过 TIA Portal 的公钥进行验证。该公钥位于 TIA Portal 的 CA

根证书中。

工业以太网

在工业环境中以太网络的构建指南。它与标准以太网的最大区别在于各组件的机械性能的鲁棒性和抗干扰性。

过程映像

过程映像是可编程逻辑控制器 (PLC) 的地址区域,用于以数字形式存储所连接模块上输入的信号状态和输出的逻辑状态。

环形拓扑

网络中的所有设备彼此连接形成一个环。

交换机

用于连接局域网 (LAN) 中多个终端或网段的网路组件。

接口模块

分布式 I/O 系统中的模块。接口模块通过现场总线将分布式 I/O 系统连接到 CPU(IO 控制器/DP 主站)并提供用于 I/O 模块的数据。

客户端

一种网络设备,需要网络中的其它设备(服务器)将为其提供服务。

路由器

具有唯一标识符(名称和地址)的网络节点,用于将子网连接在一起,以便将数据传输到网络中唯一标识的网络通信节点。

设备

通用术语,适用于:

      • 自动化系统(例如 PLC、PC)
      • 分布式 I/O 系统
      • 现场设备(例如 PLC、PC、液压设备、气动设备)以及
      • 有源网络组件(例如交换机、路由器)
      • PROFIBUS 的网关、AS Interface 或其它现场总线系统

设备证书

此类证书由证书颁发机构 (CA) 签名。

最终实体证书的签名则使用证书颁发机构的公钥进行验证。

“主体”(Subject) 属性不得与“颁发者”(Issuer) 属性相同。

例如,“主体”(Subject) 包含 OPC UA 应用程序证书等的程序名称。

“颁发者”(Issuer) 则是对证书进行签名的证书颁发机构。字段“CA”必须设置为“False”。

时间同步

可以将一个单源标准系统时间传送给系统中的所有设备,以便这些设备可根据该标准时间设置自己的时钟。

树形拓扑结构

具有分支结构的一种网络拓扑结构:每个总线节点上连接有 2 或更多个总线节点。

双工

数据传输系统,分为全双工和半双工。

半双工:使用一个通道交替地进行数据交换(可交替地发送或接收数据,但不能同时进行)。

全双工:使用 2 个通道同时双向地进行数据交换(可双向同时发送和接收数据)。

双绞线

使用双绞线电缆连接的快速以太网基于 IEEE 802.3u 标准 (100 Base-TX)。传输介质是阻抗为 100 欧姆的 2x2 屏蔽双绞线电缆 (22 AWG)。这种电缆的传输特性必须符合类别 5 的要求。

终端设备与网络组件之间的最大连接长度不得超过 100 m。带有 RJ-45 连接插头的连接器基于 100Base-TX 标准而设计。

通信处理器

执行其它通信任务的模块,可实现诸如区域安全之类的特殊应用。

通信模块

自动化系统中执行通信任务的模块,作为 CPU(例如 PROFIBUS)的接口扩展并具有附加通信功能 (PtP)。

网络

网络由 1 或多个相互连接的子网组成,可以包含任意数量的设备。各个网络可以彼此独立共存。

现场设备

设备

线性总线形拓扑结构

一种网络拓扑结构,各种设备都连接到一个总线上。

协议

有关在两个或更多通信伙伴之间进行通信所遵循的规则的协议。

信息安全

为防止以下各项丢失而采取的所有措施的统称

      • 对数据进行未经授权的访问而导致机密性缺失
      • 因数据操作而导致的完整性缺失
      • 因数据破坏而导致的可用性缺失

一致性数据

这些数据属于一个整体,在传输时不能分开。

以太网

基于帧的局域网 (LAN),采用国际标准技术。其中对电缆类型、物理层的信号发送、数据包的格式以及介质访问控制的协议进行定义。

以太网适配器

电子线路器件,用于将计算机接入以太网。以便在以太网中进行数据交换/通信。

用户程序

在 SIMATIC 中,对 CPU 操作系统和用户程序做了区分。用户程序中包含用于控制一个系统或过程的所有指令、声明和数据。用户程序可分配给可编程模块(例如,CPU 和

FM),并可由更小的单元构成。

指令

用户程序中最小的独立单元,并根据结构、功能或目的分为单个的用户程序部分。一条指令可代表处理器重的一个操作过程。

中间 CA 证书

此为证书颁发机构的证书,使用根证书颁发机构的私钥进行签名。中间证书颁发机构使用自己的私钥对最终实体证书进行签名。

最终实体证书的签名则使用中间证书颁发机构的公钥进行验证。

中间 CA 证书的“主体”(Subject) 与“颁发者”(Issuer) 属性不得相同:该证书颁发机构毕竟不对自己的证书进行签名。

字段“CA”必须设置为“True”。

主站

通信/PROFIBUS 子网的上一层主动参与者。主站有权访问总线(令牌)、请求和发送数据。

另请参见“DP 主站

子网

网络的一部分,子网的参数必须与设备(例如,PROFINET 中的)相匹配。子网中包含总线组件和所有连接的站。通过网关或路由器,子网可以进行互连从而构成一个网络。

自动化系统

可编程逻辑控制器,用于对过程工程组态行业和制造技术的过程链进行开环和闭环控制。自动化系统可包含各种组件和集成系统功能,具体取决于自动化任务。

自签名证书

对于这些证书,用户使用自己的私钥对其进行签名,并作为最终实体证书。最终实体证书的签名通过用户的公钥进行验证。

自签名证书的“主体”(Subject) 与“颁发者”(Issuer) 属性必须相同:用户已完成对自己证书的签名。

字段“CA”必须设置为“False”。

例如,用户可将自签名证书用作 OPC UA 客户端的应用程序证书。

有关基于 OPC 基金会证书生成器生成自签名证书的具体步骤,请参见“这里 (页 )”。

总线

一种传输介质,用于连接多个设备。可通过电缆或光缆以串行或并行方式进行数据传输。

最终实体证书

另请参见设备证书

索引>

3964(R) 程序, 133

Advanced Encryption Algorithm, 43 AES, 43

BRCV, 125

BSEND, 125

CM, 17

CP, 17

FDL, 74

Freeport 协议, 133

FTP, 22, 74, 95, 96

GET, 125

Handshake Protocol, 45

HMI 通信, 22, 69

IM, 21

ISO, 22, 73

ISO-on-TCP, 73, 83

Modbus TCP, 74

Modbus 协议 (RTU), 133

NTP, 22, 276

OPC UA

DB 变量, 173

OpenSSL, 167

PLC 变量, 173

X.509 证书, 164安全设置, 151 安全连接, 169 安全通道, 169 证书生成器, 165 层模型, 170

命名空间, 145

标识符, 145

信息安全机制, 160

签名和加密, 162

简介, 140, 141, 143

端点, 152

通信

291 功能手册, 12/2017, A5E03735819-AF

OPC UA 服务器

TCP 端口, 182, 184

XML 导出文件, 177

订阅, 183

认证, 198

生成服务器证书, 186

发布时间间隔, 184

地址范围, 147

自定义服务器证书, 195

安全设置, 190

寻址, 180

运行系统许可证, 201

应用程序名称, 179

采样时间间隔, 185

性能, 176

性能提升, 176

读写权限, 173

调试, 178

基本知识, 143 OPC UA 客户端

证书, 192

基本知识, 156

OpenSSL, 167

PCT, 257

PG 通信, 22, 66

Private Key, 41

Public Key, 41

PUT, 125

Record Protocol, 45

RFC 5280, 41

S7 通信, 22, 124, 264

S7 路由, 251

连 接 资 源 , 264 Secure Socket Layer, 45 SNMP, 22, 277

SSL, 45

Syslog, 276

TCON, 75

TCP, 22, 73, 83

TDISCON, 75

TLS, 45

Transport Layer Security, 45 TRCV, 75

TRCV_C, 75

TSEND, 75

TSEND_C, 75

UDP, 22, 73, 83

URCV, 125

USEND, 125

USS 协议, 133

Web 服务器, 22

X.509, 41

工业以太网安全, 274

开放式用户通信协议, 73

指令, 75

特性, 72

开放式用户通信协议, 73

开放式通信

连接组态, 83

建立 FTP, 96

建立 TCP、ISO-on-TCP、UDP 连接, 83

建立电子邮件, 95

日志记录, 276

ZH

中间人攻击, 45

SH

申请方, 45

电子邮件, 22, 74, 95

写入, 22

对称加密, 43

自签名证书, 46

安全通信, 41

安全措施, 274

NTP, 276

SNMP, 277

日志记录, 276

防火墙, 275

导出 OPC UA 文件, 177

防火墙, 275

连接

开放式用户通信的指令, 75

诊断, 270

连接诊断, 270

连接资源

HMI 通信, 263

S7 路由, 264

占用, 265

在 STEP 7 中显示, 266

在 Web 服务器中显示, 269

站特定的, 266

概述, 32, 258

数据记录路由, 264

模块特定, 267

连接资源的占用, 265

SH

时间同步, 22

系统数据类型, 76

ZH

证书主体, 45

证书颁发机构, 45

非对称加密, 44

服务器证书, 195

建立连接, 33

CP 1543-1 的 ISO 连接, 89

通过组态, 88

建立和终止通信, 100

点到点连接, 22, 133

信息安全, 274

获取, 22

根证书, 49

通过 PUT/GET 指令进行通信创建和组态连接, 126

通信

HMI 通信, 69

PG 通信, 66

S7 通信, 124

S7 路由, 251

开放式用户通信, 72

开放式通信, 72

建立和终止, 100

点到点连接, 133

通信协议, 73

数据记录路由, 256

通信方式

概述, 22

通信处理器, 17

通信处理器的接口, 19

通信服务

连接资源, 32

通信接口, 18

通信模块, 17

通信模块的接口 点到点连接, 20

接口模块, 21

最终实体证书, 49

签名, 47

SH

数字证书, 45

数据一致性, 37

数据记录路由, 256

数据的一致性, 37

 

weinxin
plc基础知识
每一个PLC工程师都应该关注的微信公众账号

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: