DeviceNet的数据链路层完全根据CAN规范和CAN控制器芯片实际特性来定义。CAN规范定义了两种总线状态,“显性”(逻辑0)和“隐性”(逻辑1)。任何发送器都可以将总线驱动为“显性”状态。没有发送器处于显性状态时,总线只能是隐性状态:WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
CAN定义了四种类型的帧:WWW_P※LCJS_COM-PLC-)技.术_网
l 数据帧 l 远程帧WWW_PL※CJS_COM-PLC-技.术_网
l 超载帧 l 出错帧 WWW_PLCJS_COM-PLC-技.术_网
DeviceNet使用数据帧传送数据。远程帧在DeviceNet中没有被使用,超载帧和出错帧则用于例外情况的处理。数据帧格式如图所示。WWW_P※LCJS_COM-PLC-)技.术_网
WWW_PL※CJS_COM-PLC-技.术_网
较高优先权的数据取得总线通信权WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
同以太网类似,DeviceNet在总线空闲时任何节点都可以尝试发送,这提供了网络固有的点对点的通信能力。当两个或多个节点同时想要访问网络时,非破坏性逐位仲裁机制会解决潜在的冲突,而不会损失数据或浪费带宽。比较而言,以太网所使用的冲突检测器,会导致丢失数据和带宽的浪费。发生冲突的两个节点必须回退并重新发送数据。 WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
WWW_PLCJS@_COM%-PLC-技.术_网
CAN使用唯一的、非破坏性逐位仲裁机制。CAN的这一特性使得在解决总线冲突(决定“胜者”时,不会因为要求优先权高的节点重发数据而损失总线的吞吐能力。WWW_PLCJS@_COM%-PLC-技.术_网
CAN使用逐位仲裁的方法解决冲突。CAN网络上所有接收器通过一个帧的起始位(由隐性转变为显性)同步。标识符和RTR(远程传送请求)位一起组成仲裁区,仲裁区是为了便于媒体访问。DeviceNet不使用RTR位,因此总线访问优先权也不将其考虑在内。当设备进行发送时,它要监视(接收)自己发送的内容,以确定两者是否一致,从而可以在发送时进行检测。在节点发送仲裁区时,如果发送了一个隐性位同时却接收到一个显性位,它就停止发送。同时进行发送的两个节点中,仲裁的胜者是具有较低值的11位标识符的节点。CAN还规定了具有29位标识符的数据帧格式,但DeviceNet没有使用该格式。 WW.W_PLC※JS_C,OM-PL,C-技.术_网
控制区包括两个固定位和一个4位的长度区。长度区可以是0-8中的任一个数字,表示数据区中的字节数。0-8字节的数据长度对于具有少量但必须频繁交换I/O数据的低端设备来说很理想。同时8个字节使简单设备可以灵活地发送诊断数据,或向驱动器发送速度基准和加速度值。P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
WWW_PLCJS@_COM%-PLC-技.术_网
CRC校验区是循环冗余校验字,CAN控制器用它来检测帧错误。校验字通过对它前面的位进行计算得到。ACK应答中的显性位表明除了发送者以外至少有一个接收器接受到报文。P.L.C.技.术.网——可编程控制器技术门户
CAN使用包括CRC和自动重试在内的多种错误检测和故障限制方法。这些对应用来说高度透明的方法,可以防止故障节点破坏(中断)网络。WW.W_PLCJS_COM-PLC-技.术_网
W1WW_P4LCJS_COM-PLC-技.术_网
——可——编——程——控-制-器-技——术——门——户
W1WW_P4LCJS_COM-PLC-技.术_网
图. CAN数据帧WWW.PLCJS.COM——可编程控制器技术门户