发新帖我要提问
12
返回列表
打印

用can驱动器代替485驱动器可行吗?

[复制链接]
楼主: 21ele
手机看帖
扫描二维码
随时随地手机跟帖
21
ejack| | 2009-11-9 12:11 | 只看该作者 回帖奖励 |倒序浏览
看来是多打了个0
;P
害的大家都震惊了

使用特权

评论回复
22
ejack| | 2009-11-9 12:12 | 只看该作者
用某些特殊金属,或者上光纤……那样1km下500kbps也是可能的……

使用特权

评论回复
23
冷漠| | 2009-11-9 14:24 | 只看该作者

先想想别人没想过的问题才有意思。

本帖最后由 冷漠 于 2009-11-9 14:59 编辑
串口+485基本都是主从模式,但是主从机模式真的就都适用所有的通讯场合吗? 串口能不能用载波侦听多路访问/冲突检测来进行通讯? 因为有这些疑问,所以才琢磨总线驱动器,琢磨串口远距离通讯如何才能进行侦听,如何在成本和性能之间取舍组合,才会考虑串口+can驱动器的通讯方法。


LZ能有灵感,不错。上述提出的所有问题,有一本书上有详细讲解,《计算机数据传输与实践》【日本】宫琦诚一著  20年前写的。

我在想:为什么中国人写不出来这么好的书?如果20年前不是日本宫琦诚一写过了,有没有可能今天由LZ写一本?——因为LZ对世界上同行的灵感和研究不敢兴趣,只感兴趣于自己独立研究。

我赞赏hotpower也有这种独立研究精神。对一个什么数学问题想了若干年,终于想出来了。“西安交大数学教授都没想出来的问题,......”后来有个教授告诉hot,20年前苏联人XX就有答案了。国际数学界称为XX定理。....当然这也没遗憾,中国有很多草根数学爱好者在业余论证世界未解数学难题,中科院数学研究所每年都会收到来自民间的数学爱好者的研究论文,称自己第一个解决了什么什么“猜想”,以求鉴定。

为什么是日本人写的?因为日本人有一种特质:一个人的生命可能默默无闻地过去,没任何价值;还不如为一个细小的未解问题投入一生的热情和专注。——一生写了这么一本小册子,也算是无憾了。

但是他首先要知道什么是“细小的未解问题”,如果他在研究青霉素,或者现在还在论证哥德巴赫猜想,而不知道中国有个陈景润陈氏定理......

学习是首先向前人学习的。即使极聪明的人自学不也是先学书本?即使本论坛上也早就有了CAN驱动器替代485驱动器的方案。LZ自己灵感琢磨出来,并随之投入研究?

倒不如先想想别人没想通的问题:

为什么CAN系统传输距离没有RS485传输距离远?两者是什么比例关系?请证明

如果我先告诉你答案:两者传输距离至少差3倍!也就是说RS485主从访问协议(简单说8051串口异步通信方式。用术语说就免啦。)系统的传输距离比CAN(CSMA多主访问协议)系统通信距离至少远3倍。——注意看清楚谁比谁远N倍。请拿出理论证据。

否则,在这讨论CAN比485通信距离远?这种自信有什么意义?是对自己负责?

使用特权

评论回复
24
牛牛特工| | 2009-11-9 14:55 | 只看该作者
嗯 之前我也在想这问题的
俺就觉得协议设计是最大的难题~~
要是俺有心思好好看看书就好了

使用特权

评论回复
25
protel575| | 2009-11-13 10:16 | 只看该作者
1# 21ele
我们是武汉做仪器仪表的公司,控制使用的是ARM系统。
要求能熟练掌握对ARM芯片的编程,能应用ARM芯片进行各模块的独立设计,相互
模块间用CAN通信,仪器要求具有远程控制和诊断。
       能整套系统设计更佳。
       对学历无要求。 付出就应有收获
不知道你是否感兴趣。cjxpro@163.com

使用特权

评论回复
26
dukedz| | 2009-12-26 13:16 | 只看该作者
非常同意23楼的观点,我认为can采用的线与机制(显性&隐性=显性)会造成跳变到显性的边沿和跳变到隐性的边沿不一致,相当于TTL电路中的强0弱1,那么由0跳变为1的时间比由1跳变到0的时间慢,这样主机输出的阻抗是变化的,故信号传输的距离没有485的强0、强1机制传的远。

