人家的数据帧包含标识符等信息,多个节点同时向总线发送数据时,比较数据帧中的标识符,决定哪个节点的数据优先发送,,,</p>
<p>具体可以搜索查CAN协议,说的比较清楚<br />
仲裁机制是允许总线上的多个节点,无论是主节点还是从节点,在 CAN 中没有严格的主从之分。</p>
</div><script>showreplylogin();</script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> <div class='shownolgin' data-isdigest='no'><p>就像开会一样,</p>
<p>有的会议,只能座哪里听讲,举手提问你才能回答</p>
<p>有的会议是,讨论会,都能提问都能发言</p>
</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='no'><p>CAN总线主要用于高速数据传输和实时控制系统,而RS485总线则适用于低速数据传输和数据采集系统,如温度、湿度、压力传感器的数据采集。</p>
</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='no'>langtuodianzi 发表于 2024-12-26 15:06
CAN总线主要用于高速数据传输和实时控制系统,而RS485总线则适用于低速数据传输和数据采集系统,如温度、湿 ...
<p>CAN总线主要用于高速数据传输和实时控制系统?你确定吗 为什么CAN可以用在高速传输和实时控制系统?</p>
</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='no'>QWE4562009 发表于 2024-12-26 18:04
CAN总线主要用于高速数据传输和实时控制系统?你确定吗 为什么CAN可以用在高速传输和实时控制系统?
<p>can 2.0 只有 1Mbps 的速度,can fd 通常也只有 5、6Mbps,因为 can 不支持推挽输出,所以速度不容易提上去</p>
<p>而 cdbus/rs485 可以到 50Mbps 甚至可以更高</p>
</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='no'>dukedz 发表于 2024-12-26 21:46
can 2.0 只有 1Mbps 的速度,can fd 通常也只有 5、6Mbps,因为 can 不支持推挽输出,所以速度不容易提上 ...
<p>你对这个很熟悉</p>
</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='no'>dukedz 发表于 2024-12-26 21:46
can 2.0 只有 1Mbps 的速度,can fd 通常也只有 5、6Mbps,因为 can 不支持推挽输出,所以速度不容易提上 ...
<p>1.can 为什么不支持推挽输出?</p>
<p> </p>
</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='no'>QWE4562009 发表于 2024-12-27 11:44
1.can 为什么不支持推挽输出?
<p>佩服的你想象力</p>
<p> </p>
<p>推挽输出是可以输出高电平和低电平,且驱动能力比较强。</p>
<p>但在CAN 总线,这种强驱动的输出方式会让总线电平混乱。</p>
<p> </p>
<p>可以想象下,如一个节点通过推挽输出想把总线电平拉高,另一个节点却想把它拉低,就会出现无法确定总线电平状态的情况,会破坏 CAN 总线正常的通信秩序。</p>
</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='no'><p>就像很多人在一个会议室里说话一样,</p>
<p>在 CAN 总线上,多个节点,或者说设备,都有可能同时发送数据。</p>
<p>如果用推挽输出,当两个节点同时向总线发送不同的电平信号时,就好比两个人同时大声说不同的话,谁也听不懂听不到,会产生冲突,估计还要打架,,,</p>
</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='no'> 本帖最后由 dukedz 于 2024-12-27 17:11 编辑
<div class="quote">
<blockquote><font size="2"><a href="forum.php?mod=redirect&goto=findpost&pid=3384092&ptid=1302737" target="_blank"><font color="#999999">QWE4562009 发表于 2024-12-27 11:44</font></a></font> 1.can 为什么不支持推挽输出? </blockquote>
</div>
<p>can 因为要仲裁,默认只能输出强 0 和弱 1,弱 1 是靠总线电阻维系状态。</p>
<p>弱 1 和强 0 遇到一起,会 “线与” 得到 0 的结果,这也是可以多主仲裁的基础。</p>
<p>如果强 1 和强 0 遇到一起,会产生短路,无法仲裁,严重会损坏器件。</p>
<p>can fd 虽然做了提速,低速仲裁+高速传后续数据,但是为了兼容 can 2.0,依然是只能输出弱 1 和强 0,导致高速数据阶段速率上不去。</p>
<p>can 2.0 当初不支持推挽是因为速率不快(1Mbps),不需要推挽,can fd 又因为要兼容 can 2.0 不方便升级为推挽,历史包袱重。</p>
<p> </p>
<p>而 cdbus/rs485 的仲裁阶段可以输出弱 1 和强 0,后续数据阶段推挽输出强 1 和强 0,这样既可以通过仲裁阶段避免数据冲突,也可以在后续数据阶段使用强 1 强 0 推挽输出实现高的多的速率。</p>
</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='no'>dukedz 发表于 2024-12-27 17:08
can 因为要仲裁,默认只能输出强 0 和弱 1,弱 1 是靠总线电阻维系状态。
弱 1 和强 0 遇到一起,会 ...
<p>这位兄弟功力审核,,</p>
</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='no'>QWE4562009 发表于 2024-12-27 18:14
这位兄弟功力审核,,
<p>深厚</p>
</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='no'>QWE4562009 发表于 2024-12-26 18:04
CAN总线主要用于高速数据传输和实时控制系统?你确定吗 为什么CAN可以用在高速传输和实时控制系统?
<p>can的优势不在高速,实际上相同的物理线路下485速度可以比can快不少</p>
<p>can的真正优势是无主,重载安全,节点轻负荷</p>
<p>无主依赖于碰撞处理</p>
<p>重载安全依赖碰撞后的优先级处理</p>
<p>节点轻负荷是底层硬件实现的包过滤、帧队列和自动回退重发机制,典型的一个很弱的mcu也能挂在一个繁忙的can总线上轻松工作,485很难</p>
<p> </p>
</div><script>showreplylogin();</script>
页:
1
[2]