一、PROFINET基础

IEC61158简介

IEC61158是国际电工委员会发布的现场总线与工业以太网标准,涵盖的内容非常广泛,大体包括:

1、IEC61158-1总论与导则;

2、IEC61158-2物理层服务定义与协议规范;

3、IEC61158-3数据链路层服务定义;

4、IEC61158-4数据链路层协议规范;

5、IEC61158-5应用层服务定义;

6、IEC61158-6应用层协议规范;

IEC61158第1版发布于1999年3月,目前最新版本是IEC61158-x-2019。

IEC61158公布了20多种经过市场考验的现场总线/工业以太网标准,主要包括∶

                                          IEC61158公布的现场总线/工业以太网

PROFINET简介

PROFINET是一种新的以太网通讯系统,是由西门子公司和PROFIBUS用户协会开发。从上面的表格可以看出,PROFINET是IEC61158公布的第10类现场总线/工业以太网标准,它属于实时以太网。

所谓"实时",是指PROFINET通信的响应时间小于10ms,PROFINET还支持等时同步通信(IRT),用于运动控制等时间要求严苛的场合,其响应时间小于1ms。

所谓“以太网”,是指PROFINET是一种基于以太网的通信协议,它的基础是百兆以太网。百兆以太网的传输介质可以是双绞线或光纤,使用双绞线时,只需要使用网线中的1、2、3、6号线,这就是PROFINET网线只有4根线的原因。

PROFINET、ETHERCAT、M-II、CC_Link都属于现场总线协议,相比其他总线而言,PROFINET和ETHERCAT适用的工况更为普遍,更全面,同时PN协议兼容以太网,所以一方面许多以太网下的子协议在PN网络中同样适用;另一方面,其拓扑结构理论上不受限制,支持环网,树型,星型,线型等。

PROFINET具有多制造商产品之间的通讯能力,自动化和工程模式,并针对分布式智能自动化系统进行了优化,其应用结果能够大大节省配置和调试费用。PROFINET系统集成了基于PROFIBUS的系统,提供了对现有系统投资的保护。它也可以集成其它现场总线系统。

PROFINET技术定义了三种类型:

1. PROFINET1.0基于组件的系统主要用于控制器与控制器通讯;

2. PROFINET-SRT软实时系统用于控制器与I/O设备通讯;

3. PROFINET-IRT硬实时系统用于运动控制。

PROFINET将工厂自动化和企业信息管理层IT技术有机地融为一体,同时又完全保留PROFIBUS现有的开放性。

在OSI参考模型中,PROFINET位于第5~7层,其1~4层是百兆以太网,如下图所示∶

PROFINET使用了物理层、链路层、网络层、传输层与应用层协议,其中物理层规定了百兆或千兆的传输速率,网络层与传输层则沿用TCP/IP协议族的标准,而独到之处在于数据链路层与应用层的规范。

PROFINET链路层:参考了IEEE 802.3、IEEE 802.1Q、IEC 61784-2等标准,分别保证了全双工、优先级标签、实施扩展的能力,从而能够实现RT(实时通信)、IRT(等时实时通信)、TSN(时间敏感网络)等通信形式。

PROFINET应用层:有多种应用层的协议标准,如IEC 61784、IEC 61158确保了PROFINET IO服务,IEC 61158 Type 10确保 PROFINET CBA服务等等。

PROFINET有两种通信堆栈结构,标准以太网通信堆栈与实时以太网通信堆栈,以满足标准与实时的数据传输需求,既实现了实时的数据传输,也兼容了已有的标准以太网。

在需要实时数据传输的情况下,PROFINET对通信堆栈结构进行了修剪:在网络层与传输层部分进行了删减,并在数据链路层开辟了专用的数据通道和通信机制,实现了实时通信、等时实时通信的功能,满足实时数据传输的需求。

PROFINET 生态

PROFINET可实现不同时延下的数据传输服务,时延范围从100ms到31.25us不等;根据应用的时间要求可以将划分出PROFINET的数个应用领域,如:低时延对应高实时要求的运动控制领域;中高时延对应的过程/工厂自动化领域。

现场总线主要应用与控制层和执行层之间的连接,目前控制层主要是西门子一家,其余的厂家围绕其完成执行层和监控相关的设备,比如伺服,诊断分析仪,IO模块。针对驱动层面,提供了Profidrive行规,尤其是对于运动控制进行了具体规定,包含AC1,2,3,…AC6,出于西门子本身的封闭性,其大多使用制造商特定报文,同时行规作为标准协议也没有CIA402那样详细,所以实际开发中会遇到很多的问题,基本上是摸着石头过河。

