gstreamer 获取帧数据_CAN基础内容详解(四)——数据链路层

CAN

协议

基础内容4

e4687461d5478ad123fe17a787b65c19.png

CAN总线的报文帧共分为数据帧、远程帧、错误帧、过载帧和帧间隔5种类型

数据帧:用于发送节点向接收节点传送数据,是使用最多的帧类型。

远程帧:用于接收节点向某个发送节点请求数据。

错误帧:用于当某节点检测出错误时向其他节点通知错误的帧。

过载帧:用于接收节点向发送节点通知自身接收能力的帧。

帧间隔:用于将数据帧或远程帧与前面的帧分离的帧。

1

数据帧

数据帧是使用最多的帧,它由7个不同的位场组成:帧起始、仲裁场、控制场、CRC场、应答场、帧结尾。其中根据仲裁段ID码长度的不同,分为标准帧和扩展帧。数据场的长度可以为0。

0b9e6ad2552586ae11860f966e2a4255.png

1、帧起始和帧结束

帧起始和帧结束用于界定一个数据帧,无论是标准数据帧还是扩展数据帧都包含这两个段。

帧起始标志着数据帧和远程帧的起始,由一个单独的显性位组成。总线空闲时,发送节点发送帧起始,其他接收节点同步于该帧起始位。

帧结束由7个连续的隐形位组成。

2、仲裁段

如果多个节点同时发送数据时该怎么办呢?CAN-bus是如何解决总线竞争的问题呢?

该问题由仲裁段给出答案。

CAN-bus并没有规定节点的优先级,但通过仲裁段帧ID规定了数据帧的优先级。根据CAN2.0标准版本的不同,帧ID分为11位和29位两种。

3df0dbf27e9ddb6ac624b15b15559e3b.png

总线仲裁

CAN控制器在发送数据的同时监测数据线的电平是否与发送数据对应电平相同,如果不同,则停止发送并做其他处理。

0b893d280048936338cbc85589561c9c.png

1)假设节点A、B和C都发送相同格式相同类型的帧,如标准格式数据帧,它们竞争总线的过程是:

e488170f6d4e108901fd1950f10dd5c3.png

从该分析过程得出结论是:帧ID值越小,优先级越高;

2)对于同为扩展格式数据帧、标准格式远程帧和扩展格式远程帧的情况同理。

3)由于数据帧的RTR位为显性电平,远程帧的RTR位为隐性电平,所以帧格式和帧ID都相同情况下,数据帧的优先级比远程帧优先级高:

a6ed2069899191b33824e751e9df100d.png

节点B仲裁失败退出发送,进入只听模式;

节点A获得总线,继续发送剩余数据。

4)由于标准帧的IDE位为显性电平,扩展帧的IDE位为隐性电平,对于前11位ID相同的标准帧和扩展帧,标准帧优先级比扩展帧高。

ee29a662f8d848ff8db30f7d5da49b6a.png

当发送IDE位时,由于线与的原理,总线上出现显性电平:

节点B仲裁失败,进入只听模式。

节点A获得总线,继续发送剩余数据。

3、控制段

控制段共6位,标准帧的控制段由扩展帧标志位IDE、保留位r0和数据长度代码DLC组成;扩展帧控制段则由IDE、r1、r0和DLC组成。

4932c7cbcd562d665ee03f5410aec783.png

4、数据段

一个数据帧传输的数据量为0~8个字节,这种短帧结构使得CAN-bus实时性很高,非常适合汽车和工控应用场合。

206ebe3c5894175c2f670ad3fd47e227.png

5、CRC段

CAN-bus使用CRC校验进行数据检错,CRC校验值存放于CRC段。CRC校验段由15位CRC值和1位CRC界定符构成。

84b54afa449a0a3b9f56bf4472ea4fba.png

6、ACK段

当一个接收节点接收的帧起始到CRC段之间的内容没发生错误时,它将在ACK段发送一个显性电平。

158c727f7c9f6244c6851c74b264f263.png

2

远程帧

一个节点可以向另一个指定的节点发送远程帧,以要求获取数据。

与数据帧相比,远程帧结构上无数据段,由6个段组成,同理分为标准格式和扩展格式,且RTR位为1(隐性电平)。

20865a99566ccf6564b711a81900496a.png

数据帧与远程帧的区别如下:

79553ed81b9e4ae8a55ee26fe70039d0.png

3

错误帧

尽管CAN-bus是可靠性很高的总线,但依然可能出现错误;CAN-bus的错误类型共有5种。

CAN-bus错误类型:

1、CRC错误

发送节点计算得到的CRC值与接收到的CRC值不同时发生错误

2、应答错误

发送节点在ACK阶段没有接收到应答信号时发生该错误

3、位发送错误

