搜索
bottom↓
回复: 196
打印 上一主题 下一主题

大家觉得 CDBUS 这个带仲裁的 RS485 怎么样?跟 CAN 比呢?

  [复制链接]

出615入1076汤圆

跳转到指定楼层
1
发表于 2018-6-6 02:21:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 dukelec 于 2018-6-6 09:47 编辑

RS485 的 CDBUS 协议可以使用独立控制器实现按位仲裁,跟 CAN 的原理一样,但性能、易用性貌似都比 CAN 要好很多,至少可以达到 10Mbps,而且兼容传统软件方式控制的 RS485 设备,同样的数据包格式也可以直接用在普通的串口,这样的话整个产品无论对内还是对外只用维护一套协议就可以了。但 CAN 的话更老牌,可是用起来比较麻烦,譬如产品对外接口用 CAN 的话,普通客户不一定能顺利用的起来,电脑端访问也比串口类的麻烦很多。而且一个包只能传 8 个字节,很多情况都不够用。拆包的话就更复杂了。大家给点意见吧,感谢。

这个 IP 核是开源的:github.com/dukelec/cdbus_ip

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入20汤圆

2
发表于 2018-6-6 07:44:58 来自手机 | 只看该作者
现在高端的现场总线通讯都是一网到底,低端的基本的485,can已经够用了,还有各个厂家的私有总线,这个作为学术研究还可以,推广起来有难度。

出180入85汤圆

3
发表于 2018-6-6 08:19:52 | 只看该作者
wenming 发表于 2018-6-6 07:44
现在高端的现场总线通讯都是一网到底,低端的基本的485,can已经够用了,还有各个厂家的私有总线,这个作为 ...

请问 什么是一网到底?

出0入0汤圆

4
发表于 2018-6-6 08:22:49 | 只看该作者
yz_altang 发表于 2018-6-6 08:19
请问 什么是一网到底?

一根网线从头用到尾

出0入0汤圆

5
发表于 2018-6-6 08:25:27 来自手机 | 只看该作者
浮生莫若闲 发表于 2018-6-6 08:22
一根网线从头用到尾

中间节点怎么连?

出0入0汤圆

6
发表于 2018-6-6 08:45:51 | 只看该作者

RS485 的 CDBUS 协议可以使用独立控制器实现按位仲裁,跟 CAN 的原理一样,但性能、易用性貌似都比 CAN 要好很多,至少可以达到 10Mbps


这话是吹牛吧

出615入1076汤圆

7
 楼主| 发表于 2018-6-6 09:35:11 | 只看该作者
wenming 发表于 2018-6-6 07:44
现在高端的现场总线通讯都是一网到底,低端的基本的485,can已经够用了,还有各个厂家的私有总线,这个作为 ...

真的够用的话,坛子里面就不会有那么多帖子问一些 RS485 主动上报如何实现的帖子了。

当然这些帖子里面有部分人会建议用 CAN, 核心就是 CAN 支持仲裁。那么如果本来就通用的 RS485 也支持仲裁的话呢?又如何选择呢?

我所说的 CAN 没有 串口 通用易用也是事实,高阶的很多用以太网或 EtherCAT 我知道,CAN 的势头貌似就是被工业以太网搞死的。
所以低阶层反而求一个简单易用。

而且以太网的实时性是相对较差的,布线也是要经过交换机转发避免冲突的,哪怕是 EtherCAT 它的一个转发一个的做法,需要去反推每个节点的时间抖动,反而把很多问题搞的太复杂,很多情况下必要性不大,特别是内部总线。对外远程控制,不求实时性的场合,用标准的以太网倒是不错的选择。

对于 RS485, 哪怕是单个从机的情况下,都没法做到数据自由收发,之前朋友为洗衣工厂定制的一套设备,虽然只是一台设备接电脑,但他们希望把 RS485 当成 RS232 来用,最后他们工程师选的就是 CDBUS.
另一个某国产 7 轴机械臂的公司,他们嫌 EtherCAT 太笨重,CAN 的速率和包大小又太小(当然有考虑过 CAN FD,看了 Microchip 出的一款独立控制器,用起来真心太麻烦了),最后选的也是 CDBUS.

出615入1076汤圆

8
 楼主| 发表于 2018-6-6 09:43:26 | 只看该作者
shiva_shiva 发表于 2018-6-6 08:45
RS485 的 CDBUS 协议可以使用独立控制器实现按位仲裁,跟 CAN 的原理一样,但性能、易用性貌似都比 CAN 要 ...

看距离,做内部总线使用就可以达到很高的速率。

而且 RS485 的接口芯片很多公司譬如 Analog 貌似都出到 100Mbps 了,10 Mbps 也不算很夸张其实。

这有个测试视频,是用 CDBUS 来传摄像头视频的:v.youku.com/v_show/id_XMzUxNzA5NjkzNg.html

出0入20汤圆

9
发表于 2018-6-6 09:45:23 | 只看该作者
dukelec 发表于 2018-6-6 09:35
真的够用的话,坛子里面就不会有那么多帖子问一些 RS485 主动上报如何实现的帖子了。

当然这些帖子里面 ...

这个你要分清什么是伪需求,什么是y用户真正的痛点。
工业现场总线发展那么多年了,优胜劣汰,能够存活下来的基本都是经过验证的。
不是说CDBUS不好,我是说如果市场能够接受,那就是一款成功的总线。

出0入20汤圆

10
发表于 2018-6-6 09:47:47 | 只看该作者
另外,我看了一下资料,觉得CDBUS的部署成本太高,甚至比以太网的成本都高。

出615入1076汤圆

11
 楼主| 发表于 2018-6-6 09:58:10 | 只看该作者
本帖最后由 dukelec 于 2018-6-7 01:04 编辑
wenming 发表于 2018-6-6 09:47
另外,我看了一下资料,觉得CDBUS的部署成本太高,甚至比以太网的成本都高。 ...


