CAN-bus现场总线笔记

一、 现场总线CAN-bus

1.1 通信层次

        1、物理层:规定通信介质的物理特性,如电气特性和信号交换的解释。

        2、数据链路层:规定在介质上传输的数据为的排列和组织,如数据校验和帧结构。

        3、网络层:规定网络连接的建立、维持和拆除的协议,如路由和寻址

        4、传输层:控制两通信节点之间的数据传输,如数据重发、数据错误修复等。

        5、会话层:依靠底层的通信功能来进行数据的有效传递。

        6、表示层:将两个应用不同数据格式的系统信息转化为能共同理解的格式。

        7、应用层:最高层。在用户、软件、网络终端等之间进行信息交换。

        CAN-bus的规范定义了ISO规范中的物理层和数据链路层;一些国际组织定义了应用层,例如CiA组织的CANopen;也有一些用户根据需求自行设计应用层。

1.2 CAN-bus物理层

        CAN-bus使用两根电缆进行信号传输。这两根电缆的名称分别为CAN_H和CAN_L。采用“差分传输”传输方式。电缆上传输的电平信号只有两种可能,分别为显性电平和隐形电平,其中显性电平代表逻辑0,隐形电平代表逻辑1。

        当有多个节点同时连接在一根电缆上时,某个节点内部的开关闭合(输出显性电平)会将线路电平拉低。此时及时其他节点输出高电平(隐性电平),线路电平仍然为低。CAN控制器在发送的同时,会监听总线的当前电平是否与自己发送的电平一致,如果不一致则会进行相应的处理。如果不一致发生在仲裁域,就会迫使输出隐性电平的节点退出发送;如果发生在其他区域,则会出现触发错误。

        CAN-bus属于异步串行通信方式,异步串行通信方式的优点是减少了一根时钟线;缺点是各接收器的时钟不可能完全一致,总是会有偏差。CAN-bus规定信号的跳变沿即为同步信号,所以只要信号发生变化,节点时钟就会被同步。经过综合考虑后,CAN-bus的同步最大周期为5个位。但是因为传输的数据内容不可能都满足最长5个位就要变化一次,于是CAN-bus进一步进行了规范,如果连续的5个位是相同的,就要插入一个电平相反的位,这个额外被插入的位称为“填充位”。例如,要传输的数据中有0x00这个数据,其对应的二进制是0000 0000,那么该字节数据在传输时将被替换成0000 01000。接收方会自动过滤填充位。整个插入与过滤的过程都在CAN控制器中自动完成,用户的程序无需干预。

        光在媒介中传播时,如果遇到媒介密度有变化,例如光从空气中射入水中,则会发生反射和折射。电信号在电缆中的传播与光类似,只是电信号对电缆的阻抗比较敏感,当阻抗不连续或发生突变时,就会发生电信号的反射。消灭这种信号反射的方法是使传输电缆的阻抗保持连续,但是电缆总是有终点的,终点的阻抗肯定是突变的。为了使终点阻抗保持连续,CAN-bus规定要在电缆两端或一端接入匹配电阻,该电阻称为“终端电阻”。高速CAN-bus终端电阻的接法如下图所示。

1.3 CAN-bus数据链路层

1.31 数据帧

        目前使用最广泛的CAN-bus标准是V2.0版本,有CAN2.0A和CAN2.0B两个部分。这两个部分的主要区别在于仲裁区域的ID码长度不同:CAN2.0A为11位ID,称为标准帧;CAN2.0B为29位ID,称为扩展帧。这两种标准的设备一般不会再同一个物理网络中混合使用。

        数据帧由7个段组成,数据帧各段功能如下表所列。

数据帧各段的功能
段名段长度/位说明
帧起始1表示数据帧开始,由单个显性位构成
标准帧12表示该帧的优先级,由11位ID码和1位远程帧标志位(RTR)组成
扩展帧32

表示该帧的优先级,由29位ID码、1位替代远程帧请求位(SRR)、1位标志位扩展为(IDE)和1位远程帧标志位(RTR)组成

控制段6表示数据段长度的编码和保留位
数据段0~8数据段内容,每字节为8位,具体字节数在控制段中体现
CRC段2检查帧的传输错误,范围包括从帧起始到数据段的所有内容(不包括填充位)
ACK段2其他接收节点确认该帧被正常接收
帧结束7表示数据帧结束

        帧起始:表示数据帧的开始,由单个显性位构成,在总线空闲时才允许发送。所有节点必须同步与开始发送的数据帧的起始位。

        仲裁段:当多节点同时发送数据时,只要有任何一个节点发送显性位(逻辑0),线路就表现为显性状态,那么正在发送隐性位的节点就会发现电缆的电平状态与自己正在发送的电平状态不一致,它就会放弃总线的使用权。因此,在仲裁段发送显性电平的节点会比发送隐性节点的优先级高。也就是说,仲裁段中ID码值越小(逻辑0越多、越靠前),优先级越高。

        控制段:由6个位构成。标准帧有4位数据长度代码(DLC),IDE(数值为0)和保留位r0。

        数据段:一帧只能传送0~8字节数据,每字节为8位。

        CRC段:crc校验是由CAN控制器自动完成的。

        ACK段:发送节点在ACK段发送两个隐性位。接收节点会通过ACK段来确认之前的信息是否正常接收。如果没有填充错误、格式错误和CRC错误,则认为接收正常。接受正常的节点会在ACK的第一位发出一个显性位。根据ACK的状态,发送节点就能知道这帧数据是否传输成功。

        帧结束:由7个隐性位构成,用于表示该数据帧结束。

1.32 远程帧

        远程帧没有数据段,并且远程帧标志位(RTR)为1。

1.33 错误帧

        

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值