RS485通讯----Modbus物理层(一)

RS485通讯—Modbus物理层(一)

根据OSI模型,物理层以SP3485芯片作为参考,其次芯片引脚与MAX485也差不多

关于双绞线观点有点问题更新一下 — 2020/5/5
引入Modbus RTU观点 —2020/5/19
修改文章标题 —2020/5/22
增加终端电阻阻值 —2020/6/6

1、RS-485简介

RS-485采用平衡发送和差分接收,因此具有抑制共模干扰的能力。

应用特点:

  • 传输数据速度高达10Mbps,即10000000 bit /1024/1024/8=1.192MB/s
  • VCC正常电压5V供电
  • 使用双绞线传输数据,如果使用STP屏蔽的双绞线信号质量更好,前提是信号是差模传输
  • 传输数据距离远,可高达1200米(仅仅是两个SP3485发送与接收之间距离)

2、SP3485芯片

下面是芯片的原理图:
RS485通讯----Modbus物理层(一)_第1张图片

  • 引脚6和7分别是A、B用来实现差分传输。
  • 引脚1和引脚4是RO、DI引脚,分别负责接收与发送数据。
  • 引脚8是VCC接电源5V,引脚5接地
  • 引脚2是RE低电平有效,接收数据。换个说法引脚RE低电平使能接收,高电平失效接收,我个人理解为是否要接收数据的引脚
  • 引脚3是DE高电平有效,发送数据。换句话说引脚DE高电平使能驱动(A线、B线),低电平失效驱动(A线、B线)

当接收与发送时使用差分传输,所谓差分传输就是A引脚和B引脚通过电压比较得到逻辑电平:
A-B>+0.2V 逻辑电平,RO输出电平1
A-B<-0.2V 逻辑电平,RO输出电平0

另外,当DE引脚置于高电平时候有下表

A电平 B电平
DI逻辑电平1 1 0
DI逻辑电平0 0 1

3、实际应用

我先放出一个原理图:
RS485通讯----Modbus物理层(一)_第2张图片
一般将RE引脚DE引脚连接起来,SP3485芯片可以使用一个I/O引脚来控制RS485芯片高电平发送低电平接收

上图有三个电阻R1、R2、R3,芯片阻值大可忽略不计,只看三个电阻,他们的参数一般是这样设置:R1=R3,要确保R2占电压在200mV以上,即A线与B线之间电压在200mV左右,但一定大于200mV,R2是终端匹配电阻

这里大于200mV是保证不发送数据情况下,在异步串口通讯为处于空闲状态(高电平),换个方向理解空闲状态就是A线与B线之间关系为:A-B>+0.2V

R2直接选取100~120ohm的电阻,这是为了信号阻抗连续,如果发射端与接收端的阻抗相差太大容易造成信号反射,也就是R2会信号A、B线电压跳转,导致接收不良信号。

我在原理图中终端电阻为R2=120(ohm),分压电阻串联接5V,经过计算R1=R3=1.440K(ohm)电阻,根据厂家规格R1、R3选用1.4K或者1.5K代替使用。

注意:图片上的电阻值没换,以后再更新一下

4、光耦隔离

由于传送距离较远情况,通讯使用的A、B线(双绞线)有可能遭遇雷击后,或是其他不好因素影响通讯系统。所以485通讯部分与主控制芯片间还应该加入光耦进行隔离,避免整个系统烧毁。

5、提高信号传输质量

A线与B线之间需要一个匹配电阻,也就是上图的R1、R2、R3电阻来保证在空闲状态下,不会出现信号混乱的的情况,防止接收混乱的数据(锁死在一个稳定电压差,一般锁定电压差在200mV以上)

【滤波】

  • 根据传输距离长远以及环境,还可在A线、B线上接入滤波电容(这里我放置104电容,应该按照实际情况选取滤波效果最好的值(原理跟RC无源滤波有点像)),去除高频噪声,如下图所示。
    RS485通讯----Modbus物理层(一)_第3张图片
  • 另一种是在A、B线上加入无源LC滤波电路,但成本也会微略提高,如下图所示。
    RS485通讯----Modbus物理层(一)_第4张图片

【双绞线】
使用STP(屏蔽)双绞线能够提高信号的传输质量,前提是信号差模传输。
RS485通讯----Modbus物理层(一)_第5张图片
像上面这张图中,一根线中有多跟细小的铜丝线(多芯铜线),这样会影响信号传输的质量,原因是多根铜芯下抗干扰能力差,而且小铜丝线会互相串扰细(共模信号),所以这种不推荐远距离使用
RS485通讯----Modbus物理层(一)_第6张图片
像这种7类(CAT7)的双绞线,它传输信号质量不错,单芯铜线适合用于高频,而且每组双绞线都有铝箔屏蔽干扰信号,一条CAT7的线一共四组双绞线,但这个真的贵。。。。

如果说电路板上有一个SP3485芯片,那么至少需要一组双绞线(也可以使用两组双绞线传输,但每组双绞线一定要是差模传输才能提高质量),为提高传输可靠度,也可以使用两组的双绞线,每组双绞线中各取一根铜线选择A线,另外的剩下铜线选择B线


拿CAT7中两组双绞线举个栗子铜线(我看图片CAT7线举个栗子):

绿色、绿白是一组双绞线
蓝色、蓝白是一组双绞线

485芯片中A、B线应该对应关系:

A -->> 绿色、蓝色
B -->> 绿白、蓝白

也可以是这样:
A -->> 绿白、蓝白
B -->> 绿色、蓝色

这样就保证是差模传输,如果有人接错共模传输就diao死它。
就像这样接:
A -->> 绿白、绿色
B -->> 蓝白、蓝色


同样适用于CAN总线,因为它也是差模传输
RS485通讯----Modbus物理层(一)_第7张图片
这种STP双绞线相对CAT7的双绞线比较便宜一半的价格,推荐使用这种结构的双绞线,根据自己需求选择多少组双绞线,第几类双绞线。

总结

我觉得这个软件程序设计上并不是重点,先放图。

RS485通讯----Modbus物理层(一)_第8张图片
因传输时,使用USART通讯经过SP3485芯片发送,然后发送给另一个接收SP3485芯片转换成USART通讯,从而完成远距离数据传输。RS485只是作为远距离传输一种手段,RS485应该侧重于硬件设计上信号传输质量。

以上是Modbus通讯物理层。
Modbus RTU通讯协议基于串口/TCP/UDP等方式通讯,理解这个协议之后看看Modbus TCP就不会太难。

你可能感兴趣的:(STM32,硬件)