深入解析PROFINET IO系统启动前寻址的实时报文

云南民族大学电气信息工程学院的研究人员和淑芬、沈勇、范雄涛、王镜程,在2018年第2期《电气技术》杂志上撰文指出,PROFINET是基于工业以太网的用于工业自动化的创新的、开放的现场总线协议,支持分散式现场设备和对时间苛求的系统,以及基于组件的分布式自动化系统的集成。

本文详细分析了PROFINET协议构架、网络拓扑、网络组建和协议性能。通过搭建PROFINET实时以太网网络通信平台模拟工厂自动化现场情况,采用了西门子Scalance交换机的独特的网络端口镜像功能,实现了完整的实时以太网报文的抓取、保存和统计。

结合Wireshark网络报文统计和分析工具,对PROFINET网络协议进行了详细分析,对PROFINET网络性能进行研究和评估,深入解析PROFINET IO系统启动前寻址前所有的实时报文,精确分析到每个数据的剖析。包含用于名称解析和分配地址解析的所有服务。

在系统工程期间,控制器更容易标识现场设备以及在协议栈中有利于上下文管理。同时也将DCPLLDP服务结合使用,高层控制器就能够再现系统拓扑,并实现替换设备无需额外工具。

1 PROFINET IO协议构架

实时协议保证了周期数据和事件控制消息(警报)的高性能传输。它分为以下三种类型(RTC:Real TimeClass,实时类型)(见图1)。

图1PROFINET 通信协议

标准的TCP/IP通讯遵循IEEE802.1标准,采用4层的网络模型结构,包括物理层、数据链路层、网络层和传输层,如表1所示。在进行TCP/IP通讯时,协议栈需要在模型的第3层和第4层对数据帧进行打包和解包。

另外,増加的报头信息会加长通信帧的长度,使得数据处理和传输的时间变长,也会加重处理器的负担。PROFINET通过对标准TCP/IP通讯进行优化,提髙了通信的实时性。

表1  PROFINET与ISO/OSI模型的对应关系

如图2所示,PROFINET实时协议去掉了TCP/IP通信的第3层和第4层,也就省去了打包和解包的环节,同时也使得帧的长度大为减少。由于没有使用第3层的网络协议,PROFINET实时通信并不具备路由的功能。

图2 PROFINET对标准TCP(UDP)/IP协议的优化

2 PROFINET IO系统工程

2.1配置系统

用SIMATIC STEP 7进行PROFINET IO组态,创建新项目,利用GSD文件,导入新PROFINET IO设备,IO控制器的组态,PROFINET IO系统的组态,IO设备的插入和组态,PROFINET IO设备名字的分配/检查,生成用户程序,加载组态和用户程序,对项目形成文档并存档[1],如图1 所示:

采用CPU 1516-3 PN/DP和ET200SP为系统核心,创建ProfiNet实时以太网, ET200SP 从站模块,采集现场数字量和模拟量信号。通过采用Scalance交换机,ProfiNet主站与Profinet IO从站进行通信,监听计算机通过交换机接入该网络,具体网络配置如图3所示:

图3 PROFINET的测试硬件工程配置

其软件配置如下:

PLC S7-1500:

IP地址:192.168.0.100

MAC地址:28-63-36-88-07-E1

SIMATIC-PC:

IP地址:192.168.0.201

MAC地址:D4-3D-7E-40-9B-3B

Sniffer :

IP地址:192.168.0.103

MAC地址:04-7D-7B-91-DE-08

ET200SP:

IP地址:192.168.0.101

MAC地址:28-63-36-2B-94-0C

2.2网络组成

图4 Profinet网络监听结构

如图4所示:Scalance交换机端口P1接PLC S7-1500,端口P2接SIMATIC-PC,端口P3接 Sniffer,端口P4接ET200SP。

本文通过以上的网络拓扑结构和连接方式,深入分析启动前网络配置报文、循环周期数据报文以及网络故障报文等信息[2]。实时以太网的结构决定了网络监听的复杂性,因此,网络数据监听的重要任务就是捕获以太网络上的所有数据包[3]。

2.3 PROFINET报文监听

标准以太网数据报文,在数据传递过程中最常遇到的是交换机。交换机接收来自各个端口的数据,以最优的传输路径、最快的转发数据到目的端口。这样就避免了数据碰撞,使得每个端口都拥有最大得传输速率。因此,本文引入了高级Scalance X208交换机,利用其特有的端口映射功能,改变网络的数据走向。