这个不用太担心,有人愿意用格价就会下来,毕竟现在开芯片没什么门槛。。。
目前的话格价和 CAN 的独立控制器差不多,2 个美金左右的样子(样片是 3 个美金,100 pcs: 2 美金,1k: 1.5 美金,5k: 1.23 美金)。。。
如果用 PFGA 的产品,直接用开源 IP 核还是免费用。。。

EtherCAT 需要去反推每个节点的时间抖动貌似的确是伪需求,很多大厂不过是借此宣传自家技术做的叼,很多领域都有追求高大尚的习惯,方便卖好价钱而已。但我更倾向 K.I.S.S.

学术就更别提了,那些个机械臂,传几个字节那都必须上光纤才行的。他们的研究方向一定会是基于量子力学的光纤通讯,RS485 这么 LOW 的东西真心没有学术研究价值。。。

出5入14汤圆

12
发表于 2018-6-6 10:01:29 | 只看该作者
dukelec 发表于 2018-6-6 09:58
这个不用太担心,有人愿意用格价就会下来,毕竟现在开芯片没什么门槛。。。目前的话格价和 CAN 的独立控 ...

厂家认为:“有人愿意用价格就会下来”
用户认为:“价格下来我才愿意用”

结果,,,死翘翘!

出180入85汤圆

13
发表于 2018-6-6 11:04:31 | 只看该作者
独立控制器是什么意思,就是需要一个芯片来实现吗?

出615入1076汤圆

14
 楼主| 发表于 2018-6-6 11:10:31 | 只看该作者
本帖最后由 dukelec 于 2018-6-6 11:22 编辑
yz_altang 发表于 2018-6-6 11:04
独立控制器是什么意思,就是需要一个芯片来实现吗?


没错,有好处也有坏处:好处是无论你用换哪家的 MCU, 芯片都是一样的用法,不用重复学习;坏处就是没有集成的低价。

CDBUS 这个协议也可以运行在普通的 RS485、UART 等串口设备,纯软件的传统用法(没有仲裁功能),也可以 MCU  去软件模拟同样的仲裁功能,要求不高的情况下。

硬件仲裁的情况下,如果网络中有一台不带仲裁的传统 RS485 设备存在的话,把传统设备的优先级设置为最高,这样其它硬件控制器会主动避让传统的这个节点,依然可以在某种程度上避免冲突发生。

如果产品选择 CDBUS 硬件增强,也不要求用户也非得使用硬件增强,客户可以选择传统的串口助手这些调试工具就可以测试使用,如果有性能要求,再给他配硬件增强。

出0入0汤圆

15
发表于 2018-6-6 11:49:38 | 只看该作者
看着觉得不错,但是使用FPGA可能好点,单片机估计够呛,光要处理这些就要占不少时间

出0入25汤圆

16
发表于 2018-6-6 11:53:56 | 只看该作者
dukelec 发表于 2018-6-6 09:58
这个不用太担心,有人愿意用格价就会下来,毕竟现在开芯片没什么门槛。。。目前的话格价和 CAN 的独立控 ...


2美金??

现在很多集成CAN控制器的Cortex-M0单片机价格都低于2美金,,甚至低于1美金

出615入1076汤圆

17
 楼主| 发表于 2018-6-6 12:00:39 | 只看该作者
本帖最后由 dukelec 于 2018-6-7 01:05 编辑
zhang0352505 发表于 2018-6-6 11:49
看着觉得不错,但是使用FPGA可能好点,单片机估计够呛,光要处理这些就要占不少时间 ...


是的,如果你的产品本来就有用 FPGA, 那么直接用开源免费的 IP 核就好。
如果是 MCU 用,需要实现仲裁的话,可以考虑使用现成的 CDCTL-B1 控制器,支持 I2C 和 SPI 接口,非常小巧,集成了晶振等器件。

单片机软件模拟仲裁我之前有写过代码,基于 STM32F103, 有人需要的话也可以开放出来,只能是要求不高的场合。

出615入1076汤圆

18
 楼主| 发表于 2018-6-6 12:06:50 | 只看该作者
本帖最后由 dukelec 于 2018-6-7 00:55 编辑
XIVN1987 发表于 2018-6-6 11:53
2美金??

现在很多集成CAN控制器的Cortex-M0单片机价格都低于2美金,,甚至低于1美金 ...


2 美金还包含晶振等周边器件,目前量大还可以更低的(1k: 1.5 美金,5k: 1.23 美金),以后就不说了,肯定会便宜很多。
你可以查一下独立的 CAN 控制器什么格价。

我知道目前这个价钱还是很受限制,只能是部分成本没那么抠的场合先用起来,只要有一部分人用,资本方面就好谈。
当然又会有先有鸡后有蛋的问题,我也会想办法抽时间写点商业计划书,主动出击把成本降下来,还请大家不要吝啬的告诉我,如果用的话,目标用量和价格是多少,我好写入 BP。
谁有兴趣也有能力把格价降低的话也欢迎一起合作。当然,其它合作也欢迎。

出615入1076汤圆

19
 楼主| 发表于 2018-6-6 12:11:23 | 只看该作者
本帖最后由 dukelec 于 2018-6-6 12:34 编辑

我做这个事情,主要是本着开源分享的目的,很多公司都搞开源,他们很多开放的都是非核心的部分,而我反而是开放最核心的部分,定的格价也只是成本价,因为是开源,大家也不用担心哪一天这个项目会死掉。。。

出0入0汤圆

20
发表于 2018-6-6 12:48:06 来自手机 | 只看该作者
在国内,开源就是死路!人家拿来稍微改改,然后比你更低的价格就做了。

出0入0汤圆

21
发表于 2018-6-6 13:37:13 | 只看该作者
有EtherCAT 的开源核吗

出615入1076汤圆

22
 楼主| 发表于 2018-6-6 13:46:22 | 只看该作者
windboy 发表于 2018-6-6 12:48
在国内,开源就是死路!人家拿来稍微改改,然后比你更低的价格就做了。


