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