您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 规章制度 > OSEK直接网络管理(NM)规范
OSEK直接网络管理(NM)介绍OSEK直接网络管理(NM)赋予节点“消息地址”的概念,即每个网络上的节点有唯一的标识号。NM规范没有定义最大的节点标识号,但建议采用8位地址(0-255)。虽然底层物理网络不支持消息地址,但直接NM要求间接实现对消息地址的支持。一个网关节点可连接不同的网络,并且在每一网络中它的消息地址可能是不同的。如图32所示:图32两个总线网络中的逻辑环结构在图32中,子网1的3个节点在逻辑上形成一个环,称之逻辑环(LogicalRing)。逻辑环通过环消息(RingMessage)序列实现消息传输。环消息自低地址节点(ID号小)向高地址节点(ID号大)发送,再由最高节点传回最低节点,形成一个环。逻辑环上的消息交换机制如图33所示:图33逻辑环上的消息交换机制直接NM还要求网络广播的实现,允许异步广播Alive消息和limpHome消息。Alive消息指定网络上一个新的节点;ImpHome消息指定一个不再能工作的节点。NM通过传输NM消息来确定网络的内部状态,状态反映了NM当前运行时的信息。状态是分层级的,总的内部状态如图34所示:图34OSEK网络管理总的内部状态当系统复位时,NM进入NMOff状态;调用StartNM()使得NM进入NMOn状态;调用StopNM()使得NM进入NMShutdown状态。函数StartNM()和StopNM()是NM的核心API。StartNM()初始化一个NM逻辑环;StopNM()改变NM的状态为NMShutdown,执行清除操作,然后进入NMOff状态。其中,NMOn状态又有如下子状态(表3.1):表3.1NMOn的子状态NMOn存在两组并行子状态:NMInit、NMAwake、NMBusSleep和NMActive、NMPassive。NMOn的并行子状态如图35所示:图35NMOn的并行子状态当NM进入NMOn状态时,NMInit和NMActive是其缺省的初始化状态。NMInit是NM组件内部的瞬时初始化状态。完成初始化任务后,即转入NMAwake状态并保持,直到转到总线睡眠的条件被满足才转入NMBusSleep状态。当系统处于NMBusSleep状态时,一旦接收到NM消息,即转入NMInit状态。在并行状态图中,当系统处于NMActive状态时,NM通信正常运行;当SilentNM()被调用时,本地节点进入NMPassive状态,并停止参与逻辑环组成。为了返回NMActive状态,只需调用TalkNM()函数。系统执行完NMInit状态所要求的动作后,即转入NMActive状态。NMAwake状态有如下子状态(表3.2):表3.2NMAwake的子状态NMAwake的状态图如图36所示:图36NMAwake的状态图NMReset子状态是进入NMAwake状态后的缺省状态,NM在此时重置NM的通信链路、有关的计数器、参数等。初始化完成,NM将检查NM消息是否正确的收发,然后转入NMNormal状态并保持。一旦致命错误发生将切换到NMLimpHome状态。当系统处在NMLimpHome状态时,系统将会传输一个周期性的LimpHome消息。NM继续监听网络,以便确定消息传输是否已被恢复从而切换回NMNormal状态。汽车网络上的节点是多种多样的,可能在不同时刻运行、开关或激活,也有可能因节点或网络的故障而失效,因此网络的配置是变化的。NM维护当前网络的配置,并可以按要求为应用程序提供这些信息。NM识别两种配置:实际(Actual)配置和故障(LimpHome)配置,实际配置指示可访问的节点,而故障配置指示那些因故障退出逻辑环组成的节点。NM并不管理应用程序的模式(APPMODE),但是NM管理两个主要的操作模式,对应于内部状态的NMAwake(NMActive)和NMBusSleep。节点在NMAwake操作模式下,参与逻辑环组成并监视网络上所有同处于NMAwake模式的节点:如果一个节点进入NMBusSleep操作模式,就不再参与逻辑环上的NM通信。NM消息包含NM协议数据单元(NMPDU)。NMPDU在通信网络上传输,其结构如图37所示:图37NMPDU的结构地址域包含源消息地址和目的节点地址。控制域包含关于消息类型的信息,上述部分是必选部分,而数据域则是可选部分,它包含特定应用程序的数据。为了易于标识NM消息和其它消息,NM采用基地址(ID_Base)和窗口(Window_Mask)机制,类似于IP中的网络号与子网掩码。如果一条消息的ID满足:ID&WINDOW_MASK==ID_BASE则认为该消息是NM消息。假设有一个子网,网络配置中有4个节点,ID为1-4,如果采用8位消息地址和11位掩码,设定ID_BASE为0x700及WINDOW_MASK为0x7F8,那么来自集合{0x701,0x702,0x703,0x704}的任一条消息就是NM消息。报警器的设计:直接NM定义了5个报警器,并通过其控制逻辑环上消息的收发,进而监控网络配置和节点状态。比如节点从收到一个Ring消息到重传该Ring消息的间隔时间Ttyp就是报警器Ttyp控制的。详细定义如表3.3所示:表3.3NM所用报警器的定义逻辑环运行:调用StartNM()启动直接NM时,NM执行一系列初始化操作,然后广播第一个NM消息——Alive消息。Alive消息通知网络上的其它节点(如果有的话),当前节点加入逻辑环,并启动Ttyp报警器。当一个活动节点接收到一个Alive消息时,它将执行以下步骤:1.将发送节点作为在线节点添加到网络配置中;2.本地节点确定新节点是否为环中的逻辑后继节点。任何时候,如果数据链路层通知NM消息失败,则启动Ttx报警器,并增加计数器的值。如果计数器超过一个设定的阀值,NM将进入LimpHome状态。否则,当Ttx到时NM重传消息。逻辑环与802.5令牌环类似,在网络中只有一个节点控制Ring消息。当节点接收到Ring消息并且Ttyp定时器到时,发送该消息。NM启动时在Alive消息传输之后,网络处于瞬时状态,在该状态下总线上可能存在Alive消息和Ring消息,以及不同的情况:1.如果接收到Alive消息,如前所述节点更新配置和后继节点;2.如果在Tmax到时之前,节点接收到一个Ring消息,则取消定时器,并处理Ring消息;3.当Ttyp到时,本地节点发送Ring消息;4.如果在本地节点发送Ring消息到数据链路层和消息发送确认返回之间接收到一个Ring消息,节点将忽略该消息以确保Ring消息的唯一性。当接收到一个Ring消息时,本地节点检查NMPDU的目的地址,根据该域的有效值,采取如下操作:如果Ring消息的目的地址不是本地节点,取消Ttyp报警器,然后重启Tmax报警器。NM检查源地址、目的地址操作码,据此更新网络配置和切换状态;如果Ring消息的目的地址是本地节点,取消Tmax报警器,然后重起Ttyp报警器。如果源节点在配置信息中标识为离线,则更新为在线。当逻辑环中没有Alive消息传输,并且唯一的Ring消息沿逻辑环传递一周后,网络状态从瞬时状态切换到稳定状态。当网络处于瞬时状态时,数据中的数据无效。NM提供了检测离线节点的机制,如果Tmax到时则NM将进入NMReset状态试图重建逻辑环从而返回NMNormal状态,这样离线节点将被排除在新的逻辑环组成之外;NM还提供了检测节点被跳过的机制,如果一个节点被挑过,它立即发送一个Alive消息,以通知其它节点它仍然在线。当节点因故障进入LimpHome状态后,由报警器Terror控制周期性的发送LimpHome消息,当NM被停止,或总线进入睡眠,或接收到来自网络的一个有效消息时(意味着通信恢复),进入NMReset进行初始化。当节点收到其它节点的LimpHome消息时,更新LimpHome配置和Actual配置。
本文标题:OSEK直接网络管理(NM)规范
链接地址:https://www.777doc.com/doc-5869606 .html