没太所谓,反正这也不是我的主营业务,真有哪家公司做出低价的 CDBUS 控制器,倒也算是了了我的一桩心愿。
我的心愿是推广这个协议而已,这个协议的名字是纪念一个 C 开头的女生与我(Duke) 在 BUS 站一起等车的那个夜晚。(技术联想的话可以考虑 Collision Detection)

出615入1076汤圆

23
 楼主| 发表于 2018-6-7 01:16:01 | 只看该作者
本帖最后由 dukelec 于 2018-6-7 16:54 编辑
liurangzhou 发表于 2018-6-6 13:37
有EtherCAT 的开源核吗


当然没有,就算以后有人写出来,因为版权问题,你也没法商用。CAN 也一样道理。

出615入1076汤圆

24
 楼主| 发表于 2018-6-7 14:26:56 | 只看该作者
本帖最后由 dukelec 于 2018-6-7 14:30 编辑

刚做了一个动图,工作方式:

前 3 个字节分别是:源地址、目标地址、数据长度;
然后是用户数据;
最后两个字节 CRC 硬件自动处理。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

25
发表于 2018-6-7 15:58:22 来自手机 | 只看该作者
个人觉得,价格是硬伤

出0入0汤圆

26
发表于 2018-6-7 16:37:41 | 只看该作者
^_^,等我有了钱,我支持一把。

出0入0汤圆

27
发表于 2018-6-9 15:26:28 | 只看该作者
LZ,现在CDCTL-B1 控制器,支持 I2C 和 SPI 接口,这个转换IC具体是什么型号呢

出0入98汤圆

28
发表于 2018-6-9 19:51:30 | 只看该作者
LZ,比较感兴趣,有资料等东西共享下么,我开发一个东西正好可以用到,就是嫌CAN太啰嗦!

出615入1076汤圆

29
 楼主| 发表于 2018-6-9 22:13:45 | 只看该作者
本帖最后由 dukelec 于 2018-6-9 22:22 编辑
JJKwong 发表于 2018-6-9 15:26
LZ,现在CDCTL-B1 控制器,支持 I2C 和 SPI 接口,这个转换IC具体是什么型号呢


主芯片是一颗 FPGA (Lattice 的 ICE40UL1K-CM36A), 这里有其原理图及 PCB 图: github.com/dukelec/cdpga/tree/master/cdpga_b/files

因为 FPGA 是 BGA 封装,比较小,直接用可能不方便,所以建议使用模组,模组体积也非常小,相当于普通芯片的大小,且不需要什么外围器件。
所以 CDCTL-B1 就是这个模组的型号。

(这个模组当普通 FPGA 开发板用的时候,使用的是另外一个型号:CDPGA-B1, 做以区分。)

出615入1076汤圆

30
 楼主| 发表于 2018-6-9 22:18:55 | 只看该作者
本帖最后由 dukelec 于 2018-6-9 22:44 编辑
cdust 发表于 2018-6-9 19:51
LZ,比较感兴趣,有资料等东西共享下么,我开发一个东西正好可以用到,就是嫌CAN太啰嗦! ...


给你一个资源入口,文章最下面有很多资源连接:github.com/dukelec/cdbus_doc/blob/master/intro_zh.md

顺便把小转换模组的 Datasheet 复制一个过来方便你查看:

有任何不明白的地方都可以随时问我。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出615入1076汤圆

31
 楼主| 发表于 2018-6-9 22:25:11 | 只看该作者
go2deathward 发表于 2018-6-7 15:58
个人觉得,价格是硬伤

英雄所见略同。。。

出0入0汤圆

32
发表于 2018-6-9 22:25:21 | 只看该作者
我觉得cdbus基于rs485,那么还是canbus好用,哈哈

出0入0汤圆

33
发表于 2018-6-9 23:20:59 | 只看该作者
dukelec 发表于 2018-6-9 22:25
英雄所见略同。。。

你的动图是用什么软件做的

出615入1076汤圆

34
 楼主| 发表于 2018-6-10 00:01:40 | 只看该作者
go2deathward 发表于 2018-6-9 23:20
你的动图是用什么软件做的

首先是用画矢量图的开源工具 Inkscape 画好每一帧,每一帧只要 copy 上一帧然后加以修改就可以,最后用一个命令转成 gif:

  1. convert -resize 100% -density 160 -quality 80% -delay 300 -loop 0 *.svg operation.gif
复制代码


convert 命令是 Linux 比较常用的图片转换命令,属于 imagemagick 这个软件。

每一帧及转换命令的脚本都有上传 git 库:github.com/dukelec/cdbus_ip/tree/master/docs/img/operation.gif_src

本来是计划用高级一点的动画制作软件,譬如叼炸天的开源软件 blender, 后来想想太费事,且过多效果导致生成的动图太大便作罢。
我比较喜欢用各种优秀的开源软件,无论是画机械 (FreeCAD),还是画电路 (KiCad),还是搞 FPGA 等等。。。

出615入1076汤圆

35
 楼主| 发表于 2018-6-10 00:04:23 | 只看该作者
qiqirachel 发表于 2018-6-9 22:25
我觉得cdbus基于rs485,那么还是canbus好用,哈哈

RS485 不好吗?RS485 不妙吗?大家最先接触的就是串口类的 RS485,为何要狠心抛弃 RS485?

出615入1076汤圆

36
 楼主| 发表于 2018-6-10 00:07:05 | 只看该作者
powerlabor001 发表于 2018-6-7 16:37
^_^,等我有了钱,我支持一把。

提前感谢,大家的回帖已然是很棒的支持。

出0入0汤圆

37
发表于 2018-6-10 01:17:45 来自手机 | 只看该作者
dukelec 发表于 2018-6-10 00:04
RS485 不好吗?RS485 不妙吗?大家最先接触的就是串口类的 RS485,为何要狠心抛弃 RS485?  ...

