【摘要】:DeviceNet的应用层规范详细定义了有关连接、报文传送和数据分割等方面的内容。DeviceNet不仅允许预先设置或取消连接,也允许动态建立或撤销连接,这使通信具有更大的灵活性。DeviceNet用连接标识符将优先级不同的报文分为4组。DeviceNet所定义的4个报文组见表7-2。表7-2 DeviceNet的报文分组MAC ID为DeviceNet上的每一个节点分配一个整数标识值,用于在网络上识别这一个节点。
DeviceNet的应用层规范详细定义了有关连接、报文传送和数据分割等方面的内容。
1.DeviceNet的连接和报文组
DeviceNet是基于“连接”的网络,网络上的任意两个节点在开始通信之前必须事先建立连接,这种连接是逻辑上的关系,并不是物理上实际存在的。在DeviceNet中通过一系列参数和属性对连接进行描述,如该连接所使用的标识符(即DeviceNet数据帧中的11bit标识符),该连接传送报文的类型、数据长度、路径信息的产生方式、报文传送频率和连接的状态等。DeviceNet不仅允许预先设置或取消连接,也允许动态建立或撤销连接,这使通信具有更大的灵活性。
在DeviceNet中,每一个连接由一个11bit的连接标识符(Connection ID,CID)来标识,该11bit的连接标识符包括了媒体访问控制标识符(MAC ID)和报文标识符(Message ID)。DeviceNet用连接标识符将优先级不同的报文分为4组。连接标识符属于组1的报文优先级最高,通常用于发送设备的I/O报文;连接标识符属于组4的报文优先级最低,用于设备离线时的通信。DeviceNet所定义的4个报文组见表7-2。
表7-2 DeviceNet的报文分组
MAC ID为DeviceNet上的每一个节点分配一个整数标识值,用于在网络上识别这一个节点。MAC ID为6bit二进制数,可标识64个节点。6bit的MAC ID从0到63,通常由设备上的拨码开关设定。MAC ID有源和目的之分。源MAC ID分配给发送节点,报文组1和组3需要在标识区内指定源MAC ID;目的MAC ID分配给接收设备,报文组2允许在标识区的MAC ID部分指定源或目的MAC ID。
Message ID(也可称为报文ID)用于标识一个连接所使用的通信通道。Message ID是在特定端点内的报文组中识别一个报文。用Message ID在特定端点内单个报文组中可以建立多重连接。Message ID的位数对不同的报文组是不一样的,组1为4bit(16个信道),组2为3bit(8个信道),组3为3bit(8个信道),组4为6bit(64个信道)。
(1)报文组1
在组1的传输中,总线访问优先权被均匀地分配到网络的所有设备上。当两个或多个组1报文进行CAN总线访问仲裁时,小数字的组1报文ID值的报文将赢得仲裁,并获得总线访问权。
报文组1标识符分配见表7-3。
表7-3 报文组1标识符分配
(续)
(2)报文组2
在组2内,MAC ID可以是发送节点的MAC ID(源MAC ID),也可以是接收节点的MAC ID(目的MAC ID)。当通过组2建立连接时,端点将确定是源MAC ID还是目的MAC ID。当两个或多个组2传输数据进行CAN总线仲裁时,其MAC ID数值较小的报文将获得总线访问权。报文组2标识符的分配见表7-4。
表7-4 报文组2标识符分配
(3)报文组3
在组3中,报文ID描述了由一个特定端点交换的各种组3报文。动态建立的显式报文连接在组3传输,并将5(响应)和/或6(请求)置于CAN标识区的组3报文ID部分。这些报文被认为是未连接显式报文。未连接显式报文由未连接报文管理器(UCMM)进行处理。报文组3标识符的分配见表7-5。
表7-5 报文组3标识符分配
在组3的传输中,总线访问优先权将均衡地分配给网络中的所有节点。当两个或多个组3报文接受CAN总线访问仲裁时,组3报文ID值较小的报文将赢得仲裁,并获得总线访问权。
(4)报文组4
在组4中,报文ID 2C~2F将全部用于离线连接组报文。报文组4标识符的分配见表7-6所示。
表7-6 报文组4标识符分配
未连接显式报文建立和管理显式报文连接。通过发送一个组3报文(报文ID值设置成6)来指定未连接的请求报文。对未连接显式请求的响应将以未连接响应报文的方式发送。通过发送一个组3的报文(报文ID值设置成5)来指定未连接响应报文。
UCMM负责处理未连接显式请求和响应。UCMM需要一台设备将未连接显式请求报文CAN标识符从所有可能的源MAC ID中筛选出来。
显式报文连接是无条件的点对点连接。点对点连接只存在于两台设备之间。请求打开连接(源发站)的设备是连接的一个端点,接收和响应这个请求的模块是另一个端点。
动态I/O连接是通过先前建立的显式报文连接的连接分类接口而建立的。
2.DeviceNet的报文
DeviceNet定义了两种报文:I/O报文和显式报文。
(1)I/O报文(I/O Message)
I/O报文适用于实时性要求较高和面向控制的数据,它提供了在报文发送过程和多个报文接收过程之间的专用通信路径。I/O报文对传送的可靠性、送达时间的确定性及可重复性有很高的要求。I/O报文的格式如图7-7所示。
图7-7 I/O报文的格式
I/O报文通常使用优先级高的连接标识符,通过一点或多点连接进行信息交换。I/O报文数据帧中的数据场不包含任何与协议相关的位,仅仅是实时的I/O数据。连接标识符提供了I/O报文的相关信息,在I/O报文利用连接标识符发送之前,报文的发送和接收设备都必须先进行设定,设定的内容包括源和目的对象的属性以及数据生产者和消费者的地址。只有当I/O报文长度大于8B(最大尺寸),需要分段形成I/O报文片段时,数据场中才有1B供报文分段协议使用。I/O连接检查连接对象的produced_connection_size的属性。如果pro-duced_connection_size的属性大于8B,那么使用分段协议。
分段协议位于数据区的一个单字节中,报文分段格式如图7-8所示。
图7-8 报文分段的格式
其中,分段类型表明是首段、中间段,还是最后段的发送;分段计数器标志每一个单独的分段,这样接收器就能够确定是否有分段被遗失。如果分段类型是第一个分段,每经过一个相邻连续分段,分段计数器加1;当计数器值达到64时,又从0值开始。
I/O报文有时也称为隐式报文,由于它的数据域中常常不包含协议信息,因此节点处理这些报文所需的时间大大缩短。I/O报文的一个例子是控制器将输出数据发送给一个I/O模块设备,然后I/O模块按照它的输入数据回应给控制器。
(2)显式报文(Explicit Message)
显式报文适用于设备间多用途的点对点报文传递,是典型的请求-响应通信方式,常用于上传/下载程序、修改设备组态、记载数据日志,以及作趋势分析和诊断等。其结构十分灵活,数据域中带有通信网络所需的协议信息和要求操作服务的指令。显式报文利用CAN的数据区来传递定义的报文,显式报文的格式如图7-9所示。
含有完整显式报文的传送数据区包括报文头和完整的报文体两部分。如果显式报文的长度大于8B,则必须在DeviceNet上以分段方式传输。一个显式报文的分段包括报文头、分段协议和分段报文体三部分。
图7-9 显式报文的格式
1)报文头。显式报文的CAN数据区的0号字节指定报文头,其格式如图7-10所示。
(www.chuimin.cn)
图7-10 报文头的格式
其中,Frag(分段位)指示此传输是否为显式报文的一个分段;XID(事务处理ID)表明该区应用程序用以匹配响应和相关请求,该区由服务器用响应报文简单回复;MAC ID包含源MAC ID或目的MAC ID。
接收显式报文时,须检查报文头内的MAC ID区。如果在连接ID中指定目的MAC ID,那么必须在报文头中指定其他端点的源MAC ID;如果在连接ID中指定源MAC ID,那么必须在报文头中指定接收模块的目的MAC ID。
2)报文体。报文体包含服务区和服务特定变量。报文体的格式如图7-11所示。
图7-11 报文体的格式
报文体指定的第一个变量是服务区,用于识别正在传送的特定请求或响应。服务区内容如下:
R/R——服务区的最高位。该值决定了这个报文是请求报文还是响应报文。
服务代码——服务区字节低7位值,表示传送服务的类型。
报文体中紧接服务区之后的是正在传送的服务特殊类型的详细报文。
3)分段协议。显式报文连接检查要发送的每个报文的长度。如果报文长度大于8B,那么就使用分段协议。如果传输的是显式报文的一个分段,那么该数据区包含报文头、分段协议以及报文体分段。分段协议用于大段显式报文的分段转发及重组。
显式报文分段协议位于数据区的一个单字节中,其格式如图7-12所示。
图7-12 分段协议的格式
其中,分段类型表明是首段、中间段,还是最后段的发送;分段计数器标志每一个单独的分段,这样接收器就能够确定是否有分段被遗失。如果分段类型是第一个分段,每经过一个相邻连续分段,分段计数器加1;当计数器值达到64时,又从0值开始。分段协议在显式报文内的位置与在I/O报文内的位置是不同的,显式报文位于1字节,I/O报文位于0字节。
每台设备必须能解释每个显式报文的含义,实现它所请求的任务,并生成相应的回应。为了按通信协议解释显式报文,在真正要用到的数据上必须有较大一块的附加量。这种类型的报文在数据量的大小和使用频率上都是非常不确定的。显式报文通常使用优先级低的连接标识符,并且该报文的相关信息直接包含在报文数据帧的数据场中,包括要执行的服务和相关对象的属性及地址。
3.UCMM服务
UCMM提供动态建立显式报文连接。UCMM能支持未连接显式报文的接收和处理。UC-MM处理两种服务:一是打开显式报文连接,建立一个显式报文连接;二是关闭连接服务代码,删除一个连接对象并解除所有相关资源。
此外,UCMM可以分配信息ID、出错响应和设备侦听信息。
与UCMM相关的术语有:
1)具有UCMM功能的设备:指支持未连接报文管理器的设备。
2)仅限组2服务器:指无UCMM功能,必须通过预定义主/从连接组建立通信的从机(服务器),至少必须支持预定义主/从显式报文连接。仅限组2设备只能发送和接收预定义主/从连接组所定义的标识符。
3)仅限组2客户机:指仅作为组2客户机对组2服务器进行操作的设备。仅限组2客户机为仅限组2服务器提供UCMM服务的功能。
在设备间建立连接的一般规则是先建立未连接显式报文,再建立显式报文连接,最后建立I/O连接。
4.DeviceNet的I/O数据触发方式
DeviceNet支持多种I/O数据触发方式,如位-选通(Bit-Strobe)、轮询(Poll)、状态改变(Change of State,COS)和循环(Cyclic)等。
(1)位-选通
在位选通方式下,利用8B的广播报文,64个二进制位的值对应着网络上64个可能的节点,通过位的标识,指定要求响应的从设备。主站通过位选通命令向已在主站扫描表中具有MAC ID的每个从站发送一位输出数据,表示是否需要它发送数据,选中的从站向主站返回最大8B输入数据和/或状态信息。位选通命令报文包含一个8B即64bit数据串,一个输出位对应一个网络上的MAC ID(0~63),如图7-13所示。
在图7-13中,主站给它的5个从站分别发送1bit数据。注意从站的MAC ID并不需要连续,不管从站设备的数量和它们的MAC ID是多少,整个64bit都一起发送。只有配置为消费位选通命令的从站接受该命令。
·最低位字节的低位分配给MAC ID=0。
·最高位字节的高位分配给MAC ID=63。
(2)轮询
位选通命令和响应报文在主站和从站之间只能传送少量I/O数据,而轮询命令和响应报文则可在主站和它的轮询从站之间传送任意数量的I/O数据。在轮询方式下,I/O报文直接依次发送到各台从设备(点对点)。轮询命令是从主站发往从站的命令和输出数据。响应是从站接到主站的轮询命令后的回答。
图7-13 DeviceNet选通命令
1)轮询命令报文。轮询命令可将任意数量的输出数据(整体或分段)发送到目的从站设备。而从站设备则能够执行以下一种或所有动作:
·忽略轮询命令(或许从站设备是选通设备,或没有分配轮询)。
·消费轮询命令及其输出数据。
·消费轮询命令,把它作为一个触发器,但忽略其输出数据。
并非所有DeviceNet设备都必须使用轮询输出数据。
2)轮询响应报文。轮询响应可由从站向主站返回任意数量(分段或不分段)的输入数据和/或状态报文。图7-13中的轮询应用由1个主站和5个从站组成。PLC扫描器(主站)将轮询传感器,以获得输入报文,并向执行机构发送输出控制数据。
(3)循环
此方式适用于一些模拟设备,可以根据设备信号发生的快慢,灵活设定循环进行数据通信的时间间隔,这样就可以大大降低对网络带宽的要求。
循环可降低不必要的通信流和包处理。但它只保证在模拟量输入发生变化的可能时间内进行检测,而不是不断地快速采样。
(4)状态改变
此方式用于离散的设备,使用事件触发方式,当设备状态发生改变时,才发生通信,而不是由主设备不断地查询来完成。
采用状态改变方式,设备仅在其检测的状态发生变化时才发送数据。为了保证它的数据接受对象知道它目前所处的工作状态,DeviceNet提供一种可调整的后台运行的节拍方式。设备在状态改变和节拍周期到时就发送数据,节拍的作用只是设备汇报它还在工作,没有被切除脱离网络。
后两种方式是利用主站或从站的状态改变或循环产生触发器来触发数据的传递,有主站的状态改变和从站的状态改变的区分。状态改变/循环报文可以是有应答的,也可以是无应答的。
预定义主/从站连接组可支持主/从站之间的状态改变或循环数据产生。状态改变和周期性轮询的默认设置都是应答交换式的,保证发送设备确定接收设备得到了数据。
多种可选的数据交换形式,均可由用户自由地指定。选择合理的数据通信方式可以明显地提高网络利用效率。
相关推荐