PROFINET协议-DCP实践

2023-05-16

     这里就上篇文章《Profinet协议解析-DCP》内容进行实践,通过实验验证各操作的准确性,并且也介绍一些基本的通信分析方法,不必使用昂贵的抓包工具(某东200左右),使之成为人人触手可及的实验方式。

       搞这个东西的,基本都属于工控行业。,目前国内的工控业属于比较苦逼的行业,当然只限于研发相关岗位,毕竟这是那部分干活的人,说好听点就是为工控业崛起而奋斗。所以吧大家手上也没有多少money,就提供一种简陋的方式,公司有工具的另说。有人可能会问为什么不让公司提供或购买?话说当采购流程这个垃圾告诉你以年为单位时,或许你就不这么问了。别等青春已逝,一事无成。

 

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

软件:Wireshark

 图1 交换机要求标题

 

       如图1所示,带有端口镜像的交换机。这里的端口镜像就是其本意,将某个端口镜像到另外一个端口,这样就可以监听该端口上的所有流量,因为交换机相比集线器最大的优势就是实现定向的端口转发,而不是广播到所有的端口,最大程度上避免了网络风暴。这也给网络监听带来了麻烦的地方,比如如图2所示,控制器在端口2,PN设备在端口1,两个设备间正常交换数据,在PC机上监听不到任何数据,除了广播帧,而端口镜像恰好可以无条件的将数据转发过来。最好再支持VLAN的,后面可以用来做VLAN相关的实验验证。好了,准备好上述设备,基本就可以完成本章所涉及的实验。首先按照图2所示,连接所有的设备。

图2 网络拓扑

 

       控制器和PN设备连接1号和2号端口,PC连接在另外一个端口4,通过交换机web管理界面,将端口1或者2(数据相同)镜像到端口4。在PC上启动Wireshark,如图3所示,选择监听网卡,开始就可以了。根据自己的需要抓取相应的数据包后就可以停止捕获,为一下步筛选数据包节约时间。抓取后的数据包如图4所示,这里我以抓包的示例为主,介绍上一节的DCP相关数据帧。

图3 wireshark界面

 

图4 wireshark抓包结果

 

 

              当拿到数据包后,会发现有许多的帧,比起Ethercat,Canopen要多很多。原因就是Profinet兼容以太网,所以里面有ARP协议帧,LLDP邻居信息传递,DHCP域名解析,TCP握手帧,IPV4和IPv6等等在以太网上出现的协议帧。为了便于拿到我们需要的,首先要进行数据包过滤,我们这里要分析dcp帧,所以直接用“pn_dcp”筛选出这类数据,如图5所示。这是DCP-Identify识别帧,《Profinet协议解析-DCP》这篇文章中介绍的第三部分,两帧数据,一帧由plc发送给PN设备,另一帧由PN设备做出相应。

图5 DCP数据帧

 

       如图6所示,为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规范。有兴趣可以了解一下,附标准库:https://datatracker.ietf.org/。

               

图6 Identify-PLC

 

       言归正传,PLC发出了问询,那么就需要响应的设备进行答复。如图7所示,为设备名称为“驱动xb1aa0f“的伺服响应数据帧。这个数据帧一般都比较长,所以这里以block为单元整合展示,不再展开了。包括有设备名称,设备ID,IP地址,设备厂家,设备类型,设备优先级等。PLC收到这帧数据就会和组态进行核实,如果符合就认可这台设备;如果不符合就会报错,或重新分配相关参数。

图7 DCP-Identify响应帧

 

       那么有玩过总线设备的小伙伴可能知道设备的ip相关参数怎么设置的。这里涉及到plc的启动方式。其实有两种情况,一种是已经设置了ip,且符合组态数据。另一种是未分配ip,那么plc会用已返回的合法ip试图建立连接,如果超时则重新分配相关参数。后面可能单独一篇文章讲一讲plc启动过程中都在干什么?为什么有时候启动快?有时候启动就慢?设备数量真的时最大影响因素吗?

       因为篇幅有限,只展示了识别帧的举例,小伙伴们可以自己抓帧对着上一篇文章看一看profinet设备间是怎么交流的。这里特别解释一下,在DCP帧里面我按最简单的情况下进行的帧字段分析,有可能在实际中发现有额外的数据,这是很正常的,一个大的协议族还要兼容以太网,断然不是简单的几页就可以囊括其中。另外文章中有不对的地方,欢迎在《遥远的星星》本人博客中评论指正,共同交流。

