打印

书上说CAN通信不用寻址,那么每个节点的ID怎么制定??

[复制链接]
2864|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
linux1|  楼主 | 2010-7-12 22:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
想实习去| | 2010-7-12 22:10 | 只看该作者
CAN只规定了底层的数据链路层,还需要自己规定应用层协议,即通讯协议。做得大一些,可以考虑DeviceNET 或 CANopen 协议。

使用特权

评论回复
板凳
yoyowodeai| | 2010-7-12 22:11 | 只看该作者
我也正做毕业设计,也考虑过这个问题 我的CAN网络有20个节点(其中一个为工控机,其余19个节点是相似的,均接到整流装置),每个节点有4种数据要处理,一为模数转换后发送到工控机的直流电流值;二为整流变压器的档位信号,也是要发送到工控机;三为接收工控机发过来的整流触发角的给定值,并通过RS-422总线发送到整流控制器;四是接收工控机发过来的变压器档位切换信号,并转发到档位切换模块。我想我可以自己定义标识符,比如32位表识符里前11位用来区分优先级,中间十位的前五位作接收方的标识符,后五位作发送方的标识符,其余11位用来区分上述的四种数据。当一个节点接收到工控机发来的数据后,通过识别标识符的后11位,看数据应该转发到哪里。当工控机接收到整流节点的数据时,通过识**16位来区分是哪个节点发过来的(16位里的前5位),是什么数据,是档位信号还是直流电流值信号。 这仅是小弟我的一些想法,也不知对不对,希望各位高手给个意见。

使用特权

评论回复
地板
3B1105| | 2010-7-12 22:13 | 只看该作者
CAN的协议规定,标准帧的标识符是11位,每个数据都有自己的标识符,优先级当然是数值小的优先级高,数据该到哪里,应该是根据接收节点的验收码和屏蔽码确定的

使用特权

评论回复
5
bit6019| | 2010-7-12 22:15 | 只看该作者
6
思行合一| | 2010-7-12 22:19 | 只看该作者
只许工控机和各个整流节点之间的数据传输,而不需要19个整流节点之间的数据传输,所以我打算把工控机的CAN节点的屏蔽码设为全1,也就是每个标识符设为验收无关,这样工控机可以接受总线上的任何数据(因为总线上的数据要么是工控机发出的,要么是发给工控机),等工控机收到数据之后,通过判别标识符来识别是哪个节点发来的,是什么样的数据(这也是在编程时自己规定的)

使用特权

评论回复
7
huzixian| | 2010-7-12 22:20 | 只看该作者
高明!can协议里没有表示自己地址的地方,重来没想到这样表示自己的地址。

使用特权

评论回复
8
bit6019| | 2010-7-12 22:21 | 只看该作者
不过优先级和对方地址不是你想自己定义就自己定义的。你弄懂报文滤波没?要是另19个节点要互相通信的话,你的设想就有点麻烦了。

使用特权

评论回复
9
yoyowodeai| | 2010-7-12 22:21 | 只看该作者
我也想实现一台站台设备与多台区间台设备之间的CAN总线通信,这就须要车站设备能接收来自每个区间设备的信号,每个区间设备之间必须通过ID码的优先测级进行总线竞争,区间设备最多不大于40台,只须要用到11位ID里面的6位,车站设备将其屏蔽,是否就能实现区间设备优先级最高的首先发送,而车站设备能接收任一台发送的区间设备信号?我用的F040,你现在项目进行如何?关于WKINGW: 是否有关于报文滤波方面的资料,最好是关于F040的,谢谢!

使用特权

评论回复
10
米其林r| | 2010-7-12 22:24 | 只看该作者
LS的水平真高啊!学习中!

使用特权

评论回复
11
linux1|  楼主 | 2010-7-12 22:25 | 只看该作者
can can总线标识符可以设定接收某段之间的节点吗?

使用特权

评论回复
12
LPC300| | 2010-7-12 22:26 | 只看该作者
刚学习CAN总线,问大家一个问题,在CAN总线中的一个节点可以设置就接收某段标识符的节点信息吗!

例如11位的标识符,我就接收0110 0000 000  ~0110 1000 000之间标识符的节点

使用特权

评论回复
13
LPC300| | 2010-7-12 22:31 | 只看该作者
CAN协议的隐形与显性是什么意思了?发送的同时也在接收是什么意思?

使用特权

评论回复
14
手写识别| | 2010-7-12 22:33 | 只看该作者
隐形是1,显性是0,相与是0

使用特权

评论回复
15
windblue78| | 2010-7-13 10:09 | 只看该作者
学习了

使用特权

评论回复
16
loglibaoying| | 2010-7-14 08:23 | 只看该作者
节点的ID当然是自己定了 就像你给每个节点取名字一样 发送时候写上节点的名字相应节点就能收到数据 这里牵涉到报文滤波  看懂就行

使用特权

评论回复
17
无语凝咽| | 2010-7-14 12:22 | 只看该作者
ID的11位是不需要全部用的,部分位是用来当MAC地址来用的,参考device-net 协议请

使用特权

评论回复
18
6019赵文| | 2010-7-22 12:27 | 只看该作者
你用的是什么芯片,我用的atmel arm7  关键是对MID  MAM  MIFD进行设置

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

96

主题

455

帖子

0

粉丝