新的一篇文章,开始讲下一个点——过程数据。过程数据,顾名思义,就是一直循环传输的数据,在整个过程中不间断的传输,其每次传输的时间称为同步周期。这点类似于Ethercat中的PDO数据,而下下篇将要讲到的非周期数据和Ehtercat的SDO通道相似,或许各种不同的协议在形式上或者服务模式下是高度相似的。

过程数据,在整个链路上循环传输,每一台从站都与主站之间有着相关的交互连接,当网络中存在多个从站,可想而知,数据量将会是庞大的,数据量就像路上的汽车,有限的带宽是马路,过多的汽车就像早高峰那样,必然引起堵车,同样的网络中也会阻塞,或者导致网络负载过高。对此,我们国家比较喜欢建高架,变着花样的增大马路容量。而在现成的工业网络中是很难实现的,那意味着不兼容,意味着高成本。所以Profinet,采用减小单个数据包实现,保持马路容量不变,减小汽车体积。减少的东西并不是直接删掉了,如果这样就没有存在的意义了,就像大客车从50座减小为2座,那还搞什么运营不是?Profinet的实现其实与TCP相似,都是对通信的双方进行握手,然后保存双方最初交换的信息,后面可以循环传送数据了,也就是基本都是PZD的数据,都是干货,如图1所示。这是一种以空间换带宽,这种握手数据必将占用主站内存,所以有限的内存小,主站匹配的从站都是固定的,当然不是唯一因素。

图1 RT过程数据

讲到过程数据就不得不提一下全同步,过程数据的两种传输模式。从字面意思就是,IRT比RT传输的更稳定,时序处理更可靠。提到这里必然会看到下面图2,这是经典的一张描述PROFINET网络层次,这张图有点不全,缺少了IRT,IRT在2 RT并列,是属于链路层的一种,中间和RT一样,直接跨到应用层,不经过网络层,会话层,表示层,尽可能提高传输效率。为了保证IRT专用车道,在芯片的硬件层面需要开辟独立的数据通道,以保证其不受其他数据的影响,RT和普通以太网数据包共用传输通道带宽。

图2 PROFINET结构图

下面就IRT模式下的过程数据传输做一下帧的分析。之前提到过,过程数据的传输为了减少不必要的传递数据,所以在最初的时候需要进行握手—建立连接,然后双方互通Input和Output数据结构,供后续识别。这里就牵扯到AR(Application Relation)和CR(Commucation Relation),如果有机会再讲一下这部分知识点,它应该属于PLC启动过程中的必要内容,首先确定AR,CR的内容就跟着确定了,包括连接建立的超时处理,AR确定方式,CR传输过程的等都放到《PLC启动过程》一文中,前提是我有机会写这篇。

图3 Connect帧

如图3所示,找到最初的建立连接的地方,这个帧的抓取最简单的情况就是PLC上电的时候抓取,过程中我尝试制造断线等都不会再重建,理论上重新下载组态也会重建这个连接。把294帧数据展开,如图4所示,内容有点长,这里就直接看到重点的地方,我们只看InputCR。再Input CR中有两个API,一个为0x0,另一个是0x3a00。API是AP的标识,AP(Application Process)是一个完整的应用过程划分的每一小块的标识。一个应用过程涉及众多设备和功能,所以划分的应用过程分布在不同的设备上,遍布网络。AP-0是缺省的,用于编制应用过程,这个用做设备管理。其他的AP号是由Profidrive行规进行分配。在每一个AP下面会有Slot和SubSlot,大家习惯的成为“槽”和“子槽”,(ps:我一直不习惯这么叫,太难听),在API-0下带着的也是缺省的槽号。0号槽下面的0x8000~0x8002,属于专用子槽,能且仅能出现在哎0号API下,作为接口出现,0x80xx定义IP地址和DNS名称,用于设备远程访问调用。0x XX00~02是表示端口的,最大可以表示到255号。

图4 InputCR

接着API 0,下面就是API-0x3a00,这里的API由行规定义,其中PROfidrive强制为0x3A00。Profidrive定义了运动控制相关内容,当然也包括IO等。所以在这个API下定义的就是我们的报文。槽1,子槽1用于基本参数访问通道,如图7所示,为GSD文件中的定义。 子槽3是特定报文。知道了具体意义,下一步就是分析报文内容,在一连串的数据中要想找到对应的内容就离不开Offset,偏移量指示其距离原始点的位置。结合图4,图5,图6,我这里画出如下表所示。

表1 过程帧字段结构

API

Identify

Slot

Subslot

Offset

Properties

Length

0

2

0

1

0

0

0

0

3

0

0x8000

1

0

0

0

4

0

0x8001

2

0

0

0

5

0

0x8002

3

0

0

0x3A00

0xFFFF

1

1

4

0

0

0x3A00

0x1389

1

2

5

0

0

0x3A00

0x69

1

3

6

3

20

0x3A00

0x69

1

3

27

IOCS

图5  API:0的展开

图6 API:0x3a00展开

图7 GSD基本参数通道定义

如表1所示,我们获得了在建立连接时,其Input CR的内容,从表中可以看到各通道的偏移量。这里按如图8所示,通过Wireshark抓取的一帧数据。因为用的抓包工具,这里看到的时广播地址回给PLC的,可以先忽略。如表2为过程数据的帧结构,上面洋洋洒洒的写了五六页,仅仅针对于C_SDU字段的内容解读。根据图8的数据,Type =0x8892,Frame ID= 0x0100,0x0100是专门用于RT_CLASS3的帧ID,所以也可以确认这是一帧IRT帧。接着都是数据0x80,这个用于对长度为0的确认标识,有效报文的值为0340 0000 0000 3010 11CF 0000 0000 075A 0000 0000,后面接着又是其他数据。