附:blog.csdn.net/zh_666888/

2020-12-20

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PROFINET协议-DCP实践 的相关文章

  • 故障解决:端口已被占用 1080

    更新记录 版本时间修订内容1 02018 3 28增加了方案二1 12019 8 9增加了方案三 问题的提出 实验环境 xff1a Win7 64bit 也许你会碰到以下错误 xff1a 本文给出2种解决方案 方案一 既然说端口已被占用 x
  • git cherry-pick 详解 —— Git 学习笔记 18

    git cherry pick 详解 初识 git cherry pick xff08 拣选 xff09 拣选会提取某次提交的补丁 xff0c 之后尝试将其重新应用到当前分支上 这种方式在你只想引入特性分支中的某个提交时很有用 假设你的项目
  • 问题解决: SSR 的 1080 端口被占用

    问题解决 xff1a SSR 的 1080 端口被占用 在我的博客 故障解决 xff1a 端口已被占用 1080 中已经讨论了一些方法 xff0c 但也不是每次都能成功 对于 SSR xff0c 我们完全可以换一种思路 xff1a 既然 1
  • USB开发简述

    由于工作需要 xff0c 接触了USB xff0c 经过这两三周的学习 xff0c 我只想说一句 xff0c 我们USB说简单也简单 xff0c 说复杂也有那么多知识 xff01 这怎么说呢 xff1f 简单 xff1a 无非就那几个结构体