我可能不一样吧,当时做项目选总线的时候,横向比较了一下,然后选了canbus,倒是没有串口,rs485,canbus,这种过程

出615入1076汤圆

38
 楼主| 发表于 2018-6-10 01:58:06 | 只看该作者
本帖最后由 dukelec 于 2018-6-10 02:13 编辑
qiqirachel 发表于 2018-6-10 01:17
我可能不一样吧,当时做项目选总线的时候,横向比较了一下,然后选了canbus,倒是没有串口,rs485,canbu ...


做为工程师,至少会用到串口调试打印吧?

(我觉得串口这种最基础通用的东西被淘汰的可能性非常小,而 CAN 就不好说了,已经在走下坡路了。。。)

出0入0汤圆

39
发表于 2018-6-10 02:14:02 | 只看该作者
dukelec 发表于 2018-6-10 01:58
做为工程师,至少会用到串口调试打印吧?

恩,你说的串口应该是USART吧

另外串口打印调试感觉不一样啊

RS485和CANBUS 用的地方和USART不一样吧

出615入1076汤圆

40
 楼主| 发表于 2018-6-10 04:55:25 | 只看该作者
本帖最后由 dukelec 于 2018-6-10 05:29 编辑
qiqirachel 发表于 2018-6-10 02:14
恩,你说的串口应该是USART吧

另外串口打印调试感觉不一样啊


串口通讯完整是 异步串行通信,英文是 Asynchronous Serial Communication;
USART 是 UART 的所谓高级版本,多了一些不常用的功能,通用款的 UART 的缩写是 Universal Asynchronous Receiver and Transmitter.

RS485 只是电气规范,只是大家默认都是用来跑 异步串行通信 的协议(例外:早期 CAN 协议用的也是 RS485 接口芯片)。

异步串行通信 只定义了单个字节如何传输,最简单的格式为 8N1(一个起始位,8 个数据位,一个停止位),
所以你可以用来调试打印(传字符串),或二进制的其它任意排列的数据。

RS485 只是把普通 UART 的电平转换为半双工的差分数据而已,你也可以通过 RS485 来打印调试,有的时候还是满有用的,譬如总线上某一台设备工作不太正常,你可以远程使能这台设备的打印输出,以便你在监控端就可以看到打印调试,这种方法一来你不用跑很远去单独接串口调试,二来是很多产品调试用的串口不会引出来,不拆开外壳是没办法调试的,还有运动中的设备譬如机械臂关节或末端工具也没办法接串口调试。

总之,用 RS485 灵活性很高,无论是自动分配地址、远程代码升级、打印调试、私服电机 电流环 速度环 位置环 数据实时上传以便绘制曲线调节 PID 什么的都不在话下;
而 CAN 因为其 8 个字节数据大小和 1Mbps 的限制导致很多事情都不要想了(更不用说代替网线上网看视频这些开脑洞的想法)。

CAN 当年野心很大,整了一堆自以为很叼的功能,譬如口口声声说的取代传统设备地址,代之消息号,然而用的最广的 CANOpen 并不买它账,还是把 ID 用来装源地址和目标地址。
又比如,CAN 帧最后有一个 ACK 位,当有多个接收者的时候就失去了意义,就算是单个接收者,万一接收者没有收到数据(譬如掉电),ACK 处恰巧遇到干扰,发送方会误以为数据成功送达。
而且,CAN 帧传相同字节数,数据内容不同帧长度也不同,这样会导致抖动,譬如主机以 50ms 周期发送数据,接收者收到数据一下提前一下推后,不是均匀的 50ms.
CAN 还有一个我不喜欢的功能,当某一节点接收出错的时候,它会发错误帧阻止所有节点通讯,万一整个总线,只有一台最低优先级的不重要的设备安装的比较远,信号不是太好,会因为它的接收出错,导致本可以正常接收的关键节点不能及时的接收指令。
……
所以 cdust 说的 CAN 太啰嗦 很贴切。

出0入0汤圆

41
发表于 2018-6-10 06:01:56 | 只看该作者
楼主是台湾工程师? 很不错的idea,欢迎多交流啊

出90入4汤圆

42
发表于 2018-6-10 08:13:22 来自手机 | 只看该作者
profibus-DP,也是基于485,速率上去布线成本也要考虑。以太网用的广,成本巳经下来,缺点是星形链接

出0入0汤圆

43
发表于 2018-6-10 09:54:56 | 只看该作者
本帖最后由 3DA502 于 2018-6-10 20:49 编辑

CAN的总线是线与,总线冲突时显性电平有效,485的总线冲突是短路,虽说不会烧芯片,不过总线状态成了未知数,这就麻烦了

LZ的仲裁arbitration 段用的是CAN总线模式,利用外拉电阻和TX de实现线与,仲裁后还是用低阻的485通信,设计的非常很巧妙的

如果我去设计硬件,我会选用EFM8BB21F16A-QFN20 激光打磨丝印
或者使用stc,不过感觉卖不上价了{捂脸哭}

出615入1076汤圆

44
 楼主| 发表于 2018-6-10 14:11:52 | 只看该作者
本帖最后由 dukelec 于 2018-6-10 14:26 编辑
3DA502 发表于 2018-6-10 09:54
CAN的总线是线与,总线冲突时显性电平有效,485的总线冲突是短路,虽说不会烧芯片,不过总线状态成了未知数 ...


这个坛子的朋友都满有水准,一下就定位到核心设计。

没错,核心思想就是 低速仲裁 + 高速通信,我 09 年参加一个校企联合项目,做煤矿用皮带机综合保护器的时候想到并测试可用的。
低速部分通常不超过 1Mbps, 如果需要兼容传统设备,那么两个部分的波特率设置相同即可。(片子也可以配置为传统模式,不开仲裁,这样可以在冲突概率不高的情况下实现全高速。)

CAN FD 的原理也是如此,但它有一个错误帧的机制(另见 40 楼对此机制的评论),所以即使是高速通讯部分,也不可以使用推挽输出,所以 CAN FD 说是能到 12Mbps, 实际顶多顶多 5、6Mbps.