据统计,目前PN总线在全球份额占25%(DP+PN),也是首位,这意味着该总线有着广袤的市场。随着近年来全球工控行业的变化,西门子也进一步开放了第三方的准入,所以作为第三方厂商有既得的商业利益,第三方产品的加入也进一步丰富了PN的生态网络,给予客户更多的可选择性,相辅相成。

目前第三方厂商主要有力士乐、菲尼克斯、国内的汇川、迈信、禾川等等,还有一些协议栈方案解决厂家。

PROFINET的优点

PROFINET的优点很多,主要包括∶

1、PROFINET是一种开放式架构,可以与传统的互联网互联互通,俗称"一网到底"。PROFINET将工业以太网应用分为了8个部分,并分别针对每个部分的特点发表了相应的技术规范,使PROFINET能够应用于各种工厂场景之下。

所谓"一网到底”,是指通过一个网络将现场层、控制层和管理层相连,实现数据的交换,便于管理和维护;即工业产业链层级中,管理级的 设备能够直接与现场级的设备进行数据的交互,并能实现不同层级上的纵向设备集成或相同层级上的横向设备集成。

 

2、支持多种拓扑结构,节点增删灵活;PROFINET支持线型、星型、树型、环型等网络拓扑结构,可以根据需要灵活添加或删除节点;

3、支持PROFlsafe、PROFIdrive、PROFlenergy三大行规,可以实现安全、运动控制和节能功能;

4、极高的通信速率和极低的抖动,保证数据交换的及时和准确;

5、支持诊断功能,可以快速定位到故障节点;

二、PROFINET 网络组件与拓扑

PROFINET网络基于IEEE802.3,其传输介质可以时有线的,也可以是无线的。

PROFINET 网线

典型的PROFINET网络时一条4芯,带屏蔽的绿色线缆:

网线中的4芯分别是白色、黄色、橙色和蓝色。黄色和橙色组成双绞线,白色和蓝色组成双绞线,双绞线有利于增强抗干扰能力。

4芯网线可以全双工的方式通信,也就是说,数据的发送和接收可以同时进行。PROFINET网线最大支持100Mbps的传输速率,最长的传输距离为100米。如果超过了100米,要使用交换机对信号进行加强,类似于PROFIBUS总线中继器的功能。

一般来说,PROFINET网线分成四类∶

A类∶用于静止不动的安装场合;

B类∶可用于偶尔运动或振动的安装场合;

C类∶ 用于运动的安装场合,比如拖链或旋转机器;

R类∶用于机器人等特殊场合;

有人问能否用普通家用/商用网线代替PROFINET网线呢?理论上说是可以的,因为PROFINET是基于百兆以太网的。但实际工业生产中建议不要这么做,因为家用/商用网线的强度、抗干扰能力等方面都不如PROFINET专用网线,而工业现场环境可能比较恶劣,面临各种干扰,普通家用/商用网线很可能会出现通信不良的情况。

说明∶西门子还有一种8芯的绿色网线,这种网线也可以用于PROFINET网络,不过相对来说有些浪费,因为这种8芯的网线主要用于千兆以太网(传输速率1Gbps)。

PROFINET 网线接头

常见的PROFINET网线接头有RJ45接头和M12的圆形接头。

RJ45接头有90°和180°两种,如下图所示∶

注意看这种接头前面只有4根针,这是因为PROFINET网络(本质上说是百兆以太网)只用到 RJ45 接头的1、2、3、6号针。这种接头接线非常简单,只需要将四种颜色的线插入到对应颜色的孔中就可以了。

PROFINET 光纤

当PROFINET的传输距离大于100米时,除了使用交换机对信号增强外,还可以使用光纤。光纤的传输距离可以覆盖几千米,甚至100千米。由于光纤使用光作为传输介质,可以完全排除电磁干扰,特别适合于工业现场电磁干扰比较严重的场合。

常见光纤的内部有两条平行的光缆,其结构如下图所示∶

PROFINET光纤可以分成两类∶

B类∶可用于静止不动或稍微弯曲的安装场合;

C类可用于运动、振动或扭曲的安装场合;

常见的用于PROFINET网络的光纤有四种∶POF光纤、PCF光纤、多模玻璃光纤和单模玻璃光纤。

PROFINET一致性等级

PROFINET IO的一致性等级(Conformance Class,简称CC)规定了设备必须具备哪些功能及一些可选项功能,它是PROFINET IO取得认证的标准。

PROFINET一致性等级(以下简称CC)分成三个等级∶

CC-A∶ 提供集成实时通信的PROFINETIO基本功能;

CC-B∶在CC-A的基础上,提供网络诊断及管理功能;

