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

485组网通讯时有时主机询问后,从机没有返回数据

[复制链接]
楼主: 15102595235
手机看帖
扫描二维码
随时随地手机跟帖
21
15102595235|  楼主 | 2019-8-17 14:45 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
zyj9490 发表于 2019-6-28 20:06
解析命令后才起动数据采集,这样的程序有点LOW,应做一个例程不断采集数据,更新一个公共数据或数据接口, ...

已经把程序改了,不在modbus部分做采集,用的定时器规定采集时间,在串口观察了从机返回数据的时间100ms-300ms之间,但是几个设备组网后还是那样,总有一个设备会出现假死的情况。需要主机招呼两三次才会有返回数据,甚至有时三次都没有。

使用特权

评论回复
22
zyj9490| | 2019-8-17 17:13 | 只看该作者
15102595235 发表于 2019-8-17 14:45
已经把程序改了,不在modbus部分做采集,用的定时器规定采集时间,在串口观察了从机返回数据的时间100ms- ...

MODBUS 响应必须在中断里处理,这样命令不会重复,命令接收后50MS空格,再花10MS回复(目的地址跟本机相同时),实测100-300MS 的从机响应有点慢。从机要改良。或者主机增加间隔时间。

使用特权

评论回复
评论
15102595235 2019-8-19 14:42 回复TA
您说的这个确实没有中断里处理modbus,本来是在modbus的3.5个定时中断中处理(这个没测),后来因为485口还做别的数据处理,所以就把所有的数据处理改到main函数的while循环中了. 
23
lvface123654| | 2019-8-17 17:47 | 只看该作者
直接监控物理线路上的数据吧,不一定从机的问题,主机是否按协议发送,从机是否只是通信部分挂了,很多细节要查

使用特权

评论回复
24
zyj9490| | 2019-8-19 14:45 | 只看该作者
本帖最后由 zyj9490 于 2019-8-19 16:13 编辑
15102595235 发表于 2019-8-17 14:45
已经把程序改了,不在modbus部分做采集,用的定时器规定采集时间,在串口观察了从机返回数据的时间100ms- ...

你这个问题,我这里有个智能温湿度模块,刚毕业的大学生开发的,同样发生这样的问题,不是在中断里处理响应,不同模块组网就会发生没响应。

使用特权

评论回复
25
15102595235|  楼主 | 2019-8-19 14:52 | 只看该作者
lvface123654 发表于 2019-8-17 17:47
直接监控物理线路上的数据吧,不一定从机的问题,主机是否按协议发送,从机是否只是通信部分挂了,很多细节 ...

主机当然是按协议发送的。
不过程序复位会发数据的,所以可以确定板子并没复位。您讲的我不是太理解,您讲的详细点。

是直接监控的物理线路上的数据,在485的网络中接了一个485的接收模块,将所有485线路上的数据都会传到电脑上的。

使用特权

评论回复
26
15102595235|  楼主 | 2019-8-19 14:57 | 只看该作者
zyj9490 发表于 2019-8-19 14:45
你这个问题,我这里有个智能温湿度模块,刚毕业的大学生开发的,同样发生这样的问题, ...

呵呵,前辈谢了,自知水平不高。
我这个问题基本上算是找到根了,对吧。我测测看。有问题再请教您。
感谢

使用特权

评论回复
27
zyj9490| | 2019-8-19 16:26 | 只看该作者
15102595235 发表于 2019-8-19 14:57
呵呵,前辈谢了,自知水平不高。
我这个问题基本上算是找到根了,对吧。我测测看。有问题再请教您。
感谢 ...

就是在定时中断里判断是否是完整的一裭,是的话,直接处理好发送裭,送入发送BUF里,启动发送(串口中断发送),不是,清RXBUF,退出中断。这样可以加快响应。放在MAIN函数处理,速度跟不上。

使用特权

