• PROFINET 建立连接的原理


    想一想

    传统的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),该名称必须在系统启动前通过工程工具写入设备,因为在系统启动前它将被控制器用于名称和地址解析,设备名称必须记忆性地保存在现场设备中。
    PROFINET设备名称分配

    地址解析协议(ARP)

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

    邻居探测协议(LLDP)

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

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

  • 相关阅读:
    leetcode 746. 使用最小花费爬楼梯
    27个超实用Chrome控制台调试技巧 Source 全局搜索(关注更新)
    sys.argv和argparse和os.environ
    伙伴云戴志康:如何利用低代码提升研发和IT效能
    DOPE-FITC在细胞定位、动态追踪等方面的应用-星戈瑞
    【Mysql】同生共死的sql语句之——事务
    前端--性能优化【下篇】--框架优化与webpack优化
    Windows进入BIOS界面快捷键是什么
    支付官方解析
    C语言小项目 -- 通讯录(静态版+动态版+文件版)
  • 原文地址:https://blog.csdn.net/ASCE_Python/article/details/126201053