CC-C∶在CC-B的基础上,提供等时同步通信(IRT)的功能;

应用于PROFINET网络的交换机,至少要具有CC-A等级认证。具有该等级认证的交换机,可以不是PROFINET IO设备,也就是说可以不用在硬件中组态,一般在这种都是非管理型交换机。

具有CC-B等级认证的交换机一般都是管理型交换机,它们作为一个PROFINETIO设备,需要在硬件中组态。

如果要进行运动控制等需要等时同步通信的场合,必须使用CC-C等级的交换机。

PROFINET 交换机

交换机可以加强并转发以太网的信号。使用网线传输的以太网最长距离是100米,超过了100米就需要使用交换机对信号进行增强(当然,也可以使用光纤)。

交换机可以分为非管理型交换机和管理型交换机。

非管理型交换机也称为非网管型交换机,它是一种工作在数据链路层的网络设备,数据的转发是基于MAC 地址的。简单理解,它就是仅仅起到信号加强、转发功能,并且不能跨网段传输的网络设备。

管理型交换机也称为网管型交换机,它工作在OSI参考模型的网络层,支持路由功能,可以划分VLAN等。管理型交换机相当于常说的路由器,可以跨网段传输数据。

一般来说,不建议将普通的家用/商用交换机用于PROFINET网络,因为它们一般没有经过PROFINET一致性等级认证,可能不满足PROFINET一致性等级要求。

PROFINET 拓扑结构

如何通过交换机,构建不同的PROFINET网络拓扑结构。

 拓扑结构源自拓扑学,它是研究不同的点-线构成的图形的特点的一门科学。

在PROFINET网络中,“点”可以是CPU主机架,也可以是分布式IO站点;"线"就是用于连接CPU和各IO站点的通信线路,比如网线或者光纤;这些点和线是依靠交换机连接起来的。

根据连接方式的不同,PROFINET网络可以构成线型拓扑结构、星型拓扑结构、树型拓扑结构和环型拓扑结构。

1、线型拓扑结构

线型拓扑结构是使用一条传输线将网络中的节点先后连接所组成的拓扑结构。

很多现场总线,比如PROFIBUS/DeviceNet等都是线型拓扑结构。PROFINET也可以依靠交换机构成线型拓扑结构。交换机可以是单独的外围设备,也可以是节点内部集成的交换机。下面这张图是依靠节点内部交换机构成的PROFINET线型拓扑结构∶

线型拓扑结构的优点是∶结构简单、安装容易、传输线路最短、节省成本。

线型拓扑结构的缺点是∶除了两端,其余节点增加或删除困难;单个节点发生故障能影响整个网络,并且故障定位比较困难,一般不用来构成大型网络

2、星型拓扑结构

星型拓扑结构是以交换机为中心,将各个网络节点都连接到交换机上所组成的拓扑结构。

星型拓扑是PROFINET网络的典型拓扑结构,也是现代计算机网络使用的主要拓扑结构。在星型网络中,交换机是最核心的设备,下面这张图是PROFINET网络星型拓扑结构图∶

星型拓扑结构的优点是∶节点增加和删除灵活;单个节点故障不会影响网络整体运行;容易管理、诊断及监控。

星型拓扑结构的缺点是∶布线复杂,成本高,交换机故障会导致网络瘫痪。

3、树型拓扑结构

将几个星型拓扑网络用交换机连接起来就构成树型拓扑网络

比如下面这张图∶

 

许多企业网络、工厂的车间网络等都采用树型拓扑结构。它除了具有星型网络的优点外,还具有网络层次清晰,整体可靠性和安全性都很高的特点当然,它也具有星型网络的缺点,比如交换机故障会导致某个分支瘫痪,布线成本高等。

4、环型拓扑结构

将线型拓扑结构首尾相连,组成一个封闭的环就构成了环型拓扑结构。

环型拓扑结构中信息只能沿一个方向流动,所有的节点都可以申请发送数据,因此需要一种“仲裁”机制,保证同一时间只有一个节点发送数据,通常是使用令牌。

环型网络其实是线型网络的改版,因此它也具有线型网络的优缺点。

优点在于布线简单、线路短。

缺点也很明显,比如一个节点发生故障时,会影响整个网络、节点增加删除困难、环型网络在实际工程中使用的不多,比较典型的应用是构成冗余环网。

比如,下面这张图是两个S7-1500 CPU构成的PROFINET环型拓扑网络

其中一个CPU是主用,另一个是备用。

正常情况下,主用CPU执行程序,并与备用CPU进行同步;如果主用CPU发生故障,则备用CPU会接管系统的控制权。

