1.概述
MN周期状态机(DLL_MS)应管理POWERLINK周期内的通信。
DLL_MS在一个POWERLINK周期中产生帧序列,并监视CN的反应。帧序列的顺序与NMT_MS状态有关。
通常CN通过SoC的接收进行同步。这意味着对POWERLINK网络同步的最重要参数是事件DLL_ME_SOC_TRIG的定时精度。
如果DLL_MS检测到通信中的一个错误,将为“DLL错误处理”产生一个错误事件。
2.状态
1)DLL_MS_NON_CYCLEIC。该状态表示周期通信还未开始或被NMT_MS状态机停止(NMT的NMT_MS_OPERATIONAL_1状态)。状态机在此状态等待,直至NMT状态变为NMT_MS_OPERATIONAL_2。这取决于当前的NMT状态、将处理的事件和将忽略的事件。
2)DLL_MS_WAIT_SOC_TRIG。如果周期通信已完成,状态机保持在该状态,直至下一个周期以DLL_ME_SOC_TRIG开始。
3)DLL_MS_WAIT_PRES。在发送Preq帧后,状态机在该状态等待响应。等待时间由超时限制。
4)DLL_MS_WAIT_ASND。如果发送了一个带授权的SoA,状态机在该状态等待,直至异步阶段以事件DLL_ME_SOC_TRIG结束。
在DLL_MS_NON_CYCLIC中,应产生事件DLL_ME_SOA_TRIG而不是DLL_ME_SOC_TRIG。
如果期待一个ASnd并发生NMT_NMCycleTiming_REC.AsyncSlotTimeout_U32超时,则应产生错误DLL_MEV_SOA_TIMEOUT。
5)DLL_MS_WAIT_SOA。如果发送了一个带授权的但不需应答的SoA,MN在该状态等待,直至异步阶段发生超时,或在下一个POWERLINK短周期开始前接收到任何以太网帧。
3.事件
DLL_MS由事件触发,这些事件是由事件处理器产生的。DDL_MS具有到硬件和NMT状态机的接口。
事件处理器使事件排序(一个超时与一个以太网帧的接收可能同时发生)。到硬件的接口的实现不在本标准的范围内。
1)DLL_ME_PRES。该事件表示接收到一个Pres帧。
2)DLL_ME_PRES_TIMEOUT。当Pres帧在预配置时间内没有(或不完全)被接收到,就会产生该事件。
3)DLL_ME_ASND。该事件表明接收到一个ASnd帧或非POWERLINK帧。
4)DLL_ME_ASND_TIMEOUT。当ASnd帧在预配置时间内没有(或不完全)被接收到,就会产生该事件。
5)DLL_ME_SOC_TRIG。该事件触发SoC帧的发送并开始一个新的POWERLINK周期。定时精度决定了POWERLINK网络的同步精度。
6)DLL_ME_SOA_TRIG。该事件表明一个新POWERLINK短周期将开始。该事件可周期地产生,或在接收到一个请求的ASnd报文后直接产生,以尽快继续POWERLINK短周期。
4.DLL_MS对NMT_MS状态的使用
NMT_MS状态代表网络的状态,且在一些DLL_MS转换中作为条件。对单个NMT状态,可滤出相关的DLL_MS转换。
注:DLL_MS的转换可在一个状态图中表示,其中NMT_MS状态作为转换的条件。为了易于理解和表达清晰,单个NMT_MS状态的相关转换被滤出,并在其自身的图中作为DLL_MS的一种“工作模式”显示。
(1)状态NMT_GS_INITIALISATION和NMT_MS_NOT_ACTIVE
在这些状态中,MN周期状态机不是活动的。这表明在首次转换到DLL_MS_NON_CYCLIC之前,其状态不影响MN的反应,反应由NMT_MS状态确定。
(2)状态NMT_MS_BASIC_ETHERNET
在该状态,周期状态机不是活动的。这表明在首次转换到DLL_MS_NON_CYCLIC之前,其状态不影响MN的反应,反应由NMT_MS状态确定。
(3)状态NMT_MS_PRE_OPERATIONAL_1
在NMT_MS_PRE_OPERATIONAL_1状态,MN周期状态机产生POWERLINK短周期,并监视CN的行为,如图2-25所示。DLL_MS处于DLL_MS_NON_CYCLIC模式。图2-25描述了主站在NMT_MS_PRE_OPERATIONAL_1状态下的数据链路层(DLL)的状态机。
状态NMT_MS_PRE_OPERATIONAL_1下的MN周期状态机转换如表2-7所示。
该转换表中所用的缩略语如下。
no resp.expected意为:对MN的异步授权没有预期的应答(如单播报文交换)。
async_in != 0意为:一个授权必须在该周期内发送,一个ASnd或非POWERLINK帧可被接收。
async_out != 0意为:在发送一个SoA后,必须在该周期发送一个ASnd。
常见问题如下:
如果“DLL错误处理”不支持,则DLL_MEV_ASND_TIMEOUT是可选择的,并可被忽略。
如果已发送StatusRequest,且异步时隙定时时间到而未接收到一个StatusResponse帧,则以错误DLL_MEV_LOSS_STATUSRESPONSE通知“DLL错误处理”。
状态NMT_MS_OPERATIONAL、NMT_MS_READY_TO_OPERATE和NMT_MS_PRE_OPERATIONAL_2下的MN周期状态机产生POWERLINK周期并监视CN的行为,其状态机如图2-26所示。
在NMT_MS_OPERATIONAL、NMT_MS_READY_TO_OPERATE和NMT_MS_PRE_OPERA-
TIONAL_2状态下的MN周期状态机转换如表2-8所示。
该转换表中所用的缩略语如下。
isochr != 0意为:在等时同步列表中有一些帧,它们必须在当前周期中被发送。
isochr_out != 0意为:MN被配置以发送一个Pres。
async_in != 0意为:一个授权必须在当前周期被发送,并且一个ASnd或非POWERLINK帧可被接收。
async_out != 0意为:发送一个SoA后,必须在本周期发送一个ASnd。
为了表述清晰,对非预期事件的反应没有在图2-26和表2-8中描述。对这些事件的一般性叙述如下:
非预期帧的类型和非预期的发送方应被接收。状态不改变。Pres帧应被传送给NMT状态机,可对这些帧进行分析(例如把相应的CN从通信中移除)。状态机对此事件不做任何反应。
如果DLL_MS接收到只可能由另一MN发出的帧(SoC、SoA和Preq),它将通知NM状态机和“DLL错误处理”。
如果发生一个非预期的内部事件(如超时),则将被认为是一个内部错误并通知NMT_MS。
有可能发生这样的情况:DLL_ME_SOC_TRIG发生在非预期的状态中,或发生在发送或接收以太网帧期间(如Pres超时误配置)。在这种情况下,会以错误DLL_MEV_CYCLE_EXCEED通知错误处理(DLL Error Handling)。
如果已发送StayusRequest,且异步时隙定时时间到而未接收到一个StatusResponse帧,则以错误DLL_MEV_LOSS_STATUSRESPONSE通知“DLL错误处理”。
5.活动节点的识别
应为MN配置一个网络上所有节点的列表。
当MN启动时,所有被配置的节点将被标记为非活动的。这些已配置但非活动的CN将被一个特殊形式的SoA帧,即IdentRequest周期性访问。当CN接收到对自己寻址的IdentRequest时,应在同一异步阶段中返回一个特殊形式的ASnd帧,即IdentResponse。
如果MN接收到从CN发来的IdentResponse,则该CN就会被标记为活动的。活动的CN可参与同步数据传输,如可通过Pres被访问。