用 MCU 去模拟 CDBUS 协议性能不够,做不到很高的速率,且功耗会比较高。
我本来是可以用某国产 FPGA 来代替 Lattice 的器件,可以便宜一些,但它没有 Lattice 的器件小巧,而且我最开始用的是 Lattice 的 SWG16 封装的同型号的片子,只有 16 个脚的 BGA, 片子大小 1.409 x 1.409 mm, 小到没朋友,不过它没有 PLL 所以弃用。
我不仅没有打磨丝印,还把原理图和 PCB 开放出来了(见 29 楼)。。。
接下来的降成本分两步走,第一步开一颗自己的芯片,第二是跟 MCU 公司合作,让他们集成 CDBUS 控制器。

出615入1076汤圆

45
 楼主| 发表于 2018-6-10 14:21:48 | 只看该作者
john78 发表于 2018-6-10 08:13
profibus-DP,也是基于485,速率上去布线成本也要考虑。以太网用的广,成本巳经下来,缺点是星形链接 ...

Profibus DP 是基于令牌的方式实现多主的,令牌的方式比较繁杂,且实时性会比较差,因为要等令牌。

以太网是很方便,但通常是最高层使用,最低层的通讯需要实时性比较好,譬如一些闭环控制,用传统总线更适合,所以搭配使用的情况比较多。

出615入1076汤圆

46
 楼主| 发表于 2018-6-10 14:35:39 | 只看该作者
ericdai 发表于 2018-6-10 06:01
楼主是台湾工程师? 很不错的idea,欢迎多交流啊

我老家是在安徽宣城,鍾意廣府文化,南下來到深圳,所在公司是台湾合资的。

喜欢的话还请多多分享给有需要的朋友,万分感谢。

出0入0汤圆

47
发表于 2018-6-10 15:07:00 | 只看该作者
dukelec 发表于 2018-6-10 14:35
我老家是在安徽宣城,鍾意廣府文化,南下來到深圳,所在公司是台湾合资的。

喜欢的话还请多多分享给有需 ...

可以考虑集成risc-v 速度如果够高,能用在linux CNC上就更好

出615入1076汤圆

48
 楼主| 发表于 2018-6-10 15:30:24 | 只看该作者
ericdai 发表于 2018-6-10 15:07
可以考虑集成risc-v 速度如果够高,能用在linux CNC上就更好

你这个说的是我在 44 楼最后提到的第二步了,我也看好 RISC-V, 但并不打算自己去组装 SoC, 你现在就可以用现有的 RISC-V 芯片搭配 CDCTL-B1 控制器来使用。
Linux CNC 用当然没问题啦,你想用在哪都可以,一切有线通讯场合都有机会用到(数据量太大的除外)。

出10入12汤圆

49
发表于 2018-6-10 16:44:40 来自手机 | 只看该作者
wenming 发表于 2018-6-6 09:45
这个你要分清什么是伪需求,什么是y用户真正的痛点。
工业现场总线发展那么多年了,优胜劣汰,能够存活下 ...

市场成功的不一定代表技术上和可靠性是最优秀的。只能说是当前开发维护和偷懒成本是比较低的。

出0入0汤圆

50
发表于 2018-6-10 22:22:39 | 只看该作者
原来这个协议是楼主设计的,看起来不错, 景仰一下

出0入0汤圆

51
发表于 2018-6-13 08:26:22 来自手机 | 只看该作者
dukelec,有否考虑过隔离?或者将物理层编码改为曼彻斯特编码(Manchester Encoding),一来提高抗扰度,另外也能过网络变压器,以此达到隔离的目的。

出0入0汤圆

52
发表于 2018-6-13 08:26:22 来自手机 | 只看该作者
dukelec,有否考虑过隔离?或者将物理层编码改为曼彻斯特编码(Manchester Encoding),一来提高抗扰度,另外也能过网络变压器,以此达到隔离的目的。

出0入0汤圆

53
发表于 2018-6-13 09:15:17 | 只看该作者
这个好!43楼的“LZ的仲裁arbitration 段用的是CAN总线模式,利用外拉电阻和TX de实现线与,仲裁后还是用低阻的485通信”没看懂,是不是一直收数,将本机发出的数据与同时收到的数据相比较,如果不同就发生了总线冲突?

出615入1076汤圆

54
 楼主| 发表于 2018-6-13 11:41:08 | 只看该作者
本帖最后由 dukelec 于 2018-6-13 11:53 编辑
liandao 发表于 2018-6-13 08:26
dukelec,有否考虑过隔离?或者将物理层编码改为曼彻斯特编码(Manchester Encoding),一来提高抗扰度,另 ...


這只是控制器,是否隔離由 PHY 接口芯片決定,譬如你可以用光耦隔離,也可以用 485 專用隔離芯片,譬如:


開源軟硬件:https://github.com/dukelec/cdbus_bridge


要是改为曼彻斯特编码就不再兼容 485 了。。。
曼彻斯特编码只是爲了降低異步時鐘對同步性的要求,沒太多好處,也抗不了干擾。。。

如果想用網絡變壓器,還是再加一級載波電路比較好,我還打算用 CDBUS 協議構建電力載波傳輸呢!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出615入1076汤圆

55
 楼主| 发表于 2018-6-13 11:46:40 | 只看该作者
mydows 发表于 2018-6-13 09:15
这个好!43楼的“LZ的仲裁arbitration 段用的是CAN总线模式,利用外拉电阻和TX de实现线与,仲裁后还是用低 ...

只有第一个字节(发送方地址)需要按位回读检测(半驱),过了第一个字节就不再回读检测,切换为传统推挽输出,以便高速传输数据。

你仔细看 1 楼波形图,只看红色线就够了,注意看它有两个幅度,第一个字节是弱 1 强 0,其后是强 1 强 0.

出0入0汤圆