三、PROFINET通信协议

PROFINET三年行规

1. PROFIdrive

2. PROFIsafe

3. PROFlenergy

1、PROFIdrive

PROFIdrive是一种用于控制器与驱动器之间数据交换的标准驱动控制协议,它可以实现驱动设备的控制及状态诊断。

PROFIdrive定义了很多标准报文,通过不同的报文选择,既可以实现简单的变频器控制,也可以实现高性能的伺服驱动器控制。

2、PROFIsafe

在工业自动化中,IEC61508是关于电气/电子/可编程电子安全系统(electrical/electronic/programable electronic safety-related systems,E/E/PE)的标准,它定义了一套关于安全评估的基本方法和技术框架,对基本概念、术语进行了定义和阐述,并使用概率的方法对安全等级进行评估。

PROFIsafe是一种基于PROFINET/PROFIBUS通信协议的故障安全协议,它遵循IEC61508标准,并在某些方面补充了该标准的空缺。

PROFlsafe安全协议的报文可以与标准的通信协议报文使用同一条传输介质中,不会干扰标准报文的传输,也不受传输介质种类的影响,可以在双绞线、光纤及无线网络中传输,这使其安装和使用成本极低。

PROFIsafe安全协议可以使故障安全控制器(F-host)和故障安全设备(F-device)之间数据传输的失效概率降低到国际安全标准要求的范围内,甚至更低,这表明其可靠性很高。

目前,PROFlsafe协议已经成为功能安全通信的国际标准IEC61784-3-3,我国在2015年也正式批准了基于PROFIsafe协议的推荐标准GB/T20830-2015,这是我国首个国家推荐的功能安全通信标准。

3、PROFlenergy

PROFlenerqy是一种基于PROFINET/PROFIBUS的能源管理协议,它可以在设备空闲的情况下,关闭耗能的元件的运行,到达主动节能的目的。

PROFINET IO控制器可以向支持PROFlenergy协议的IO设备发送节能指令,IO设备接到指令后会将自身变成"暂停"状态,从而降低能耗。

PROFlenergy协议不需要任何额外的硬件,相比于设备停产断电的节能方式,PROFlenergy的可以根据生产的实际情况(比较短暂休息)提高节能的灵活性和效率,并且不需要等待设备断电重启的时间,是一种信得推广使用的节能方式。

西门子ET200S接口模块、ET200SP接口模块/IO模块、电机启动模块、精致系列面板、SINAMICS S系列/G系列驱动器等都支持PROFlenergy。

说明∶PROFIdrive、PROFlsafe、PROFlenergy三大行规都是应用层协议,其下层可以是PROFINET协议或者PROFIBUS协议;另外,这三大行规都是开放性标准,不依赖于某个制造商。

PROFINET通信协议栈 (RT/IRT)

1、工业以太网和PROFINET技术

工业以太网是用于工业自动化环境中、符合IEEE 802.3标准的以太网。工业以太网采用IEEE 802.1D(媒体访问控制网桥)规范和IEEE802.1Q(局域网虚拟网桥)规范,通过使用全双工通信技术、优先响应技术、流量控制技术及虚拟局域网技术,可以将其实时响应时间做到5~10ms左右。工业以太网和商业以太网是兼容的。

PROFINET技术是国际组织PI推出的一种总线技术,它基于工业以太网技术、TCP/IP技术和IT技术,是一种实时以太网技术。2000年年底,PROFINET作为第10种现场总线列入了IEC61158标准中。

PROFINET技术包括PROFINETIO和PROFINET CBA两部分,它们基于不同的通信模型。

① PROFINETIO

PROFINETIO用来完成工业自动化中分布式系统的控制,主要包括如下三种角色∶IO控制器、IO设备和IO 监视器;

IO控制器(IO Controller)∶PROFINETIO系统的主站,执行各种控制任务,包括∶执行用户程序、与IO设备进行数据交换、处理各种通信请求等;

IO设备(IO Device)∶PROFINET IO系统的从站,由分布于现场的、用于获取信号的模块、传感器及执行器组成;

IO监视器(IO Supervisor)∶IO监视器用来组态、编程,并将相关的数据下载到O控制器中,还可以对系统进行诊断和监控。最常见的IO监视器是用户的编程电脑。

② PROFINET CBA

PROFINET CBA(Component-Based Automation)是基于组件的自动化,它适用于设备/系统之间的通信。如果说PROFINETIO是控制器与现场设备的IO数据交换,那么PROFINET CBA则提供了多个IO系统之间的标准接口,可以组成更大的系统。

2、PROFINET的通信等级