Scalance X208是一款多端口的高级交换机,具备多种网络管理功能,并提供强大的数据路由功能[4]。该交换机具有8个10/100Mbit/s RJ45端口,设计适合新型拓扑,具备集成的SNMP访问、Web诊断以及PROFINET诊断。端口映射功能,就可以通过默认的 Web 网页方式进行管理[5]。

西门子工业交换机的配置软件,主要用来配置西门子Sacanlace交换机,Primary SetupTool (PST) 软件用于为SIMATIC NET网络组件、以太网CP及网关分配地址(比如 IP地址)[6]。使用PST软件,进入交换机管理,里面设置交换机IP地址。在这里把交换机的地址设置为192.168.0.203。固有的MAC地址:00-1B-1B-4E-E5-92,如图5所示。

图5 PST 配置

用这个软件给交换机设置IP地址,之后可以用IE浏览器访问交换机内部的WEB管理页面对交换机进行配置。在Switch设置中SwitchConfiguration中设置映射端口。

把实时以太网Profinet实时报文,通过西门子Profinet主站PLCS7-1500将由物理接口传送到Scalance Switch交换机的第4号端口,发送到第1号端口,传送到ET200SP从站,同时交换机将数据实时报文复制后发送到第 3 号端口,从而完成Wireshark对报文数据的抓取整理过程。

使得所有流入、流出端口4的所有数据,都全部传输到端口 3,交给Sniffer监控计算机进行处理,根据数据流可以进行Profinet网络的数据监控和分析[7]。

图6 PN-DCP的报文

图7 启动前寻址的报文

如图6和图7所示:用Wireshark抓取的“连接过程数据帧”中:

数据帧5224:PROFINET  DCP,Set Req(IO控制器向IO设备发送请求),将参数写入设备[8]。

数据帧5225:对确认请求的响应(PROFINET DCP,Set Ok,Response Ok),已经搜索到需要的设备。

数据帧5226:PLCS7-1500向所有节点发送一个广播呼叫(目的地址:FF-FF-FF-FF-FF-FF),仅具有指定IP地址的节点做出应答。之后的数据帧,给ARP请求提供响应,找到对应的子网中具有该IP地址的的ET200 SP。设置请求,向IO设备写入一个参数(此时是IP地址),设置响应(请求确认)。

3  PROFINET I/O 系统启动前的寻址

基于下载的组态数据,控制器在分配IP地址时首先检查所组态的名称是否存在。如果具有有所请求名称的相应IO现场设备作出回答,则控制器检查IP地址是否已经存于该设备中[9]。在分配IP地址前另一个顺序是使用标准IP服务ARP(地址解析协议)进行地址解析[10]。

IP地址设置好后,I/O控制器利用设置的IP地址发送AR-Setup数据进行应用关系组态,PROFINET现场设备在可以开始通信之前,必须在系统启动前基于“NameOfStation”被分配IP地址。在真正建立连接之前,IO设备就已经分配了名字,IO设备的名字为ioxadevicexb1652a。这个顺序如图8所示:

图8 用DCP给IO设备分配IP地址的序列

3.1 名称解析

设备名称(“Name Of Station”)必须分配给每个PROFINET设备,且必须记忆性地保存在现场设备中。该名称可以由工程工具使用DCP协议(默认集成PROFINET现场设备中)在系统调试前分配。

发现和基本配置协议如表2所示:

表2 给IO设备分配名字的服务

1)标识(Identify)请求(系统启动前的名称解析)

在为设备分配IP地址的顺序中,“DCP.Identify.req”务与“Search  for a name(寻找一个名称)”的顺序一样。然而,在这个阶段,控制器直接请求所组态的名称(“NameOfStation”度大于零)。仅具有指定名称的设备才做出应答。如表3所示,Identify服务是DCP协议的一部分,用于地址分配并默认集成在PROFINET中。“DCP.Identify.req”帧是实时帧,其Ethertype为0x8892。

帧中相关数据的解释如下:

Identify Request:是一个多播帧因为其目的地址不确定。当Dest.Addr(目的地址)使用01-0E-FC-00-00-00时标识PNO组播地址。仅PROFINET设备响应这个地址。

DCP Data:IO设备的名字为ioxadevicexb1652a;