随机推荐

  • 基于PX4六旋翼无人机百米悬停定点降落

  • 手把手教你实现ROS Melodic+Realsense D435i

    硬件配置 xff1a HP ProDesk 480 G6 MT 系统内存 xff1a 8G 处理器 xff1a Intel i7 8700 CPU 操作系统 xff1a Ubuntu 18 04 相机配置 xff1a Intel Reals
  • pixhawk调试过程中QGC报错显示问题及解决方案汇总

    1 室内环境下解锁无人机 xff0c 报错 xff1a Not arming geofence RTL requiers valid home 解决 xff1a 去掉安全设置里面的地理围栏 xff0c 否则只能在有GPS的环境下解锁
  • pixhawk4连接PX4 Flow光流传感器调试过程记录

    主控型号 Pixhawk4 光流型号 PX4 FLow V1 3 地面站 QGroundControl 1 拔掉PX4 Flow连接Pixhawk4的连接线 用USB连接PX4 Flow 打开QGC地面站 烧写固件 烧写完成后就可以在QGC
  • 使用Xshell连接Ubuntu主机失败

    1 问题 在将一台Ubuntu系统的电脑作为服务器 xff0c 使用Xshell连接时 xff0c 发生如下错误 此时使用ping工具检查是否能够ping通 说明能够连接上 xff0c 但是不能使用Xshell进行远程操作 2 解决方法 首
  • P900数传参数配置

    端口定义 xff1a xff08 从左往右 xff09 GND RX TX 5V 调试软件 xff1a X CTU 启动调试 xff1a 按住数传板上SW2 xff0c 同时按住SW1 xff0c 然后松开SW2 xff0c 再松开SW1
  • 利用ROS实现PX4 offboard板外控制

    基于ROS Melodic xff0c 以px4开发者手册实例程序为例 xff0c 实现gazebo下无人机起飞两米悬停 xff0c 具体操作分为三步 xff1a 1 创建工作空间 xff0c 建立offboard包 2 构建mavros
  • Jetson TX2开发板配置Intel T265环境的必要解决方式

    在Jetson TX2配置T265相关依赖时会发生错误 xff0c 因此需要提前对相关参数进行设置 xff0c 主要要将网络设置里面的相关参数改成下图的配置 xff1a
  • pixhawk日志ulg格式转matlab数据csv格式

    1 windows下打开Anconda Prompt xff0c 执行pip install pyulog安装pyulog包 2 在日志文件所在文件夹下执行ulog2csv 文件名 ulg即可生成相关的csv文件
  • 悲催的秋招之路

    个人情况 双非工科硕 民办本 专科起点 基础不行 专业知识不扎实 无技术无论文无项目 投递记录 企业名称 投递时间 岗位1 岗位2 岗位3 岗位4 国电南自 2021 5 19 嵌入式软件研发工程师 民生银行 2021 5 26 金融科技方
  • Matlab读取EXCEL文本中的数据并绘制二维三维曲线图脚本

    Matlab读取EXCEL文本中的数据并绘制二维三维曲线图需要将EXCEL保存为CSV格式 xff0c 然后取数据成矩阵进行处理 转CSV的方式 xff1a pixhawk日志ulg格式转matlab数据csv格式 1 导入文件 span
  • 零基础教会你用github创建个人博客网站

    1 创建账号 进入github网站 xff0c 在网站首页右上角进行用户注册 2 填写相关信息 按照提示填写相关信息完成用户注册 3 搭建个人博客库 进入个人主页 xff0c 在右上角选择 43 好 xff0c 进入 new reposit
  • SV2-4G移动终端使用配置与使用

    一 硬件连接 1接位置天线 xff0c 2接方向天线 xff0c 3接4G天线 xff0c 4接GPS配置专用线 xff0c 5接4G配置专用线 二 运行状态识别 1处为指示灯 xff08 运行 SIM卡 网络 电源 xff09 xff0c
  • yapi插件开发及安装的一些备注

    yapi官方文档有些缺失 xff0c 这里做一下补充 xff0c 官方文档地址 xff1a https hellosean1025 github io yapi documents redev html 插件开发需要调试 xff0c 这个需
  • VSCode修改编辑器(代码窗口)背景色

    VSCode 的背景色是放在主题里面定义的 xff0c 所以在vscode的设置中无法修改到编辑器也就是代码窗口的背景色 xff0c 对应想要自定义编辑器背景的同志们来说 xff0c 可以通过修改主题文件来实现 xff0c 操作起来也并不复
  • ros下tcp通信的过程

    ros框架下的tcp通信的过程 博主在编写一个需要通过wifi传输两个整数和一个状态的问题中 xff0c 通过构建ros xff08 Ubuntu16 04 框架下的tcp c 43 43 通信过程解决了问题 一 ros串口通信的实现 首先
  • Ecos操作系統查看进程信息

    由于最近公司用到了ecos操作系统 xff0c 所以简单的了解了一下这个RTOS xff0c 其相关的社区资源较少 xff0c 国内基本不用 xff0c 这里结合手册整理了一部分的内容 本文章主要两部分 xff0c 一是建立基本的测试进程
  • 在vmware上运行ecos

    目前关于在vmware虚拟机上运行ecos的文章应该是有 xff0c 我会放到文章最后面的资源链接 xff0c 所以写这篇文章的目的有两点 xff0c 一是补充原有文章的不足 xff0c 在实际操作中遇到的困难 二是提供其中相关的资源链接
  • PROFINET协议解析-DCP

    目录 一 设置 Set xff08 请求 xff09 二 设置Set xff08 应答 xff09 三 识别 Identify xff08 请求 xff09 四 识别 Identify xff08 应答 xff09 DCP全称Discove
  • PROFINET协议-DCP实践

    这里就上篇文章 Profinet协议解析 DCP 内容进行实践 xff0c 通过实验验证各操作的准确性 xff0c 并且也介绍一些基本的通信分析方法 xff0c 不必使用昂贵的抓包工具 xff08 某东200左右 xff09 xff0c 使