在工业自动化控制中,不同的控制对象其实时性要求也不同。比如过程参数的设置、设备的诊断等一般没有实时性要求,但是对于分布式传感器数据的交换就要满足一定的实时性要求;而对于运动控制,其实时性要求就更高。基于不同控制对象的实时性要求的不同,PROFINET分成三种不同的通信等级∶

1. 基于TCP/UDP和IP技术的非实时性通信,可以用于组态、参数设置、诊断等非实时性要求的场合;

2. 实时通信(Real Time Communication,RT),适合周期性数据交换的场合。比如PROFINET IO控制器和IO设备之间,不仅要完成数据的周期性交换,还必须保证一定的实时性。这里的实时性,一般要求循环周期小于10ms;PROFINET的实时通信采用的是软实时技术,不需要特殊的硬件支持;

3. 等时同步通信(lsochronous Real Time Communication. IRT)。对于时间要求严格同步的通信,比如运动控制,实时通信(RT)的10ms数据交换周期不能满足要求,这种情况下要采用等时同步诵信。该通信模式下,数据的循环刷新时间小于1ms,循环扫描周期的抖动时间不大于1us(微秒);等时同步通信需要特殊的硬件支持;

PROFINET基于标准以太网通信,对于不同的通信等级采用不同的技术方案,非常巧妙的解决了在同一个系统中实现不同通信等级要求的问题。

PROFINET IO使用了UDP/IP、RT和IRT技术;而PROFINET CBA则使用TCP/IP技术和RT技术。

3、PROFINET实现不同通信等级的方法

PROFINET中的通信采用的是生产者和消费者的方式。生产者(现场传感器)把数据传送给消费者(比如PLC),消费者对数据进行处理,然后再把处理后的数据返回给消费者。数据在传递的过程中,大部分的时间消耗在通过通信栈上,也就是以太网模型的层层打包和拆包的过程。因此,要提高数据的实时性,就要对协议栈进行改造。

PROFINET的实时通信,抛弃了TCP/IP或UDP/IP部分,使帧的长度大大缩短,通信栈需要的时间也缩短了。采用IEEE 802.3优化的第2层协议,由硬件和软件实现自己的协议栈,从而实现了不同实时性等级的要求。由于没有使用第3层(IP)协议,所以失去了路由功能。但借助MAC地址,PROFINET实时通道保证了不同站点之间能够在确定的时间间隔内完成对时间间隔要求苛刻的传输任务。

非实时通信和实时通信的模型如下图所示∶

回到本文开始的问题“PROFINET分布式IO设备和IO控制器之间采用的是实时通信(RT)还是等时同步通信(IRT)呢?”

其实,这两种方式在CPU组态时都存在的,并且不能更改。在同一个系统中可能三种通信等级UDP/IP、RT和IRT都会用到。

四、PROFINET DCP

PROFINET IO系统

1、PROFINET IO系统组成

PROFINETIO系统是一种分布式的控制系统,它采用生产者/消费者模型进行数据交换,包括三种角色∶IO控制器(IO Controller)、IO设备(IO Device)和IO监视器(IO Supervisor),其中∶

1. IO控制器∶PROFINETIO系统的主站,一般来说是PLC的CPU模块。IO控制器执行各种控制任务,包括∶执行用户程序、与IO设备进行数据交换、处理各种通信请求等。

2. IO设备∶PROFINETIO系统的从站,由分布于现场的、用于获取数据的IO榄块组成。

3. IO监视器∶IO监视器用来组态、编程,并将相关的数据下载到O控制器中,还可以对系统进行诊断和监控。最常见的IO监视器是用户的编程电脑。

IO控制器即可以作为数据的生产者,向组态好的IO设备输出数据;也可以作为数据的消费者,接收IO设备提供的数据;对于IO设备也与此类似,它消费IO控制器的输出数据,也作为生产者,向IO控制器提供数据。

一个PROFINETIO系统至少由一个IO控制器和一个IO设备组成,通常IO监视器作为临时角色进行调试或诊断。

举个例子∶一个CPU1515和一个ET200SP(比如,IM155-6 PN ST)的分布式子站就可以构成一个PROFINETIO系统,其中CPU1515是IO控制器,ET200SP是IO设备。

在PROFINETIO系统中,IO控制器A也可以作为另一个IO控制器B的IO设备,这种情况下,IO控制器A也称为智能设备。一个PROFINETIO系统可以有多个IO控制器,如果多个IO控制器要访问同一个IO设备的相同数据,则必须将IO设备组态成共享设备。

2、PROFINET IO设备模型

PROFINET IO设备定义了一种基于槽(slot)的设备模型,如下图所示∶

                                                 PROFINETIO设备模型

