CN NMT状态机由通用初始化NMT状态机管理。CN NMT状态机是超状态NMT_GS_POWERED和NMT_GS_COMMUNICATING的子状态。由这些状态定义的转换在CN NMT状态机中应是有效的。
CN的NMT状态机如图2-29所示。
1.状态
(1)NMT_CS_NOT_ACTIVE
NMT_CS_NOT_ACTIVE是一个非持久性状态,该状态允许一个启动中的节点识别当前的网络状态。
CN应监视网络通信。节点不应被授权自主发送数据帧。在NMT_CS_NOT_ACTIVE状态下,不允许传统以太网帧的传输。节点应能够识别通过ASnd发送的NMTReset命令。
NMT_CS_NOT_ACTIVE到NMT_CS_PRE_OPERATIONAL_1的状态转换由收到的SoA或SoC帧来触发。
NMT_CS_NOT_ACTIVE到NMT_CS_BASIC_ETHERNET的状态转换由SoC帧、Preq帧、Pres帧和SoA帧的超时来触发。
(2)NMT_CS_EPL_MODE
NMT_CS_EPL_MODE是一个超状态,不能通过单个NMTStatus值向网络发送。
(3)NMT_CS_PRE_OPERATIONAL_1
在NMT_CS_PRE_OPERATIONAL_1状态下,仅当获得MN通过SoA AsyncInvite命令的授权时,CN才发送一个帧。
在NMT_CS_PRE_OPERATIONAL_1状态下,MN可通过IdentRequest标识该节点。如有必要,CN应从配置服务器下载其配置数据。在CN完成其配置之前,如果MN不在NMT_MS_PRE_OPERATIONAL_1状态或离开NMT_MS_PRE_OPERATIONAL_1状态,则这两个过程可以被完全或部分地转移到NMT_CS_PRE_OPERATIONAL_2状态进行。
在NMT_CS_PRE_OPERATIONAL_1状态下,通信是耐冲突的。冲突通过CSMA/CD来解决。
NMT_CS_PRE_OPERATIONAL_1到后续状态的转换由收到的SoC帧来触发。
NMT_CS_PRE_OPERATIONAL_1状态下没有PDO通信。
(4)NMT_CS_PRE_OPERATIONAL_2
在NMT_CS_PRE_OPERATIONAL_2状态下,CN将等待配置的完成。
节点将会被MN通过Preq查询。节点收到的PDO数据可能是无效的,这些数据可能不同于PDO映射要求。
CN将忽略通过Preq从MN收到的PDO数据,以及通过Pres从MN和其他CN收到的PDO数据。
传输的Pres帧可不同于PDO映射要求。通过不设置RD标志来声明数据是无效的。
仅异步CN将不会被MN通过Preq查询,因此也不会通过Pres给出响应。
两种类型的CN都应响应经由SoA的AsyncInvite命令。如果没有MN的授权,在NMT_CS_PRE_OPERATIONAL_2状态下不允许有以太网帧的传输。
从NMT_CS_PRE_OPERATIONAL_2状态转换到NMT_CS_READY_TO_OPERATE的前提条件是收到一个NMTEnableReadyToOperate命令。当应用准备好运行时,就触发这个状态转换。
从NMT_CS_PRE_OPERATIONAL_2状态到NMT_CS_PRE_OPERATIONAL_1状态的转换是由错误识别触发的。
从NMT_CS_PRE_OPERATIONAL_2状态到NMT_CS_STOPPED状态的转换是由收到的NMT状态命令NMTStopNode触发的。
(5)NMT_CS_READY_TO_OPERATE
CN通过NMT_CS_READY_TO_OPERATE状态,通知MN其运行准备已经就绪。
该节点可以参与周期帧的交换。当MN通过Preq查询该周期节点时,该节点应通过Pres进行响应。
仅异步CN将不会被MN通过Preq查询,因此也不会通过Pres给出响应。
两种类型的CN都响应经由SoA的AsyncInvite命令。如果没有MN的授权,在NMT_CS_READY_TO_OPERATE状态下不允许有以太网帧的传输。
不管是否存在可用的有效的过程数据,RD标志都应被设置为0。
Pres有效载荷的长度应小于或等于配置的限制(对象NMT_CycleTiming_REC.PResActPayloadLimit_U16)。传输的数据应符合PDO映射定义的要求。
从NMT_CS_READY_TO_OPERATE状态到NMT_CS_OPERATIONAL状态的转换是由收到的NMT状态命令NMTStartNode触发的。
从NMT_CS_READY_TO_OPERATE状态到NMT_CS_PRE_OPERATIONAL_1状态的转换是由错误识别触发的。
从NMT_CS_READY_TO_OPERATE状态到NMT_CS_STOPPED状态的转换是由收到的NMT状态命令NMTStopNode触发的。
(6)NMT_CS_OPERATIONAL
NMT_CS_OPERATIONAL是CN的正常运行状态。
该节点可以参与周期帧的交换。当MN通过Preq查询该周期节点时,该节点应通过Pres进行响应。
仅异步CN将不会被MN通过Preq查询,因此也不会通过Pres给出响应。
两种类型的CN都响应经由SoA的AsyncInvite命令。如果没有MN的授权,在NMT_CS_OPERATIONAL状态下不允许有以太网帧的传输。
CN可以通过NMT防护机制监视其他节点。
通过Preq从MN收到的PDO数据,以及通过Pres从MN和其他CN收到的PDO数据,如果被CN应用选定,应由CN进行数据解释。
RD标志由应用设置。
如果PDO数据是无效的,允许临时清除RD标志。Pres有效载荷的长度应小于或等于配置的限制(对象NMT_CycleTiming_REC.PResActPayloadLimit_U16)。传输的数据应符合PDO映射定义的要求。
从NMT_CS_OPERATIONAL状态到NMT_CS_PRE_OPERATIONAL_2状态的转换是由收到的NMT状态命令NMTEnterPreOperational2触发的。
从NMT_CS_OPERATIONAL状态到NMT_CS_PRE_OPERATIONAL_1状态的转换是由错误识别触发的。
从NMT_CS_OPERATIONAL状态到NMT_CS_STOPPED状态的转换是由收到的NMT状态命令NMTStopNode触发的。
(7)NMT_CS_STOPPED
在NMT_CS_STOPPED状态下,很大程度上该节点处于被动状态。在系统仍处于运行状态时,可通过NMT_CS_STOPPED对一个选定的CN进行受控的关闭。
节点不再参与周期帧的交换,但仍然监视SoA帧。
节点不会被MN通过Preq查询。
在节点被MN通过Preq查询时,节点也不会通过Pres给出响应。
节点响应经由SoA的AsyncInvite命令。如果没有MN的授权,在NMT_CS_STOPPED状态下不允许有以太网帧的传输。
从NMT_CS_STOPPED状态到NMT_CS_PRE_OPERATIONAL_2状态的转换是由收到的NMT状态命令NMTEnterPreOperational2触发的。
从NMT_CS_STOPPED状态到NMT_CS_PRE_OPERATIONAL_1状态的转换是由错误识别触发的。
(8)NMT_CS_BASIC_ETHERNET
在NMT_CS_BASIC_ETHERNET状态下,节点可以根据IEEE802.3进行传统以太网通信。这时没有POWERLINK特定的网络通信控制,通过CSMA/CD冲突处理机制控制网络的访问。允许节点进行自主传输,适用任意一种传统以太网协议。
在NMT_CS_BASIC_ETHERNET状态下,CN可以传输ASnd帧。
当节点处于NMT_CS_BASIC_ETHERNET状态时,为了避免干扰POWERLINK网络通信,节点应能识别SoC、Preq、Pres和SoA帧。当收到这些帧时,CN应立即自主停止帧的发送,并转换到NMT_CS_PRE_OPERATIONAL_1状态。
下面介绍CN的NMT状态转换,每个状态转换在一定的条件下发生,如表2-11所示是对每一个状态转换的详细说明。
2.状态和通信对象之间的关系
表2-12给出了通信状态和通信对象之间的关系。仅当参与通信的设备处于合适的通信状态时,所列出的通信对象的服务才可以执行。
表中符号含义说明如下。
R:帧被接收。
R/S:帧被接收,触发状态转换。
T:帧被发送。
(T):只允许空的Pres帧。
X:帧数据被解释或发送。
(x)1:帧数据可被解释。
(x)2:通过复位RD标志,使数据无效。
(x)3:仅选定的NMT命令被接受,将导致状态转换,接收要求优于SoA的丢失。
x4:可以导致状态转换。
(x5):取决于协议支持。
—:没有帧处理。
3.与其他状态机的关系
MN NMT状态机通过NMT命令来控制CN NMT状态机。
NMT状态机的运行与周期状态机紧密相关。
NMT对象字典管理定义节点内部参数的条目,这些参数用于控制等时同步的POWERLINK周期。在等时同步的POWERLINK周期运行期间,这些内部参数是不能改变的。
各个OD条目的修改仅限于OD数据的处理,但不能立即影响控制当前POWERLINK周期的内部参数集。为了使POWERLINK周期相关的OD条目有效,应通过NMTResetConfiguration命令,或一个更强的NMT复位命令或硬件复位,将设备设置成NMT_GS_RESET_CONFIGURATION状态。
要求这类处理方法的OD条目通过附有valid on reset访问类型予以指示。