基本问题
1、串口基本参数配置。
波特率、校验位、数据位、停止位设置。
2、端口号设置。
电脑上串口的端口号是可以改的,并不一定都是1,在“设备管理器”里改。
3、知道用串口2、3脚短接,用串口调试软件能测试一个串口的好坏。
4、知道不是所有串口调试软件都好使(我遇到过,有的串口调试软件接收00不显示的,有的缓存
很大,显示实时性不好,断开了还收一堆数,还以为被上扰了)。
5、除了串口调试软件,还知道串口监控软件(比如AccessPort),它会帮你很大忙的。
6、知道232不是总线,除非你改造了电路(网上最简单有加二极管的,但不可靠),否则不能串
并。
7、手持示波器是王道,通过hold一个波形,有能力换算出你发的数据的16进制数。
8、知道通过串口发0xaa或0x55是为了用示波器测试实际的波特率。
9、知道对上位机而言,绝大部分情况下1个串口资源只能被一个上位机软件占用,不是所有的软
件使用串口时都有冲突提示,也不是所有软件关闭后就把串口资源释放了,不放心就重启电脑或
注销再用。
10、如果买的是全双工的485转换器,转单工来使用,四根线串成两根线要会接,接错了也会不通
的。还要注意485口AB线有没有接反。
11、有能力判断485口的好坏(无源485转换器和带串口的笔记本是很好的现场工具)。12、USB转232设备我用过不少,每次都受伤,真的是很不成熟,你非要用就一定要买个贵的,好
一点的,不要对它的实时性期望太高。
以上就是串口问题的一些基本功,保证以上的各项都没有弄错,再来梳理其它的问题。
13、485现场总线,不管什么样的接法,没有用到的线如果露头了,要一根一根单独用绝缘胶布包
上,不仅仅是怕干扰,我遇到过星型接法,因为没接从机就顺便把拉过去的AB线直接包在一起短
接了,所有通讯都不会通的。
14、测量AB线间电阻可以用来大致判断一个485口大概的好坏,特别是在总线上串N个相同的从
机,测量总线AB间电阻如果约等于一台从机独立时AB线电阻的1/N,基本上大概可以判断总线和各
个从机线都接好了。
15、485是使用差模信号传输,并不表示所有的共模干扰都能被屏蔽了,这次遇到的就是这个问
题。共模信号大于485芯片能承受的极限了,如果不是因为资金限制等问题,485总线最好选用3
芯屏蔽电缆,最好把A、B、地都接回来,屏蔽层接机壳,如果是两芯屏蔽电缆,就用屏蔽层接
地。电缆连接最好要做到阻抗连续,点和点之间串联,但给我感觉在几十米内,什么样的拓扑结
构影响都不是太大。
16、选用隔离485好处很多,唯一的问题就是在通讯速率上有的会降低,很多厂家都因为价格不用
高速光耦而用普通光耦,特别是在单工工作状态下的485,由于需要来回切换收发状态,会造成误
码率上升。
17、电源问题,就像这次我遇到的问题一样,220V电源的品质也是关键,插板上写着L的地方是
不是真正的火线,火零地三者之间的电压关系,要量一量,如果它没接地线,不是所有的485就一
定不通,得看实际情况,有条件一定要接上,手持示波器是王道。
18、还没通就好好检察地线,信号地,电源地,壳体地线,现场设备的接地电阻,接地很重要,
接地良好更重要。
不知道大家是否会遇到这样的情况,测试单个RS-485设备数据无异常,但设备组网后,就出现通讯数据异常或连接
失败等情况。出错的原因是什么?
**
RS-485总线是具有结构简单、通信距离远、通信速度高、成本低等优点,广泛应用于工业通讯、电力监控以及仪器
仪表等行业。若总线上接有终端电阻,则在总线空闲状态时,RS-485总线AB差分电压可能处于门限电平
(±200mV)之内,这时可能会导致通信出错,那么,出错的原因是什么?MCU接收到的数据会发生什么样的变
化?
数据出错的原因
如图1所示为8位数据位无校验位的UART时序图,当使用UART进行通信时,MCU在检测到起始位后开始接收其后 的数据。
如图2所示为STM32串口外设检测到起始位的条件,当检测到下降沿(3个高电平+1个低电平)并且采样序列1和采 样序列2均为0时,STM32检测到一个起始位。
每个位采样16次,采样点的间隔时间为tbit/16,tbit为每个位的时间,例如通信波特率为115.2kbps,则 tbit=1/115.2k=8.68us,则采样点的间隔时间为8.68us/16=0.5425us。
下面以RSM485PCHT的门限电平为例进行说明,当AB差分电压处于±200mV之内时,模块RXD引脚输出状态不确 定。
当总线变为空闲时,若RXD引脚输出低电平,则可能导致MCU接收到错误数据或MCU在正常数据后误接收1个 0x00。
数据发生了什么变化?
如图4所示,
收发器1在AB差分电压处于±200mV门限电平之内时输出高电平,
收发器2在AB差分电压处于±200mV 门限电平之内时输出低电平,
可以看出,收发器2可能导致MCU接收到错误的数据,并且在数据后误接收到1个0x00 数据。
**
如图5所示,若总线上持续存在数据信号或连续发送多个字节数据,在数据之间存在的空闲状态可能会被收发器2识
别为1个起始位,从而导致数据连续错误。
解决方案
总线空闲时若AB差分电压处于门限电平之内,则可能导致数据出错,可以使用如下方法避免总线空闲时AB差分电压
处于门限电平之内。
方案一
组网距离不长,总线信号无反问题或反射较小,此时可不增加终端电阻以提升总线幅值电平,具体的幅值
变化如下图6所示。
方案二
组网距离偏长,总线信号当前已存在反射需增加终端电阻解决反射问题,面对此类应用可使用致远电子
RSM(3)485PCHT模块,RS-485接口设计时可通过外置一个较小值的上下拉电阻调节空闲状态时的电压值,使电平
处于门限电平外,具体的幅值变化如下图7所示。
方案三
组网距离偏长,总线信号当前已存在反射需增加终端电阻解决反射问题,面对此类应用同样可使用致远电 子RSM(3)485ECHT模块,RSM(3)485ECHT具备极高的总线兼容性门限电平为-40mV~-20mV,具体如下图8所 示,在总线电平被终端电阻拉低时(最坏情况总线高电平幅值为0V)仍可识别总线电平,保证通讯的稳定性。