关于CAN总线的ID号,远程帧,有一些问题,迷茫的要死,求高手解答
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于CAN总线的ID号,远程帧,有一些问题,迷茫的要死,求高手解答相关的知识,希望对你有一定的参考价值。
1.比如,A节点发送一个远程帧到B节点,要求B节点发送一个can.bin文件给A。
那么,我想知道,节点B收到了这个远程帧之后,他怎么知道节点A要的是can.bin文件呢?换句话说,节点A发送的远程帧,哪里表示了他想要的文件呢?
2.关于ID号,我在看链路层协议的时候,说的这个ID号代表的是报文优先级,然后每个节点都有自己的优先级,各不相同,如果有2个节点同时向总线发送数据帧、远程帧,就要进行仲裁。
可是,当我看到CANOPEN协议的时候,又对ID号进行了一些列的规定,什么目的MAC,源MAC等,这样感觉和优先级没有任何关系啊?感觉前后矛盾啊。
3.终极问题,数据帧和远程帧的ID号到底是什么?里面又有什么东西?
迷茫死了,求高手解答
问题2: 不是节点优先级不同,而是数据帧的优先级不同,每个数据帧的仲裁域中包含ID,优先级就是比较ID的大小。两个节点同时发送数据帧和远程帧,也是靠正常的仲裁机制来判断发送顺序的,没有冲突。如果某一时刻数据帧和远程帧的ID相同,那么数据帧的优先级高于远程帧。
问题3: 问题2 已回答。 参考技术A 1.你可以不发远程帧,发数据帧,然后在数据部分指定要求的文件。或者发远程帧,但是远程帧id的谋几位规定为要求的文件号本回答被提问者采纳 参考技术B
我们工作一年多,远程帧在实际是没有应用的。
三个问题结合到一起回答
首先说下什么是远程帧,最新ISO11898 -2015版,frame that requests the transmission of a dedicated Data Frame 请求专用数据帧传输的帧。A发送给B一帧遥控帧报文(同时C/D/E都会收到,但不作处理),B会发给A一帧数据帧报文。(帧的结构如下图,数据帧比遥控帧多一个数据段)
ID是一般是主机厂自定义,比如 $0-500是 数据帧ID 500-600是远程帧ID 600-700诊断ID(实际用不到远程帧,都是数据帧)。非同时发送时谁先发出,谁先发;同时发出时,ID越小优先级越高,无论是什么帧!
ID只是帧的一部分,数据段也是帧的一部分(如图,看帧的结构)。
帧里面具体是什么呢?是二进制数,比如11111111111,前三个1代表ID 后三个1代表数据。数据帧的三个1也是主机厂自定义的,如CAN矩阵。
详解CAN总线:CAN总线报文格式—帧间隔
CAN总线上传输的信息称为报文,当总线空闲时任何连接的单元都可以开始发送新的报文。
CAN通信是通过以下5种类型的帧进行的:
- 数据帧
- 遥控帧
- 错误帧
- 过载帧
- 帧间隔
另外,数据帧和遥控帧有标准格式和扩展格式两种格式。标准格式有 11 个位的标识符(Identifier: 以下简称 ID), 扩展格式有 29 个位的 ID。
各种帧的用途如下表所示:
近期打算写5篇文章,分别详细介绍这5种类型的CAN总线报文格式,本篇博文将详细讲解CAN帧间隔格式,创作不易,请各位朋友多多点赞、收藏、关注支持~
关注公众号:美男子玩编程,优先推送最新技术博文~
帧间隔是用于分隔数据帧和遥控帧的帧。数据帧和遥控帧可通过插入帧间隔将本帧与前面的任何帧(数据帧、遥控帧、错误帧、过载帧)分开,过载帧和错误帧前不能插入帧间隔。
帧间隔的构成如下图所示:
帧间隔由间隔段、总线空闲段和延迟传送段组成,具体说明如下所示:
- 间隔段:间歇由3个隐性位构成。在间歇期间,不允许任何节点发送数据帧或远程帧。唯一可以执行的操作是通报超载状态;
- 总线空闲段:总线空闲时间长短不限。总线一经确认处于空闲状态,则任何节点都可以访问总线来传送信息。因另一帧正在传送而延期发送的帧是从间歇之后的第一位开始送出的。通过对总线进行检测,出现在总线空闲期间的显性位将被认为是帧起始;
- 延迟传送段:处于错误认可状态的节点完成其发送动作后,在被允许发送下一帧以前,它要在间歇之后送出8个隐性位。如果间歇期间执行了(由另一个节点引起的)发送动作,此节点将会变成正被发送的帧的接收器。
以上是关于关于CAN总线的ID号,远程帧,有一些问题,迷茫的要死,求高手解答的主要内容,如果未能解决你的问题,请参考以下文章