• PROFINET如何实现实时性


     有一句话说的是“文艺作品要源于生活而高于生活”,想必大家不会陌生。PROFINET是基于工业以太网的,这句话可以说得文艺范一点儿:“PROFINET是源于以太网而高于以太网的”。那么,PROFINET是怎么做到“高于以太网”的呢?

        要做到比普通以太网要犀利,重要的是PROFINET要做到实时性,而要做到实时性,首先就要解决确定性的问题。前面提到普通以太网会出现介质访问冲突的问题,不满足“确定性”的标准。那么一般解决冲突的方法有哪些呢?

    1.      既然PROFIBUS总线和PROFINET关系密切,先看看总线是如何的解决方法吧。PROFIBUS的通信方式是主从式,使用“令牌”控制,就像十字路**通信号灯的作用;

    2.      可以想办法改进普通以太网所用的CSMA/CD,或者无线局域网(WLAN)所使用的CSMA/CA;

    3.      广域网中使用信道复用,分为频分复用(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系统是循环通信的,在一个周期内(总线刷新时间)做的事情无非是发送与接收,包括以下过程:

    1.      在生产者的应用程序中创建一个变量;

    2.      通过PROFINET通信报文的形式将该变量发送给通信伙伴(消费者);

    3.      在消费者的应用程序中再次获得该变量。

    这个过程所花费的时间如图所示,是T1到T5的累加,详细说明如下。

        普通以太网通信使用TCP/IP协议,设备处理报文的时间是ms级别。对于PROFINET实时通信来说,PROFINET使用100Mbps(快速以太网)的传输速率,以传输一个最长的PROFINET报文1522字节为例,其传输时间T3大约是125μs,与采用TCP/IP协议报文的处理时间相比,传输时间T3是很短的。于是,要缩短刷新时间,最有效的办法就要精简通信协议栈,也就是缩短了T2和T4。

        这种简化信息接受难度的做法就像鄙人当年逃课收看NBA总决赛的现场直播,现场画面和主持人的讲解让人能很快、很直接的、很“实时”的感受到现场气息,获得身临其境的效果,让鄙人看完比赛后会意犹未尽、得意洋洋地向老老实实上课的球迷同学炫耀。如果当时只有文字直播,需要花一些时间通过文字理解去想象比赛画面,你觉得还有必要逃课去当铁杆球迷吗?

        另外,PROFINET精简了通信堆栈的结构,对于时间要求苛刻的数据采用特别报文及协议,不使用TCP/IP协议栈处理,从而大大缩短了通信时间,保证了通信的实时性。这也属于实时报文类型,将会在后面章节将会详细描述。

        总而言之,PROFINET采用精简的通信堆栈结构,100Mbps快速以太网,使用交换机或者带交换功能的IO设备,还有就是其循环通讯的协议机制,这些是PROFINET实时的原因。

  • 相关阅读:
    C#调用webservice 时如何传递实体对象
    Gridview实现突出显示某一单元格的方法
    oracle数据库存储过程分页
    GridView合并表头多重表头
    Gridview中实现求和统计功能
    C#封装的一个JSON操作类
    C#通过StreamWriter对象实现把数值内容写到记事本
    Android CTS
    离线安装eclipse maven插件
    selenium2 页面对象模型Page Object
  • 原文地址:https://www.cnblogs.com/DreamRecorder/p/9284306.html
Copyright © 2020-2023  润新知