56
发表于 2018-6-13 13:25:11 | 只看该作者
dukelec 发表于 2018-6-13 11:46
只有第一个字节(发送方地址)需要按位回读检测(半驱),过了第一个字节就不再回读检测,切换为传统推挽 ...

谢谢解释,但是没看出来半驱是如何做到的。485的/RE引脚一直接地,所以后面的数是否校验,本身发送的数据还会出现在485芯片的RO上。

出0入8汤圆

57
发表于 2018-6-13 13:34:44 | 只看该作者
EMC菜鸟 发表于 2018-6-6 10:01
厂家认为:“有人愿意用价格就会下来”
用户认为:“价格下来我才愿意用”

经典,大多数东西都死在这个上面!

出615入1076汤圆

58
 楼主| 发表于 2018-6-13 13:53:37 | 只看该作者
mydows 发表于 2018-6-13 13:25
谢谢解释,但是没看出来半驱是如何做到的。485的/RE引脚一直接地,所以后面的数是否校验,本身发送的数据 ...

半驱 指的就是 弱 1 强 0:
  • 弱 1 由 A B 线上的电阻提供,此时 DE 脚为低电平不使能输出即可(DI 虽然给的是数据 1,但无论何值都不会影响总线状态);
  • 强 0 对应 DE 脚为 1 使能输出,DI 数据为 0,A B 线上的逻辑 0 信号由接口芯片提供。


输入一直使能,控制器其实会保存接收到的所有数据,见 24 楼或 GitHub 页面动图,控制器的接收和发送是比较独立的,控制器的 接收功能块 在一帧数据结束后再决定是忽略还是保留。

仲裁其实是 发送功能块 自己处理的,发送首字节的时候,每发一个位,在该位中间靠后的位置读一下 RX 数据,判断是否与 TX 数据相同,相同则继续,否则就退出发送(稍后会自动重新发送)。
发之后字节的时候,不去读 RX 数据做比较而已。

顺便提一下,接收功能块 给 发送功能块 提供的关键信息其实是「何时允许发送」。

出615入1076汤圆

59
 楼主| 发表于 2018-6-13 14:01:51 | 只看该作者
本帖最后由 dukelec 于 2018-6-13 14:07 编辑
mydows 发表于 2018-6-13 13:25
谢谢解释,但是没看出来半驱是如何做到的。485的/RE引脚一直接地,所以后面的数是否校验,本身发送的数据 ...


给你一个实际控制接口芯片发送数据的时序图:


第一个 bus_a 对应的总线 A 的信号,黄色对应默认状态弱 1(电阻上拉), 否则就是强 1 或强 0.

后面 3 个分别对应的是 MAX3485 等接口芯片的 RO、DI 和 DE 脚的信号。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

60
发表于 2018-6-13 14:16:28 | 只看该作者
如果能推广还是很有意义的,我们内部总线就是采用的RS485方式,主要是CAN速率通信速率太低,由于485没有仲裁,我们采用了分时复用的方式。而且理论上485抗干扰性能应该强于CAN。
对于推广来说还有一个难点,工业应用场合一般不会轻易换上一个没有广泛应用的新东西,因此必须联合有实力的厂家进行更广泛的应用,这样才能更好的推广。

出615入1076汤圆

61
 楼主| 发表于 2018-6-13 14:24:16 | 只看该作者
jameszxj 发表于 2018-6-13 14:16
如果能推广还是很有意义的,我们内部总线就是采用的RS485方式,主要是CAN速率通信速率太低,由于485没有仲 ...

是的,目前还有一种方式去兼容别家的设备,无论是 ModBus 还是私有协议都可以通过 CDBUS Bridge 透传来解决,譬如我做的这个虚拟串口的场景:


话说,你们的分时复用怎么做的?时间片?令牌?还是检测空闲才发送?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

62
发表于 2018-6-13 14:31:23 | 只看该作者
dukelec 发表于 2018-6-13 14:24
是的,目前还有一种方式去兼容别家的设备,无论是 ModBus 还是私有协议都可以通过 CDBUS Bridge 透传来解 ...

时间片,定时查询发送

出615入1076汤圆

63
 楼主| 发表于 2018-6-13 14:38:16 | 只看该作者
jameszxj 发表于 2018-6-13 14:31
时间片,定时查询发送

好吧,有大厂资源的话还麻烦推荐一下哦。。。

设备也可以考虑把 MODBUS 打包进 CDBUS 传输,这样对外宣传就依然是标准协议了。。。
反正 MODBUS via TCP/IP、MODBUS via CAN 等等都是很正常的事情。。。

自己内部用可以看一下我设计的 CDNET 这个上层协议,比较简洁,该有的功能也都有。
https://github.com/dukelec/cdnet
http://blog.dukelec.com/rs485-fl ... e-data-integrity-zh

出0入0汤圆

64
发表于 2018-6-13 14:52:22 | 只看该作者
谢谢!懂了。

出5入8汤圆

65
发表于 2018-6-13 14:57:53 | 只看该作者
can 已经足够便宜和稳定了,类似总线机会不大

出0入0汤圆

66
发表于 2018-6-13 14:58:25 | 只看该作者
dukelec 发表于 2018-6-13 14:38
好吧,有大厂资源的话还麻烦推荐一下哦。。。

设备也可以考虑把 MODBUS 打包进 CDBUS 传输,这样对外宣 ...

是否有linux上驱动应用?

出615入1076汤圆

67
 楼主| 发表于 2018-6-13 15:03:44 | 只看该作者
本帖最后由 dukelec 于 2018-6-14 10:42 编辑
wt3333 发表于 2018-6-13 14:57
can 已经足够便宜和稳定了,类似总线机会不大


1. 许多人不愿意用 CAN, 嫌麻烦;
2. CAN 的性能不够。

出615入1076汤圆

68
 楼主| 发表于 2018-6-13 15:15:17 | 只看该作者
