关于一条CAN总线上各节点的程序问题

2021-01-17 08:23:32 字数 1258 阅读 7079

1楼:匿名用户

对于软件我了解不多,但是一楼的观点绝对是错误的。我可以告诉你的是首先can总线的标识符并不是该节点的id,在 can 系统里节点不使用任何关于系统配置的信息(比如站地址)。can总线是以广播形式发送的,当一则报文在总线上传输的时候所有的其他节点都开始对比总线上的值,如果如果需要这个数据那么久开始接收(这个是软件上实现的,软件必须定义每个节点需要接收或发送哪些信息,相应信息的标识符,这个是总线工程是定的),也就是说一则报文可能同时被两个节点接收(比如汽车上的车速信号,如果由ecm采集,然后再总线上传输,那么可能bcm和仪表同时会接收这个信号),我只知道这个原理,至于软件是怎么写的就不太清楚了!

2楼:匿名用户

每个节点都应该有唯一的id,否则无法区别每个节点啊。因此每个节点的程序中报文的id应该是不同的。

can总线怎么实现一各节点发送多各节点接收,应答机制,向大神求解额!!!!!

3楼:匿名用户

ack slot只有一个bit,而接下去的ack delimiter始终为隐性(我们可认为是1),当数据到达ack slot的时候,所有的节点都会发送显性位(我们可以认为是0),而发送者在ack这个时间里保持隐性位(即发送者在发送的时候ack slot 为1),这时发送者会检测总线上的ack时间内的信号,如果是0,则表示正确,如果是1,表示有错误。如果当中有某一个节点在ack slot填入隐性位,则总线上同样还是显性位电平,故只要总线上有一个节点正确接收到数据,则ack slot就会被填入显性电平;那么,接收错误的节点如何来告知发送者此次发送不成功呢?这时候就要用到can的错误帧,当一个接收者收到错误的数据的时候,它立即开始发送一个错误帧,则接下去总线上的信号就是这个错误帧,其它的节点和发送者也都会收到这个错误帧,那所有的节点都知道出错了,接收者会丢掉此次消息,而发送者会试图重发此次消息。

这才是ack slot真正的含义。

4楼:胜利之

can总线发送,就是已广播的形式发出的(多节点接收)。

1、当接收器正确地接收到有效的报文,接收器就会在应答间隙(ack slot )

期间(发送ack信号)向发送器发送一“显性”的位以示应答。

2、结束

3、总线仲裁

5楼:系叡隽运乾

首先你得保证你的时序正确,其它18b20是否能可靠读写,时序没问题,检查连线,连线没问题,那就是它o了。

6楼:匿名用户

楼主解决了么?我也很困惑啊

各位大神,关于CAN总线优先级和仲裁权的问题

1楼 匿名用户 1 如果这个节点发得足够快,就是一帧和一帧之间几乎不留空隙那么有可能。不过能否完全达到效果不好说。 2 通过应用层的管理来实现,用定时的办法发送之类的。硬件层基本无法去完全的做到,即使有优先级的区分。 3 如果总线数据负载不是很大的情况,可以不考虑被第二个节点岔开的影响,因为两个点的...

关于java一段小程序的问题,没弄明白

1楼 匿名用户 setname是无法打印的,因为他返回的是void 空类型。 getname可以打印,因为他返回string 字符串类型 当然可以打印。 setname是给name赋值的,getname是获取name的值,用get 和set 这种方式叫做封装 2楼 匿名用户 set的设置 get是获...

关于路灯接线的问题,图上的全夜半夜路灯都是用4条(

1楼 匿名用户 与电缆无关,半夜式路灯到半夜就关了,全夜指的是整晚都亮的灯。半夜式与全夜式路灯都通过路灯控制箱进行控制,就是你把时间设置好,让它在好久亮就好久亮,到时间后就自然关闭了 全半夜路灯接线图 5 2楼 匿名用户 电路图怎么给你画啊?我只能给你文字描述一下了。 两条主电缆,专一条作全夜灯供属...