[CAN-bus/DeviceNet] can总线研究历程与所遇问题

[复制链接]
5023|14
 楼主| hsongjiang 发表于 2007-10-10 15:50 | 显示全部楼层 |阅读模式
我从老板那里接到CAN总线任务(用于某工程项目),该任务分为两部分:一部分是:从ADLINK公司买的PCI-7841,插在PC机上,作为上机位,主控中心。第二部分:是用51单片机+sja1000+6N137搞的三个节点。<br />&nbsp;&nbsp;时间安排:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;第一部分:花了7天时间,利用PCI-7841提供的驱动,用vc搞了一个can总线发送、接收界面。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;第二部分:开始制板、写程序,花了10天时间,<br /><br />大概20天时间,联机通信正常。也就是能正常接收数据和发送数据。比如我给老板演示:主机给板子一发送数据,板子一接收数据后,根据数据内容,由板子一发送给板子二数据,板子二再根据数据驱动它旁边的LED闪亮。本以为这样可以交差。<br />&nbsp;&nbsp;&nbsp;但郁闷的事来了,老板要求再演示:板子一(发送id=0):周期5ms&nbsp;00&nbsp;到&nbsp;7f的数据。板子二(发送id=1):以周期20ms同样发送00&nbsp;到&nbsp;7f的数据。板子三(发送id=3):接收id0和id1的数据。然后相加,再传到pc机上。(先pc机发送id=2的数据。板子一和板子二接收到数据后启动各自的定时器,然后周期发送数据)<br />&nbsp;&nbsp;&nbsp;整个工程就这样,很简单,就是做不出来。<br />&nbsp;&nbsp;&nbsp;问题现象:id0和id1发送应该在没隔20ms要冲突。冲突时他们相加的结果id3出错。它先是重发上一次相加的结果,紧接着发送现在的结果,大概过了几十桢后又正常了。如果首先发送时错位2.5ms。也就是认为保证其不发送冲突,就没问题。具体细节难以描述,请看附件pc机上接收到的数据。我在这个地方,郁闷了33天。大把的青春啊,郁闷,并且还没进展。具体程序我也贴出来,望斑竹、以及各位高手相助。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;谢谢<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /> 相关链接:<a href='https://bbs.21ic.com/upfiles/img/200710/20071010154828978.rar'>https://bbs.21ic.com/upfiles/img/200710/20071010154828978.rar</a>
 楼主| hsongjiang 发表于 2007-10-10 15:52 | 显示全部楼层

貌似一次只能上传一个文件

  <br /> 相关链接:<a href='https://bbs.21ic.com/upfiles/img/200710/20071010155255374.rar'>https://bbs.21ic.com/upfiles/img/200710/20071010155255374.rar</a>
 楼主| hsongjiang 发表于 2007-10-10 15:56 | 显示全部楼层

还来个文件

第一个文件是:pc机上接收到的数据,保存为.txt文件<br />第二个&nbsp;板子三(id=3)&nbsp;keilc程序<br />现在这个是:&nbsp;板子一和二&nbsp;keilc程序&nbsp;两个基本相同&nbsp;只是定时器数值设立不同而已。 <br /> 相关链接:<a href='https://bbs.21ic.com/upfiles/img/200710/2007101015563294.rar'>https://bbs.21ic.com/upfiles/img/200710/2007101015563294.rar</a>
zlgCAN 发表于 2007-10-13 08:42 | 显示全部楼层

看了你的说法,建议检查总线上数据流量是否达到或超过警

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;猜测可能过度地仲裁导致出现此类数据延迟现象。
wxj1952 发表于 2007-10-13 19:04 | 显示全部楼层

书上有现成的类似例子。

这么简单的要求!自己第一次做可能感觉很难,但是一看答案,“这么简单,我怎么就没想到?”<br /><br />在《时间触发......》那本书上。如果要是会用Keil&nbsp;C上带的RTX51TNY,连书都不用看了。3个节点,先统一时钟,然后利用IVL间隔参数同步计时。PC机对节点的每个帧,都被节点用作网络时统信号.
wxj1952 发表于 2007-10-13 23:05 | 显示全部楼层

很简单

让ID:0数据帧从8888....开始发送,(每隔20ms)结果发现全部正常。<br />让ID:0数据帧从0~7~0~7循环发送,结果发现全部不正常。<br /><br />结论:程序错误!
 楼主| hsongjiang 发表于 2007-10-22 14:59 | 显示全部楼层