Identify 服务是DCP协议的一部分,用于地址分配并默认集成在PROFINET中。PLC通过PNO多播地址(01-0E-CF-00-00-00)发送的,控制器直接请求所组态的名称(ioxadevicexb1652a),仅具有指定名称的设备才做出应答。

DCP  Header头部:包含服务标识符、事务编号、参数化长度,以及应答某个搜索条件的超时值。

DCP  Data数据:该字段更详细地规定了通信的数据,但不包含用于标识的状态信息。

2)标识(Identify)响应

“DCP.Identify.res”帧是实时帧,其Ethertype为0x8892。控制器通过它来接收满足搜索条件的相应站点的应答。必须包含以下数据如表4所示:IP参数、“NameOfStation”、设备ID、设备角色和设备选项;寻求一个特定的名称(已经搜索到需要寻找的设备名字)。

表3“DCP.Identify”的帧结构

表4 “DCP.Identify.res”数据帧结构

3.2地址解析

1)地址解析协议(ARP)

ARP请求:通过ARP,控制器发出Identify服务询问IP地址是否已经存在于系统中。控制器向所有节点发送一个广播呼叫(目的地址= FF-FF-FF-FF-FF-FF),仅具有指定IP地址的节点做出应答。该呼叫通过“ARP”超时进行时间监视。“ARP”是标准的IT服务。如表5所示。

2)设置(Set)请求

“ARP”服务超时后,控制器开始为设备分配IP。控制器通过“DCPSet.req”将参数写入设备,如表6所示。

3)设置(Set)响应

通过“DCPSet.res”帧,控制器接收对“DCPSet.req”的确认,如表7所示。

表5 ARP数据帧结构

表6 “DCPSet.req”数据帧

表7“DCPSet.res”数据帧结构

4现场设备的编址

DCP协议用作名称/地址解析的基础,也是实现“设备更换无需编程设备”全部概念的一部分。能够利用LLDP服务来确定基于端口到端口的邻居设备的数据,在这种情况下,DCP仅提供允许该功能与LLDP(链路层发现协议,即邻居探测)结合使用的基本机制[11]。通过组合这两种服务,可以在控制器或工程工具中再现系统拓扑,并实现设备替换而无需其他工具。

PROFINET采用了符合IEEE802.1AB的LLDP协议来探测邻居(如图9)。因此,系统操作员必须确保所有的现场设备与交换机都具有LLDP功能,能够通过每个交换机端口与相连的邻居设备交换现有的地址信息。因此,相邻设备可以被明确标识并确定其物理位置。LLDP帧的数据单元至少包含以下信息:

发送端口的Port ID;设备MAC地址或设备名称;向目的端口发送LLDP帧的周期时间;

OID(组织标识符)值为24686标识该帧为PROFINET发出的帧。

图9 PROFINET采用LLDP交换邻居信息

结合使用默认集成在PROFINET中的DCP协议或使用SNMP,控制器可以从现场设备中读出LLDP信息。这样,就可能在高层控制器中再现完整的自动化系统,并方便在工程系统中显示系统诊断。此外,在出现故障的情况下,具有新MAC地址的替换设备可以自动启用,如果新的现场设备中具有正确的名称或没有名称。

5 小结

本文建立一个简单的PROFINET网络组态,通过搭建实时以太网PROFINET通信网络来模拟工厂自动化现场的实际情况,虽然实际工业现场会使用更多的设备,采用更多复杂的拓扑结构,但是在通信通道内,数据报文内容和结构是一致的,因此本文将能够帮助自动化工程师加深对PROFINET IO通信的理解,从而更好选择PROFINET产品。

采用西门子Scalance交换机的独特的网络端口镜像功能,采用以太网分析软件Wireshark进行分析,对已有大量的数据报文数据进行各类独立的分析和统计,给出PROFINET实时以太网网络实际启动前的性能结果。

为将来的PROFINET对实时以太网数据的侦听、网络诊断和网络实时性分析等奠定基础,同时,现场设备开发人员和系统操作人员对于标准报文以及制造商特定报文会具有良好的协调性。

还分析了PROFINET采用LLDP协议和DCP协议结合使用,通过LLDP探测邻居,无需组态工具就可以进行设备替换。方便系统操作员遇现场设备故障时,进行短时间内替换。因此,这需要进行深入研究PROFINET技术的方向和课题。

(0)

相关推荐