PROFINET及其同步实时通讯分析

1    概述


           PROFINET实时以太网是由Profibus International(PI)组织提出的基于以太网的自动化标准。从2004年4月开 始,PI与Interbus Club总线俱乐部联手,负责合作开发与制定标准。PROFINET构成从I/O级直至协调治理级的基于组件的分布式自动化 系统的体系结构方案,并可以将Profibus技术和Interbus现场总线技术在整个系统中无缝地集成。PROFINET能为紧要任务提供最低限度的 性能保证服务,同时也能为非紧要任务提供尽力服务。


2   PROFINET的实时通讯分类


           PROFINET区分两类不同性能的实时周期通讯,一种是实时(RT)通讯,主要用于工厂自动化,这一类没有时间同步要求,一般只要求响应时间为 5-10ms。另一种是等时同步实时(IRT),主要用于有苛刻时间同步要求的场合例如运动控制,电子齿轮。与此对应,PROFINET提供两类实时通讯 通道具体分为RT实时通道和IRT实时通道。另外还包括一个标准通讯通道,标准通道是使用TCP/IP协议的非实时通讯通道,主要用于设备参数化、组态和 读取诊断数据。


           实时通道RT是软实时SRT(Software RT) 方案,它旁路TCP/IP层,同时为优化通讯功能,PROFINET RT帧根据 IEEE802.1Q/P定义了报文的优先级,最多可用7级。PROFINET RT帧中的状况信息域用来标识设备和数据的状况(例如:运行,停止,出 错)。其通讯协议及帧结构如图1。


        



图1 PROFINET RT通讯协议及其帧结构


           实时通道IRT是硬实时HRT(Hardware RT) 方案,实时性是基于一个建立在快速以太网Layer2上的时间触发(time- triggered)协议,由内嵌的Switch-ASIC同步实时交换芯片保证。这样可以进一步缩短通讯栈软件的处理时间,特别适用于高性能传输、过程 数据的等时同步传输、以及快速的时钟同步运动控制。由于基于硬件实现,IRT帧中通常无需RT帧中的IEEE802.1Q VLAN标识。 PROFINET的IRT通讯协议及帧结构如图2。
  


图2 PROFINET IRT通讯协议及其帧结构


           从图1,图2也可以看出,PROFINET 实时数据帧(包括RT和IRT 帧)都是在按IEEE802.3所定义的标准化的帧格式基础上略作改动, 让其L/T字段的值>1500,这是一个保存的EtherTypeⅡ,可以用于唯一地识别PROFINET的实时数据帧以区别于其他采用标准IT协 议的以太网帧,优先进行传输。PROFINE的以太网类型标识中用0x0800标识IP帧,使用0x8892标识PROFINET实时帧。帧中的应用标识 符(frame-ID)域标识所接收的数据的传输,即标识周期传输和非周期传输(报警和事件)。


           按照PROFIBUS国际组织提供的数据[1],PROFINET在IRT通讯方式下应用在同步运动控制场合,其性能比目前的现场总线方案要提升 100倍。这种基于硬件的同步实时(IRT)通讯解决方案能够在大量数据需要传递的情况下保持足够高的时间确定性;同时,可缓解PROFINET设备上处 理器的通讯任务。因此,本文以下对它进行具体分析。


3    PROFINET对IEEE 1588的改进


           PROFINET IRT所采用的时间同步协议是基于改进的IEEE1588[2]。IEEE 1588 的基本功能是使分布式网络内的最精确时钟 (reference clock)与其它时钟保持同步,它定义了一种精确时间协议PTP(Precision Time Protocol),用于对标 准以太网或其它采用多播技术的分布式总线系统中的传感器、执行器以及其他终端设备中的时钟进行亚微秒级同步。


           一个IEEE 1588 精密时钟( PTP) 系统包括多个节点, 可以以为每一个都代表一个时钟,时钟之间经过网络连接。IEEE 1588 将 整个网络内的时钟分为两种,普通时钟OC(Ordinary Clock)和边界时钟BC(Boundary Clock),只有一个PTP 通讯端口的 时钟是普通时钟,有一个以上PTP 通讯端口的时钟是边界时钟,每个PTP端口提供独立的PTP通讯。其中,边界时钟BC通常用在网桥(交换机)和路由器 等这些用来划分子网的网络设备中,用于防止这些网络设备产生大的延迟抖动。普通时钟通常用在节点上。


           随着温度变化和时间推移,发送节点和接收节点的时钟频率将发生偏差,由此会造成漂移(drifts)。为此,在PTP中需要通过一个闭环控制(loop)进行补偿,以如下PI-loop为例。


        


           其中, y[k]是被控量, x[k]是偏差变量, k代表同步循环。 KR,Kn 是 控制参数。T是采样时间,它即是PTP同步信息(Sync信息)之间的发送间隔。每个PTP从属时钟以及BC的每个从属时钟端口都必须含有类似的闭环控 制,闭环控制的设计直接关系到时间同步的精度。如图3上半部分所示,在BC中的时钟振荡器(Oscillator)将会参照PTP Slave,以一定的 函数关系进行调节,调节后的时钟将成为下一个网段的PTP Master。以此类推,反复进行,直至目的节点Time Client。这样,当在总线式拓 扑中有多个网桥链式联结时,这种方式实质上产生了控制循环的级联(cascade),会导致不稳定,从而使得IEEE 1588无法满足苛刻的同步要 求 [3] 


        