评论回复
28
15102595235|  楼主 | 2019-8-21 11:19 | 只看该作者
zyj9490 发表于 2019-8-19 16:26
就是在定时中断里判断是否是完整的一裭,是的话,直接处理好发送裭,送入发送BUF里,启动发送(串口中断发 ...

modbus可以其他传输数据共用一个串口不,我把参数设置和modbus共用了一个串口。这两部分都要在中断中处理吗还是分开处理

使用特权

评论回复
29
zyj9490| | 2019-8-21 12:26 | 只看该作者
15102595235 发表于 2019-8-21 11:19
modbus可以其他传输数据共用一个串口不,我把参数设置和modbus共用了一个串口。这两部分都要在中断中处理 ...

?不明白你的意思。即要当主机也要当MODBUS从机吗?

使用特权

评论回复
30
zyj9490| | 2019-8-21 12:29 | 只看该作者
15102595235 发表于 2019-8-21 11:19
modbus可以其他传输数据共用一个串口不,我把参数设置和modbus共用了一个串口。这两部分都要在中断中处理 ...

参数设置不会经常设的吧?MODBUS本身有03,06功能码,设置参数的啊。

使用特权

评论回复
31
zyj9490| | 2019-8-21 12:32 | 只看该作者
15102595235 发表于 2019-8-21 11:19
modbus可以其他传输数据共用一个串口不,我把参数设置和modbus共用了一个串口。这两部分都要在中断中处理 ...

你的意思,有不同的命令裭来区别的吧,如果参数设置可以在MAIN处理。要在中断里区别标志。

使用特权

评论回复
32
lzyyoumuren| | 2019-8-24 16:49 | 只看该作者
应该是软件问题,从机接收的第一个字节稍微长点,有个等待时间后续字节就比较短了

使用特权

评论回复
33
tianxj01| | 2019-8-24 18:28 | 只看该作者
15102595235 发表于 2019-8-21 11:19
modbus可以其他传输数据共用一个串口不,我把参数设置和modbus共用了一个串口。这两部分都要在中断中处理 ...

要想良好的反应,串口必须工作在中断。
一个壮实串口数据筛选、再同步,是一个系统反应良好的基础。
用包头+本机地址作为唯一包头信号,开始同步+语法检查,采用双缓存区结构,直到整串数据合法、校验通过,才送接受第2缓冲区,并改写缓冲区标志以便于其他函数或者主函数在检测到读缓存区2数据更新,马上处理。
中断里面,通过缓存区1的索引,任意非合法数据即时舍弃,重新寻找合法包头,开始同步。同步其实很简单,修改RX串索引归零就是重新同步。
从机除了发送应答,则必须处理完数据,并检测总线是否为空,才能发送,所有其他时间,485 的RX/TX引脚都必须在接受状态,发送完立刻恢复到读。
这样处理后,哪怕你发的是一串乱码中间才有短的一串合法主机命令串,都可以及时响应并在总线无冲突发出回复。
测试从机串口处理鲁棒性,你可以加入N多乱码,把合法串变成几十倍大小的串,从机必须及时响应,并在主机串完成后的总线空余时间发出应答,而且不会发生碰撞。
这样的处理,哪怕你

使用特权

评论回复
34
acguy| | 2019-8-25 20:29 | 只看该作者
如果主从机都是你做的,那从机为什么不回应就是你的责任。如果从机是其它供应商,提交协议规范与抓包波形证据找供应方索赔。

使用特权

评论回复
35
515192147| | 2019-9-2 11:07 | 只看该作者

我们可以 免费 帮 贵公司 从 485 的 设备 免费 升级 到 CAN总线

本帖最后由 515192147 于 2019-9-2 11:14 编辑

楼主 您好,我们 是做 CANWeb 总线的,我们可以 免费 帮 贵公司 从 485 的 设备 免费 升级 到 CAN总线!!
CANWeb接口成本低(PCA82C251_3元一个),和增加一个RS485接口(MAX13485_3元一个)成本一样;
带CAN接口的芯片价格也非常实惠:LPC11C14_5元一个,STM32F103C8T6_5元一个,
                         STM32F103RCT6_6元一个,双CAN的STM32F105RBT6芯片仅8元左右!

CAN的强壮 是 485不可比较的
有机会 合作下,详细链接见:
https://bbs.21ic.com/icview-1945634-1-1.html

使用特权

评论回复
36
autooy| | 2019-9-2 19:49 | 只看该作者
1.如果是485,一般采用串联一个接一个的方式硬件连接,而不是并发式样一样的线长连接,否则很容易出现你这样的情况;
2.是查你使用的芯片手册,测量终端电阻匹配的问题;
如果以上都不是问题,应该来说,问题不大;

使用特权

评论回复
37
zchong| | 2019-9-3 20:42 | 只看该作者
测量总线上不同位置的波形,看看波形是否有问题

使用特权

评论回复
38
robertwang126| | 2020-4-30 13:00 | 只看该作者
学习了

使用特权

评论回复
39
zchong| | 2020-5-1 10:26 | 只看该作者
串口就那点东西,示波器测量个节点波形,确定物理信号正常,剩下就是协议的事了

使用特权

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

本版积分规则