PROFINET协议解析-DCP
目录
一 设置 Set(请求)
二 设置Set(应答)
三 识别 Identify(请求)
四 识别 Identify(应答)
DCP全称Discovery and basic Configurat10n Protocol,发现和配置协议,如图1所示,其工作在OSI七层中的第二层-数据链路层,所以主要的识别站点的ID就是MAC地址。DCP在PROFINET中设置(Set),识别(ldentify),Hello,获取(Get)四大功能。下面将以Set和Identify为例分别介绍。
图1 OSI模型
一 设置 Set(请求)
配置的内容主要是网络参数和辅助功能,包括IP地址,子网掩码,网关,设备名称,闪烁识别等。下面以设置设备名称为例进行帧分析。设备名称类似于以太网的域名,相比较而言,域名是国际唯一的,而设备名称只要保证在你的控制网络中唯一即可;域名通过DNS解析为IP地址,而设备名称与MAC地址相绑定,都是为了更好的记忆和使用通信网络。
表1 链路层帧
FrameControl |
DST |
SDR |
BSSID |
Seq |
QOS |
LT |
FrameID |
DCPDU |
Pad |
CRC |
表2 DCPDU结构
ServiceID |
ServiceType |
Xid |
0000 |
DCPLength |
SetReqBlock |
设置请求块结构(SetReqBlock)
表3 SetReq块结构
DeviceProperties Option, |
SuboptionName OfStation |
DCPBlocklength, |
BlockQuabfie, |
NameOfStation Value |
根据以上结构,我们以IS620F设备名称为例,拼接一个DCP分配设备名称的数据帧:
条件:源MAC地址(上位机或PLC):28-30-11-02-11-01
目的MAC地址:08-62-74-99-10-01
设备名称:IS620F
不带VLAN标签
08 |
62 |
74 |
99 |
10 |
01 |
28 |
30 |
11 |
02 |
11 |
01 |
88 |
92 |
FE |
FD |
04 |
00 |
00 |
00 |
01 |
00 |
00 |
00 |
00 |
0C |
02 |
02 |
00 |
08 |
00 |
01 |
49 |
53 |
36 |
32 |
30 |
46 |
通过上述帧即可永久设置设备名称,其他参数设置类似,具体参考GBZ 25105.2-2010
二 设置Set(应答)
发送请求帧后,接收返回的数据。设备会根据向请求的mac地址设备返回相应的数据信息。既然是响应就有成功与失败两种情况,PN在blockErr中详细规定了响应的情况。
以太网帧结构同上。
Set应答帧结构:
表4 SetRes帧
ServiceID |
ServiceType |
Xid |
Padding |
DCPDataLen |
SetResBlock |
SetResBlock帧结构:
表5 SetRes块
Control |
SubOption |
DCPBlockLen |
NameOfStation |
BlockErr |
条件:以文章一的请求为例进行应答
28 |
30 |
11 |
02 |
11 |
01 |
08 |
62 |
74 |
99 |
10 |
01 |
88 |
92 |
FE |
FD |
04 |
01 |
00 |
00 |
01 |
00 |
00 |
00 |
08 |
05 |
04 |
00 |
03 |
02 |
02 |
00 |
00 |
三 识别 Identify(请求)
Identify主要是用来扫描网络中的PN设备,所以该帧只需要源MAC地址就可以了,目标地址一般为广播MAC,所有接收到该帧的设备包括控制器都进行应答,就可以知到网络中的设备信息,为后续建立连接做准备。
Identify有两种,一种是带过滤器的帧,毕竟多了过滤的功能,所以结构会更复杂,这里以不带过滤器的帧展开,即向所有的设备发送广播。
以太网链路层帧结构:
表6 链路层帧结构
FrameControl |
DST |
SDR |
BSSID@ |
Seq@ |
QOS@ |
LT |
FrameID |
DCPDU |
Pad |
CRC |
@为可选
Identi-ALL DCPDU结构:
表7 DCP-Identi-ALL结构
ServiceID |
ServiceType |
Xid |
Response DelayFactor |
DCPData Length |
AllSelector Type |
DCPBlocklength |
条件:
扫描网络中所有设备
扫描主机mac:28-30-11-02-11-01
01 |
0E |
CF |
00 |
00 |
00 |
28 |
30 |
11 |
02 |
11 |
01 |
88 |
92 |
FE |
FE |
05 |
00 |
00 |
00 |
01 |
00 |
00 |
01 |
00 |
04 |
FF |
FF |
00 |
00 |
四 识别 Identify(应答)
这里的应答不再详述,扫描所有的设备,设备会应答所有的数据,包括IP,设备名称,厂家信息,mac地址,设备别名等。具体可以参考国标。
本篇文章只是起到一个引导使用国标的作用,具体的各种帧情况并未这里详述。毕竟牵扯到了以太网,就有各种各样复杂的网络状况和拓扑,这些内容只能在数据帧中进行限制,这在很大程度上提提高了网络帧结构的复杂性,内容也很多,比如VLAN,路由,交换机,PC,IO设备等常用的网络设备,协议上包括常用LLDP,SNMP,MRP等,它们工作在符合CC-A的标准上,在PN中也可以烁识RT_CLASS_1,还有为了保证实时RT_CLASS_3,CC-C上的IRT等等。为了实现更好的过渡,下一篇文章计划在这片基础上进行实践,演示抓包工具或管理型交换机抓包,分析实际网路上的数据帧,更贴近实际使用情况。下下篇文章将开启第二部分,profinet的过程数据帧分析。
2020-12-12
PROFINET协议解析-DCP相关推荐
- Profinet协议解析-过程数据
新的一篇文章,开始讲下一个点--过程数据.过程数据,顾名思义,就是一直循环传输的数据,在整个过程中不间断的传输,其每次传输的时间称为同步周期.这点类似于Ethercat中的PDO数据,而下下篇将要讲到 ...
- Profinet非周期协议解析
PROFINET的非周期通信,是想了又想,拖了又拖,终于鼓足勇气写一下.跟Ethercat和Canopen一样,任何一种完备的协议都不可能所有的内容通过过程数据解决.Ethercat有SDO数,对比于 ...
- synopsys PCIE IP协议解析
synopsys PCIE IP协议解析 1.Overview Core支持单个Pcie内核的Loopback功能,该功能主要为了做芯片验证,以及在没有远程接收器件的情况下完成自己的回环.同时,Cor ...
- 详解BLE 空中包格式—兼BLE Link layer协议解析
BLE有几种空中包格式?常见的PDU命令有哪些?PDU和MTU的区别是什么?DLE又是什么?BLE怎么实现重传的?BLE ACK机制原理是什么?希望这篇文章能帮你回答以上问题. 虽然BLE空中包(pa ...
- wireshark协议解析器 源码分析 封装调用
源码分析 Wireshark启动时,所有解析器进行初始化和注册.要注册的信息包括协议名称.各个字段的信息.过滤用的关键字.要关联的下层协议与端口(handoff)等.在解析过程,每个解析器负责解析自己 ...
- wireshark协议解析器原理与插件编写
工作原理 每个解析器解码自己的协议部分, 然后把封装协议的解码传递给后续协议. 因此它可能总是从一个Frame解析器开始, Frame解析器解析捕获文件自己的数据包细节(如:时间戳), 将数据交给一个 ...
- SGS 0.9.7 协议解析
SGS as客户端发送数据规则: sgs 是0.9.7版 协议规则: 包头3个字节: 包大小(2个字节),命令(1个字节) 数据包 注意:包大小=命令+ 数据包 的大小 登陆命令: 命令是: ...
- 简易HTTP协议解析
首先介绍一些必要的知识点. TCP协议为操作系统底层协议,能够保证应用层获取到完整的.顺序一直的包序列.但TCP不提供具体的分包,需要上层协议自己解决.TCP发送给上层协议的数据是一个没有意义的字符串 ...
- 视音频数据处理入门:UDP-RTP协议解析
===================================================== 视音频数据处理入门系列文章: 视音频数据处理入门:RGB.YUV像素数据处理 视音频数据处理 ...
最新文章
- vsftpd学习笔记
- linux下vim编辑器的基本使用
- Android中build target,minSdkVersion,targetSdkVersion,maxSdkVersion概念区分
- [转] PHP 转义与反转义函数
- SpringBoot的启动过程
- Firebug Console API
- 送给那些有代码基础但仍旧不会学自动化测试的朋友们
- 【算法导论】第15章动态规划
- CC2541蓝牙模块间通信设置 蓝牙透传 蓝牙通信程序
- 【深度学习基础】Epoch, Batch, Iteration这三个概念的区别与联系
- 数字图像处理学习笔记4第四章 图像变换 附实验
- 双卡版本不插卡的情况下状态栏中只显示了一个信号图标,而不是两个信号图标,如何修改为2个图标
- git使用遇到的问题
- expect命令简介及使用案例
- 作为一名数据人,真心推荐一位行业大佬,从0到1的实践案例
- 《社交网络》里的评分公式——ELO排名系统
- java+selenium+chromedriver 整页截屏
- 国内PHP开源电商平台有哪些,国内电商平台开源程序汇总
- 机器视觉运动控制一体机应用例程|端子裁切检测
- 一个Web服务的性能瓶颈分析及对策
热门文章
- 慕课头条:拼多多海外版表现亮眼;小度配送机器人发布;土巴兔也玩儿元宇宙...
- STM32(基于HAL库)驱动0.96寸OLED屏幕(四脚且中英文皆可显示)
- USB Hub集线控制器芯片AU9254A21 国产替代DP9254
- 【20岁的时候决定自己的一生】
- 民生保险“链”接链家地产,2018向家告白赢取爱疯X
- 【梳理】数据库系统概论 第8章 数据库编程 8.1 嵌入式SQL 8.2 过程化SQL 8.3 存储过程和函数 8.4 ODBC编程
- python-pandapower电力系统潮流计算无法收敛情况解决方法
- 开机一直黑屏后,扣电池,No bootable device or remote image found
- 三轴高速激光扫描振镜
- 基于vue.js开发的demo—天气APP