Ⅰ 假如CAN通讯为一主多从,且从节点MCU可变换,CAN通讯从节点ID怎么设置,CAN主节点怎么识别从节点ID
节点ID设置可以属于CAN应用层协议内容,而应用协议可以自行定义。
一、从节点的版ID如果要和MCU“不相关”,可权以又多种方式实现,ID事先装入EEPROM,或者用硬件的拨码开关来指示。
如果逻辑上复杂一些,可以做到ID自动分配,自动识别。
二、“如从主节点向从节点下载程序”——可以主节点同时向多个从节点发送数据(广播),也可以指向特定的ID发送(单个问答式)。
实际上主节点的数据发到总线上了,所有从节点都可以接收到的,至于如何接收可以两种方式:
1、每个节点都把数据收入缓冲区,软件判断不属于自己节点的就丢弃不处理。
2、硬件设置CAN滤波,不属于自己节点的数据就不会收入缓冲区,节点处于空闲状态,只有属于自己的特定ID才会收进来。
Ⅱ can总线的ID怎么设定的
CAN总线ID是包含在报文帧中的。
1、主要用作CAN总线的仲裁使用,所以一般来说网版络上的每个节点(向总线上权发送)的ID应该有所不同。ID值越低,报文优先级越高,在两组不同ID报文同时上线时候,仲裁机制使得ID值低的占用总线,ID值高的退出。
2、ID域可以是11位和29位,其值和含义可以由用户自定义,可以用作高层协议的管理,比如CANopen等协议中把ID的部分做为“源地址”,部分作为“目的地址”,这样CAN报文从哪来到哪去都清晰了。
3、ID的另一个作用是配合接收方滤波使用,就是说一般接收的滤波器可以设定接收ID的范围等,用于过滤掉不需要接收的信息,减轻CPU的处理负担。
Ⅲ CAN通信:CAN卡接收到的ID和单片机里设置的ID不相同是什么原因
意思是下位机自己开发的节点发的ID 和上位机接收到显示的ID不同?
1、基本事项包括两个部分A:注意看一下本节点的发送ID在填入SJA1000的发送标识符TX identifier(标准帧两个字节,扩展帧四个字节)的时候需要移位处理,因为有的位是留空不用或者做其他用途的。
方法:扩展模式是四个字节的ID整体左移3位后依次填入填入TX identifier。(相信这个您应该在手册上已经看到)
B:如果下位节点的移位确认是正确的,那么需要确认CAN卡的接收是否是直接显示的节点ID还是显示的SJA1000的ID接收寄存器,因为有的厂家没有把SJA1000寄存器值还原成实际ID。
2、如果方法1不成功,建议测试两组数据,用实际ID,0x1FFFFFFF和0x1AAAAAAA写入发到CAN卡上看看收到是什么ID,你补充出来,这样基本可以看出问题所在
Ⅳ CAN 总线 上,如果2个节点ID号一样,先后发送数据后怎么辨别总线上出现了两个相同ID
虽然这样的应用在CAN的规范里没有明确禁止,但是绝对不建议这样设计网络规划,专这样会为后续带来的诸如升级属等十分复杂的问题,也影响网络的稳定。
现在回答补充问题,首先你要明确ID是赋给帧的,不是直接给节点的,只是某节点知道自己要接收某个ID的帧。总线上的节点来说它只管取总线上他应该取的ID的帧,并不管是谁发的。
即使是远程帧,发出请求的节点在获得相应时也仅仅是根据帧ID判定,并不影响其他节点的接收。
再回到开始,首先这样的网络规划是非常不合理的,等于是网络上出现了A和B两个对某一帧功能相同的节点,完全没必要,如果你要更新某个信号,只需让A节点重新发送新的即可,如果更新的信号是通过B节点模块更新的,也只需先通过B向A发送一个帧更新某个信号,然后A再重新发送更新的帧。
如果你两个节点关联同一个帧,以后加入新节点和升级改动网络的时候会多一倍的工作量,而且再远程帧的响应中,同ID多响应很容易出现问题。
总之一句话,我们要从总线的角度去看待CAN,不要从节点的角度出发
Ⅳ 我需要研究CAN总线数据是有特定ID的,它们可以通过usb can转换器分离出来吗
感谢题主复的邀请,我来说下我制的看法:
答案当然是可以的,尤其是当你使用了GCGD的USBCAN转换器的时候。
通过ECANTOOLS软件,你可以直接设置滤波模式,也就是说,过滤掉不需要的数据类型,只让有一定ID的数据通过。这样做的话,就可以减少数据的阅读量,提高工作效率。这对于有庞大信息量的汽车CAN数据解析工作来说,是具有重要意义的。如果您有需要相关的设备和软件,请登录GCGD官网进行具体的咨询。
Ⅵ CAN总线如何设置本节点标识符,就是本节点ID.
1.can协议中有规定,在某几位发送目的站的地址,目的站可以通过对这几位进行选择,自行回决定是否接受答该消息,是自变成设定的.
2.一般CAN通信芯片都可以在寄存器里设定自己需要接受的标识符等
A要和B通信,A要指导B的标识符,然后发出去,B发现标识符正确接受,C和D读完标识符后选择丢弃。
要实现CAN通信,选择一个合适的can控制芯片和驱动芯片即可.
Ⅶ can总线 多个节点都想发数据到某一节点,怎么写ID
虽然这样的应用在CAN的规范里没有明确禁止,但是绝对不建议这样设计网络规内划,这样会为后续带容来的诸如升级等十分复杂的问题,也影响网络的稳定。
现在回答补充问题,首先你要明确ID是赋给帧的,不是直接给节点的,只是某节点知道自己要接收某个ID的帧。总线上的节点来说它只管取总线上他应该取的ID的帧,并不管是谁发的。
Ⅷ 如果CAN总线中有10台设备,如果其中有标识符ID一样,会出现什么情况
不会,标识符只是发送时的冲裁判断,后面的数据不一样,才能知道是哪一个设备发送出来的。不过现实不是这样用的,需要用不同的ID表示不一样的含义,还要根据CAN数据的重要性来安排ID.
Ⅸ 两个can设备,其中一个设置了过滤模式,另一个发送id不匹配的报文,请
CAN总线ID是包含在报文帧中的. 1、主要用作CAN总线的仲裁使用, 所以一般来说网络上的每个节点(向总线上发送)的ID应该有所不同. ID值越低
Ⅹ CAN总线中 如果有多个节点发送相同的ID, 将会出现什么样的错误
会出复现仲裁错误,因为仲裁制是监测ID的。如果两个及以上的节点同时发送ID值一样的报文,但是数据域内容如果不同,那么这些节点本身可能认为发生出错。
从应用层协议的含义上说,ID通常包含节点地址等信息,所以一般不要相同,否则不能区分。