小浩 发表于 2018-2-5 17:20:07

求助:MBUS一主多从通信怎么实现主动上报?

本帖最后由 小浩 于 2018-2-6 12:47 编辑


现在做一个项目,用到mbus,一主对多从的,需要从机对主机主动上报数据,主机也有可能给从机下发数据,怎么做到数据不冲突?

zsmbj 发表于 2018-2-5 17:27:29

主动上报还是can可靠!

小浩 发表于 2018-2-5 17:30:10

zsmbj 发表于 2018-2-5 17:27
主动上报还是can可靠!

现在老板让选择了mbus,但是在通信那里感觉怎么都行不通{:sad:}

canopen 发表于 2018-2-5 17:30:13

标准modbus协议 ,可以从机主动发数据?

canopen 发表于 2018-2-5 17:32:37

要是 modbus tcp 还好说,自己额外定义个服务端口跑就好。485 要冲突的,,,

小浩 发表于 2018-2-5 17:32:49

canopen 发表于 2018-2-5 17:30
标准modbus协议 ,可以从机主动发数据?

可以吧,不是好多有线烟感都是用的mbus吗?{:shocked:}

小浩 发表于 2018-2-5 17:37:07

canopen 发表于 2018-2-5 17:32
要是 modbus tcp 还好说,自己额外定义个服务端口跑就好。485 要冲突的,,, ...

我们的电路设计是两根线,通信带通电的,数据在总线上传输是要冲突的,就是不知道怎么避免冲突

lin28 发表于 2018-2-5 17:41:46

如果主机不是很频繁发数据, 从机理论上可以主动发数据。 冲突了数据校验不通过。这笔数据就不要拉。
RS485通讯,任何一方发数据,其余的都受到的。要不要这笔数据,自己模块确定了

xiaodao35 发表于 2018-2-5 17:51:31

小浩 发表于 2018-2-5 17:37
我们的电路设计是两根线,通信带通电的,数据在总线上传输是要冲突的,就是不知道怎么避免冲突 ...

这类2线通讯基本是不对外的。

canopen 发表于 2018-2-5 18:35:44

小浩 发表于 2018-2-5 17:32
可以吧,不是好多有线烟感都是用的mbus吗?

也可能是主机轮寻啊

gallle 发表于 2018-2-5 18:37:43

MBUS就不是给主动上报定的协议,一般从机需要先给下边充电,然后读数据!

bbandpp 发表于 2018-2-5 19:30:49

同问哪种主动上报的协议可靠些,看了很多协议,ebus,pbus,感觉还是can比较通用些

bg6agf 发表于 2018-2-5 19:44:44

本帖最后由 bg6agf 于 2018-2-5 19:47 编辑

数据量不大。试试APRS里的协议。原理大概是。。每次通信结束后。延时随机时间检测总线。一直没人通信就自己发。否则检测下一个随机时间间隔。所有子站主站由于随机数种子不同。冲突的概率不大。。稍微卡一下就全错开了。

查了一下。AX.25协议。。所有节点全是平等的。

饭桶 发表于 2018-2-5 20:59:09

空窗期大于两倍数据占有期即可。

LearningASM 发表于 2018-2-6 07:39:52

MBUS 基本都是小功耗,低数据量的设备吧,记得有人说过,好像数据不好还原。

lingdianhao 发表于 2018-2-6 08:57:27

主动上报的优势是可以实时发送数据,但是MBUS设计的是主从工作模式,只要你主站轮询速度满足你的刷新周期要求,就完全可以用轮询方式。如果轮询周期满足不了要求,主动上报更不能满足你的实时要求(多个站发数据会冲突)。那么你需要换CAN.

chendaon 发表于 2018-2-6 09:06:24

这类没有冲突检测的网络,比较靠谱的办法还是给每个终端分配时间戳吧,在各自的时间戳里面进行上报。

小浩 发表于 2018-2-6 09:09:31

lingdianhao 发表于 2018-2-6 08:57
主动上报的优势是可以实时发送数据,但是MBUS设计的是主从工作模式,只要你主站轮询速度满足你的刷新周期要 ...

现在考虑来考虑去都避免不了的,不知道给老板说换方案让不让换,毕竟做mbus花好久时间了

小浩 发表于 2018-2-6 09:10:43

lin28 发表于 2018-2-5 17:41
如果主机不是很频繁发数据, 从机理论上可以主动发数据。 冲突了数据校验不通过。这笔数据就不要拉。
R ...