第0号槽是设备接口模块,比如ET200SP的IM155-6 ST模块;设备接口模块有PN接口,用来连接IO控制器;

从第1号槽开始,是设备的IO模块;IO模块获取外部的输入/输出数据,并与设备接口模块进行交换,从而将数据发送到IO控制器或者接受IO控制器的指令。

IO设备还需要提供数据记录的功能,每个数据记录都有相应的索引(Index)。通过在读取数据记录指令RDREC中指定相应的索引值,就可以读取相关的数据记录(非循环数据),比如读取模块的诊断信息;同样的,也可以使用WRREC指令将相应的数据写入到IO设备的数据记录中。

PROFINET 发现与基本配置协议(DCP)

PROFINET IO系统包括IO控制器和IO设备,它们之间通常是通过交换机用PN网线相连。IO控制器(CPU)在冷启动/暖启动时,会根据其内部的硬件组态,查找相应的IO设备。那么它是通过怎样一种方式来查找IO设备呢?

有经验的小伙伴可能知道,它是通过设备名(device name)的方式来查找10设备的。那么设备名又是基于一种怎样的规则或者协议呢?为什么使用设备名就能找到相应的IO设备呢?

 1、设备名

设备名(device name)是IO设备的标识,它是IO控制器查找IO设备的依据,在整个网络中是唯一的。每一个IO设备在组态时,系统(硬件组态环境)会为其分配一个默认的设备名,比如下面这张图∶

2、怎样分配设备名

我们在硬件组态中配置好设备名,然后下载到CPU(IO控制器)中。此时,IO控制器已经知道自己要寻找的目标了。但是对于IO设备来说,它还不知道自己的名字。所以,我们要想办法告诉IO设备它叫什么名字。比如告诉某个设备它的名字是"张三",那么当IO控制器喊"张三"的时候,它就知道在喊它,因此也就会做出应答。

那么怎么告诉IO设备它叫什么名字呢?

我们需要一些软件工具的。

比如,博途开发环境,或者PRONETA,或者PST(Primary Setup Tool)。

请移步到:

(587条消息) 西门子PROFINET网络调试和诊断工具-网络基础文档类资源-CSDN文库

先来介绍下博途环境下如何分配设备名。

双击博途开发环境左侧项目树的【在线访问】节点,找到你使用的网卡.双击【更新可访问的设备】,可以找到所有的PROFINET节点,如下图所示∶

选中要分配设备名的节点,在其右侧的【功能】-【分配PROFINET设备名称】中设置新的设备名称,如下图所示∶

3、PROFINET发现与基本配置协议(DCP)

PROFINET DCP协议是一种集成于PROFINET软件工具、IO控制器和IO设备内部以及组态/诊断工具中。DCP是英文"Discovery and basic Configuration Protocol"的缩写,中文翻译为"发现与基本配置协议"。

通过DCP协议,IO控制器或者软件工具能够发现IO设备,分配IO设备的名称和IP地址。我们在使用软件工具发现IO设备后,可以只分配设备名。正确的分配设备名后,IO控制器就能找到该IO设备,随后会为其分配IP地址。

在调试的初期,要打通PROFINET网络,首要的任务就是分配设备名称。

曾经有小伙伴提出问题 "为什么IO设备不通过分配IP地址的方式来寻址呢"?

其实深层次的原因是因为DCP协议是一种位于数据链路层的协议,它在网络层(IP)以下,当然不会使用IP地址的,PROFINET DCP协议和计算网络中的DHCP协议很像。

DHCP是英文"Dynamic Host Configuration Protocol"的缩写,中文翻译为"动态主机配置协议"。它主要通过IP地址的集中管理与分配,使网络环境中的计算机动态获得IP地址、网关地址、DNS服务器地址等信息。

不过, DHCP协议是传输层协议, 它的帧结构与DCP协议帧的结构还是有很大不同。

具体来说,发现与基本配置协议包括如下一些功能∶

1. 识别全部(Identify All);

2. 识别(Identify);

3. 设置(Set);

4. 闪烁LED(Flash LED);

5. 获取(Get);

6. 问候(Hello);

有了这个协议,我们就可以扫描网络中的PROFINET节点、分配设备名、闪烁LED灯等功能。

1、识别全部(Identify All)

DCP协议的"识别全部(ldentify All"功能以广播的方式向整个网络发送信号,任何节点收到其信号都会做出应答,所有可识别的节点会形成一个列表。通过该功能,可以查找网络中所有可连接的节点,并能获取节点的设备名、IP地址、子网掩码、网关地址、MAC地址、设备类型、供应商等信息。

