您的位置:控制工程论坛网论坛 » 现场总线 » CAN和DeviceNet总线

jnzhlf

jnzhlf   |   当前状态:在线

总积分:2642  2024年可用积分:0

注册时间: 2006-12-25

最后登录时间: 2012-12-29

空间 发短消息加为好友

CAN和DeviceNet总线

jnzhlf  发表于 2008/11/29 22:44:30      900 查看 0 回复  [上一主题]  [下一主题]

手机阅读

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和自动重试在内的多种错误检测和故障限制方法。这些对应用来说高度透明的方法,可以防止故障节点破坏(中断)网络。
1楼 0 0 回复