POWERLINK周期应由MN控制。节点之间的同步数据交换周期性发生,并以固定的时间间隔重复发生,该间隔被称为POWERLINK周期,如图2-3所示。
一个周期内包含以下时间阶段:
等时同步阶段
异步阶段
空闲阶段
保持POWERLINK周期的启动时间尽可能精确(无抖动)是很重要的。在POWERLINK周期的预设阶段内,单个阶段的长度可以改变,例如某个循环周期的异步阶段可能比上一个循环周期的异步阶段时间长了一些,相应的空闲阶段就会缩短。但是整个循环周期的总时间长度是精确且固定的,也就是相邻两个SoC报文之间的时间间隔是固定且精确的,如图2-4所示。
网络配置不能超出预设周期时间。应由MN监视周期时间的一致性。
所有数据传输应是非证实的,即不证实发送的数据已被接收。因为同步数据会被周期性发送和接收,即使本周期内某个数据没有被接收,下个循环周期会被再次发送过来,这相当于重传。
1.等时同步阶段
POWERLINK通信周期示意图如图2-5所示。
在图2-5中,等时同步阶段从SoC的起点开始算起,直到SoA的起点结束。同步阶段可以有两种工作模式:Preq/Pres模式和PollResponse Chaining模式。
在POWERLINK周期开始时,MN应通过以太网多播发送一个SoC帧给所有节点。此帧的发送和接收的时刻应该成为所有节点共同的定时基准。
(1)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,同步阶段的长度缩短。
下面举例说明在Preq/Pres模式下POWERLINK的工作过程。首先需要在主站中配置哪些节点是等时同步节点,以及每个等时同步节点要发送和接收的周期性数据。在进入等时同步阶段后,主站首先发送Preq数据帧(PreqCN)给第一个等时同步从站,该数据帧是单播的,只有该号节点接收,其他节点不接收(该数据帧能到达网络中的其他节点,只是其他节点不接收)。在该数据帧中包含了主站(MN)要发送给该从站的数据。当该节点收到来自主站的Preq数据帧,就会上报一个Pres数据帧(PresCN),该数据帧是广播的,除了主站可以接收到以外,网络中其他任何一个从节点也能接收,至于是否要接收,取决于网络配置。主站(MN)与该从节点(CN1)一来(Preq)、一往(Pres),就完成了一次信息交互。接下来主站(MN)与第二个等时同步从节点进行的信息交互,以此类推。将网络中所有的节点扫描一次,称为一个循环周期。假定循环周期为200μs,那么网络中的每个设备每200μs就有一次收取/发送数据的机会。由于在某一时刻,只用一个节点在使用总线,因此不会造成冲突。
当主站发送Preq数据帧给某个从节点时,恰好该节点出现了问题(如网络断线),在这种情况下,主站不会收到来自该从节点的Pres数据帧,此时,如果主站一直等待该从站的Pres数据帧,就会使整个网络无法工作。主站的处理方法是,对于每一个等时同步节点,都有一个Pres数据帧的超时参数。主站发送了Preq数据帧给某个从节点时,如果在规定的时间内收到了该节点的Pres数据帧,主站紧接着与第二个等时同步节点通信;如果在规定的时间内没有收到了该节点的Pres数据帧,主站会认为该节点丢失了一次Pres,这是一个错误,主站将该错误的计数器的值累加8,然后继续与第二个等时同步节点通信。如果一个节点连续丢失Pres数据帧,那么主站中该错误的计数器的值会不断地累加8,直到错误计数器的值超过上限,就会产生相应的错误。
该种模式下的性能:完成一个站的通信所需要的时间取决于物理层的传输速度和需要传送的数据包大小。
假定物理层为100M以太网,该种网络的传输速度为12.5Byte/μs,假定数据包大小为64Byte(每个Preq和Pres数据帧最大可传输1490Byte的数据),那么完成一个站的通信所需要的时间T=Tpreq+Tgap+Tpres。
Tpreq:主站发送Preq数据帧给从站,时间长度为64/12.5=5.12μs。
Tpres:从站发送Pres数据帧给主站,时间长度为64/12.5=5.12μs。
Tgap:Preq数据帧与Pres数据帧之间的时间间隙,约为2μs。
因此完成一个站的通信,总时间长度为12.24=5.12+2+5.12μs。
(2)PollResponse Chaining(PRC)模式
PollResponse Chaining模式如图2-6所示。
在基于请求-应答模式(Preq-Pres)通信时,从节点什么时候上报自己的数据,取决于主站什么时候发送请求(Preq)给它。PRC模式省掉了主站的Preq数据帧,取而代之的是一个接一个的Pres(如图2-6所示)。每个节点发送数据的行为是通过时间来触发的。
MN配置PRC模式的CN,使得CN在特定的时间点发送数据。这个时间点由主站根据网络的配置情况、网路延迟等计算出来并配置给CN。如图2-6所示,每个循环周期依然以SoC数据帧作为开始,紧接着是一个PresMN数据帧,该数据帧是由主站发出,并广播到网络上,该数据帧包含主站周期性上报的PDO数据,同时该数据帧也是一个时间参考点。支持PRC模式的CN的发送数据的时间参考点是接收完主站的PresMN数据帧。
在一个循环周期里,既可以存在Preq/Pres的从节点,也可以存在PRC节点。一个节点要么被配置为Preq/Pres从节点,要么被配置为PRC节点,二者只能选其一。在一个循环周期中,PRC节点先通信,然后主站才会轮询Preq/Pres从节点。
举例说明上述通信过程:假定有3个从站,主站可以通过配置使得1号从站在收到PresMN后的第5μs上传PresCN1数据帧,而2号从站在收到PresMN后的第15μs上传PresCN2数据帧,而3号从站在收到PresMN后的第22μs上传PresCN3数据帧。这样就避免了冲突。因为POWERLINK是基于时间槽的通信,而且POWERLINK支持1588分布式时钟协议,每个POWERLINK节点都有一个时钟,因此POWERLINK可以很方便地实现这种通信模式。
在该种模式下的性能:完成一个站的通信所需要的时间,取决于物理层的传输速度和需要传送的数据包大小。
假定物理层为100M以太网,该种网络的传输速度为12.5Byte/μs。假定数据包大小为64Byte(每个Preq和Pres数据帧最大可传输1490Byte的数据)。那么完成一个站的通信所需要的时间T=Tgap+Tpres。
Tpres:从站发送Pres数据帧给主站,时间长度为64/12.5=5.12μs。
Tgap:Preq数据帧与Pres数据帧之间的时间间隙,约为2μs。
因此完成一个站的通信,总时间长度为7.12=5.12+2μs。
这种通信比基于请求/应答模式至少能提高30%的效率。
从站是支持PRC模式,还是支持请求/应答模式,这是由参数决定的。可以通过参数设置,在一个周期内,让某些从节点采用PRC模式,而另外一些从节点采用请求/应答模式。这使得网络容量可以灵活搭配。
在一个系统中,通常有多种不同类型的设备,如有伺服驱动器、I/O、传感器、仪表等。不同种类的设备对通信周期和控制周期的要求往往不同。假设现在有3种设备:伺服驱动器、I/O、传感器。伺服的控制周期为200μs,而I/O的控制周期为1ms,传感器却不定时地上传数据。面对如此应用,POWERLINK如何来解决?
首先解决伺服的200μs和I/O的1ms的配置问题。因为两种设备需要的循环周期不同,如果将循环周期设为200μs,伺服没有问题,可是I/O却由于通信过于频繁而反应不过来;如果将循环周期设为1ms,那么伺服会由于控制周期太长而达不到精度的要求。
POWERLINK采用多路复用来解决这个问题。在这里,可以将循环周期设置为200μs,将伺服配置成每个循环周期都参与通信,将I/O配置成每n个循环周期参与一次通信,n是一个参数,可以设置为任意整数(在这里n的值为5)。这样就可以达到伺服的通信周期为200μs,I/O的通信周期为200×5=1ms。
如图2-7所示,有11个节点要通信,其中1、2、3这3个节点每个循环周期都通信;而4、5、6、7、8、9、10、11这8个节点为复用节点,这些节点每3个循环周期才通信一次。
这样就可以使快速设备和慢速设备经过合理配置达到系统最优,这就是多路复用的实例。
数据在每个POWERLINK周期内被交换的节点称为连续节点,如图2-7中的1、2、3节点。
数据在每n个POWERLINK周期内被交换的节点称为复用节点,如图2-7中的4、5、6、7、8、9、10、11节点。
复用类CN的访问降低了对特定CN的轮询频率。
图2-8展示了拥有复用时隙的POWERLINK周期。
虽然复用类节点并不是在每个周期内都被处理,但因为所有的Pres帧都以多播帧的形式来传送,所以可以监视连续类节点整个数据的传输。
例如,在运动控制中,大量的从动轴可使用复用类时隙来接收少数主动轴发出的位置数据。配置主动轴来进行连续通信及访问复用类从动轴。采用此方式,主动轴在每个周期都发送它们的数据给(监视)从动轴,而从动轴则以一个较慢的周期参与通信。
每个特定复用类时隙的大小,应等于分配给该时隙的CN进行Preq帧/Pres帧访问所需的最大时间。
2.异步阶段
一个完整的POWERLINK周期分为两个阶段:同步阶段和异步阶段。
同步阶段用来传输周期性通信的数据;异步阶段用来传输那些非周期性的通信数据。从SoC数据帧开始到SoA数据帧的时间段为同步阶段,SoA和AsyncData为异步阶段。
在周期的异步阶段,对POWERLINK网络的访问可赋予一个CN或MN,来传送一个异步报文。每个循环周期,目前只能有一个节点发送异步报文,如果有多个节点要发送异步报文,就需要排队。在MN中存在一个队列,负责调度异步数据的发送权,异步调度如图2-9所示。
如果CN要发送一个异步帧,则应通过Pres帧或StatusResponse帧通知MN。MN的异步调度器决定异步帧发送的权限应在哪个周期被准许。这保证了即使在网络负荷高的情况下,发送请求不会被延迟不确定的时间长度。
MN从所有排队的发送请求中选择一个节点(包含MN本身)。MN发送一个SoA帧,该帧中的RequestedServiceTarget用来识别被允许发送异步帧的节点。
MN使用不同的队列来管理异步阶段的调度:
来自MN的通用transmitrequest
来自MN的用来识别CN的IdentRequest帧
用来轮询CN的StatusRequest帧
来自CN的transmitrequest
(1)异步阶段的分布
通过Pres、IdentResponse或StatusResponse的RS标志,CN说明在其队列内的发送就绪包的数目。
RS值为0(000B)说明队列是空的,而RS值为7(111B)说明队列中有7个或更多的包。
异步阶段的分配减少了被各个CN请求的、由MN管理的帧的数量。如果MN队列的长度达到0,则不再分配更多的异步阶段。
(2)异步传输优先级
异步传输请求可由Pres帧、IdentResponse帧及StatusResponse帧中的3个PR比特来划分优先级。
POWERLINK支持8个优先级,其中两个用于POWERLINK目的:
1)PRIO_NMT_REQUEST。在CN请求一个由MN发出的NMT命令时,这是专用于此的最高优先级。
2)PRIO_GENERIC_REQUEST。用于非NMT命令请求的标准优先级,即中等优先级。通过异步通信请求的SDO应采用此优先级。应用请求可采用PRIO_GENERIC_REQUEST。
其余的高于和低于PRIO_GENERIC_REQUEST的优先级都可用于应用目的。
相对于具有低优先级数值的请求,MN应优先分配具有高优先级的请求。
不同优先级的请求应由CN的独立的优先级特定队列进行处理。
Pres的PR标志应说明包含挂起请求的最高优先级,RS标志应说明在已报告的优先级中挂起请求的数目。直到所有高优先级请求被分配完毕之前,应暂缓处理低优先级请求的指示。
如图2-10所示为优先级相关的异步请求处理的示例。
3.空闲阶段
空闲阶段是在异步阶段终点和下一周期的起点之间剩余的时间间隔,从SoA或ASnd的终点开始计算,直到SoC的起点结束。
在空闲阶段中,所有的网络部件“等待”下一周期的开始。空闲阶段的持续时间可以为0,即周期的完成不应取决于存在的或固定的空闲阶段。