通常网络组态/诊断工具会使用该功能。比如PST(Primary Setup Tool)的【网络】-【浏览】就是该功能的具体应用,如下图所示∶

2、识别(Identify)

DCP协议的"识别(ldentify)"功能是通过设备名来查找某个具体的IO设备,通常情况下,PROFINET IO控制器在启动初期会使用该功能去查找网络中的IO设备是否与硬件组态中的一致。

假设IO控制器的组态中有个IO设备的名称是"sky-walker",那么IO控制器就会发出识别"sky-walker"的请求,好像说"sky-walker你在吗?听到请回答"。如果某个IO设备的名称正好是"sky-walker',它就会做出应答,这样就识别成功;如果没有任何设备具有该名称,则识别失败;

Identify请求:

链路层帧结构:

FrameControl

DST

SDR

BSSID@

Seq@

QOS@

LT

FrameID

DCPDU

Pad

CRC

DCP-Identi-ALL结构:

ServiceID

ServiceType

Xid

Response

DelayFactor

DCPData

Length

AllSelector

Type

DCPBlocklength

扫描网络中所有设备,扫描主机的mac:28-30-11-02-11-01:

3、设置(Set)

当IO控制器没有识别到指定名称的IO设备时,我们需要为该设备分配指定的名称。所谓"指定的名称",是指该设备在硬件组态时被分配的名称。

为IO设备分配名称需要使用DCP协议的"设置(Set)"功能。

分配设备名称可以是永久的(默认),也可以是临时的。永久性设备名称存储在IO设备的可保持存储区,断电重启后仍有效;临时性设备名称仅临时保存,断电后丢失。

当分配好设备名称后,IO控制器就能成功识别O设备,接下来它会查看该IO设备的IP地址是否与组态相同。如果不同,IO控制器会使用“设置(Set)”功能来设置IO设备的IP地址。当然,如果网络中已经存在某个节点使用了该IP地址,则会导致IP地址分配失败,此时会显示相应的错误信息。

与设备名称类似,设备的IP地址也可以是永久的或临时的。

Set请求:

链路层帧:

FrameControl

DST

SDR

BSSID

Seq

QOS

LT

FrameID

DCPDU

Pad

CRC

DCPDU结构:

ServiceID

ServiceType

Xid

0000

DCPLength

SetReqBlock

SetReqBlock为设置请求块结构。

SetReq块结构:

DeviceProperties

Option,

SuboptionName

OfStation

DCPBlocklength,

BlockQuabfie,

NameOfStation

Value

拼接一个DCP分配设备名称的数据帧:

条件:

源MAC地址(上位机或PLC):28-30-11-02-11-01

目的MAC地址:08-62-74-99-10-01

设备名称:IS620F

不带VLAN标签

通过上述帧即可永久设置设备名称。

Set应答:

SetRes帧

ServiceID

ServiceType

Xid

Padding

DCPDataLen

SetResBlock

SetRes块

Control

SubOption

DCPBlockLen

NameOfStation

BlockErr

对上面请求进行应答:

4、闪烁LED(Flash LED)

DCP协议的"闪烁LED"功能其实是"设置(Set)"功能的子功能,也被称为"设置信号(Set Signal)",通过该功能可以让指定的IO设备的LED灯进行闪烁。

它有什么作用呢?

当现场项目中有多个同类的PROFINET节点时,可以通过闪烁LED的方式确定你要操作的对象。比如,我有时候会将同一个触摸屏程序下载到多个触摸屏中,就可以通过闪烁LED灯的方式判断当前IP是否是我要下载的触摸屏。

5、获取(Get)

DCP协议的"获取(Get)"功能获取设备的信息,比如∶设备名称、IP地址、制造商信息、设备ID、类型等等。

6、问候(Hello)

DCP协议的"问候(Hello)"功能允许IO设备主动给IO控制器发送在线信息,表示它已经准备就绪,从而缩短IO控制器在重启后查找IO设备的时间。

五、PROFINET 模拟器使用

工具下载,请移步到:

​​​​​​​(573条消息) Scapy网络数据包修改工具-网络基础文档类资源-CSDN文库

简单说明:

该工具基于Scapy,用于创建EDIG和修改网络数据包(IT和OT),如IP、UDP、TCP、HTTP、RIP、ICMP、Modubs、Profinet等,定义好json格式数据包即可。

工具:管理型交换机,PLC(可选),PN设备一台,PC一台

软件:Wireshark

上图所示,带有端口镜像的交换机。这里的端口镜像就是其本意,将某个端口镜像到另外一个端口,这样就可以监听该端口上的所有流量,因为交换机相比集线器最大的优势就是实现定向的端口转发,而不是广播到所有的端口,最大程度上避免了网络风暴。