本帖最后由 dukelec 于 2018-6-13 16:06 编辑
ffbiao 发表于 2018-6-13 14:58
是否有linux上驱动应用?


我目前开发都是 Linux 先行,平时工作生活都是用 Linux, 一直用 Gentoo 这个发行版。

Linux 端目前是通过 USB 转 CDBUS 来通讯,也就是上面提到的 CDBUS Bridge,USB 端是虚拟串口,不用设置波特率就可以用的那种,bridge 协议是这样的:



与电脑通讯也可以简单的使用 FT232H 等 USB 转 I2C/SPI 的 Adapter 直接接 CDCTL-Bx 模组,但速度比较慢。


马上会推出 M-PCIe 的 4 路 CDBUS 板卡,到时候不走 TTY 框架,直接与用户程序对接,配合 Linux PREEMPT-RT 补丁还可以实现比较高的实时性。
型号是 CDCTL-MP, 主控芯片是 EP4CGX15F14.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

69
发表于 2018-6-13 16:25:12 | 只看该作者
在用ethercat总线。
通信是内部总线,就可选择多些。
如是多个不同外部设备再上总线,就用大家都用的总线吧。
USB总线吧,主机硬件,主机驱动软件,设备硬件,设备驱动软件。中断传输,块传输,周期传输,设备初始化等等。
完善的硬件基础,更多的是软件框架。硬件要跑的动,软件能做,做了哪些才是最关键的了。

出0入0汤圆

70
发表于 2018-6-13 19:29:07 来自手机 | 只看该作者
哈哈,问个愚蠢的问题,支持树莓派么,我觉得有机会可以拿来做毕设

出615入1076汤圆

71
 楼主| 发表于 2018-6-13 19:48:09 | 只看该作者
本帖最后由 dukelec 于 2018-6-13 19:55 编辑
qiqirachel 发表于 2018-6-13 19:29
哈哈,问个愚蠢的问题,支持树莓派么,我觉得有机会可以拿来做毕设


当然支持,我的传摄像头的场景就是基于 Raspberry Pi Zero 的,直接连 SPI 口,用户空间访问,都不用写驱动。。。
场景介绍:https://github.com/dukelec/cdbus_doc/blob/master/intro_zh.md

你可以参考这个代码和脚本:
https://github.com/dukelec/cdnet ... cdctl_bx_wrapper.sh
https://github.com/dukelec/cdnet ... /cdctl_bx_wrapper.c


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

72
发表于 2018-6-13 20:23:11 | 只看该作者
前段时间还在淘宝上看到你的模块,今天就见到真人了

出0入0汤圆

73
发表于 2018-6-13 20:37:37 来自手机 | 只看该作者
技术贴!标记!

出0入0汤圆

74
发表于 2018-6-13 21:17:39 | 只看该作者
厉害想法独特!

出0入0汤圆

75
发表于 2018-6-13 22:12:13 来自手机 | 只看该作者
牛逼mark留名

出0入0汤圆

76
发表于 2018-6-14 09:16:43 | 只看该作者
火钳刘明,期待早日推广开

出0入0汤圆

77
发表于 2018-6-14 11:20:26 | 只看该作者
LZ这套协议确实不错,值得收藏学习

出0入0汤圆

78
发表于 2018-6-14 12:01:15 | 只看该作者
这套 CDBUS 协议,,,学习了

出100入0汤圆

79
发表于 2018-6-21 19:39:20 | 只看该作者
CDBUS
标记下,虽然不大可能用到!

出0入0汤圆

80
发表于 2018-6-22 11:01:05 | 只看该作者
CDBUS mark一下

出0入0汤圆

81
发表于 2018-6-22 21:52:17 | 只看该作者
本帖最后由 XIUQIN 于 2018-6-22 22:00 编辑
dukelec 发表于 2018-6-10 14:35
我老家是在安徽宣城,鍾意廣府文化,南下來到深圳,所在公司是台湾合资的。

喜欢的话还请多多分享给有需 ...


你好!我也是安徽的。很好的创意,这几天也在研究瑞士的Dupline通信总线,我们公司的一款带急停对位的矿用电话里用到。市场上好像只有他们一家在做。这家公司从硬件到软件都是独立设计,还自己开发了芯片封闭了起来。http://www.dupline.com/scheletro.asp?Language=UK&Page=4

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入8汤圆

82
发表于 2018-6-22 22:23:02 | 只看该作者
看了楼主的高论,真是受益匪浅,
这么好的东西, 好想用, 什么时候可以用上?

出615入1076汤圆

83
 楼主| 发表于 2018-6-24 00:47:21 | 只看该作者
本帖最后由 dukelec 于 2018-6-24 01:03 编辑
XIUQIN 发表于 2018-6-22 21:52
你好!我也是安徽的。很好的创意,这几天也在研究瑞士的Dupline通信总线,我们公司的一款 ...


哈哈,我大学是在安徽最北边的宿州学院上的,那附近很多煤矿,我的 CDBUS 最早就是接一个煤矿用的皮带综保器的校企联合项目的时候想出来的。

我当时针对煤矿这种场景做对等通讯主要是考虑安全性,因为距离很长,担心主机故障之后,总线没有人来调度(设备可以检测超时停机,但其它信号却没法传达了)。

你发的这个也是对等通讯,但仍然需要一个调度器,不是纯粹的对等。至于各种拓扑,速率低的情况下 485 也没问题。

如果要通过电源线来传数据,方法很多,简单的有类似 1/2 VCC 代表逻辑 0, VCC 代表逻辑 1 这种方式,不需要额外增加储能电容。复杂的可以用 FSK 载波等方式。

CDCTL 控制器有寄存器可以配置反向输出,方便配合外部电路支持各种玩法。而且最新版本支持全双工模式,方便 MCU 扩展 UART 口来用。

最后想说的是,煤矿最好还是不要用电源复用信号,毕竟可靠性会容易受影响,再说矿井里面到处都是低压直流,何必呢。。。

出615入1076汤圆

