打印
[CAN-bus/DeviceNet]

yusea君引导我发现了什么

[复制链接]
3387|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wxj1952|  楼主 | 2007-7-10 11:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
yusea君是精通CAN规范的人。

  重复yusea君的实验,同样经历了一些怪异的、不能解释的现象/输出结果,但最终发现还是自己的程序问题;反复修正,使之符合规范,遂找出了对CAN规范中关于仲裁丢失规则的正确理解,及程序处理方法要点。(规范中对这些内容不会讲得很细,只限于以下文字。)

CAN仲裁规则:
Bus access conflicts are resolved by bit-wise arbitration on the identifiers involved by each station observing the bus level bit for bit. This happens in accordance with the "wired and" mechanism, by which the dominant state overwrites the recessive state. The competition for bus allocation is lost by all those stations (nodes) with recessive transmission and dominant observation. All those "losers" automatically become receivers of the message with the highest priority and do not re-attempt transmission until the bus is available again.  
(注:所谓 the highest priority 是指当有若干个节点同时竞争总线时,仲裁结果是:所有未获得总线读取权的站都成为具有最高优先权报文的接收站,并接收其报文。)
 
  有篇荷兰人写的**概念更清晰,他说其它loser节点将由积极发送状态转换为“Listen only” 只听状态。

losers 在听什么?它们听到了什么?     (这就是CAN规范内含的精彩内容。)

    我最初的疑问:一个SR=0x10的loser还能不能接受并执行“连续发送”的上层命令/程序意图?
    yusea君说,让701、703同时启动,两边同时“连续发送”。703已经被701阻塞挂起了,它有一个发送任务悬在那里等待运行,它还能接收新的发送任务?一个CAN通信控制器能悬挂几个任务?

    规范中明确说明了,竞争失败者不会在总线再次空闲前再次发送报文。只有当最高优先权的报文节点释放总线之后,其他几个losers才再次尝试重新传输报文/竞争总线。
     
    所以,在703号报文发送节点因仲裁失败成为loser之后,在701号报文节点发送完它的每一帧数据之前,它一直是一个接收器。在703节点内部,每发生1次仲裁丢失就应完整接收一帧。仲裁丢失数等于接收帧数。这意味703在701每发送1帧消息,(虽经仲裁失败)必然接收到701发送到总线上的报文,否则它就不是CAN控制器。/或者实验程序出了问题。

下一步的论证命题是:
1、为什么一个loser703不会再次与701积极竞争总线?(除了总线空闲之外,它还听见了什么?)———这里有概念错误!待修改。
2、为完成被挂起的发送任务,一个loser在什么状态条件下,才会再次竞争总线?(总线空闲除外。)?)———这里不严格!待修改。

3、703何时/怎样脱离/摆脱/结束自己的loser状态?(总线空闲除外。)
4、......
5、......

所枚举的问题均归纳于:一个因仲裁退出而被挂起的任务在MAC子层上的CAN调度规则。

(规范中都提到了的。)



相关帖子

沙发
yusea| | 2007-7-10 18:25 | 只看该作者

不要继续在这里误导众人!

使用特权

评论回复
板凳
yusea| | 2007-7-10 18:34 | 只看该作者

注意一下note

使用特权

评论回复
地板
yusea| | 2007-7-10 21:46 | 只看该作者

你有没有认真看过nxp的手册

有没有看过 CANMOD中STM位是干什么用的。

使用特权

评论回复
5
Ice_River| | 2007-7-11 10:15 | 只看该作者

路过

君?
无语!

使用特权

评论回复
6
wxj1952|  楼主 | 2007-7-11 10:42 | 只看该作者

学会说对不起,即使自己没错。

yusea君果然精通CAN规范,我曾经建议你做的实验,怎么拿不出结果? 现在只好拿规范文本做辩论依据了。早料定你会这么做了,而且知道你要拿出协议的这一段,我要是没理解透规范,怎么敢质疑你这种人? 
  好,就让我们讲规范。yusea君能不能为我翻译/解释一下,下面这段话的意思?最好举个例子说明更清楚一些。主要是or后半句。(你的尊严在这里,不是在嘴上。)

For stations which are not ’error passive’ or have been RECEIVER of the previous message:


发现yusea君经常按照自己个人的理解去解释协议设计技术问题,所举例证经常成为对手的把柄,例如:身份*号编码理解问题,might所指概率理解问题,......这回又让我抓住把柄了。

另外:“有没有看过 CANMOD中STM位是干什么用的。”又一个误解/说漏嘴了吧。

下回自己先考虑好对手将怎样反驳自己,论证清楚再提出来。否则,骂错了人怎么收场?总不能选择沉默就算了吧。

还有,就本问题,如果对手问你CAN在MAC子层上的调度规则是什么?如果对手问你CAN规范中所包含的有限状态机模型中有几个/什么状态?如果对手问你因仲裁失败而退出的station处于FSM中的哪个状态?它将在什么条件激励下回到/被自动调度到什么状态?

你如何回答?光骂人也不是个事啊。

我一直没有直接公布答案,是不希望让谁不好收场。一再反复提示你,是希望你通过修改实验发现自己的误解,结果你根本没动!反而化那么大精力过分关注自己的尊严,.......

有时间看看Andrew S.Tanenbaum 写的《计算机网络》(第2版)
有时间看看Larry L.Peterson 写的 《计算机网络》(第2版)

当然,像陈明计,Michael J.Pont,李庆,邵贝贝的书想必已读过了。否则也不会总出那么多误解。

使用特权

评论回复
7
zlgCAN| | 2007-7-11 10:57 | 只看该作者

我们欢迎总线技术方面的探讨;都将总线通讯作为我们的研

即是这一行业的荣幸,也是新技术发展的动力。有缘通过网络相聚,这也是我们每一位同道的幸运。

同时说一声:保持良好的心情,用认真对待学术的心态来交流与讨论,别违背了技术的初衷,伤了大家的和气。

使用特权

评论回复
8
lan_tian88| | 2007-7-11 21:56 | 只看该作者

你们都是高手!

看了你们的言论,感觉你们都是高手,呵呵,大家都是搞技术的,都是需要互相取长补短的,顺便问一个问题,CAN通讯在做EFT/B(电快速脉冲群)干扰测试时总是干扰模拟采样电路,有什么具体的解决之道吗?我的CAN总线没有隔离(准备采用),TVS都加了,RC滤波器也加了,但效果仍然不是很理想!

使用特权

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

本版积分规则

38

主题

757

帖子

1

粉丝