想一想

传统的TCPIP通信都是根据IP和Port建立唯一的套接字,通过这个套接字完成相关通信,那么PROFINET是基于什么建立通信的了?下面先来简单探索学习下。

运行模式

  • 系统工程:为了实现一个系统的工程,需要导入设备的GSD文件(通用站描述),该文件由设备制造商提供,导入后需对GSD文件中定义的模块/子模块进行组态,以将其映射为实际系统并将其分配到槽(slot)/子槽(subslot)中;此外,每个从站设备都要被分配一个逻辑名称,该名称应指引设备在系统中的功能或安装位置,并且在地址解析期间被用来分配IP地址,名称分配总数使用DCP协议(发现配置协议),该协议默认集成在每个PROFINET设备中。
  • 将系统信息下载到控制器:完成系统工程后需将系统数据下载到控制器中,这样控制器就获得了寻址设备和数据交换所需的全部信息。
  • 系统启动前的地址解析:在与一个设备进行数据交互前,通常控制器必须在系统启动前为该设备分配一个IP地址。系统启动是指自动化系统在“上电”或“复位”后的启动/重启。在相同子网内的IP地址使用默认集成在每个PROFINET现场设备中的DCP协议进行分配,如果现场设备和控制器在不同的子网中,则由单独的DHCP服务器提供地址解析(名称->IP地址)。
  • 系统启动:控制器在启动/重启后,总是根据组态数据来开始系统启动,在系统启动期间,控制器建立应用关系(AR)和通信关系(CR),如有必要则组态并参数化过程级IO。
  • 数据交换:系统启动成功完成后,控制器和设备交换过程数据、报警和非周期数据。

DCP

DCP协议(发现配置协议,依据IEC 61158)用作名称/地址解析的基础,也是实现“设备更换无需编程设备”全部概念的一部分,可以用来读写设备编址所需的参数,并向现场设备中写入数据,这些服务是实时的,且只能在子网中使用。

  • 标识(Identify)请求->寻找一个特定的名称
    带有特定Frame_ID的多播服务,发送给现场设备来读取设备的标识信息,现场设备名称分配主要与“DCPIdentify.req”的两个功能有关:① 询问哪些参数已经包含在设备中,以便执行有选择性的分配名称;②搜索一个特定的名称,防止重复编址;如果以名称长度为0的条件进行名称搜索,所有未分配名称的设备都必须应答,如果呼叫包含一个特定的名称,则只有具有该名称的设备给出应答。

  • 标识(Identify)响应->寻找一个特定的名称
    “DCPIdentify.res”帧是实时帧,Ethertype为0x8892。在 “DCPIdentify.res”中,控制器接收到指示设备满足哪些选项的应答,这些信息在 “DCPIdentify.Response”数据字段中。

  • 设置(Set)请求->将名称或IP地址写入设备

  • 设置(Set)响应->对Set请求的确认

名称分配

由于许多相同设备类型的设备可能被安装在同一个系统中,这就有必要为现场设备分配一个系统特定的名称(NameOfStation),该名称必须在系统启动前通过工程工具写入设备,因为在系统启动前它将被控制器用于名称和地址解析,设备名称必须记忆性地保存在现场设备中。

地址解析协议(ARP)

控制器发出Identify服务询问IP地址是否存在于系统中,因此控制器向所有节点发送一个广播呼叫,仅具有指定IP地址的节点做出应答。该呼叫通过“ARP”超时进行时间监视,这确保了同一个IP地址不会被分配两次。

邻居探测协议(LLDP)

通过LLDP探测邻居是“无需组态工具进行设备替换”概念的一部分,这要求能够利用LLDP服务来确定基于端口到端口的邻居设备的数据,并通过DCP或SNMP服务把该数据提供给高层控制器。

抓包流程:外部引用链接:

PROFINET 建立连接的原理相关推荐

  1. Android应用与硬件建立连接

    文章目录 1.建立连接的原理 2. "信件"和"邮递员" 3.对方可能未收到如何处理 4.接收"回信" 5.多次数据交互 6. 小结 1.建 ...

  2. 网络协议从入门到底层原理(5)传输层(UDP、TCP - 可靠传输、流量控制、拥塞控制、建立连接、释放连接)

    传输层( Transport) 传输层( Transport) UDP 协议(数据格式.检验和) 端口(Port) TCP TCP - 数据偏移.保留 TCP - 检验和( CheckSum) TCP ...

  3. ssl 原理和建立连接过程

    ssl 与http关系 ssl ("Secure Sockets Layer")加密原理 和https的关系 https = http + ssl ssl 位置: SSL握手 证书 ...

  4. 泥瓦匠进阶:连接池原理设计并不难

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘 ...

  5. 从FTP建立连接模式想到的TCP SYNFlood防御

    今天正在看有关几种常见攻击及其防御手段的文章,讲到TCP SynFlood的攻击模式时,忽然突发奇想,为何不使用FTP所应用的反向连接技术,来取代原有的TCP三次握手呢?这样子做会不会有更高的防御效率 ...

  6. 深入理解Spring Boot数据源与连接池原理

    ​ Create by yster@foxmail.com 2018-8-2 一:开始 在使用Spring Boot数据源之前,我们一般会导入相关依赖.其中数据源核心依赖就是spring‐boot‐s ...

  7. 内核怎么帮程序建立连接的

    承接上文网络通讯原理简介以及演示通讯过程 是内核的传输控制层完成的 程序先有连接 才会发送数据 所以该过程是阻塞的 传输控制层 该层的协议有UDP.TCP面向连接的可靠的传输协议 三次握手让双方都确认 ...

  8. zookeeper学习(二)之java客户端API建立连接

    大家都知道,zookeeper作为一个分布式服务框架,用来解决分布式数据不一致的问题,今天来看看的提供的java语言的API,下面是zookeeper 3.4.1的文档地址,百度的apihttp:// ...

  9. 高性能网络编程(一)----accept建立连接

    最近在部门内做了个高性能网络编程的培训,近日整理了下PPT,欲写成一系列文章从应用角度谈谈它. 编写服务器时,许多程序员习惯于使用高层次的组件.中间件(例如OO(面向对象)层层封装过的开源组件),相比 ...

  10. 微信企业号开发(2)--建立连接(主动)

    [本文所描述的内容具有一定的时效性,请以实际开发所处环境为准] 在微信企业号开发(1)--基础入门中,我们已经学习了,我们的程序结构应该如何设计.接下来,我们会按照微信企业号开发者接口文档的顺序,逐一 ...

最新文章

  1. jsp 实栗 jsp + jdbc 登录
  2. 听说你有10年的工作经验?还是你把1个经验反复用了10年?
  3. matlab 电磁兼容仿真软件,EMC Studio免费版
  4. Go 语言编程 — 并发 — Channel 通道
  5. AI时代的全链路监控,阿里工程师怎么做?
  6. 如何通过页面静态化提升论坛性能
  7. CTA策略07_MultiTimeframeStrategy
  8. 0-1 背包实际应用
  9. 团队冲刺第一阶段第九天
  10. ActionScript 游戏编程易错清单
  11. postgresql 数据库连接数查询
  12. PowerShell提示输入命令不是有效命令
  13. vue+element实现手机号验证码注册
  14. css font html里写,HTML,CSS,font
  15. 你真的知道如何选择内存条吗?
  16. 炫酷按钮《html》
  17. Clojure 学习入门(8)—— 连接mongodb
  18. 英文caement水泥caement单词
  19. armbian打印服务器恩山无线,刷了armbian后用cups共享打印非常爽
  20. 百度统计中的索引量和site:命令的百度收录量不一致的原因

热门文章

  1. DREAD风险评估模型
  2. R语言生存分析之COX比例风险模型构建及亚组森林图绘制示例
  3. java 数组 重复数据结构_Java数据结构和算法( 二 ) ## 数组
  4. OpenWrt路由器无线中继、桥接、信号放大、访客网络的实现方案
  5. Unity资源加载简析(二)AssetsBundle
  6. 开发完微信小程序后,怎样做好微信小程序运营?
  7. epcs1s是epcs1系列的么_串行FLASH配置芯片(EPCS1或EPCS4)数据手册.pdf
  8. 将图片背景设置为透明的方法介绍
  9. steam搬砖项目,运用汇率差赚钱,利润可达30%
  10. php ucfirst,Arale源码解析(3)——Base模块和Aspect模块