PROFINET如何实现实时性
平时我们都听过文艺作品要“源于生活而高于生活”。PROFINET是基于工业以太网的,用文艺范儿的词汇说就是“源于以太网而高于以太网”。那么,PROFINET是怎么做到“高于以太网”的呢?
要做到比普通以太网要犀利,重要的是PROFINET要做到实时性,而要做到实时性,首先就要解决确定性的问题。前面提到普通以太网会出现介质访问冲突的问题,不满足“确定性”的标准。那么一般解决冲突的方法有哪些呢?
- 既然PROFIBUS总线和PROFINET关系密切,先看看总线是如何的解决方法吧。PROFIBUS的通信方式是主从式,使用“令牌”控制,就像十字路口交通信号灯的作用;
- 可以想办法改进普通以太网所用的CSMA/CD,或者无线局域网(WLAN)所使用的CSMA/CA;
- 广域网中使用信道复用,分为频分复用(FDM)和时分复用(TDM)。频分复用将一条高带宽的信道划分成带宽较小的多个信道,就像在一条公路上划分出多个车道;时分复用通过把通信数据包分配在不同时隙进行传输来实现信道复用。
PROFINET的通信方式是生产者/消费者,各个通信节点是平等的,随时都可以收发数据,所以总线的那种“令牌”控制不能适用,只能在后两个方案中想办法。从而也造就了前面所提到的PROFINET不同于PROFIBUS的地方。
1、交换技术
普通以太网设备有可能会出现数据碰撞,也就是所谓的CSMA/CD造成了数据发送的延迟,从而不能保证通信的确定性,也就无法谈及通信的实时性。而且前面提到冲突域的范围是有大小的。普通以太网使用传统的交换机(switch)或者是集线器(Hub)构成局域网,使用集线器连接使得整个局域网都是一个数据的冲突域。那是不是可以在从冲突域的角度对普通以太网改进一下,以彰显PROFINET的“先进性”呢?答案是肯定的。
PROFINET采用支持IEEE 802.Q标准的交换机,或者PROFINET设备本身就集成一个带交换功能的双网口,使得同时有多个设备和一个设备所使用的带宽都是一样(100M),这样数据冲突的区域缩小到设备本身的区域内。因为端口可能有多个用户与该端口连接的用户通信,有可能发生介质访问冲突,支持IEEE 802.Q标准的交换机还采用了带有优先级的方式安排发送顺序,于是将冲突域缩小到一个具体的端口,从两个方面大大缩小了数据冲突区域,确保了通信的确定性。
打个比方说,在两条道路交汇的十字路口,东南西北四个方向的车不可能同时通过,得通过交通信号灯来进行指引,交换机相当于建了个立交桥,甚至是多层立交桥,使得多个方向的车辆能够同时通行。而在局域网中使用支持IEEE 802.Q标准的交换机,将通信网络搭建得像沪宁高速公路一样,在一个方向中划分出多个车道(双向8车道),并且规定大车在一般不得占用内侧的车道,不仅大大提高了通行效率,而且行车的安全性也大大提高了。
2、循环通信

图
如图,对于由控制器、设备组成的PROFINET IO系统来说,工作的方式就是输入、处理、输出,这一过程循环罔替,周而复始。处理是循环的,T1是PLC程序的循环扫描时间;而且通信也是循环的,T2是总线刷新时间,也就说每个循环周期(Cycle1…n),控制器与设备之间会进行通信。从这个角度说,PROFINET运用了时分复用中时隙的概念,这将大大提高整个网络的通信效率。时隙这个话题将在后面的章节中详细描述。
3、精简协议栈
前面提到PROFINET IO系统是循环通信的,在一个周期内(总线刷新时间)做的事情无非是发送与接收,包括以下过程:
- 在生产者的应用程序中创建一个变量;
- 通过PROFINET通信报文的形式将该变量发送给通信伙伴(消费者);
- 在消费者的应用程序中再次获得该变量。
这个过程所花费的时间如图所示,是T1到T5的累加,详细说明如下。

