POWERLINK 简介
1、POWERLINK是IEC国际标准
POWERLINK是IEC国际标准
§ 通信描述
– IEC 61784-2
§ 服务和协议
– IEC 61158-300
– IEC 61158-400
– IEC 61158-500
– IEC 61158-600
§ 设备描述
– ISO 15745-1
POWERLINK是中国实时以太网的国家标准(GB/T-27960)。
2、POWERLINK的OSI模型
OSI是一个用于开放信息处理系统标准化的通信模型,它是当今许多通用无数据优先级传输协议的参考模型。这个模型将数据传输的任务分为7层,每层(除了最底层)建立在另一层的基础之上。
POWERLINK是一个三层的通信网络,它规定了物理层、数据链路层和应用层。
图2-1
3、POWERLINK的物理层
POWERLINK的物理层采用标准的以太网,遵循IEEE802.3快速以太网标准。这意味着无论POWERLINK的主站还是从站,都可以运行于标准的以太网之上。这带来的好处是:
1. 只要有以太网的地方就可以实现POWERLINK,例如你的PC机上可以运行POWERLINK、一个带有以太网接口的ARM可以运行POWERLINK、一片FPGA也可以运行POWERLINK。
2. 以太网的技术进步,就会带来POWERLINK的技术进步。因为POWERLINK是站在标准以太网的肩膀上,而标准的以太网是一个开放的、全民的网络,在各个领域广泛应用,各行各业的人不断地为以太网的升级而奋斗。目前POWERLINK支持100M/1000M的以太网。只需在硬件驱动程序中做小小的改动,POWERLINK就可以支持10G的以太网。
3. 实现成本低。如果用户的产品以前是基于ARM平台,一般ARM芯片都会带有以太网,这样用户无须增加任何硬件,也无需增加任何成本,就可以在产品中集成POWERLINK,用户所付出的只是把POWERLINK的程序集成到应用程序中,而POWERLINK的源程序又是开放且免费的。
用户可以购买普通的以太网控制芯片(MAC)来实现POWERLINK的物理层,如果用户想采用FPGA的解决方案,POWERLINK提供开放源码的openMAC。这是一个用VHDL语言实现的基于FPGA的MAC,同时POWERLINK又提供了一个用VHDL语言实现的openHUB。如果用户的网络需要做冗余,如双网、环网等,就可以直接在FPGA中实现,易于实现且成本很低。此外由于基于FPGA的方案,从MAC到数据链路层(DLL)的通信,POWERLINK采用了DMA,因此速度更快。
4、POWERLINK的数据链路层
4.1 概述
POWERLINK基于标准以太网CSMA/CD技术(IEEE802.3),因此可工作在所有传统以太网硬件上。但是POWERLINK不使用IEEE 802.3定义的用于解决冲突的报文重传机制,该机制引起传统以太网的不确定性行为。
POWERLINK的从节点通过获得POWERLINK MN的允许来发送自己的帧,所以不会发生冲突,因为管理节点会统一规划每个节点收发数据的确定时序。
4.2 POWERLINK 管理节点
负责管理总线使用权的节点被称为POWERLINK管理节点(MN)。只有MN可以独立发送报文——即不是对接收报文的响应。受控节点只能当MN请求时才被允许发送报文。
MN应周期性访问受控节点。单播数据应从MN发送到每个已配置的CN(PReq帧),然后各已配置的CN应通过多播方式向所有其他节点发布它的数据(PRes帧)。
网络上的所有可用节点都由MN配置。
一个POWERLINK网络中只允许有一个活动的MN。
4.3 POWERLINK受控节点
仅在MN分配的通信时隙内发送报文的所有其他节点被称为受控节点(controlled node --CN)。之所以叫受控节点,是因为该节点的数据收发,完全由管理节点控制。CN节点只在MN请求时才发送数据。
4.4 服务
POWERLINK提供三种服务:
等时同步数据传输
每个节点的一对报文在每个周期,或在复用类CN的情况下每n个周期,被传送。另外,每个周期可能有从MN发出的一个多播PRes报文。等时同步数据传输通常用于对时间有严格要求的数据(实时数据)的交换;
异步数据传输
每个周期可能有一个异步报文。MN通过SoA报文向请求节点分配发送的权限。异步数据传输用于对时间无严格要求的数据的交换。
所有节点的同步
在每个等时同步阶段的开始,MN非常精确地发送多播SoC报文来同步网络中的所有节点。
4.5 POWERLINK周期
POWERLINK周期应由MN控制。节点之间的同步数据交换周期性发生,并以固定的时间间隔重复发生,该间隔被称为POWERLINK周期。
图4-1 POWERLINK周期
一个周期内包含以下时间阶段:
等时同步阶段;
异步阶段;
空闲阶段。
保持POWERLINK周期的启动时间尽可能的精确(无抖动)是很重要的。在POWERLINK周期的预设阶段内单个阶段的长度可以改变,例如某个循环周期的异步阶段可能比上一个循环周期的异步阶段时间长了一些,相应的空闲阶段就会短一些。但是整个循环周期的总时间长度是精确且固定的。
图4-2 POWERLINK——等时同步过程
网络配置不能超出预设周期时间。应由MN监视周期时间的一致性。
所有数据传输应是非证实的,即不证实发送的数据已被接收。因为同步数据会被周期性发送和接收,即使本周期内某个数据没有被接收,下个循环周期会被再次发送过来,这相当于重传。
4.5.1 等时同步阶段
图4-3
等时同步阶段从SoC的起点开始算起,直到SoA的起点结束。同步阶段可以有两种工作模式:Preq/Pres模式和PollResponse Chaining模式。
在POWERLINK周期开始时,MN应通过以太网多播发送一个SoC帧给所有节点。此帧的发送和接收的时刻,应该成为所有节点共同的定时基准。
Preq/Pres模式
只有SoC帧是周期性产生的。其他所有帧的产生都是由事件控制的。
在SoC帧发送完毕后,MN开始进行等时同步数据交换。PReq帧发送到每个已配置的且活动的节点。被访问的节点应以PRes帧进行响应。
PReq帧是以太网单播帧,只由目标节点接收。PRes帧作为以太网多播帧形式进行发送。
PReq帧和PRes帧都可以传输应用数据。MN用一个独立的数据帧给一个CN发送PReq数据。PReq帧传输仅专用于被寻址CN的相关数据。
相比之下,PRes帧可以由所有节点接收。这使得通信关系遵循生产者/消费者模型。
对于每个已配置的且活动的等时同步CN,应重复进行PReq帧/PRes帧过程。当所有已配置的且活动的等时同步CN都已被处理,同步通信阶段结束。
POWERLINK周期的大小主要受等时同步阶段的大小影响。当配置POWERLINK周期时,应考虑访问每个配置CN的PReq帧和PRes帧所要求的时间的总和,即必须说明在一个周期中访问所有配置节点所需的时间。使用复用类访问技术可以减少时间的长度。
当处理等时同步阶段时,该阶段的长度会根据活动CN的数量发生变化,当某个被配置了等时同步的节点从网络中脱离,同步阶段中就没有了该节点的Preq/Pres,同步阶段的长度减小。
该种模式下的性能:完成一个站的通信所需要的时间,取决于物理层的传输速度和需要传送的数据包大小。
假定物理层为100M以太网,该种网络的传输速度为12.5bytes/us,假定数据包大小为64bytes(每个Preq和Pres数据帧最大可传输1490bytes的数据),那么完成一个站的通信所需要的时间:T=Tpreq+Tgap+Tpres
Tpreq:主站发送Preq数据帧给从站,时间长度为64/12.5=5.12us
Tpres:从站发送Pres数据帧给主站,时间长度为64/12.5=5.12us
Tgap:Preq数据帧与Pres数据帧之间的时间间隙,约为2us
因此完成一个站的通信,总时间长度为12.24=5.12+2+5.12
4.5.2 异步阶段
一个完整的POWERLINK周期分为两个阶段:同步阶段和异步阶段。
同步阶段用来传输周期性通信的数据;异步阶段用来传输那些非周期性的通信数据。从SoC数据帧开始到SoA数据帧的时间段为同步阶段,SoA和AsyncData为异步阶段。
在周期的异步阶段,对POWERLINK网络的访问可赋予一个CN或MN,来传送一个异步报文。每个循环周期,目前只能有一个节点发送异步报文,如果有多个节点要发送异步报文,就需要排队。在MN中存在一个队列,负责调度异步数据的发送权
4.6 空闲阶段
空闲阶段是在异步阶段终点和下一周期的起点之间剩余的时间间隔,从SoA或ASnd 的终点开始计算,直到SoC的起点结束。。
在空闲阶段中,所有的网络部件“等待”下一周期的开始。空闲阶段的持续时间可以为0,即周期的完成不应取决于存在的或固定的空闲阶段。
5、POWERLINK的同步机制
POWERLINK可以有支持多种同步机制,这里介绍两种典型的机制:
1. 主站通过广播同步桢来同步网络上所有设备;
2. 分布式同步。
首先介绍主站广播同步桢的机制:
POWERLINK支持1588分布式时钟协议,每个循环周期的开始,主站都会广播一个SoC数据帧到网络上,该数据帧包含了两个重要信息:网络的绝对时间和相对时间。
网络的绝对时间:这个时间是以1970年1月1日 00点00分为基准的时间间隔。这个信息由两部分,一共8个字节组成:
6-9 这4个字节为秒的信息,即网络时间与1970年1月1日 00点00分间隔多少秒;
10-13这4个字节为纳秒信息,即网络时间中与1970年1月1日 00点00分间隔多少秒 又多少纳秒;
相对时间:这个时间在主站的NMT_GS_INITIALISING状态下清零,然后每产生一个SOC,该数值就累加一个循环周期,其单位为微秒。
SoC数据帧有两个功能:时钟同步和动作同步。
时钟同步:网络中的节点需要有一个统一的网络时间。
利用网络时间来同步网络中所有设备的分布式时钟,让网络中所有节点的时钟有一个共同的基准。POWERLINK主站(MN)在每个循环周期的开始将SoC数据帧广播到网络上,该数据帧包含了网络时间信息,网上的各个从节点可以将这个时间作为统一的网络时间。
动作同步:网络中的节点需要同时去做一件事情。
在POWERLINK协议中有两种方法去触发一个同步的事件:
1. 通过从节点自己的时钟触发;
2. 通过SoC数据帧触发。
这里主要讲通过SoC数据帧触发同步事件的原理。
在POWERLINK数据链路层里,每当收到了SoC数据帧,会触发一个同步的回调函数,用户可以将同步执行的程序写在该函数里,这样就可以执行同步动作。举例来说,假设有一个运动控制器,要控制10台伺服做同步运动,例如需要10台伺服同时启动。每个循环周期,运动控制器(作为POWERLINK的主站)将10台伺服所需要的新的位置信息依次传给各个伺服。每个伺服收到新数据的时间是不同的,第一个和最后一个得到位置数据的时间可能会差100多us。如果收到新数据,伺服就开始启动,那么就会出现这种情况:第一个伺服已经开始运转,而最后一个伺服还没有收到数据,这显然不是我们想要的结果。因此我们需要一个同步信号,使所有的伺服都得到新数据以后,同时启动。这个同步信号就是SoC。
图5-1
主站在上一个循环周期结束(即下一个循环周期开始)时广播一个SoC数据帧,基本上所有的从站会同时收到这个数据帧。该信号触发一个同步回调函数或者硬件中断,来处理同步事件。因为在SoC数据帧之前,每个从站都已经从主站(控制器)那里得到了新的位置信息,因此SoC信号触发的同步事件中可以同时启动,运行到设定位置。
如果是星形拓扑,各个从站收到该信号的时间差取决于线缆的长度,电信号可以认为是以光速在导线中传播,因此用户可以计算出该时间差。可近似为1米为3.3ns。这个级别的时间差基本上可以忽略。
如果你采用的是菊花链连接,那么没经过一级hub会有1 us左右的延迟,再加上线缆的延迟,第一个从站和最后一个从站在接受到SoC信号的时间差可能会达到几个微秒,用户需要根据应用场合的需要来决定该延迟是否可以忽略,如果不可以忽略,POWERLINK提供了测量机制,可以测出来相邻两个节点的传输延迟。用户根据这些延迟时间给各个节点做一个补偿,从而达到各个节点在同一时刻做同步事件。