CAN总线概念疑问,谢谢 点击:1556 | 回复:2



gongkongedit

    
  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-08-11 16:07:00
楼主
总线控制权切换的时候,接收端会不会发生数据顺序的紊乱?在总线上采用广播方式,那听者如何确定数据帧是否应当接收? 这个和局域网广播有何不同?出错帧是在哪里被发现的,总线or节点? 始终仍有问题如下:   远程帧(remote_frame)的作用究竟是什么?域内的标识符是请求端的标识符还是发送端的标识符? 出错帧若是在总线上叠加,则假设a发现出错帧,则首先向总线报错帧,然后b也发现出错帧,但b在发送报错之前检测总线状态,它会发现总线忙!(因为a在进行传输),那它就不会进行叠加了啊!~      几个猜测,不知对否:   数据传输并不存在结束符,只是根据帧间空间间歇场来确定,否则如果总线空闲状态就进行传输的话,有可能这些帧并不构成完整信息



dnet

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 6回
  • 年度积分:0
  • 历史总积分:33
  • 注册:2003年1月08日
发表于:2003-08-11 14:19:00
1楼
柳生一刀斋: 1、总线控制权切换的时候,接收端会不会发生数据顺序的紊乱? Can是一个多主网络,总线上的任何一个节点都可以主动发送报文,然而当前网络到底谁是主(即谁享有总线控制权),由CAN的总线仲裁机制决定。当总线权发生切换时,想要发送数据的节点一起参与总线仲裁,优先级高的享有总线控制权,而接收节点此时接收到的信息必然是获得总线控制权的发送节点所发送的仲裁标示符,一旦某一节点享有总线控制权后,总线操作一切正常化了,因此不会发生数据顺序的混乱。 2、在总线上采用广播方式,那听者如何确定数据帧是否应当接收? 广播方式是高效利用通讯带宽的一种通讯方式,因此经常被使用。接收方是否应该接收广播报文一般是通过判断广播报文的标示来实现的。因为既然是广播,那就是面向多个听者,所以在报文中一般不会指定听者是谁(也会碰到特殊的),听者根据广播者是谁来决定是否接收报文。 3、这个和局域网广播有何不同? 抱歉,由于本人对局域网不是行家,所以不能回答该问题。 4、出错帧是在哪里被发现的,总线or节点? 出错帧当然是在节点这里发现的,总线上不存在判断的基础。每个节点在发送或接收的同时会监视总线上的状态,根据检测到的状态并结合CAN出错界定策略,产生响应的错误处理。 5、远程帧(remote_frame)的作用究竟是什么? 远程帧是用来呼叫用的,在CAN中可以实现1对1的通讯,那么在通讯之前首先要在两个点之间建立链路,通讯双方一般是通过远程帧来建立链路的! 6、域内的标识符是请求端的标识符还是发送端的标识符? 关于标示符的定义可以说是百家争鸣、百花齐放。从逻辑上讲标示符不应该说是接收端的或是发送端。因为标示符中完全可以包含双方的信息!特别值得体的是CAN2.0B中支持的扩展格式有29位的标示符,可以定义非常丰富的含义。 7、关于出错处理的问题 首先要明白的是出错帧的发送根本不需要仲裁的。因此不存在谁优先的状况,只要出错了,就会向总线发送出错信息。出错信息有两种:active 和passive,他们对总线的影响程度不一样,active出错会使得整个网络上的所有节点都经历一次active 出错,然后网络才会回复正常,而passive出错不会影响网络上其他节点的正常传输,只影响自身后续的发送!另外CAN在严重出错是会自动进入bus-off。 8、数据传输并不存在结束符 这是一个错误的理解,CAN的每一帧数据都有帧结束标示的(好像是连续11个"1",记不清了),帧空间是在总线空闲时才出现的!当然每两个CAN帧信息间也出现帧空间。帧空间是下一帧信息传输开始的硬同步,网上所有要发送数据的节点就是从这一时刻开始总线竞争的! 以上纯是个人理解,欢迎指正! dnet

柳生一刀斋

  • 精华:1帖
  • 求助:0帖
  • 帖子:3帖 | 9回
  • 年度积分:0
  • 历史总积分:29
  • 注册:2003年8月07日
发表于:2003-08-11 16:07:00
2楼
dnet兄: 听君一席话,有茅塞顿开的感觉。 尤其是对远程帧的解释,以前一直在想CAN中怎么没有source/destination地址,那么p2p的通信如何实现,现在看来完全可以根据需要来定义远程帧的标识符来达到这个目的! 并且能否这样理解,总线上的一切活动的前提就是标识符? 对上面第8个问题,仔细想了一下,你说的对,我理解错了,关键在于每一帧都要进行总线仲裁,(我原以为有个类似文件结束符一样的东西存在,现在看来假设A的优先级最高,传输完一帧之后,如果这是最后一帧,自然不会再参与下一次仲裁,根本不用什么结束标志) 呵呵 谢谢 ,以后有疑问继续请教 trooperabc

热门招聘
相关主题

官方公众号

智造工程师