CAN总线问题,CAN ID号与MSG ID号有什么不同

2021-01-17 08:23:32 字数 4838 阅读 4906

1楼:匿名用户

can id 是can帧中定义的数据,直接表现在物理层、数据链路层中。

而msg id就要看使用can通讯的应用层协议的定义了。在can的帧中,仅仅为data中的数据,没有实际意义,需要传送到上层的协议进行解释。

关于can总线中cob-id,can-id,node-id的差别

2楼:萍水e相逢

"addresses" in canopen

in canopen there are different types of addresses (ids):

cob id

the can object identifier addresses the message (= the can object) in the list of devices.

identical messages have the same cob id. the cob id entries in the object directory contain the

can identifier (can id) among others.

can id

the can identifier identifies can messages in the ***plete ***work. the can id is part of the

cob id in the object directory.

node id

the node identifier identifies the canopen devices in the ***plete ***work. the node id is part

of some predefined can ids (lower 7 bits).

3楼:匿名用户

cob-id=功能码+node-id;

其他参考:

dbt (distributor):提供动态分配can id(正式名称为cob-id,***munication object identifier)服务。这种服务是采用主从通讯模式(所以只有一个dbt主节点)来实现的。

所以cob-id应该就是can-id;

4楼:匿名用户

1、是can总线自动仲裁的。

2、同步这些也是can控制器硬件完成的。

可以多参考can总线的协议和技术资料。

can总线的id怎么设定的

5楼:胜利之

can总线id是包含在报文帧中的。

1、主要用作can总线的仲裁使用,所以一般来说网络上的每个节点(向总线上发送)的id应该有所不同。id值越低,报文优先级越高,在两组不同id报文同时上线时候,仲裁机制使得id值低的占用总线,id值高的退出。

2、id域可以是11位和29位,其值和含义可以由用户自定义,可以用作高层协议的管理,比如canopen等协议中把id的部分做为“源地址”,部分作为“目的地址”,这样can报文从哪来到哪去都清晰了。

3、id的另一个作用是配合接收方滤波使用,就是说一般接收的滤波器可以设定接收id的范围等,用于过滤掉不需要接收的信息,减轻cpu的处理负担。

can总线的id是什么意思

6楼:马路上的——甲

标识符.也就是一个can节点的地址或者说名字.

网络中识别某一节点的信息.

can总线通讯接收到的id不完全正确。求助!!!

7楼:匿名用户

总线没有那么智能,实际上a1 a2 a3三个节点都可以接收到总线上的数据,只是在接收的同时,三个节点硬件上的过滤器(一般通过软件在这个地方设置节点各自的arbitration id)会根据各自设置的arbitration id与总线上接收到的id做出比较,比较一致则对该帧信息作出回应,接收不一致则会舍弃该帧信息等待接收新的信息。

型号一样不代表id就是一样的。can总线各个节点之间进行通讯是根据各个节点不同id对数据帧进行接收反应的。总线上每个节点的id都是不同的,这个可以通过软件上编程设置,有些仪器上好像也可以自己通过手动写进去。

8楼:牛xx的小

can扩展帧最多支持29位id,那么你的id不能超过29,最大id也就是1fff fffff 发送时将id<<3,接收进再还原即可!

can 总线 上,如果2个节点id号一样,先后发送数据后怎么辨别总线上出现了两个相同id?

9楼:匿名用户

虽然这样的应用在can的规范里没有明确禁止,但是绝对不建议这样设计网络规划,这样会为后续带来的诸如升级等十分复杂的问题,也影响网络的稳定。

现在回答补充问题,首先你要明确id是赋给帧的,不是直接给节点的,只是某节点知道自己要接收某个id的帧。总线上的节点来说它只管取总线上他应该取的id的帧,并不管是谁发的。

即使是远程帧,发出请求的节点在获得相应时也仅仅是根据帧id判定,并不影响其他节点的接收。

再回到开始,首先这样的网络规划是非常不合理的,等于是网络上出现了a和b两个对某一帧功能相同的节点,完全没必要,如果你要更新某个信号,只需让a节点重新发送新的即可,如果更新的信号是通过b节点模块更新的,也只需先通过b向a发送一个帧更新某个信号,然后a再重新发送更新的帧。

如果你两个节点关联同一个帧,以后加入新节点和升级改动网络的时候会多一倍的工作量,而且再远程帧的响应中,同id多响应很容易出现问题。

总之一句话,我们要从总线的角度去看待can,不要从节点的角度出发

10楼:匿名用户

看了很多有关can总线的提问,都在纠结于“你发送我接收”这种通讯模式的讨论,这个实际上是对can总线很大的误解。

