1.比如,A节点发送一个远程帧到B节点,要求B节点发送一个can.bin文件给A。
那么,我想知道,节点B收到了这个远程帧之后,他怎么知道节点A要的是can.bin文件呢?换句话说,节点A发送的远程帧,哪里表示了他想要的文件呢?
2.关于ID号,我在看链路层协议的时候,说的这个ID号代表的是报文优先级,然后每个节点都有自己的优先级,各不相同,如果有2个节点同时向总线发送数据帧、远程帧,就要进行仲裁。
可是,当我看到CANOPEN协议的时候,又对ID号进行了一些列的规定,什么目的MAC,源MAC等,这样感觉和优先级没有任何关系啊?感觉前后矛盾啊。
3.终极问题,数据帧和远程帧的ID号到底是什么?里面又有什么东西?
迷茫死了,求高手解答
我们工作一年多,远程帧在实际是没有应用的。
三个问题结合到一起回答
首先说下什么是远程帧,最新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总线的ID号,远程帧,有一些问题,迷茫的要死,求高手解答
问题1: CAN数据域都是事先定义好了的,必然会包含can.bin的数据,Node B只需要响应远程帧即可正确回应Node A想要的数据了。问题2: 不是节点优先级不同,而是数据帧的优先级不同,每个数据帧的仲裁域中包含ID,优先级就是比较ID的大小。两个节点同时发送数据帧和远程帧,也是靠正常的仲裁机制来判断...
CAN总线节点ID相关问题,远程帧啊,数据帧啊
问题一。假设A点为接收方,如果我设置了ID滤波,那么不是所有的ID都能接收,只有符合我的需要的ID才能接收,那不就相当ID连带了目标MAC,而却每个节点ID都是不一样的,根据ID值你就能知道是哪个节点发送过来的数据了。这与接受数据时需要仲裁并不矛盾啊。问题四很简单解决。在B节点你设置报文滤波就行...
大神,你好!我有几个关于CAN总线的问题问你,比如说的总线电平值怎么确定...
CAN总线是一种双绞线,他的电平值是一种差分电压,也就是说总线电平值是双绞线两根线电平的差值,一般制定CAN协议的时候会定义好,如果差分电压高于某个值(自己定义)就表示当前总线是显性状态,用逻辑0表示。只要总线空闲,任何单元都可以开始发送报文。如果2 个或2 个以上的单元同时开始传送报文,那么...
CAN 总线 上,如果2个节点ID号一样,先后发送数据后怎么辨别总线上出现...
CAN总线通讯介质就是一高一低两条线,根据两线之间的电压差来判断当前发送的信号是0或1,所有节点都并联到这两根线上,从CAN的基本通讯来说(CAN 2.0B,或者ISO11898),所有节点都是没有地址这个说法的,大家要发送信息,只需往两根线上加电压。从CAN的链路层可以看出,如果两个相同ID的CAN帧同时...
怎样为CAN 总线上的节点分配地址
CAN报文里是有ID场的,标准帧11位,扩展帧29位, 我设计时使用的是扩展帧 CAN是以数据包方式发送数据的,通常,一包数据13字节,第一个字节是控制上用的,比如定义了远程帧还是别的帧,定义了接收数据的字节数,接下来就是ID位了,共4字节,余下的8字节是数据用。以上可以认为是CAN2.0底层通信...
CAN总线通信中,如果是多节点通信。多通信中遇到了问题。问题在补充中...
不是这么简单说说的。回到你的问题,你说的主机请求数据,在CAN中只能是远程帧(一个远程标志位为1,数据场为空的帧),当这个帧出现在总线上时,拥有这个ID数据的节点就要发送这个同ID的完整帧(远程帧标志位为0)。但是只能有一个节点接受这个远程帧的请求。这里强调一个概念,同一个ID的帧只能由...
can通讯,两个ecu同一时间发两个报文,谁先发?
2. 同理,如果在同一时刻,具有相同格式,且具有相同ID的数据帧与远程帧争夺总线控制权,那么数据帧必定胜出。因为RTR显性表示数据帧,隐性表示远程帧。今天又发现了一个问题,前几天也是在21IC的论坛上看见有这样一条帖子,上面说如果有2个节点具有相同的ID,同时向总线上发送不同的数据帧,那么这两...
CAN总线协议的概述
CAN总线的工作原理CAN总线使用串行数据传输方式,可以1Mb\/s的速率在40m的双绞线上运行,也可以使用光缆连接,而且在这种总线上总线协议支持多主控制器。 CAN与I2C总线的许多细节很类似,但也有一些明显的区别。当CAN总线上的一个节点(站)发送数据时,它以报文形式广播给网络中所有节点。对每个节点来说,...
求CAN总线调试成功的代码,芯片是SJA1000和TJA1050
发送cansend()发送子程序负责节点报文的发送,由CAN控制器SJA1000独立完成,将命令寄存器里的发送请求标志置位,即可发送SJA1000发送缓冲区中的报文。void cansend(unsigned char ID ,char*xdata) \/*该子函数完成一帧数据的发送*\/ {while ( (status&0x10)>> 4 == 1)NOP; \/*检查上次请求发送是否...
51单片机运用can总线的通信协议 急!!!
标识符ID用来描述数据的含义而不用于通信寻址,CAN总线的帧是没有寻址功能的。标识符还用于决定报文的优先权,ID值越低优先权越高,在竞争总线时,优先权高的报文优先发送,优先权低报文退出总线竞争。CAN总线竞争的算法效率很高,是一种非破坏性竞争。 ·控制域:为数据长度码 (DLC3-DLC0),表示数据域中数据的字节数...