最近用FPGA做485控制,想了许多多主机的方案,决定采用这种:
1>采样时钟为波特率的16倍。
2>有一个总线空闲标志位,各节点实时跟踪总线状态(硬件完成),当总线空闲时该标志清零。
3>节点只有在总线标志空闲时才可发送数据。
4>多节点同时发送数据时有总线仲裁:
仲裁阶段数据发送的速度是波特率的一半,因为仲裁时是线与状态,为了确保距离,所以降低速度。
仲裁和can一样,非破坏性的,优先级低的节点自动退出,最后只剩一个优先级最高的节点,此时进入数据传送阶段,这时和普通的485一样,强1强0.
5>还可以考虑每10个码元加一个时钟同步。以及硬件crc效验。

呃,目前是这样想的,感觉这样的协议比can还牛啊。呵呵,见笑了。。。。。

使用特权

评论回复
27
ejack| | 2009-12-26 15:25 | 只看该作者
本帖最后由 ejack 于 2009-12-26 15:28 编辑
因为仲裁时是线与状态,为了确保距离,所以降低速度。


就冲这句就能让CAN哭鼻子了……:D
以比普通CAN控制器强N倍的资源打造的协议控制器,果然NB……不知道成本方面咋样,没玩过FPGA,不禁心痒痒了:P

有一个问题:如何区分仲裁阶段?

使用特权

评论回复
28
dukedz| | 2009-12-26 21:45 | 只看该作者
这个很好区分啊,采样时钟是波特率的16倍,发送数据的前一个时钟采样总线是否空闲,如果总线被占用,就等待。。。只有总线“空闲”时才发送,这里“空闲”打引号是因为它包含两种状态,一种比较简单,是正真的空闲,发送数据不会冲突;另外一种就是两台主机“同时”发送,那么便进入仲裁。。。;然后这里的“同时”也打了引号,又是为咩呢?这里是强调并多主机并不可能完全同时,但只要在一个采样周期内即可。。。应为超过一个采样周期就是最开始说的不需要仲裁就直接判断总线为忙了。

使用特权

评论回复
29
dukedz| | 2009-12-26 21:47 | 只看该作者
一句话概况一下就是:慢速抢总线,快速传输。

使用特权

评论回复
30
ruyeecheung| | 2009-12-26 22:53 | 只看该作者
单纯就速度和距离而言,我觉得可以

使用特权

评论回复
31
ejack| | 2009-12-27 06:29 | 只看该作者
28# dukedz
你的意思我明白了。
这样将会产生一个问题:
1.如果总线由空闲状态转化为单个节点广播数据,那么所有节点应按照正常波特率接收;
2.如果总线由空闲状态转化为多个节点广播数据(需要仲裁),那么所有节点应按照1/2波特率接收;
于是总线状态段之后、数据段之前必须有一个发送方的波特率同步段,否则节点从空闲状态进入接收状态时无法判定是单节点发送还是多节点发送。

使用特权

评论回复
32
dukedz| | 2009-12-27 10:51 | 只看该作者
1、因为冲突的非预见性,所以仲裁阶段是一必不可少的阶段。(单个节点广播数据也有仲裁阶段)
2、仲裁阶段所谓的1/2波特率相当于用2个码元来发送一个码元数据。仲裁过后的数据收发阶段是固定1/1波特率。
   只有在数据流过长的情况下才需要插入时钟同步。

使用特权

评论回复
33
ejack| | 2009-12-27 12:50 | 只看该作者
了解。
另外数据流本身可变波特率的话,对于波特率自适应的接收设备会稍微复杂一些了(最坏情况下需要一个完整帧的时间才能检测完成并同步)。

使用特权

评论回复
34
许世霞| | 2009-12-27 16:48 | 只看该作者
CAN通信距离长是建立在链路层可靠的协议基础上的,跟收发器没关系!离开了CAN芯片(或带CAN的单片机)光一个收发器,不能叫CAN!
Wxy8030 发表于 2009-11-6 22:05

支持!

使用特权

评论回复
35
供应CAN芯片| | 2014-9-18 15:16 | 只看该作者
TJA1040/TJA1050/A82C250/A82C251/MCP2551 有需要可以联系我

使用特权

评论回复
36
供应CAN芯片| | 2014-9-18 15:17 | 只看该作者

TJA1040/TJA1050/A82C250/A82C251/MCP2551 有需要可以联系我们,可快递发货,可发样片,大量低价,绝对正品。 业务QQ:2658173744

使用特权

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

本版积分规则