本帖最后由 dukedz 于 2018-10-31 01:24 编辑
10Mbps 搞的好可以传 200 多米:
https://www.maximintegrated.com/en/app-notes/index.mvp/id/3884
中文:https://www.maximintegrated.com/cn/app-notes/index.mvp/id/3884
干扰大的情况,使用隔离可以保证数据的稳定传输。
就算降低速度使用,不再需要轮询、硬件自动切换收发,可以大大提升总线利用率。
譬如提升 20 倍总线利用率,仅使用 115200 bps 就相当于之前需要 2.3 Mbps 才能满足的应用。
提升 20 倍绝对不是危言耸听,前几天,帮人调试伺服电机,每次通讯都有 20ms 左右的空闲,
虽然是 115200 bps, 但每秒只能更新 6 次电机数据,且同步性超差。
(1 号机故障不回覆)
(2 号机的回覆影响到3 号机,增加10 ms 延时都不能通讯,要增加到下图的20 ms 才行)
(因为3 号机无法事先区分数据是来自主机还是其它电机,必须解析命令才能知道,如此频繁被无关数据打断,影响运动控制。
如果是 CDBUS, 硬件会自动过滤无关数据,只有发送给自己的数据才予以接收。 )
当然,你可以说这家的伺服做的烂,但即便优化的再好,传统方式也无法避免的会浪费很多带宽。
譬如:一台电机的回覆延时为 dt, 那么 10 台至少就是 dt×10.
如果是用带仲裁的 CDBUS, 可以通过迸发操作合并延时:连续下发 10 台电机数据,然后等待它们一起回覆(总线自动调度避免冲突)。
甚至一个广播(或组播)命令同时承载 10 台电机数据,达到光速同步(远超手拉手转发的 EtherCAT)。
(虽然传统 485 也可以有广播,但有不能回覆的限制,无法确保命令正确接收。)
|