表2 过程数据帧结构

DST

SRC

VLAN

Type

Frame ID

C_SDU

APDU

图8 IRT帧数据

以上就是过程数据的解析过程,这里忽略了IOCS和IOPS,大家有兴趣可以看一下,主要用作数据可用性的确认(Good or Bad),在PLC 300/400常见,现在博图封装了功能块,很多都隐藏到里面判断,所以无需知道这两个意思也可以看到数据传输状态,披着羊皮的狼而已。欢迎评论区共同交流。附:遥远的星星 https://blog.csdn.net/zh_666888/

2020-12-27

Profinet协议解析-过程数据相关推荐

  1. PROFINET协议解析-DCP

    目录 一 设置 Set(请求) 二 设置Set(应答) 三 识别 Identify(请求) 四 识别 Identify(应答) DCP全称Discovery and basic Configurat1 ...

  2. Profinet非周期协议解析

    PROFINET的非周期通信,是想了又想,拖了又拖,终于鼓足勇气写一下.跟Ethercat和Canopen一样,任何一种完备的协议都不可能所有的内容通过过程数据解决.Ethercat有SDO数,对比于 ...

  3. Profinet协议基础知识(三)

    三.PROFINET IO设备 1.PROFINET IO设备类型 PROFINET IO设备可分为Device(从站).Controller(主站)与Supervisor(监视器). PROFINE ...

  4. 工业通讯 | Profinet协议基础知识(三)

    三.PROFINET IO设备 1.PROFINET IO设备类型 PROFINET IO设备可分为Device(从站).Controller(主站)与Supervisor(监视器). PROFINE ...

  5. Profinet协议基础知识(二)

    3.PROFINET RT通信 3.1 概述 应用场景:实时RT用于时间苛刻的过程数据,用于循环用户数据或者事件驱动的报警. 特点: 1)PROFINET使用优化的实时通信数据:: 2)通信彻底地不占 ...

  6. 工业通讯 | Profinet协议基础知识(二)

    3.PROFINET RT通信 3.1 概述 应用场景:实时RT用于时间苛刻的过程数据,用于循环用户数据或者事件驱动的报警. 特点: 1)PROFINET使用优化的实时通信数据:: 2)通信彻底地不占 ...

  7. synopsys PCIE IP协议解析

    synopsys PCIE IP协议解析 1.Overview Core支持单个Pcie内核的Loopback功能,该功能主要为了做芯片验证,以及在没有远程接收器件的情况下完成自己的回环.同时,Cor ...

  8. 详解BLE 空中包格式—兼BLE Link layer协议解析

    BLE有几种空中包格式?常见的PDU命令有哪些?PDU和MTU的区别是什么?DLE又是什么?BLE怎么实现重传的?BLE ACK机制原理是什么?希望这篇文章能帮你回答以上问题. 虽然BLE空中包(pa ...

  9. wireshark协议解析器 源码分析 封装调用

    源码分析 Wireshark启动时,所有解析器进行初始化和注册.要注册的信息包括协议名称.各个字段的信息.过滤用的关键字.要关联的下层协议与端口(handoff)等.在解析过程,每个解析器负责解析自己 ...

最新文章

  1. 获取轮廓、获取内接矩形
  2. 唠唠面试常问的:面向对象六大原则
  3. 【网络安全】ollvm反混淆学习
  4. bzoj1601: [Usaco2008 Oct]灌水
  5. iNeuOS工业互联网,增加一批PLC、核工业、数字模块、传感器等设备驱动
  6. 复制粘贴不连续单元格_表格筛选状态下怎么复制粘贴数据
  7. 多家大厂的存储设备受第三方加密软件缺陷影响
  8. Seaborn学习(一)------- 构建结构化多绘图网格(FacetGrid()、map())详解
  9. 手机软件Toast无法显示提示信息
  10. 新型开关电源优化设计与实例详解全书.pdf_高频电路设计中,如何应对“不理想”的电容与电感?...
  11. 使用python的turtle绘画滑稽脸
  12. php根据ip地址查询经纬度,根据IP查询经纬度
  13. Python快速实现人脸识别
  14. 用python的django完成一个登录小案例
  15. 第四章:Android灯光系统(3)-编写HAL
  16. 2023年十大流媒体发展趋势展望
  17. npm 安装淘宝镜像报错 npm ERR! code EEXIST
  18. DO、DTO、BO、VO、POJO等各种O浅学(总结)
  19. UFI模式下GPT分区安装win8
  20. 网络尖兵的另类破解。

热门文章

  1. 一连串数字怎么转换成二维码?数字生成二维码如何制作?
  2. 传感器实验——LCD屏幕测试
  3. 随记 C#读取TXT文件乱码
  4. WebMagic爬取码市、猪八戒、一品威客外包数据
  5. 无法访问EChasrts官网的问题之电脑dns解析问题
  6. linux 光盘刻录命令,在Linux操作系统中使用命令进行光盘刻录
  7. c语言lzma算法,C语言编程使用lzma SDK对7z文件简略解压缩
  8. 如何缓解百度网盘限速问题
  9. Usage of API documented as @since 1.8+ less... (Ctrl+F1) Inspection info: This inspection finds all
  10. 关于element-ui中轮播图手动切换轮播图片