问题还是没完全解决。

由于其他的事耽误了,CAN总线丢了十几天,现在GO&nbsp;ON。首先非常感谢zlgCAN和wxj1952&nbsp;两位前辈的指点,你们的回应让我非常激动。我今天根据两位的各自提的意见做了几个实验。<br />1.“过度地仲裁”&nbsp;&nbsp;我把发送id=3的节点变成可以接收所有id。但情况没有好转。<br />2.“数据流量是否达到或超过警戒线”不是很懂,500kps远在1Mps之下,应该没问题吧。<br />3.“让ID:0数据从88......全正常。让ID:...全不正常。”我也做了相关实验。发现id=0&nbsp;和id=1&nbsp;在pc机&nbsp;都是从00~FF接收都数据啊,一点错都没有。<br />&nbsp;具体情况还是:如果不要延时,也就是id=0&nbsp;和id=1接收到pc机id=2的命令后都同时启动定时器。其中id=1以定时5ms发送数据,id=0以定时20ms发送。板子3同时接收id=0和id=1的数据,但只有接收到id=1,就相加两数然后发送id=3的数据。大概数据情况如:(三个节点都是单次发送方式,出错也不重发)<br />&nbsp;.........................................<br />&nbsp;&nbsp;ID:1&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:3&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:1&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:1&nbsp;&nbsp;1&nbsp;&nbsp;1&nbsp;&nbsp;1&nbsp;&nbsp;1&nbsp;&nbsp;1&nbsp;&nbsp;1&nbsp;&nbsp;1&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:3&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:1&nbsp;&nbsp;1&nbsp;&nbsp;1&nbsp;&nbsp;1&nbsp;&nbsp;1&nbsp;&nbsp;1&nbsp;&nbsp;1&nbsp;&nbsp;1&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:1&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:2&nbsp;&nbsp;2&nbsp;&nbsp;2&nbsp;&nbsp;2&nbsp;&nbsp;2&nbsp;&nbsp;2&nbsp;&nbsp;2&nbsp;&nbsp;2&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:3&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:2&nbsp;&nbsp;2&nbsp;&nbsp;2&nbsp;&nbsp;2&nbsp;&nbsp;2&nbsp;&nbsp;2&nbsp;&nbsp;2&nbsp;&nbsp;2&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:0&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;0&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:1&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:3&nbsp;&nbsp;3&nbsp;&nbsp;3&nbsp;&nbsp;3&nbsp;&nbsp;3&nbsp;&nbsp;3&nbsp;&nbsp;3&nbsp;&nbsp;3&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:3&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:2&nbsp;&nbsp;2&nbsp;&nbsp;2&nbsp;&nbsp;2&nbsp;&nbsp;2&nbsp;&nbsp;2&nbsp;&nbsp;2&nbsp;&nbsp;2&nbsp;//出错&nbsp;多发一帧<br />&nbsp;&nbsp;ID:3&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:3&nbsp;&nbsp;3&nbsp;&nbsp;3&nbsp;&nbsp;3&nbsp;&nbsp;3&nbsp;&nbsp;3&nbsp;&nbsp;3&nbsp;&nbsp;3&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:1&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:4&nbsp;&nbsp;4&nbsp;&nbsp;4&nbsp;&nbsp;4&nbsp;&nbsp;4&nbsp;&nbsp;4&nbsp;&nbsp;4&nbsp;&nbsp;4&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:3&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:4&nbsp;&nbsp;4&nbsp;&nbsp;4&nbsp;&nbsp;4&nbsp;&nbsp;4&nbsp;&nbsp;4&nbsp;&nbsp;4&nbsp;&nbsp;4&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:1&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:5&nbsp;&nbsp;5&nbsp;&nbsp;5&nbsp;&nbsp;5&nbsp;&nbsp;5&nbsp;&nbsp;5&nbsp;&nbsp;5&nbsp;&nbsp;5&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:3&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:5&nbsp;&nbsp;5&nbsp;&nbsp;5&nbsp;&nbsp;5&nbsp;&nbsp;5&nbsp;&nbsp;5&nbsp;&nbsp;5&nbsp;&nbsp;5&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:1&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:6&nbsp;&nbsp;6&nbsp;&nbsp;6&nbsp;&nbsp;6&nbsp;&nbsp;6&nbsp;&nbsp;6&nbsp;&nbsp;6&nbsp;&nbsp;6&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:3&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:6&nbsp;&nbsp;6&nbsp;&nbsp;6&nbsp;&nbsp;6&nbsp;&nbsp;6&nbsp;&nbsp;6&nbsp;&nbsp;6&nbsp;&nbsp;6&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:0&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:1&nbsp;&nbsp;1&nbsp;&nbsp;1&nbsp;&nbsp;1&nbsp;&nbsp;1&nbsp;&nbsp;1&nbsp;&nbsp;1&nbsp;&nbsp;1&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:1&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:7&nbsp;&nbsp;7&nbsp;&nbsp;7&nbsp;&nbsp;7&nbsp;&nbsp;7&nbsp;&nbsp;7&nbsp;&nbsp;7&nbsp;&nbsp;7&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:3&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:6&nbsp;&nbsp;6&nbsp;&nbsp;6&nbsp;&nbsp;6&nbsp;&nbsp;6&nbsp;&nbsp;6&nbsp;&nbsp;6&nbsp;&nbsp;6&nbsp;&nbsp;&nbsp;//出错&nbsp;多发一帧<br /><br />&nbsp;&nbsp;ID:3&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:7&nbsp;&nbsp;7&nbsp;&nbsp;7&nbsp;&nbsp;7&nbsp;&nbsp;7&nbsp;&nbsp;7&nbsp;&nbsp;7&nbsp;&nbsp;7&nbsp;&nbsp;//也没相加<br />&nbsp;&nbsp;ID:1&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:8&nbsp;&nbsp;8&nbsp;&nbsp;8&nbsp;&nbsp;8&nbsp;&nbsp;8&nbsp;&nbsp;8&nbsp;&nbsp;8&nbsp;&nbsp;8&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:3&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:8&nbsp;&nbsp;8&nbsp;&nbsp;8&nbsp;&nbsp;8&nbsp;&nbsp;8&nbsp;&nbsp;8&nbsp;&nbsp;8&nbsp;&nbsp;8&nbsp;<br /><br />一直到&nbsp;ID=0&nbsp;到了9&nbsp;后才正常。<br />&nbsp;&nbsp;ID:1&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:24&nbsp;&nbsp;24&nbsp;&nbsp;24&nbsp;&nbsp;24&nbsp;&nbsp;24&nbsp;&nbsp;24&nbsp;&nbsp;24&nbsp;&nbsp;24&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:3&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:24&nbsp;&nbsp;24&nbsp;&nbsp;24&nbsp;&nbsp;24&nbsp;&nbsp;24&nbsp;&nbsp;24&nbsp;&nbsp;24&nbsp;&nbsp;24&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:1&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:25&nbsp;&nbsp;25&nbsp;&nbsp;25&nbsp;&nbsp;25&nbsp;&nbsp;25&nbsp;&nbsp;25&nbsp;&nbsp;25&nbsp;&nbsp;25&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:3&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:25&nbsp;&nbsp;25&nbsp;&nbsp;25&nbsp;&nbsp;25&nbsp;&nbsp;25&nbsp;&nbsp;25&nbsp;&nbsp;25&nbsp;&nbsp;25&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:1&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:26&nbsp;&nbsp;26&nbsp;&nbsp;26&nbsp;&nbsp;26&nbsp;&nbsp;26&nbsp;&nbsp;26&nbsp;&nbsp;26&nbsp;&nbsp;26&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:3&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:26&nbsp;&nbsp;26&nbsp;&nbsp;26&nbsp;&nbsp;26&nbsp;&nbsp;26&nbsp;&nbsp;26&nbsp;&nbsp;26&nbsp;&nbsp;26&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:0&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:9&nbsp;&nbsp;9&nbsp;&nbsp;9&nbsp;&nbsp;9&nbsp;&nbsp;9&nbsp;&nbsp;9&nbsp;&nbsp;9&nbsp;&nbsp;9&nbsp;&nbsp;&nbsp;//这个地方正常了,后面的都正常了(前面的好像id=0的数据,节点3一直没接收到&nbsp;)&nbsp;<br />&nbsp;&nbsp;ID:1&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:27&nbsp;&nbsp;27&nbsp;&nbsp;27&nbsp;&nbsp;27&nbsp;&nbsp;27&nbsp;&nbsp;27&nbsp;&nbsp;27&nbsp;&nbsp;27&nbsp;<br />&nbsp;&nbsp;ID:3&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:30&nbsp;&nbsp;30&nbsp;&nbsp;30&nbsp;&nbsp;30&nbsp;&nbsp;30&nbsp;&nbsp;30&nbsp;&nbsp;30&nbsp;&nbsp;30&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:1&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:28&nbsp;&nbsp;28&nbsp;&nbsp;28&nbsp;&nbsp;28&nbsp;&nbsp;28&nbsp;&nbsp;28&nbsp;&nbsp;28&nbsp;&nbsp;28&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:3&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:31&nbsp;&nbsp;31&nbsp;&nbsp;31&nbsp;&nbsp;31&nbsp;&nbsp;31&nbsp;&nbsp;31&nbsp;&nbsp;31&nbsp;&nbsp;31&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:1&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:29&nbsp;&nbsp;29&nbsp;&nbsp;29&nbsp;&nbsp;29&nbsp;&nbsp;29&nbsp;&nbsp;29&nbsp;&nbsp;29&nbsp;&nbsp;29&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:3&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:32&nbsp;&nbsp;32&nbsp;&nbsp;32&nbsp;&nbsp;32&nbsp;&nbsp;32&nbsp;&nbsp;32&nbsp;&nbsp;32&nbsp;&nbsp;32&nbsp;<br />&nbsp;<br />如果id=1延时17.5ms,也就是id=0&nbsp;和id=1接收到pc机id=2的命令,id=0马上启动,而id=1延时17.5ms在启动定时器,这样避免冲突。<br />结果是:前面六百多帧都正常<br />&nbsp;ID:0&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;DATA:&nbsp;0&nbsp;0&nbsp;0&nbsp;0&nbsp;0&nbsp;0&nbsp;0&nbsp;0<br />&nbsp;ID:1&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;DATA:&nbsp;0&nbsp;0&nbsp;0&nbsp;0&nbsp;0&nbsp;0&nbsp;0&nbsp;0<br />&nbsp;ID:3&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;DATA:&nbsp;0&nbsp;0&nbsp;0&nbsp;0&nbsp;0&nbsp;0&nbsp;0&nbsp;0<br />&nbsp;ID:1&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:&nbsp;1&nbsp;1&nbsp;1&nbsp;1&nbsp;1&nbsp;1&nbsp;1&nbsp;1<br />&nbsp;ID:3&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:&nbsp;1&nbsp;1&nbsp;1&nbsp;1&nbsp;1&nbsp;1&nbsp;1&nbsp;1<br />&nbsp;ID:1&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:&nbsp;2&nbsp;2&nbsp;2&nbsp;2&nbsp;2&nbsp;2&nbsp;2&nbsp;2<br />&nbsp;ID:3&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:&nbsp;2&nbsp;2&nbsp;2&nbsp;2&nbsp;2&nbsp;2&nbsp;2&nbsp;2<br />&nbsp;ID:1&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:&nbsp;3&nbsp;3&nbsp;3&nbsp;3&nbsp;3&nbsp;3&nbsp;3&nbsp;3<br />&nbsp;ID:3&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:&nbsp;3&nbsp;3&nbsp;3&nbsp;3&nbsp;3&nbsp;3&nbsp;3&nbsp;3<br />&nbsp;ID:0&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:&nbsp;1&nbsp;1&nbsp;1&nbsp;1&nbsp;1&nbsp;1&nbsp;1&nbsp;1<br />&nbsp;ID:1&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:&nbsp;4&nbsp;4&nbsp;4&nbsp;4&nbsp;4&nbsp;4&nbsp;4&nbsp;4<br />&nbsp;ID:3&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:&nbsp;5&nbsp;5&nbsp;5&nbsp;5&nbsp;5&nbsp;5&nbsp;5&nbsp;5<br />...............................................<br />&nbsp;&nbsp;ID:1&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:27&nbsp;&nbsp;27&nbsp;&nbsp;27&nbsp;&nbsp;27&nbsp;&nbsp;27&nbsp;&nbsp;27&nbsp;&nbsp;27&nbsp;&nbsp;27&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:0&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:4a&nbsp;&nbsp;4a&nbsp;&nbsp;4a&nbsp;&nbsp;4a&nbsp;&nbsp;4a&nbsp;&nbsp;4a&nbsp;&nbsp;4a&nbsp;&nbsp;4a&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:3&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:71&nbsp;&nbsp;71&nbsp;&nbsp;71&nbsp;&nbsp;71&nbsp;&nbsp;71&nbsp;&nbsp;71&nbsp;&nbsp;71&nbsp;&nbsp;71&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:1&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:28&nbsp;&nbsp;28&nbsp;&nbsp;28&nbsp;&nbsp;28&nbsp;&nbsp;28&nbsp;&nbsp;28&nbsp;&nbsp;28&nbsp;&nbsp;28&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:3&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:72&nbsp;&nbsp;72&nbsp;&nbsp;72&nbsp;&nbsp;72&nbsp;&nbsp;72&nbsp;&nbsp;72&nbsp;&nbsp;72&nbsp;&nbsp;72&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:1&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:29&nbsp;&nbsp;29&nbsp;&nbsp;29&nbsp;&nbsp;29&nbsp;&nbsp;29&nbsp;&nbsp;29&nbsp;&nbsp;29&nbsp;&nbsp;29&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:3&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:73&nbsp;&nbsp;73&nbsp;&nbsp;73&nbsp;&nbsp;73&nbsp;&nbsp;73&nbsp;&nbsp;73&nbsp;&nbsp;73&nbsp;&nbsp;73&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:1&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:2a&nbsp;&nbsp;2a&nbsp;&nbsp;2a&nbsp;&nbsp;2a&nbsp;&nbsp;2a&nbsp;&nbsp;2a&nbsp;&nbsp;2a&nbsp;&nbsp;2a&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:3&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:74&nbsp;&nbsp;74&nbsp;&nbsp;74&nbsp;&nbsp;74&nbsp;&nbsp;74&nbsp;&nbsp;74&nbsp;&nbsp;74&nbsp;&nbsp;74&nbsp;//前面正常<br />&nbsp;&nbsp;ID:1&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:2b&nbsp;&nbsp;2b&nbsp;&nbsp;2b&nbsp;&nbsp;2b&nbsp;&nbsp;2b&nbsp;&nbsp;2b&nbsp;&nbsp;2b&nbsp;&nbsp;2b&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:0&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:4b&nbsp;&nbsp;4b&nbsp;&nbsp;4b&nbsp;&nbsp;4b&nbsp;&nbsp;4b&nbsp;&nbsp;4b&nbsp;&nbsp;4b&nbsp;&nbsp;4b&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:3&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:74&nbsp;&nbsp;74&nbsp;&nbsp;74&nbsp;&nbsp;74&nbsp;&nbsp;74&nbsp;&nbsp;74&nbsp;&nbsp;74&nbsp;&nbsp;74&nbsp;&nbsp;//跟上一帧数据一样了,出错<br />&nbsp;&nbsp;ID:3&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:77&nbsp;&nbsp;77&nbsp;&nbsp;77&nbsp;&nbsp;77&nbsp;&nbsp;77&nbsp;&nbsp;77&nbsp;&nbsp;77&nbsp;&nbsp;77&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:1&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:2d&nbsp;&nbsp;2d&nbsp;&nbsp;2d&nbsp;&nbsp;2d&nbsp;&nbsp;2d&nbsp;&nbsp;2d&nbsp;&nbsp;2d&nbsp;&nbsp;2d&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:3&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:78&nbsp;&nbsp;78&nbsp;&nbsp;78&nbsp;&nbsp;78&nbsp;&nbsp;78&nbsp;&nbsp;78&nbsp;&nbsp;78&nbsp;&nbsp;78&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:1&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:2e&nbsp;&nbsp;2e&nbsp;&nbsp;2e&nbsp;&nbsp;2e&nbsp;&nbsp;2e&nbsp;&nbsp;2e&nbsp;&nbsp;2e&nbsp;&nbsp;2e&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:3&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:79&nbsp;&nbsp;79&nbsp;&nbsp;79&nbsp;&nbsp;79&nbsp;&nbsp;79&nbsp;&nbsp;79&nbsp;&nbsp;79&nbsp;&nbsp;79&nbsp;<br />&nbsp;&nbsp;ID:1&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:2f&nbsp;&nbsp;2f&nbsp;&nbsp;2f&nbsp;&nbsp;2f&nbsp;&nbsp;2f&nbsp;&nbsp;2f&nbsp;&nbsp;2f&nbsp;&nbsp;2f&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:0&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:4c&nbsp;&nbsp;4c&nbsp;&nbsp;4c&nbsp;&nbsp;4c&nbsp;&nbsp;4c&nbsp;&nbsp;4c&nbsp;&nbsp;4c&nbsp;&nbsp;4c<br />&nbsp;&nbsp;ID:3&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:79&nbsp;&nbsp;79&nbsp;&nbsp;79&nbsp;&nbsp;79&nbsp;&nbsp;79&nbsp;&nbsp;79&nbsp;&nbsp;79&nbsp;&nbsp;79&nbsp;&nbsp;//跟上一帧数据一样了,出错;<br />&nbsp;&nbsp;ID:1&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:30&nbsp;&nbsp;30&nbsp;&nbsp;30&nbsp;&nbsp;30&nbsp;&nbsp;30&nbsp;&nbsp;30&nbsp;&nbsp;30&nbsp;&nbsp;30&nbsp;&nbsp;<br />&nbsp;&nbsp;ID:3&nbsp;&nbsp;&nbsp;LENTH&nbsp;8&nbsp;&nbsp;&nbsp;DATA:7c&nbsp;&nbsp;7c&nbsp;&nbsp;7c&nbsp;&nbsp;7c&nbsp;&nbsp;7c&nbsp;&nbsp;7c&nbsp;&nbsp;7c&nbsp;&nbsp;7c&nbsp;<br />&nbsp;.................................<br /><br />至于wxj1952说的时间同步问题,我还没去好好研究。我只想先知道,首先这里到底是那个地方错误,是同步问题吗?
 楼主| hsongjiang 发表于 2007-10-22 15:59 | 显示全部楼层