普通以太网通信使用TCP/IP协议,设备处理报文的时间是ms级别。对于PROFINET实时通信来说,PROFINET使用100Mbps(快速以太网)的传输速率,以传输一个最长的PROFINET报文1522字节为例,其传输时间T3大约是125μs,与采用TCP/IP协议报文的处理时间相比,传输时间T3是很短的。于是,要缩短刷新时间,最有效的办法就要精简通信协议栈,也就是缩短T2和T4。这种简化信息接受难度的做法就像鄙人当年逃课收看NBA总决赛的现场直播,现场画面和主持人的讲解让人能很快、很直接的、很“实时”的感受到现场气息,获得身临其境的效果,让鄙人看完比赛后会意犹未尽、得意洋洋地向老老实实上课的球迷同学炫耀。如果当时只有文字直播,需要花一些时间通过文字理解去想象比赛画面,你觉得还有必要逃课去当铁杆球迷吗?
另外,PROFINET精简了通信堆栈的结构,对于时间要求苛刻的数据采用特别报文及协议,不使用TCP/IP协议栈处理,从而大大缩短了通信时间,保证了通信的实时性。这也属于实时报文类型,将会在后面章节将会详细描述。
总而言之,PROFINET采用精简的通信堆栈结构,100Mbps快速以太网,使用交换机或带交换功能的设备,带有优先级标识VLAN标签的报文,还有就是其循环通讯的协议机制,这些是PROFINET实时的原因。
PROFINET如何实现实时性的更多相关文章
- 什么是PROFINET IO系统的实时性
实时系统是指系统能及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致的运行. PROFINET IO系统的实时性就是指当有一个外部事件发生时,从输入信号到传输.到控制 ...
- CNC系统实时性分析
该系统有哪些强实时功能需求?需要对哪些实时事件进行实时响应,对允许的实时延迟的数量级进行估计. 答:数控系统中控制装置与现场设备通信的实时性要求,数控系统要快速而有效的对复杂而庞大的操作任务进行处理. ...
- Linux 2.6 内核实时性分析 (完善中...)
经过一个月的学习,目前对linux 下驱动程序的编写有了入门的认识,现在需要着手实践,编写相关的驱动程序. 因为飞控系统对实时性有一定的要求,所以先打算学习linux 2.6 内核的实时性与任务调 ...
- 用Vue开发一个实时性时间转换功能,看这篇文章就够了
前言 最近有一个说法,如果你看见某个网站的某个功能,你就大概能猜出背后的业务逻辑是怎么样的,以及你能动手开发一个一毛一样的功能,那么你的前端技能算是进阶中高级水平了.比如咱们今天要聊的这个话题:如何用 ...
- 针对Properties中实时性要求不高的配置参数,用Java缓存起来
Properties常用于项目中参数的配置,当项目中某段程序需要获取动态参数时,就从Properties中读取该参数,使程序是可配置的.灵活的. 有些配置参数要求立即生效,有些则未必: 一.实时性要求 ...
- 为树莓派添加一个强实时性前端[原创cnblogs.com/helesheng]
树莓派是最近流行嵌入式平台,其自由的开源特性以及低廉的价格,吸引了来 自全球的大量极客和计算机大咖的关注.来自各大树莓派社区的幕后英雄,无私地在这个开源硬件平台上做了大量的工作,将其打造成了世界上通用 ...
- Linux操作系统实时性分析
1. 概述 选择一个合适的嵌入式操作系统,可以考虑以下几个因素: 第一是应用.如果你想开发的嵌入式设备是一个和网络应用密切相关或者就是一个网络设备,那么你应该选择用嵌入式Linux或者uCLinux ...
- 《即时消息技术剖析与实战》学习笔记3——IM系统如何保证消息的实时性
IM 技术经历过几次迭代升级,如图所示: 从简单.低效的短轮询逐步升级到相对效率可控的长轮询: 全双工的 Websocket 彻底解决了服务端的推送问题: 基于 TCP 长连接衍生的 IM 协议,能够 ...
- 【原创】xenomai与VxWorks实时性对比(资源抢占上下文切换对比)
版权声明:本文为本文为博主原创文章,转载请注明出处.如有问题,欢迎指正.博客地址:https://www.cnblogs.com/wsg1100/ (下面数据,仅供个人参考) 可能大部分人一直好奇Vx ...
随机推荐
- http自动跳转https小记
因近期跌代更新ios/android后,由于担心ios https从17年起限制的问题,故目前我们将http更改为https,但既然支持https,故想将服务器直接更新为https,将原http请求自 ...
- 百度地图API-控件
初始化百度地图的基础方法我们已经学会了,那么,想让我们的地图展示的更美观,体验度更好,自然离不开百度地图API给我们提供的丰富的插件.同时呢,我们还可以通过Control类自定义控件.那么,百度地图A ...
- Xamarin.Android Binding篇
前言 趁着失业了,闲着没事儿学习了下Xamarin.Android binding,在以往的开发中,我相信很多人都遇到过binding的坑,也不例外, 我也踩了很多雷,好在认识了个大佬,指导了很多 ...
- BFS-基础简单的算法
前言 有时候,当你并不了解很多高级算法的时候,搜索不失为一种解决问题的好方法,而且很多高级算法有或多或少的会用到搜索或者搜索的思想.可见,搜索是一个基础并且必须要掌握的算法. 在这篇文章中,会对BFS ...
- Struts2(二)之封装请求正文、数据类型转换、数据验证
一.封装请求正文到对象中(重点) 1.1.静态参数封装 在struts.xml文件中,给动作类注入值,使用的是setter方法 1.2.动态参数封装 通过用户表单封装请求正文参数 1.2.1.动作类作 ...
- 1、初识Activity
Activity是Android的基本组成部分,是人机交互程序入口:一个Android项目由多个Activity组成,所有的显示组件必须放在Activity上才能进行显示. (1)Android项目工 ...
- 小程序新能力-个人开发者尝鲜微信小程序
个人开发者的福利 微信小程序,刚听到这个新名词的时候,我就兴冲冲的去找入口,看看自己能不能搞个微信小程序的HelloWorld,毕竟能在微信上把自己写的一些小工具跑起来还是满炫酷的. 没想,网上一查, ...
- git 入门宝典
本篇教程是按照我自己的组织方式,然后从多篇教程中拼凑出来的,嘎嘎~,真佩服自己的技术! 原本想叫 git 宝典的,结果一查git的命令大全,还有那么多的git命令与功能没有接触到,所以...还是谦虚一 ...
- 【Flex】去除外边框,底背景透明,改变exe的icon
一.去除程序外边框 1.在 xx-app.xml文件里,找到 <!-- <systemChrome></systemChrome> --> 这句话,然后删掉注释 ...
- scrollWidth,offsetWidth,clientWidth,width;scrollHeight,offsetHeight,clientHeight,height;offsetTop,scrollTop,top;offsetLeft,scrollLeft,left还有谁
题中的那么多属性让人头都大了,他们到底是什么意思?不同浏览器的实现是一样的吗?以下所有结论来自chrome版本 53.0.2785.89 (64-bit)和firefox版本52.0.2,操作系统ub ...