485如何工作——通俗版
485如何工作——通俗版众所周知,485信号一般来说,就两根线。一根A,一根B。也叫(+),(-)两根线。通常也叫差分信号。差分信号呢,是为了传得更远更稳。那485还有一个重要的特点,就是半双工。记住,是特点,不是优点。我们都知道485是半双工。那为什么是半双工呢,我们就很少去关注了。那485信号之前是什么呢。
一层层分解。485通信,也叫串口485。是用于串口通信的一种总线,比如还有232,422的。那既然是串口通信,就要看串口信号的源头。
我们从源头出发。源头就是CPU。CPU上面有个串口功能模块,上面有TX,RX,RTS,GND等引脚。CPU有发送引脚,接收引脚。但是CPU的TX和RX是属于TTL电平的。所以CPU上面的原始信号,还不说称为232。CPU上面的TX,RX,经过232芯片转换之后呢,出来的就是232了。也就是我们常见的那个DB9端子。那同样的,经过485芯片转换之后,出来的才是485。
Q为什么经过485转换之后,就成了半双工呢。
A: 请看图
485芯片呢。左边是CPU的TX,RX,右边是D+,D-差分信号。
右边并没有标明哪个是发送,哪个是接收呀。意味着,就一组信号线,既要完成发送,又要完成接收,就不能同时实现。那就只能是要么是发送,要么是接收。
那么问题又来了。
这个485芯片怎么知道什么时候要发送,什么时候要接收呢。
所以,必须还有一个引脚,用来决定是发送还是接收,就类似于阀门一样。
比如RTS引脚,连接着485的阀门控制。
比如当RTS引脚为高时,阀门接通TX引脚。此时,CPU的发送数据,就能经过485芯片,转成485信号,向总线发数据。
比如当RTS引脚为低时,阀门接通RX引脚。此时,CPU的发送数据,是不通的,任凭怎么发数据,都不会发出来。485总线上的数据,就会经过485芯片,进入CPU的Rx。收到数据。
(RTS引脚是高还是低来切换模式,具体看485芯片。这里只是举例。)
当然,现在有的好的485芯片,可以做到自由切换。会根据Tx引脚是否有数据自动切换模式,还是不错的。特点嘛,就是贵。
Q为什么485能设计总线,而232不行呢。
A: 我们来看一下,如果是232,也有一主多从的通信访问,假如也接在一起会是什么样的。
这样是不是画得很不直观。看到这样的接线,都不想弄这个项目了。
搞错了。我们稍微转一下。重新接一下。
我们把GND先不考虑。反正GND都是接一起的。
这么一看,是不是232其实也能设计成总线。
就是主站的TX接所有从站的RX。
主站的RX接所有从站的TX。
我们再看485总线的接法
好像也差不多嘛。大家都是两根线。
那为什么232就不能设计成总线来使用呢。
01
电气信号原因
485是属于差分信号,相对来说,传输的距离会更远,信号衰减比较小,而且,接多个设备,总线负载能带的设备也会多一些。我们的经验值和推荐值一般是485总线不建议超过32个设备。虽然Modbus RTU的设备可以支持两百多个站号。
02
信号互斥影响。
主站的RX接的是所有从站的TX。串口通信,TX引脚一般默认是高电平状态,空闲状态。
在发数据的时候,先有起始位,为低电平,表示数据开始了。然后接着是数据,数据就有高电平有低电平了,然后再停止位,最后又进入空闲状态高电平的。
比如,现在有三个从站。三个从站的TX都是高电平。
这时候,2号从站要发数据,TX电平为低电平。但是其它两个TX是高电平。
那么主站的RX到底是低电平还是高电平呢。这样就无法保证主站的RX的信号的准确性。
因为不同的设备的TX的那头接的是啥不一,内阻也确定,也不确定是上拉还是下拉。
综合以上两个原因,所以232的常规接法是无法做成总线使用的。无法做到一对多通信的。
这时候有好学的同学提问了。
如果我把以上两个问题解决了,是不是也能让232一对多通信了。
这个问题问得好。
01
问题一我们要求设备通信距离不远,而且也就两三个设备,也没什么干扰。那么问题一也不是问题了啊。
02
问题二:
既然直连无法保证RX信号的准确性。那是不是在从设备的TX里,加个二极管,这样保证从站的TX不互相影响。因为同一时间,只有一个从站回复数据,对于其它从站的TX始终是高电平,我们把高电平隔离不就好了么。
这么一看,好像也不是没有道理呀。
其实也不是不可以的。
只是笔者建议,不建议多设备,重要场合正式使用的。
有条件的,还是买两个带485通信的HMI吧。
下面留给读者思考。
针对问题二,二极管如何接,才能实现232总线也能一接多个设备通信呢。
方案一
方案二
写在最后最后笔者再次强调,不要做为正式项目使用,笔者可不负责任的哦。仅做为学习,调试,测试使用。
页:
[1]