家里有一款产品 使用can通讯 距离在3~5KM 通讯速率10K 主机采用250+SJA1000 分机(20个,并且优先权一致)采用250加MC68HC908通讯 分机只于主机通讯,分机间不相互通讯 经常会出现一个问题 单个节点的250故障后 会使得整个总线通讯异常 正常来说 can通讯是不应该这样的 我后来查看了程序 发现程序中用远程帧来传输数据(用识别符作为数据) 而且程序中没有使能总线关闭中断 以上是目前我可以得知的条件,由此我想出了两种导致此问题的可能
1:若三号分机250异常,那么分机在给主机发信息后无法得到主机在应答间隙给其反馈的信息发送成功位。这种情况下三号分机可能会继续尝试发送信息,而且由于分机间优先权相同,其他节点无法获得总线仲裁 这些节点无法返回信息给主机 造成总线瘫痪。
2:会不会错误帧影响了其余节点的通讯数据 造成总线瘫痪。(这个情况我不太有把握 这是提出来大家讨论下)
如果是第一种情况造成的总线瘫痪 我是不是只需要使能总线关闭中断就行 当他错误计数达到255时 自动脱离总线 其余分机就可以正常工作了。
本人初次接触can网络 希望各路大神指点 谢谢了