图3 IEEE1588边界时钟和PROFINET旁路时钟对比


           相对于IEEE1588的“Boundary Clock”, PROFINET进行了修正,修正后称之为旁路时钟BpC(Bypass clock)[5]。


           时间同步的关键题目是网桥等网络设备中的时延不定常,从而造成时间抖动。假如能找出计算网桥中时延的方法,那么就可以对它进行补偿。如图3下半部分所 示,PROFINET的BpC正是基于这种思想,通过对PTP报文进行必要的操纵和处理(Message processing)来对时延进行补偿,具体 的处理操纵可能涉及贸易秘密,尚未见公然报道。基本思想如下:


           1) 假设一个PTP网桥在端口s收到一个Sync报文,那么接收时间戳Trx,s将会产生, 当BpC的其它端口j开始向下游传递该Sync报文时,发送时间戳Ttx,j将会产生。这样,可以得到所需的时钟校正值(clock correction):Ttx,j -Trx,s 


           2) 如图4所示,使用Ldi代表传输间隔造成的延迟,bdi代表网桥中的时延,将所得到的本网桥内时延bdi和本段传输时延Ldi的信息加进到将要 转发的Sync报文中,这样目的节点就可以得到报文所尽历的精确时延。PTP 主时钟到PTP 从属时钟的累积时延为:


        


           借助这以一方式,就可以把网桥看成具有定常时延的网络组件,从而避开了控制循环的级联。
 


图4 时延叠加


5    


           PROFINET将极大的改善现有自动化技术发展过程中的通讯瓶颈,同时实现自动化技术从以实现控制任务为主导向实现高度集成和优化的信息收集、分析 和处理任务为主导的转移,使得实现控制任务将成为未来自动化平台的低层次要求。本文希看通过对PROFINET实时通讯较具体的分析,能有助于将来我国自 有产业以太网标准的发展。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/255942.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【剑指offer15.二进制中1的个数】——位操作(左移右移等)

目录 二进制的表示 二进制的位操作 应用: 剑指offer15.统计二进制中1的个数(多种方法,位右移操作、与操作等) 转自:https://www.jianshu.com/p/3a31065a8e58 红色为自己添加 我们都知道在计算机中所有的信息最终都…

java 异常处理机制(java 编程思想)

一、概念  “异常”这个词有“我对此感到意外”的意思。问题出现了,你也许并不清楚该如何处理,但你的确知道不应该置之不理;你要停下来,看看是不是有别人或在别的地方,能够处理这个问题。只是在当前的环境中还没有足够…

怎样在CentOS 7.0上安装和配置VNC服务器

这是一个关于怎样在你的 CentOS 7 上安装配置 VNC 服务的教程。当然这个教程也适合 RHEL 7 。在这个教程里,我们将学习什么是 VNC 以及怎样在 CentOS 7 上安装配置 VNC 服务器 。 我们都知道 这是一个关于怎样在你的 CentOS 7 上安装配置 VNC 服务的教程。当然这个教…

Spring Cloud构建微服务架构:消息驱动的微服务(入门)【Dalston版】

2019独角兽企业重金招聘Python工程师标准>>> 之前在写Spring Boot基础教程的时候写过一篇《Spring Boot中使用RabbitMQ》。在该文中,我们通过简单的配置和注解就能实现向RabbitMQ中生产和消费消息。实际上我们使用的对RabbitMQ的starter就是通过Spring C…

20145225 《信息安全系统设计基础》第10周学习总结

cp1.c 进行复制文件的操作,需要有源文件和目的文件,第一次命令没有加入所以没有正常完成复制文件的操作fileinfo.c 用来实现显示文件信息。先判断命令是否有操作数,有的话才能继续进行下去,如果没有报错就打印出来相关文件信息&am…

【深度学习】——模型评估指标MAP计算实例计算

目录 一、知识储备 1、IOU——交集面积与并集面积之比 2、混淆矩阵(TP、FP、FN、TN) 问题1:上面的TP等具体是如何计算得到的? 3、精度precision&召回率recall 二、ap计算实战 1、计算流程 1)准备数据&#xf…

hdu5489 Removed Interval dp+线段树优化