发送节点在发送时发现总线电平与发送电平不相同时发生该错误

4、位填充错误

通信线缆上传输信号违反“位填充”规则时发生该错误

5、格式错误

传输的数据帧格式与任何一种合法的帧格式不符时发生该错误

当出现5种错误类型之一时,发送或接收节点将发送错误帧。错误帧的结构如下,其中错误标识分为主动错误标识和被动错误标识。

36b6c46c5e55c486771e5fd897d0ff9a.png

主动错误标识由6个显性位组成,这违反了“位填充”规则。可以理解为当一个节点发现通信错误时,它将会主动将帧彻底破坏掉,让其他节点都知道它接收出错了。

为防止自身由于某些原因导致无法正常接收的节点一直发送错误帧,干扰其他节点通信,CAN-bus规定了节点的3种状态及其行为。

6b5737766b86b5abe723b8a243074139.png

【REC表示接收错误计数器,TEC表示发送错误计数器,复位时两者都被清0。】

主动错误:设备正常参与总线通信,检测到错误时发送主动错误标识。

被动错误:设备正常参与总线通信,检测到错误时发送被动错误标识。

总线关闭:数据帧的收发都被禁止。

4

过载帧

 当某个接收节点没有做好接收下一帧数据的准备时,将发送过载帧以通知发送节点;过载帧由过载标志和过载帧界定符组成。

过载帧结构:

aa22e4be2d3ddc8dead0f522f548d92d.png

由于存在多个节点同时过载且过载帧发送有时间差问题,可能出现过载标志叠加后超过6个位的现象。

c5692b238eb891ef9bd694ec111453f5.png

5

帧间隔

帧间隔用于将数据帧或远程帧和他们之前的帧分离开,但过载帧和错误帧前面不会插入帧间隔。

fd36dced450808fb8bbdfe30985e10ce.png

1、帧间隔过后,如果无节点发送帧,则总线进入空闲。

86b54b5ec7da0905997b73c1f2119ab8.png

2、帧间隔过后,如果被动错误节点要发送帧,则先发送8个隐性电平的传输延迟,再发送帧。

f480e4b115c425a00b62e091cd040e75.png

保证主动错误节点优先发送,避免被动错误节点因硬件故障干扰整个网络。

6

总结

 CAN-bus整个链路层处理数据的流程是:

55dae6a261dd7480067b97b3242338d7.png

在收发报文的过程中,收发错误计数器会根据错误类型和节点状态自动增减计数,如下:

1、复位时将错误计数器初始化为0

2、检测到一次失败的传输,接收错误计数器REC加1

3、REC加8

4、成功收到一帧报文,REC减1

5、在发送时检测到错误,发送错误计数器TEC加8

6、成功发送一帧报文,TEC减1

7、如果TEC小于127,TEC加8

8、如果TEC大于255,从CAN-bus断开连接。

END

往期文章

通讯协议

EtherCAT协议基础知识(Part 1)

IO-Link—为工业物联网提供底层数据基础(Part 1)

EtherNET/IP协议基础知识(Part 1)||附视频讲解

Profinet协议基础知识(一)

大批量应用的EtherCAT IO方案(一)

操作指南

SoM IoT多协议模块与西门子PLC S7-1200通讯测试指南(上)

KEBA控制器通过NT50连接西门子PLC操作指南

思泰CANopen IO模块基本通信测试(Part 1)

如何提高INtime运行平台实时性

以太网分析仪测试举例(一)-EtherCAT抖动测试

行业前沿

Soc-e在FPGA上为任务关键型应用量身定制的IEEE 1588感知以太网交换机

走近SoC-e——TSN(时间敏感网络)的先驱和幕后推手

IO-Link助力工厂设备数字化智能化升级(上)

INtime-可与Windows在同个PC运行的实时操作系统(上)

- 关于虹科工业通讯 -

虹科是一家在工业自动化领域,特别是工业总线通讯行业经验超过10年的高科技公司。虹科工业通讯事业部与世界知名的工业通讯专家【PEAK-System,Hilscher,Kunbus,SYS TEC,Koenig-Pa,Port,Copa-data,TenAsys,SoC-e、RELYUM】等深度合作,提供业内顶尖水平的工业总线协议软硬件解决方案,协议类型包含【CAN、CANopen、EtherCAT、PROFIBUS、PROFINET、EtherNET/IP、TSN】等,产品类型包含代码、软件、芯片、板卡、模块等。虹科工业通讯以客户需求为导向,以技术能力为基础,为国内企业提供最适合的产品和最满意的服务。特别是在工业4.0的大环境下,虹科工业通讯与时俱进,推出了TSN(时间敏感网络)的解决方案,后者将在推动万物互联的潮流中扮演着如高速公路般的连接作用。

35e77d85c2bdd623785e6a923b18244c.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值