【RS-485收发切换】使用RS-485要注意的一个问题
单片机]RS-485半双工延时问题 http://www.chinafix.com.cn/thread-137012-1-1.html
RS485半双工切换为什么要加延时(非尾字不能发的问题)?
http://bbs.21ic.com/icview-317805-1-1.html
使用RS-485要注意的一个问题
为了让主机可以比较“从容”地切换到接收状态,从机接收到报文后不应该马上回答,而要至少等待双方约定的一个时间(比如2-5ms),这其实也应当是RS-485通信的一个参数。
使用全双工RS-422就没有这个问题。
有一些RS232到RS485的接口转换器需要用RTS信号来控制发送和接收状态切换,由于PC机很难像单片机那样精确地判断最后一位从移位寄存器发出去了(单片机对有的UART可以用中断,或者笨笨地定时+查询标志等方法),所以经常发生下位机收不好最后一个字节或者上位机收不好第一各字节的情况。有人采取上位机正常报文后面加无用字符(比如0xFF)的办法来凑合。
虽然现在有RS232到RS485的收发自动切换的转接器,但它内部其实是用单稳态触发器来实现的,为了适应不同波特率,切换仍然有一个延迟,波特率较高的时候下位机回答太快仍然有可能第一个字节出错。
所说的20ms只是一个举例,根据波特率等情况当然可以适当改变。但是,正规的RS485规约应该要规定这个帧间空闲间隔的(比如IEC870-5规定是33bit)。
实际通信的实时性主要由轮询的间隔以及超时的处理来决定,附加几毫秒的延时并不很重要。实际使用RS485通信最常遇到倒就是收发切换的问题,要想解决好,一是上位机从发到收的切换要尽量快(尽可能使用UART硬件自动控制RTS、发送完成中断或者精确定时),二是下位机要略位“宽容”一点。
RS485半双工切换为什么要加延时(非尾字不能发的问题)? [复制链接] 未结帖(20)
实习生, 积分 6, 距离下一级还需 44 积分
专家等级: 结帖率:0% |
| |
初级工程师, 积分 2351, 距离下一级还需 649 积分
专家等级: 结帖率:100% |
| |
举报 | ||
专家等级: 结帖率:98% |
| |
举报 | ||
初级工程师, 积分 2351, 距离下一级还需 649 积分
专家等级: 结帖率:100% | |
举报 | |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了