王永华,乔金锋
(郑州轻工业学院,河南郑州 450002)
PROFINET是PI(PROFIBUS&PROFINET国际组织)推出的实时工业以太网技术,在IEC61158中被归为Type10[1]203。当前PROFINET技术已逐步走向实际应用,但对广大使用者和初学者来说,在控制系统设计、调试和应用过程中仍存在较多困扰。本文对其实时性技术、工作机理和启动过程工作机理等关键技术进行了深入剖析,可为PROFINET技术使用者和初学者在多方面提供借鉴和指导。
PROFINET主要通过改造协议栈、采用间隔控制器(Interval Controller)和改造报文帧等技术解决实时性问题。
为实现工业网络中不同等级要求的实时通信,在PROFINET实时通信技术中对通信协议栈进行了改造。TCP(UDP)/IP不能满足循环过程数据更新时间小于10ms的要求,所以PROFINET实时通信协议抛弃了TCP/IP部分,基于MAC地址直接寻址,PROFINET实时通道保证了不同站点能够在一个确定的时间间隔内完成实时数据传输任务。此外,采用专门的实时协议(SRT、IRT)和优化后的IEEE 802.3第2层协议[2],大大减少了传输帧的长度,缩短了数据在通信栈的处理时间,满足了工厂自动化10ms等级和运动控制1ms等级实时性的要求。其通信栈结构模型如图1所示。
图1 PROFINET通信协议结构
为完成对时间有严苛要求的运动控制任务,PROFINET使用等时同步技术 IRT(Isochronous Real-Time),其中使用 IEEE1588 PTP(Precision Time Protocol)技术实现同步功能,使用独特的间隔控制器(interval controller)技术把整个传输周期包含确定性部分和开放性部分,标准TCP/UDP数据和实时RT数据在开放性通道中传输,IRT数据在确定性通道中传输,确保等时功能的实现[3]230,如图2 所示。
图2 PROFINET总线循环时间分配
为保证网络有极小的抖动时间,使得各节点间通信有严格的确定性。PROFINET将发送时钟分为三个时间段:红色时间间隔只能用来以传输IRT数据,且在每个循环周期开始时进行输入/输出同步处理;绿色部分传输RT数据和有优先级的非实时NRT数据;橙色部分用来传输普通NRT数据。严格的通信调度与分时传输控制机制确保了实时数据的确定性传输。
1)对RT数据
如图3所示,PROFINET改造了以太网帧结构,在RT协议帧结构中指明了过程数据的类型和实时性等级。
图3 PROFINET RT帧结构
RT帧结构中源地址后的2个字节用来指示帧类型,此处为虚拟以太网类型的标识0×8100,表明紧随其后的是一个VLAN标签协议标识。VLAN标签中高3位用来标识数据帧的优先级。
0×889 2表明这是PROFINET实时报文。随后的帧类识别码用来编址两台设备间的特殊通信通道,用于标识单播、多播、周期传输或非周期传输(报警和事件),和以太网类型组合在一起可实现对RT帧进行快速识别。通过采集报文帧应用数据单元APDU状态数据可动晓当前数据状态。
在实时数据域后面的4个字节也是PROFINETRT报文帧独有的,用来指示通信质量和数据状态。
2)对IRT数据
与RT帧相比,IRT基于内嵌的专用的实时协议芯片ERTEC-ASIC,依靠确定的时间段进行数据传输,所以不再需要VLAN标签,以及优先级分配。其协议帧结构如下图4所示。
图4 PROFINET IRT帧结构
基于IEEE1588[4],PROFINET控制器在循环开始时依靠定时和脉冲信号,精确记录传输 Sync帧、Flollow帧、DelayReq帧和DelayRes帧的时钟参数,计算各环节的延时,对各通道输出数据进行时间补偿和模式转换等处理,使网络各节点时钟与基准时钟同步。IRT数据在传输时依据事先规划的确定通信路径进行传输,保证了抖动时间 Jetter[5]小于 1 μs。
和PROFIBUS轮询方式进行数据交换不同,PROFINET的数据交换基于提供者/消费者模型实现。
提供者/消费者模型包括三种实体:信息的提供者和消费者,以及提供者和消费者建立联系的消息代理。它通过拉(Pull)和推(Push)两种模型实现。在拉模型中,提供者从应用管理层接收一个发布请求,并通过网络组播它的响应,需要数据的消费者给予响应,由管理器从提供者“拉”出数据供消费者使用。模型提供了两种服务:证实服务和非证实服务。证实服务仅用于提供者和消费者位于不同的应用进程AP(Application Process)时,消费者按照客户机/服务器模式使用证实服务请求加入发布,提供者给予响应并返还给消费者。非证实服务中提供者仅负责在合适的时间将其信息分发给消费者,消费者无需对信息进行确认。
PROFINET基于无证实服务的提供者/消费者模型的推模式。控制器和IO设备既可以作为提供者,也可作为消费者。提供者以固定时间间隔Δt1将数据传送给消费者,消费者以固定时间Δt2接收。传输期间数据未经任何保护,也不需消费者确认。其模型如图5所示。
图5 PROFINET消费者/提供者模型
该模型属于面向连接的服务,其连接建立和释放由高层的协议来完成;在传输通道上,消费者不提供任何确认和差错信息,在相反通道上,消费者对上次的消费数据情况向提供者提供一个隐含的确认信息。消费者在监视时间Δt3内未收到数据时会向应用发送相应的差错报文。PROFINET实时通信不支持数据的分段和组装;数据的发送和接收都通过缓存区进行操作。
在完成PROFINET系统组态后,控制器和设备之间通过连接请求、写请求、控制请求等一系列报文传递,完成连接建立、参数化,然后进入正常的数据交换过程。整个系统启动过程如图6所示。
PROFINET设备名称和IP地址分配后,I/O控制器通过远程过程调用RPC(Remote Procedure Call)发起一个连接请求来建立与I/O设备之间的AR(Application Relationship),完成有关AR参数到IO设备的传递。在请求中指定控制器与IO设备之间的CR(Communication Relationship),包括用于循环数据交换的IO Data CR,非循环数据的读写Record data CR,以及用于传输报警数据的Alarm CR。
图6 PROFINET启动状态机
控制器在连接请求帧的AR块中详细标识了块类型、会话密钥以及用于识别的对象、接口和活动 UUID[3]279(Universally Unique Identifier,通用唯一标识)等信息。通过IO数据CR块描述其要连接设备的输入/输出通道数量和类型。设备收到请求后对输入/输出和报警块信息予以确认。
在成功建立连接后,IO控制器通过Write REQ(请求)将各子模块的参数信息(包括IO设备特性、插入模块数量及类型、模块参数等)传输到IO设备,为每个模块/子模块定义单独的参数集。
控制器在W rite REQ的数据帧中将组态时设备的全球唯一的应用标识符ARUUID及该对象的地址和长度、槽和子槽的信息传送给设备。从采集的报文中可以看到:应用进程为每一个服务请求提供一个Seq-Number,IO设备使用Write RES来确认参数赋值数据的接收,在响应帧中传输对象本身的真实配置信息及响应数据。
所有的通信参数被加载到IO设备后,控制器使用结束控制DControl命令通知IO设备结束参数化过程。IO设备使用确认控制命令CControl激活连接应用,表示所请求的AR已建立完毕,IO控制器给予响应确认。至此,PROFINET系统启动阶段结束。
如图6中,控制器和IO设备早在连接建立后,激活了提供者/消费者报警状态机,开启供应者以及带监控的消费者协议机。在随后的写参数中设置传送服务参数,包括目的MAC和源MAC、VLAN和减速因子等通讯参数,激活报警状态机。
在各种通信CR建立起来后,IO控制器和IO设备之间开始进入循环的数据交换过程(数据交换报文帧格式如图3所示)。数据单元中包括实时的I/O数据,以及供应者状态IOPS(IO Provider Status)和消费者状态IOCS(IO Consumer Status)。
控制器和IO设备既可以作为提供者以固定时间间隔发送数据,也可以消费者身份接收数据,进行全双工的循环数据交换。传输期间由看门狗监控是否超时,另外通过IOPS和IOCS实时评估传输I/O数据的质量,识别各种通信问题。若有故障发生,则将其告知应用,并及时报警。
PROFINET有着强大的故障处理机制,可用于报警和诊断诱发的故障,以及系统定义事件和用户自定义的报警事件。
一旦IO控制器或IO设备因系统故障或通道出错造成错误数据,都将触发报警。IO设备将报警信息读入诊断缓冲区,并以非循环实时报文RTA的方式报告控制器,等待控制器给予确认和处理。报警/诊断的结构和处理过程如图7所示。
图7 报警/诊断信息处理过程
现以西门子CPU416-3PN/DP控制器和ET200S设备为例,用profitap采集其出错报文帧如图8所示。
图8 故障报警信息
“Status”中的错误代码描述了详细的故障信息:“0xcf”说明存在RTA协议错误,“0x11”表示“AR removed”应用关系关闭,指示终端模块拔出。
由于PROFINET技术基于以太网技术,用户可以通过SNMP简单网络管理协议[6]中的管理信息库实现系统网络诊断,借助OPC服务器或Web浏览器监视整个工业控制网络的运行状态。
工程技术人员可提取控制系统故障时的报文帧信息,通过判断实时获取设备模块的状态,例如:丢站,模块错误等,以及详细的通道故障,如:模拟量通道的断线、短路、过载、欠压等信息。结合现场警报器或HMI设备快速地报告故障信息,便于操作员对系统故障进行准确定位,快速消除故障,提高企业生产效率。如果将其报文帧中故障信息融入FCS(Fieldbus Control System)故障诊断系统中,可实现对整个生产过程的智能化设备维护和管理。
本文从PROFINET采用的独特通信栈结构、总线循环时间分配技术、优化报文帧结构等三方面讨论了其实时性实现的机理;从提供者/消费者非证实的“推”模型讲解了PROFINET技术全双工循环数据交换工作机理;从工作状态机详细剖析了通信连接建立、参数化、数据交换的启动过程;最后,结合采集报文分析了其多级别的故障处理机制:基于槽/子槽的通道诊断技术和借助SNMP的实时网络诊断技术。本文可为学习和深入应用PROFINET技术的用户提供较多支持和参考。
[1] 王永华,Andy Verwer.现场总线技术及应用教程(2版)[M].北京:机械工业出版社,2012.
[2] 彭杰,应启戛.PROFINET工业以太网技术分析[J].南昌大学学报(工科版),2010,32(2):188 -191.
[3] 工业通信网络-现场总线规范类型10:PROFINET IO规范[S].GB/Z25105.1,2010.
[4] Raimond Pigan,Mark Metter,汤亚锋,等.西门子PROFINET工业通信指南[M].北京:人民邮电出版社,2007.
[5] 孙凡金,刘彦呈,潘新祥.PROFINET工业以太网实时性通信协议分析[J]. 低压电器,2008,50(21):30-33.
[6] PROFINET系统手册[Z].2012.3.