can总线通讯介质就是一高一低两条线,根据两线之间的电压差来判断当前发送的信号是0或1,所有节点都并联到这两根线上,从can的基本通讯来说(can 2.0b,或者iso11898),所有节点都是没有地址这个说法的,大家要发送信息,只需往两根线上加电压。从can的链路层可以看出,如果两个相同id的can帧同时发出来的话,那就只能看谁先发谁就有优先权。

单从这里是看不出这个can帧来自哪个节点的。

那为什么大家会看到很多can协议都会提到“地址”的概念呢?那是因为can 2.0a或b以及iso11898只定义了can的基本协议,对于很多应用场合是远远不够,所以各个厂家根据各个行业的应用又制定高层协议(也叫上层协议),就是在can 2.

0和iso11898的基础之上,对can的id重新进行了包装,比如sae j1939协议就对扩展帧的29位id进行重新定义,将其中其中两个字节定义为pf和ps,合成为pgn,还有一个字节定义为sa,就是源地址。这样j1939发出来的can帧里面就有所谓的源地址的说法,这样在楼主所说的这个情形就可以分辨出来这个can帧的**了。

另外在j1939协议的网络里,可以通过发送地址请求帧,让所有节点都发送一次地址声明帧,从而获得当前网络中有多少个节点存在,各自的地址是多少。如果有两个节点的地址有冲突,需要制定地址的仲裁机制来解决。

11楼:匿名用户

can总线上的每个节点发送的帧信息都有自己的id,接收节点会根据这个id来判断是不是给自己的信息。因为id是人为定义的,做系统时不会出现有相同id的情况。

12楼:匿名用户

没有看到实际情形不好说明白,一般想象应该是这样的:对于操作应该对象可以很方便的观察到电源的共给回路,把这个去除之外,余下的应该就是通讯线路,多观察

关于can总线的id号,远程帧,有一些问题,迷茫的要死,求高手解答

13楼:匿名用户

问题1: can数据域都是事先定义好了的,必然会包含can.bin的数据,node b只需要响应远程帧即可正确回应node a想要的数据了。

问题2: 不是节点优先级不同,而是数据帧的优先级不同,每个数据帧的仲裁域中包含id,优先级就是比较id的大小。两个节点同时发送数据帧和远程帧,也是靠正常的仲裁机制来判断发送顺序的,没有冲突。

如果某一时刻数据帧和远程帧的id相同,那么数据帧的优先级高于远程帧。

问题3: 问题2 已回答。

14楼:匿名用户

1.你可以不发远程帧,发数据帧,然后在数据部分指定要求的文件。或者发远程帧,但是远程帧id的谋几位规定为要求的文件号

15楼:小连

我们工作一年多,远程帧在实际是没有应用的。

三个问题结合到一起回答

首先说下什么是远程帧,最新iso11898 -2015版,frame that requests the tran**ission 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总线中有10台设备,如果其中有标识符id一样,会出现什么情况?

16楼:匿名用户

不会,标识符只是发送时的冲裁判断,后面的数据不一样,才能知道是哪一个设备发送出来的。不过现实不是这样用的,需要用不同的id表示不一样的含义,还要根据can数据的重要性来安排id.

can总线的ID掩码有什么作用,can总线的ID是什么意思

1楼 张 通过设置can过滤器 可以使can端口只接收符合规定的的can数据包 这样就能将can总线划分成若干网段用于支持不同应用 例如 节点a接受前四位为1010的数据,即id 1010 x的数据。使用掩码可屏蔽后七位。 can总线的id是什么意思 2楼 马路上的 甲 标识符 也就是一个can节点...

can总线协议定义的介质访问控制方式有什么特点

1楼 匿名用户 介质访问控制方式,也就是信道访问控制方法,可以简单的把它理解为如何控制网络节点何时发送数据 如何传输数据以及怎样在介质上接收数据。常用的介质访问控制方式有时分多路复用 tdm 带冲突检测的载波监听多路访问介质控制 c a cd 和令牌环 token ring 。 can总线协议定义的...

can总线发送数据的问题,can总线中,总结点发送数据,在什么情况下才能把数据发出去,如果发送的数据没人接受,又会发生什么呢??

1楼 胜利之 如果can发送节点处于 正常发送 模式 发送数据但是没有任何节点接收那么一定会发送失败。 一次发送失败不会产生错误中断,只是发送错误计数器值增加,can控制器重发还发不出去,发送错误计数器累加达到一定的值后才会产生相应的中断。 检测是否发送成功要么是通过发送中断或者发送状态位来的,不是...