那到不会很频繁,就怕有的时候需要丢弃很多数据才能得到正确的数据,比较不靠谱

xymxym 发表于 2018-2-6 09:32:43

可以参考一下以太网用的CSMA/CD,不过如果你的总线带宽占用率很高,就不适合用CSMA/CD了。

lingdianhao 发表于 2018-2-6 09:41:24

MBUS应该只能算是物理层的一种数据传输方式(应该是bit传输方式),就是数据线和电源线共用,
在CPU测一般都是用串口做链路层,应用层协议可跑Modbus之类的主从轮询协议,
这个MBUS物理层就不支持多设备同时发数据(竞争机制),因此如果你多个设备可能同时发数据,就只能在软件层避免这个问题。
但是很遗憾,MBUS从机发数据的时候,其他从机并不能收到当前从机发送的数据,只有主站能收到从机发送的数据。
因此从机没办法检测总线是否被占用,其他的什么退避算法都没用了,唯一的就是暴力方式,从机发数据-等主站确认收到-没确认继续发(还是得做退避算法).
如果出现多个设备同时发数据,这个效率很低很低。只能说你们老板选的方案有问题。还是原来那个办法,比如你MBUS主从轮询波特率9600,挂N个站,算总的更新时间,能瞒住要求,就用。不能就只能换CAN了。

dzymushi 发表于 2018-2-6 09:50:30

MBUS是纯粹的物理层啊,任何一个从机或者主机发送数据的时候都要占用这两根线,无法避免

LearningASM 发表于 2018-2-6 10:00:26

xymxym 发表于 2018-2-6 09:32
可以参考一下以太网用的CSMA/CD,不过如果你的总线带宽占用率很高,就不适合用CSMA/CD了。 ...

CSMA/CD需要对称网络,M BUS主->从是电压,从->主是电流,也就是从机在发送的时候是不知道其它从机是否在发送。

小浩 发表于 2018-2-6 10:37:13

zsmbj 发表于 2018-2-5 17:27
主动上报还是can可靠!

老板让改了{:smile:}

小浩 发表于 2018-2-6 10:38:01

canopen 发表于 2018-2-5 17:32
要是 modbus tcp 还好说,自己额外定义个服务端口跑就好。485 要冲突的,,, ...

mbus也有冲突的,都是在两根线上,所有的数据都需要通过这两根线来传输

小浩 发表于 2018-2-6 10:39:57

xiaodao35 发表于 2018-2-5 17:51
这类2线通讯基本是不对外的。

老板让改了

如果 发表于 2018-2-6 10:42:04

小浩 发表于 2018-2-6 10:39
老板让改了

阅读下版规吧

efen 发表于 2018-2-6 10:49:36

怎么没内容。。要被封账号么

ackyee 发表于 2018-2-6 11:01:54

楼主内容没了 标题不合格会被封号的赶紧改回来吧

相由心生 发表于 2018-2-6 11:09:56

恭喜你ID不保。再见走好。

hzpyl 发表于 2018-2-6 11:14:53

修改帖子内容, 这种习惯很不好。

应该在后面,添加内容。

xionggehao 发表于 2018-2-6 11:19:34

建议莫站新增加一条版规,违反版规者,手抄一遍,否则封锁ID{:lol:}

lnskngdc 发表于 2018-2-6 11:20:24

小浩 发表于 2018-2-6 10:39
老板让改了

新人不看版规,锁ID是肯定了

xymxym 发表于 2018-2-6 11:22:30

LearningASM 发表于 2018-2-6 10:00
CSMA/CD需要对称网络,M BUS主->从是电压,从->主是电流,也就是从机在发送的时候是不知道其它从机是否在 ...

学习了!{:handshake:}

小浩 发表于 2018-2-6 12:42:56

hzpyl 发表于 2018-2-6 11:14
修改帖子内容, 这种习惯很不好。

应该在后面,添加内容。

没有看贴规{:sad:}

小浩 发表于 2018-2-6 12:44:31

canopen 发表于 2018-2-5 18:35
也可能是主机轮寻啊

主机轮询需要时间有点久了,我们产品用到的是不能等待太久的

小浩 发表于 2018-2-6 12:48:22

ackyee 发表于 2018-2-6 11:01
楼主内容没了 标题不合格会被封号的赶紧改回来吧

改回来可以吗?{:cry:}

NFC 发表于 2018-2-6 12:56:59

楼住ID不保啊,不能随意编辑帖子,被老大看到,你就完了。
页: [1]
查看完整版本: 求助:MBUS一主多从通信怎么实现主动上报?