3、Profinet协议基础:RT与IRT通信机制、GSDML文件结构、设备模型
好,咱们进入Profinet的世界。说实话,搞工业通信这么多年,Profinet和EtherCAT是我打交道最多的两个协议。今天这节,我带你把Profinet的底裤扒干净——RT、IRT、GSDML、设备模型,这四个东西搞明白了,后面做互转方案你心里就有底了。
3.1 RT与IRT通信机制:实时性到底差在哪?
很多人一上来就问:“Profinet到底实时不实时?” 这个问题其实问得不够精准。Profinet分两种实时通道:RT(实时)和IRT(等时实时)。说白了,RT是“尽力快”,IRT是“必须准时”。
3.1.1 RT(实时)通道
RT走的是标准以太网帧,但做了优先级标记(VLAN优先级)。它不需要专用硬件,普通交换机就能跑。我在项目中遇到过一条产线,用的就是RT模式,周期时间大概在1ms左右。对于大多数IO控制、阀门岛、变频器来说,这个速度完全够用。
RT的通信流程是这样的:
- 控制器发送数据帧,带上优先级标签
- 交换机根据优先级转发,普通数据帧靠边站
- 设备收到后立即处理,不等待同步时钟
嗯,这里要注意:RT虽然快,但它不保证每个周期的时间抖动。如果你做的是运动控制,尤其是多轴同步,RT就不太行了。
3.1.2 IRT(等时实时)通道
IRT才是Profinet的杀手锏。它需要专用ASIC芯片(比如瑞萨的EC-1、英特尔的ERTEC系列),走的是时间分片机制。我曾经调试过一个六轴机器人项目,用的就是IRT,周期时间做到了250μs,抖动控制在1μs以内。
IRT的核心机制是“时间槽”:
- 每个周期分成几个时间片:IRT时间片、RT时间片、TCP/IP时间片
- IRT时间片内,只有IRT设备能发数据,其他设备闭嘴
- 时间片由同步时钟(Sync Master)统一调度
关键区别一句话总结:
RT = 优先级插队,IRT = 专车专用通道。
你想想看,如果产线上既有普通以太网设备,又有Profinet设备,IRT怎么保证不冲突?答案就是——IRT设备必须用交换机,而且交换机要支持IRT的“切割”功能。普通交换机做不到这一点。
3.2 GSDML文件结构:设备的“身份证”
做Profinet项目,你绕不开GSDML文件。它全称是“General Station Description Markup Language”,说白了就是一个XML文件,描述了设备的所有能力。
我记得刚入行时,第一次打开GSDML文件,看到密密麻麻的XML标签,头都大了。后来摸清了套路,发现其实就几个核心部分:
3.2.1 文件头部
<?xml version="1.0" encoding="utf-8"?>
<ISO15739Profile>
<ProfileHeader>
<ProfileIdentification>PROFINET_IO</ProfileIdentification>
<ProfileRevision>2.4</ProfileRevision>
<ProfileName>PROFINET IO Device</ProfileName>
</ProfileHeader>
这部分定义了协议版本。我个人习惯先看ProfileRevision,如果是2.3以下,很多新功能不支持,比如IRT、系统冗余。
3.2.2 设备模型描述
这是GSDML的核心。它定义了设备有哪些槽位、子槽位、通道。举个例子:
<DeviceAccessPointItem ID="DAP1">
<SystemDefinedSubmoduleList>
<SubmoduleItem ID="Sub1">
<IOData>
<Input>
<DataItem ID="DI1" DataType="Bool" Length="1"/>
</Input>
<Output>
<DataItem ID="DO1" DataType="Bool" Length="1"/>
</Output>
</IOData>
</SubmoduleItem>
</SystemDefinedSubmoduleList>
</DeviceAccessPointItem>
你看,一个数字量输入点(DI1)和一个数字量输出点(DO1),就这么定义出来了。实际项目中,一个设备可能有几十上百个这样的通道。
3.2.3 通信参数
这部分定义了设备支持哪些实时等级、最小周期时间、支持的连接数等。我曾经踩过一个坑:某款第三方IO模块,GSDML里写的是支持IRT,但实际调试时死活同步不上。后来发现是它的“MinDeviceInterval”参数写的是1ms,但IRT要求至少250μs。嗯,这就是GSDML和实际硬件不匹配的典型案例。
避坑指南:
我曾经因为GSDML文件版本不对,导致整个项目组加班三天。后来养成了习惯:拿到设备后,第一件事就是去官网下载最新版GSDML,不要用光盘里附带的。
3.3 设备模型:从DAP到Submodule
Profinet的设备模型是分层的,我习惯把它理解成“俄罗斯套娃”:
- 设备(Device):最外层,比如一个远程IO站
- DAP(Device Access Point):设备接入点,相当于设备的“大脑”,负责通信管理
- 槽位(Slot):物理插槽,比如插了8通道DI模块的槽位1
- 子模块(Submodule):槽位里的逻辑功能单元,比如一个DI通道
- 数据项(DataItem):最底层的数据点,比如一个布尔量
举个例子,一个16通道数字量输入模块,它的设备模型可能是这样的:
| 层级 | 名称 | 说明 |
|---|---|---|
| 设备 | ET200SP | 西门子分布式IO站 |
| DAP | DAP_1 | 接口模块,负责Profinet通信 |
| Slot 1 | DI_16x24VDC | 16通道数字量输入模块 |
| Submodule 1 | DI_Channel_1 | 第1个输入通道 |
| DataItem | Input_1 | 布尔量,0或1 |
为什么要把模型搞得这么复杂?你想想看,如果是一个带诊断功能的模拟量模块,它除了数据通道,还有诊断通道、参数通道。没有这套分层模型,工程师配置起来会疯掉。
我的小技巧:
做互转方案时,我习惯先把Profinet侧的设备模型画成树状图。每个DAP下面挂哪些Slot,每个Slot下面有哪些Submodule,一目了然。然后对照EtherCAT的从站设备描述(ESI文件),找到对应的映射关系。这一步做扎实了,后面写代码就是体力活了。
好了,Profinet的基础就讲到这里。RT和IRT的区别你记住了吗?GSDML文件知道怎么看了吗?设备模型能画出来了吗?下一节我们讲EtherCAT协议基础,到时候你会发现,两个协议虽然长得不一样,但核心思想是相通的。