84
 楼主| 发表于 2018-6-24 00:58:17 | 只看该作者
icoyool 发表于 2018-6-22 22:23
看了楼主的高论,真是受益匪浅,
这么好的东西, 好想用, 什么时候可以用上?

唉,随时都可以啊,我的东西都在某宝成本价挂了一年多了,至今无人问津(反倒是很多外国友人邮件联络我拿样和小批量),你可在上面以搜一下 CDBUS, 我用的是以前的用户名 dukedz. 直接联络我也可以。。。
(如果你玩 FPGA 的话,也可以直接用我的 IP 核。。。)

出0入0汤圆

85
发表于 2018-6-24 09:36:51 | 只看该作者
XIUQIN 发表于 2018-6-22 21:52
你好!我也是安徽的。很好的创意,这几天也在研究瑞士的Dupline通信总线,我们公司的一款 ...

这个东西和消防总线类似

出0入22汤圆

86
发表于 2018-6-24 12:11:52 来自手机 | 只看该作者
请问一下,您用的那个fpga,是不是不需要外部flash和晶振?

出0入8汤圆

87
发表于 2018-6-24 12:28:43 来自手机 | 只看该作者
EMC菜鸟 发表于 2018-6-6 10:01
厂家认为:“有人愿意用价格就会下来”
用户认为:“价格下来我才愿意用”


很对,要用户先用是比较难的,除非一出来就有非常吸引大众去用的因素,例如ipone刚出的时候,所有为什么大佬们要不断烧钱去推广一项新东西。LZ的设计很好,但怎么主动推广落地才是关键。

出615入1076汤圆

88
 楼主| 发表于 2018-6-24 12:30:21 | 只看该作者
zxq6 发表于 2018-6-24 12:11
请问一下,您用的那个fpga,是不是不需要外部flash和晶振?


我用的片子,你可以在上面找到型号和原理图连接。

是 Lattice 的 iCE40 UL 系列,内部有非失忆存储,但只能写一次,内部也有时钟,但做串口通讯其精度不够,所以我外加的晶体。

总结:目前用的是内部存储和外部晶体,晶体、LDO 等器件都集成到模组上了,无需用户再外接,外部电路供个电就够了,电源去耦电容都不用加。

(晶体代替晶振的细节可以看我博客的这篇文章:http://blog.dukelec.com/crystal-input-to-fpga

出0入0汤圆

89
发表于 2018-6-24 14:50:28 | 只看该作者
dukelec 发表于 2018-6-24 12:30
我用的片子,你可以在上面找到型号和原理图连接。

是 Lattice 的 iCE40 UL 系列,内部有非失忆存储,但 ...

FPGA也有OTP的,这么神奇

出0入0汤圆

90
发表于 2018-6-26 17:37:50 | 只看该作者
dukelec 发表于 2018-6-24 00:47
哈哈,我大学是在安徽最北边的宿州学院上的,那附近很多煤矿,我的 CDBUS 最早就是接一个煤矿用的皮带综 ...

祝楼主这个能普及开,稳定、实用、价格合适就不怕没销路。准备跟领导提下买几个测试。

出0入0汤圆

91
发表于 2018-7-4 22:16:30 | 只看该作者
不知道楼主说的can麻烦再哪里?
can不就跟485一样需要个收发器么?而且can还可以省掉一个收发使能端口
can也蛮稳定的,国内的电梯不敢说所有,起码95%以上用的都是can

出615入1076汤圆

92
 楼主| 发表于 2018-7-5 02:11:15 | 只看该作者
weichao4808335 发表于 2018-7-4 22:16
不知道楼主说的can麻烦再哪里?
can不就跟485一样需要个收发器么?而且can还可以省掉一个收发使能端口
can ...

其實樓上好幾處都明確指出 CAN 麻煩的地方,如果有異議可以直接指出反駁。提示:1樓、7樓、40樓、60樓……

CAN 不僅協議複雜,控制器實現和操作也複雜。

CAN 的性能不夠,CDBUS 可以傳視頻,請問 CAN 可以嗎?

歡迎一切討論。。。

出0入0汤圆

93
发表于 2018-7-10 07:37:42 | 只看该作者
严重支持,这两天就到,,上采购些试试;

出0入57汤圆

94
发表于 2018-7-12 14:48:38 | 只看该作者
使用485的场景一般距离比较远,强度速率没有意义吧。
因为总线上还是485的特性,距离远了速率还是上不去。

出615入1076汤圆

95
 楼主| 发表于 2018-7-12 16:13:53 | 只看该作者
leafstamen 发表于 2018-7-12 14:48
使用485的场景一般距离比较远,强度速率没有意义吧。
因为总线上还是485的特性,距离远了速率还是上不去。 ...

場景這個說不好,有遠距離應用,也有近距離應用。

遠距離的時候,波特率比較低,傳統輪詢一圈下來耗時會很誇張,這個時候仲裁就可以起到很大作用。

所以,應用無論距離遠近,CDBUS 都很適用。

另外,用高速接口芯片的話,距離稍微遠一點也能達到可觀的速率。

出0入0汤圆

96
发表于 2018-7-12 16:34:21 | 只看该作者
我不想参与讨论,请直接告诉我结果

出0入0汤圆

97
发表于 2018-7-13 00:06:43 来自手机 | 只看该作者
新玩意儿,学习了

出0入42汤圆

98
发表于 2018-7-13 14:54:39 | 只看该作者
新玩意新技术很牛逼,但没有必要将已经市场和技术验证过的CAN说得半文不值,CAN最大的优势是通讯的可靠性和多主。

出0入0汤圆

99
发表于 2018-7-13 20:05:58 来自手机 | 只看该作者
留个爪印,有空仔细看看

出0入0汤圆

100
发表于 2018-7-15 23:36:30 | 只看该作者
CAN 不僅協議複雜,控制器實現和操作也複雜。我也同感,如果使用CDBUS与CAN价格相当,会选CDBUS。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 20:18

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表