打印
[STM32F4]

请教一个485多机通讯的问题

[复制链接]
1467|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
skybbuy|  楼主 | 2019-4-23 15:08 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
一个主机加几个从机,主机通过轮询定时(比如500ms)获取从机的数据,其中一个从机采集一组数据需要400ms,我的问题是在这个过程中,主机收到上位机的命令需要下发设置类命令给这个从机,这个过程中怎么判断总线空闲与忙呢,我在发送和接收中断中都加入标志位并通过超时去判断总线是否繁忙,调试发现经常进入接收超时状态,通过示波器查看波形是有时候主机需要发送两次命令从机才响应,。望指导指导,非常感谢

使用特权

评论回复
沙发
kingkits| | 2019-4-23 16:43 | 只看该作者
你都轮询了,主机还不知道有没有占用总线吗?难道还要自己弄个电路什么的,提醒自己正在和某个从机通讯?

使用特权

评论回复
板凳
天灵灵地灵灵| | 2019-4-23 23:37 | 只看该作者
主机掌握着控制权。

使用特权

评论回复
地板
yubsh| | 2019-4-24 10:23 | 只看该作者
本帖最后由 yubsh 于 2019-4-24 10:25 编辑

你参看一下freemodbus这种开放源码,重新设计一下通讯软件的结构
还有,从机400ms用于测量,不能因为它在这个期间做测量就不能做数据传输,你要想办法把从机变成任何时间都可以被控制和取数的状态,否则它测量的时候就是一块石头,你能跟石头说话吗?

使用特权

评论回复
5
dongnanxibei| | 2019-4-24 17:21 | 只看该作者
楼上科学。

使用特权

评论回复
6
515192147| | 2019-5-16 23:33 | 只看该作者
本帖最后由 515192147 于 2019-6-7 10:00 编辑

485 通信方式是 主站排队轮询的方式,如:主站问从站1,从站1应答,主站收到从站1应答,主站问从站2,从站2应答,主站收到从站2应答….,如果从站设备很多,RS485的实时性就会很差,建议 从站 不能超过 10个
CAN 通信 就 比较简单 ,价格 和 485 差不多的,性能 提高100倍,前段时间 搞了个 CAN组网的 工程 ,工程要求 现场设备 分散,
与 工厂 组态软件通信 并要信号上传到 腾讯云服务器:
我们的开发板 有 DI DO AI AO 的源码,一个MST可带
99个 开发板

源程序 见 下面链接
https://bbs.21ic.com/icview-1945634-1-1.html



使用特权

评论回复
7
515192147| | 2019-6-7 09:58 | 只看该作者
楼主 问题 解决了吗?我们可以 借您个 开发板 20天试试

使用特权

评论回复
8
yediezeus| | 2019-6-10 09:13 | 只看该作者
上位机设置命令和轮询设置成两个状态,通过状态机去看执行那个动作,串口采用超时机制。

使用特权

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

本版积分规则

22

主题

164

帖子

0

粉丝