如何解决串口通信的理论极限及其实现问题?
扫描二维码
随时随地手机看文章
本文所说的串口,是指RS-232和RS-485串行口,不是硬盘SATA串口,也不是通用串口总线USB。RS-485是对RS-232进行了节点和距离的改进后形成的标准:RS-485将只能够进行一对一通信的RS-232改进到了可接128个节点,距离从RS-232的15米改进到1200米。在下一代RS-485总线的概念下,波仕卡科技将原本用于延长RS-485通信距离并且提高负载能力的中继器与用于信号转换的RS-232/RS-485转换器进行绑定,推出RS-232/RS-485中继转换器,同时对RS-485信号的流向进行整理,使得用户在使用时感觉就是一个RS-232与RS-485的转换器。这种思想体现在最新的《一种带中继功能的串口转换器》专利文献中(CN201420502117)。对于波仕卡科技而言,下一代RS-485总线的变化就是要不受最远距离和节点数的限制,下一代RS-232/RS-485中继转换器包括无源型的 485A2以及性能更加通用的有源型485A2+。在这个思路中,波仕卡科技的RS-232/RS-485中继转换器突破了传统RS-485总线的节点数和距离的限制。每接一个RS-232/RS-485中继转换器,RS-485信号都得到了中继增强,所以这种RS-485总线不再受一条RS-485总线最远1200米的限制,而是当接N个转换器时就可以达到1200米的N倍距离,N是否不受限制本文将讨论N的理论极限。假设传统的RS-485总线有接负载个数的限制为128个,就是同一条RS-485总线中最多挂128个RS-485口。那么使用N个新型的485A2或 485A2+型RS-232/RS-485中继转换器构成的RS-485总线中,由于接入的转换器将RS-485总线分开为了N段(每一段之间相当于有一个中继器),所以当接N个转换器时就可以达到128×N倍的负载个数,N是否受负载数限制本文也将讨论。
1、突破RS-485节点和距离极限的布线方式
RS-232/RS-485中继转换器有一个DB-9孔的RS-232口和2个带接线端子的RS-485。DB-9孔端用于接RS-232口、DB-9 针端通过接线端子板接RS-485口。485A2的接线端子板上有5个接线端子(A1、B1、GND、B2、A2) ,为两个RS-485口,共用GND地线。A1、B1与A2、B2是功能完全相同的,不分方向。 两个RS-485口具有相互中继的功能。
图1
485A2应用的RS-485多机通信的典型接线图以及485A2+产品图,如果串口设备只有RS-485口则可以配接485A2+。若每一段RS-485的距离为1200米和128个,则整个RS-485系统的距离达到(N×1200米)、节点数达到(N×128)。可以看出,使用了485A2的RS-485总线布线极其简洁。最远两端可以用485A,也可以用485A2。注意整个RS- 485系统共用GND线。
2、RS-485多机通信节点数的极限
假设RS-485通信的地址编码为8位,那么最多的节点数就是2^8=256;假设RS-485通信的地址编码为10位,那么最多的节点数就是2^10=1024。10位已经多到极少用到。这个总线中的RS-485节点数的极限完全取决于通信软件 ,与总线中所接的RS-485中继转换器个数没有关系。实际上,因为受RS-485接口芯片性能的限制,每一段RS-485目前最多接128个节点,所以要达到256个的极限就得至少接一个485A2中继转换器,要达到1024极限就要至少8个485A2中继转换器。
3、完全失败的RS-485通信距离的理论极限
假设波特率为9600bps,就是每秒9600位。每个数据有1个起始位、8个数据位、1个校验位、1个停止位,一共11位。也就是传输一个数据 (1byte)的时间是11/9600=0.001145s。在这个时间内电磁波的传输距离(也就是光速为299792458m/s )为343512米,即343.5千米。
如果电信号的电磁波延时达到0.001145s(大约1.25ms),那么就会延时到错位一个数据,这样就无法正常通信。怎么理解?在某一时刻主机以9600bps同时向所有从机发送一组信号(比如ABCD),从机都立即响应回答数据,注意在 9600bps下没传一个数据的时间差为1.25ms,也就是发A比发B早1.25ms,发B比发C早1.25ms……。那么主机收到的最远的节点的回答 A的数据与1.25ms后最近的节点回答B的数据重叠,这样就无法通信。
也就是RS-485的理论传输的最远距离在9600bps时只有大约343512米。假设每1200米进行一次中继,343512/1200=286,也就是说要达到RS-485的理论极限,需要至少286次中继延长。
4、无误码的RS-485通信距离的理论极限
并非只有当整个11位数据完全重叠时才无法通信,实际上只要有1位错位存在误码就不好。虽然有时候软件有一定纠错功能,容许存在一定程度的误码情况下也可以传输数据,但是我们还是要弄清楚无误码的极限。
假设波特率为9600bps,就是每秒9600位。也就是传输一位(1bite)的时间是1/9600=0.000104s。在这个时间内电磁波的传输距离(也就是光速为299792458m/s )为31228米。如果电信号的电磁波延时达到0.000104s(大约0.1ms),那么就会延时到错位一个数据位,这样就会出现误码。怎么理解?在某一时刻主机收到的最远的节点的数据会与大约0.1ms前最近的节点发送的数据重叠一位,这样就有误码了。也就是RS-485的无误码通信的理论最远距离在 9600bps时只有大约31KM。假设每1200米进行一次中继,31228/1200=26.02,也就是说要达到RS-485的理论极限,需要至少 26次中继延长。
以上可以看出,RS-485通信距离的理论极限与波特率成反比,波特率越高极限距离越短。当波特率为 115200bps时(=12×9600),无误码传输的理论极限距离为31228/12=2602米。只有大约2.6km!这也难怪RS-485的远程通信只说9600时传输多远,几乎不提115200bps。
5、其它介质和其它总线的理论极限
以上的RS-485距离极限343512米以及31228米(9600bps)与传输介质无关,就是说用光纤传输RS-485最远也是这么多,无线也是一样。 以上的无误码RS-485距离极限31228米(9600bps)与协议无关,就是说用CAN、PROFIBIUS最远也是这么多,原理是一样的。以上的通信完全失败的RS-485距离极限343512米(9600bps)与数据位数有关,而且成正比例,就是说用CAN2.0(29位)比 CAN1.0(11位)的极限更加大,大一倍以上。
到这里,大家一定会惊讶RS-485通信距离极限之短。互联网、手机、GPS是如何传输几乎无限远距离的呢?互联网和手机通信几乎无法实时,而GPS对延时的计算及其精确。以后将另外专文讨论。[!--empirenews.page--]