现在看这题居然直接秒了。。。去年看的时候还以为神题。。 设以第i项为结尾的lis前缀为f[i],以第j项为结尾的lis后缀为g[i],如果求出f[i]和g[j],然后枚举i,快速找到最大的满足a[j]>a[i]的g[j]就可以了。注意到如果将f[i]从后往…

NoSQL分类及ehcache memcache redis 三大缓存的对比

NoSQL分类 由于NoSQL中没有像传统数据库那样定义数据的组织方式为关系型的,所以只要内部的数据组织采用了非关系型的方式,就可以称之为NoSQL数据库。目前,可以将众多的NoSQL数据库按照内部的数据组织形式进行如下分类: Key/Value的…

乐视云计算基于OpenStack的IaaS实践

本文作者岳龙广,现在就职于乐视云计算有限公司,负责IaaS部门的工作。 从开始工作就混在开源世界里,在虚拟化方面做过CloudStack/Ovirt开发,现在是做以OpenStack为基础的乐视云平台。所以对虚拟化情有独钟,也对虚拟化/云…

【深度学习】——如何提高map值

目录 代码获取 map原理 map提高技巧 技巧总结: 实战: 1、效果不佳map55.55% 1)单独调整get_dr_txt.py中的self.iou 0.3 2)单独调整get_map,py中的minoverlap: 3)同时调整minoverlap和self.iou 本文是在faster_rcnn模型的…

数据库水平切分的实现原理解析——分库,分表,主从,集群,负载均衡器(转)...

第1章 引言 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天几十亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。通过数据切分来提高网站性能,横…

【深度学习】——纠错error: Unable to find vcvarsall.bat:关于安装pycocotools

1、安装包下载 大佬改写支持 Windows 的 COCO 地址:https://github.com/philferriere/cocoapi 下载后如下: 进入pythonAPI 先后运行: python setup.py build_ext --inplacepython setup.py build_ext install 出现以下标志时&#xff0c…

[软件测试airtest软件安装]——填坑

目录 1、安装Python环境(版本问题) 2、连接手机出现连接上了但是无法进行点击 airtest官网: https://airtest.doc.io.netease.com/for_newer/ 关于软件测试刚入门的可以参考进行了解:https://airtest.doc.io.netease.com/tuto…

KUKA 机器人SPS.SUB程序解析

&ACCESS RVO&COMMENT PLC on controlDEF SPS ( );FOLD DECLARATIONS;FOLD BASISTECH DECL;Automatik externDECL STATE_T STAT定义STATE_T类型的变量。该结构为:STRUC STATE_T CMD_STAT RET1, CMD_STAT是枚举类型数据,组成了STATE_…

jquery validate表单验证插件

1 表单验证的准备工作 在开启长篇大论之前,首先将表单验证的效果展示给大家。 1.点击表单项,显示帮助提示         2.鼠标离开表单项时,开始校验元素    3.鼠标离开后的正确、错误提示及鼠标移入时的帮助提醒 对于初学者而言&…

【Python位运算】——左移操作(<<)右移操作>>

目录 左移操作 右移操作 其他博主的理解 应用——力扣题目78. 子集 解法 深度优先搜索 位运算 参考文献 左移操作 # 左移操作&#xff0c;左移一位相当于乘以b&#xff0c;a<<b,a a*(2^b) print(2<<3) # 2*2^3 16&#xff0c;2的二进制10&#xff0c;向…

sql中字段名中包含特殊字符的查询方法

sql中字段名章包含特殊字符的查询方法&#xff1a;例如包含""&#xff0c;student表中字段为&#xff1a;id“学号”、name"姓名"。 解决办法&#xff1a;用英文下的 ""&#xff08;Tab键上面那个键,不需要shift&#xff09;把字段名包起来。如&…

ABB RAPID SOCKET编程

相传在2009年6月11日&#xff0c;微博的鼻祖t-w-i-t-t-e-r还没有被封锁的时候&#xff0c;于仁颇黎写了了一个东西可以将staubli机器人在运行时的状态&#xff0c;实时发送上去&#xff0c;可以被实时的查看&#xff0c;任何一个人都可以查看&#xff0c;于是就有了这个名为TWI…

机器人 工具坐标系的标定

概念 工具坐标系是把机器人腕部法兰盘所握工具的有效方向定为Z轴&#xff0c;把坐标定义在工具尖端点&#xff0c;所以工具坐标的方向随腕部的移动而发生变化。 工具坐标的移动&#xff0c;以工具的有效方向为基准&#xff0c;与机器人的位置、姿势无关&#xff0c;所以进行相…

Linux内核分析— —计算机是如何工作的(20135213林涵锦)

实验部分 &#xff08;以下命令为实验楼64位Linux虚拟机环境下适用&#xff0c;32位Linux环境可能会稍有不同&#xff09; 使用 gcc –S –o main.s main.c -m32命令编译成汇编代码&#xff0c; int g(int x){ return x 6;} int f(int x){ return g(x);} int main(void){ r…