出错原因

&nbsp;我硬件情况:51板上,采用的是20M的时钟频率。定时5ms,不能除尽,也就是多运行段时间应该有相移。<br /><br />我自我推断:&nbsp;肯定是发送Id=3的节点冲突机制没有解决,因为如上面的,当id=1向后延时17.5ms后再启动,也就是保证id=0&nbsp;和Id=1不发生冲突,&nbsp;让它运行1分多种,大概1万多帧,发现每过600百多帧出错然后正常。但是以我的理解,冲突/出错完全是硬件自动完成。&nbsp;所以这个地方我真的不知道为什么?<br />欢迎大家给我提建议,在此先感谢了。<br />
 楼主| hsongjiang 发表于 2007-10-22 20:32 | 显示全部楼层

水落石出

罪魁祸首:<br />&nbsp;&nbsp;&nbsp;我在接收子程序了中多加了一条:if(StatusReg&0x10==0)然后才接收数据。删掉这条语句即可。&nbsp;任务完毕!<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;谢谢大家。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2007.10.22
jb123456 发表于 2007-11-18 00:26 | 显示全部楼层

CAN 问题

if(StatusReg&0x10==0)然后才接收数据。删掉这条语句即可。&nbsp;任务完毕!<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />这句应该有阿???<br /><br />&nbsp;我现正在调试CAN总线,用的是&nbsp;89s52&nbsp;SJA1000&nbsp;&nbsp;82C250。2个板子互相发送接收。<br />有时候2者都工作正常,但是当1个板子,停止工作1段时间,在恢复工作,2者都不能工作。<br />从砖台寄存器看为&nbsp;0x04&nbsp;中断指示寄存器为&nbsp;0x82,TCS&nbsp;!=1&nbsp;总线出现错误。重新初始化只<br />能短时恢复接收Buffer&nbsp;(3次)但也不能正确发送数据。<br />为什么?<br />总线出错怎么恢复?<br />请教网上各位了!!!<br />
cocorocky 发表于 2010-10-10 17:12 | 显示全部楼层
楼主,你的源程序还在吗?想学习下你的程序,不知方便?
xuxiaoqiang0807@163.com
ysc3107 发表于 2011-4-30 18:44 | 显示全部楼层
LZ的三节点源程序能给我发一个么?正在学习CAN,希望能得到一些帮助!ysc3107@163.com谢谢楼主了!
lvyunzeng 发表于 2011-5-6 10:48 | 显示全部楼层
楼主你好,最近在做CAN的入门学习,希望能得到您的技术资料,如果方便的话!
1021256354 发表于 2012-4-8 23:32 | 显示全部楼层
正在学习CAN,希望能得到一些帮助!z1021256354@163.com谢谢楼主了!
liuxinghua521 发表于 2012-6-4 10:23 | 显示全部楼层
刚开始接触CAN通信,虽然看的有点晕乎,还是学习了~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

11

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部