这也给网络监听带来了麻烦的地方,比如如图2所示,控制器在端口2,PN设备在端口1,两个设备间正常交换数据,在PC机上监听不到任何数据,除了广播帧,而端口镜像恰好可以无条件的将数据转发过来。最好再支持VLAN的,后面可以用来做VLAN相关的实验验证。

好了,准备好上述设备,基本就可以完成本章所涉及的实验。首先按照下图所示,连接所有的设备。

控制器和PN设备连接1号和2号端口,PC连接在另外一个端口4,通过交换机web管理界面,将端口1或者2(数据相同)镜像到端口4。

在PC上启动Wireshark,如下图所示,选择监听网卡,开始就可以了。根据自己的需要抓取相应的数据包后就可以停止捕获,为一下步筛选数据包节约时间。

抓取后的数据包下图所示,这里我以抓包的示例为主,介绍上一节的DCP相关数据帧。

当拿到数据包后,会发现有许多的帧,比起Ethercat,Canopen要多很多。原因就是Profinet兼容以太网,所以里面有ARP协议帧,LLDP邻居信息传递,DHCP域名解析,TCP握手帧,IPV4和IPv6等等在以太网上出现的协议帧。

为了便于拿到我们需要的,首先要进行数据包过滤,我们这里要分析dcp帧,所以直接用“pn_dcp”筛选出这类数据,如下图所示。这是DCP-Identify识别帧,包含两帧数据,一帧由plc发送给PN设备,另一帧由PN设备做出相应。

如下图所示,为PLC向网络中广播的一帧数据,我们可以看到源地址为PLC,目的地址为PN的广播域,Ethernet类型为0x8892(Profinet)。帧的ID为0xFEFE, 属于DCP-Req。

再往下一部分为DPC主要的内容区域-DCPblock,这里有询问的设备名称,这个设备名称来源于下载到PLC的组态。这就是为什么当组态中的名称与实际不符时,PLC无法连接的原因,在网络上只有设备名称相同的才会响应这帧数据。

这一点类同于我们的域名一样,方便好记比较人性化,当然还有一个很重要的原因域名所属权在个人,IP所属权为NIC组织。如果在组态中允许输入设备mac地址,理论上就可以直接建立连接。在DCP-Block中,可以看到上一篇文章中提到的ServiceID,ServiceType,Xid等字段。关于设备名称和设备转换名称,这里单独解释一下。这里的设备名称需要特别注意,“xn--xb1aa0f-lm1lh944c”这并不是组态中的设备名称,实际名称是“驱动xb1aa0f”。

在博图组态中我们看到的设备名称就是可视化,但是网络中所看到的是转化后的名称,有了这层转化关系,我们就可以给设备任意起名,肆意妄为哈哈。那么为什么要存在这种转换关系?

这还是回归到Profinet一网到底的理念上,它要兼容以太网,那么作为这种转换,就自然需要参考以太网相关的规范,上面提到过设备名称和域名的类比,这里同样是任意字符或多语言域名规范化。之前的域名是除了“-”外不允许任何特殊字符,而现在还出现了中文域名等地方语言的域名,那么浏览器是怎么识别的,毕竟不可能同时升级全球的DNS协议,必然存在一种转化方式,使之兼容以前的域名规则,这里的设备名称同样采用了这种方式,有兴趣的可以按照协议规范转化一下,不过规范晦涩难懂,主要参考RFC3490,3491,3492,3494规范。

有兴趣可以了解一下,附标准库:IETF Datatracker

言归正传,PLC发出了问询,那么就需要响应的设备进行答复。如图7所示,为设备名称为“驱动xb1aa0f“的伺服响应数据帧。这个数据帧一般都比较长,所以这里以block为单元整合展示,不再展开了。

包括有设备名称,设备ID,IP地址,设备厂家,设备类型,设备优先级等。PLC收到这帧数据就会和组态进行核实,如果符合就认可这台设备;如果不符合就会报错,或重新分配相关参数。

那么有玩过总线设备的小伙伴可能知道设备的ip相关参数怎么设置的。这里涉及到plc的启动方式。其实有两种情况,一种是已经设置了ip,且符合组态数据。另一种是未分配ip,那么plc会用已返回的合法ip试图建立连接,如果超时则重新分配相关参数。

这里特别解释一下,在DCP帧里面我按最简单的情况下进行的帧字段分析,有可能在实际中发现有额外的数据,这是很正常的,一个大的协议族还要兼容以太网,断然不是简单的几页就可以包含所有。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