RS485_RS232_CAN_Modbus总线协议

RS485通信

简介

RS485 是美国电子工业协会于1983年发布的串行通信接口标准。
RS485 是一种工业控制环境中常用的通讯协议,其中RS 是 Recommended Standard 的缩写。
RS485 是 半双工异步串行通信。

特点

  • 总线式拓扑:RS485支持多个设备在同一条总线上进行双向通信,可以构成总线式拓扑结构
  • 支持多节点:同一总线上一般最大支持 32 个节点。
  • 传输距离远:最远通讯距离可达1200米。
  • 抗干扰能力强:差分信号传输(差分信号中,逻辑0和逻辑1是用两根信号线(A+和B-)的电压差来表示。)
  • 连接简单:只需要两根信号线(A+和B-)就可以进行正常的通信。

连接方式

TTL电平:TTL电平即单片机引脚直接提供的电平,逻辑0代表低电平,逻辑1代表高电平,输出高电平>2.4V,输出低电平<0.4V。在室温下,一般输出高电平是3.5V,输出低电平是0.2V。最小输入高电平和低电平:输入高电平>=2.0V,输入低电平<=0.8V

  • RS485 通信网络中,通常会使用 485 收发器来转换 TTL 电平和 RS485 电平。
  • 节点中的串口控制器使用 RX 与 TX 信号线连接到 485 收发器上,而收发器通过差分线连接到网络总线。
  • 串口控制器与收发器之间一般使用 TTL 信号传输,收发器与总线则使用差分信号来传输。
  • 发送数据时,串口控制器的 TX 信号经过收发器转换成差分信号传输到总线上。
  • 接收数据时,收发器把总线上的差分信号转化成 TTL 信号通过 RX 引脚传输到串口控制器中。
  • 通常在这些节点中只能有一个主机,剩下的全为从机。
  • 在总线的起止端分别加了一个 120 欧的匹配电阻。

RS485_RS232_CAN_Modbus总线协议_第1张图片

RS485收发器——SP3485

单片机串口通信一般是TTL电平,如果需要RS485 通信,就需要RS485芯片在中间转换成差分信号电平。
RS485_RS232_CAN_Modbus总线协议_第2张图片
RS485_RS232_CAN_Modbus总线协议_第3张图片
RS485_RS232_CAN_Modbus总线协议_第4张图片
RS485 普通收发电路图原理

  • RS485_EN 为高电平,逻辑为1,发送使能,接收禁止。
  • RS485_EN 为低电平,逻辑为0,发送禁止,接收使能

在编写驱动程序时:

  • 在发送数据前,给RS485_EN 置高电平。
  • 在发送数据后,给RS485_EN 置低电平。

RS232

简介

RS-232接口符合电子工业联盟(EIA)建立的串行数据通信接口标准。原始编号是EIA-RS-232(简称232,RS232)。它广泛用于计算机串行接口外设连接。连接电缆以及机械、电气、信号和传输过程。

特点

  • RS-232是为点对点(即只用一对收、发设备)通讯而设计的
  • 接口信号电平高,容易损坏接口电路的芯片。与TTL电平不兼容,需要一个电平转换电路来连接到TTL电路。
  • 传输速率低。在异步传输中,比特率为20Kbps;因此,在51CPLD开发板中,集成程序波特率只能是19200,这也是原因。
  • 接口采用信号线和信号回波串,形成共同的接地传输形式。这种标准的接地传输容易受到共模干扰,因此抗噪性较弱。
  • 传输距离有限。最大传输距离为50英尺。它只能达到大约15米。

RS485_RS232_CAN_Modbus总线协议_第5张图片

RS232 和 RS485 的区别

  • **工作模式:**RS232 为全双工,RS485 为半双工。
  • **传输方式:**RS485和RS232只是物理协议的通信(即接口标准),RS485是差分传输方式,RS232是单端传输方式,但通信程序没有太大区别。
  • **信号线:**RS485接口组成的半双工网络,一般只需二根信号线。RS-232 口一般只使用 RXD、TXD、GND 三条线 。
  • **抗干扰性:**RS485接口是采用平衡驱动器和差分接收器的组合,抗噪声干扰性好。RS232接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地传输容易产生共模干扰。
  • **传输距离:**RS485接口的最大传输距离标准值为 1200 米(9600bps 时),实际上可达 3000 米。RS232传输距离有限,最大传输距离标准值为 50 米,实际上也只能用在 15 米左右。
  • **通信能力:**RS485 接口在总线上是允许连接多达128个收发器,用户可以利用单一的 RS485 接口方便地建立起设备网络。RS232只允许一对一通信。
  • **传输速率:**RS232传输速率较低,在异步传输时,波特率为 20Kbps。RS485 的数据最高传输速率为10Mbps 。
  • **电气电平值:**RS485的逻辑"1"以两线间的电压差为+(2-6) V 表示;逻辑"0"以两线间的电压差为-(2-6)V表示。在 RS-232 中任何一条信号线的电压均为负逻辑关系。即:逻辑"1",-(5-15)V;逻辑"0 " +(5- 15)V

RS485_RS232_CAN_Modbus总线协议_第6张图片

CAN总线协议

简介

CAN总线通信系统是串行通信的一种,要优于RS485总线,是目前比较常用的一种工业总线,如汽车的电气部分就采用CAN总线实现通信。

特点

CAN通讯是一种异步半双工通讯。(同步即在同一个时钟驱动下数据通信,半双工即接受与发送不能同时进行)
RS485_RS232_CAN_Modbus总线协议_第7张图片
汽车工业蓬勃发展,汽车的电子控制单元逐渐增多。各电控单元之间的信号交换导致汽车线束的级数增加,复杂粗大的线束与汽车有限的布线空间之间矛盾越来越突出,繁多的线束导致电气系统可靠性下降,同时增加了重量。
CAN总线将汽车内部各电控单元之间连接成一个局域网络,实现了信息的共享,大大减少了汽车的线束RS485_RS232_CAN_Modbus总线协议_第8张图片

数据传输原理实现

由上图可知,CAN通信是通过两根线完成的:

  • 一条是黄色的CAN_High
  • 一条是绿色的CAN_Low

按照定义:

  • CAN_High - CAN_Low < 0.5V 时候为隐性的,逻辑信号表现为"逻辑1",即高电平。
  • CAN_High - CAN_Low > 0.9V 时候为显性的,逻辑信号表现为"逻辑0",即低电平。

在总线上显性电平具有优先权,只要有一个节点输出显性电平,总线上即为显性电平。而隐形电平则具有包容的意味,只有所有的单元都输出隐性电平,总线上才为隐性电平(显性电平比隐性电平更强)

RS485_RS232_CAN_Modbus总线协议_第9张图片
由上图可知, 没有数据发送或者发送数据0时,两条线的电平一样都为2.5V,两条线的电压差小于0.5V;当发送数据1时,CAN_High电压升高,CAN_Low电压降低,两条线电压差大于0.9V时,认为数据为逻辑0;
所以CAN使用的是差分信号,差分信号稳定性更好,因为即使环境问题导致CAN_High电压发送变化,则CAN_L也会发送同等变化,两者做差即可抵消由于这个环境引起的变化。

空闲状态

在CAN协议中,当总线上的上出现连续的11位隐性电平(两根线电压差小于0.5V),表示总线就处于空闲状态。由于显性电平的高优先级特性,必须所有CAN主机都连续发送11个隐性电平,或者不发送时,总线才能出现连续11个隐性电平,即处于空闲状态。
需要在总线一开始工作的时候,所有节点都输出隐性电平;已知在一次传输时该节点输出显性电平,则在传输完成后该节点再输出隐性电平即可,这样就能将总线在无数据传输时保持空闲状态。
每次发送数据前,节点都会监听总线的状态,如果总线状态为空闲时,它就会立即向总线上发送自己的数据,这个数据里不仅有数据,还有本身的ID信息或者其他的控制指令,应称为数据包(数据帧),也叫做报文。当报文被传输到其它节点时,只要这些节点按格式去解读,就能还原出原始数据。

Modbus

简介

Modbus提供通用语言用于彼此通信的设备和设备。
Modbus已经成为工业领域通信协议的业界标准,并且现在是工业电子设备之间常用的连接方式。Modbus作为目前工业领域应用最广泛的协议

特点

  • Modbus协议标准开放、公开发表且无版权要求
  • Modbus协议支持多种电气接口,包括RS232、RS485、TCP/IP等,还可以在各种介质上传输,如双绞线、光纤、红外、无线等
  • Modbus协议消息帧格式简单、紧凑、通俗易懂。用户理解和使用简单,厂商容易开发和集成,方便形成工业控制网络
  • Modbus协议是一种应用层报文传输协议,协议本身并没有定义物理层,定义了控制器能够认识和使用的消息结构,不管它们是经过何种网络进行通信的。

通信过程

Modbus是一主多从的通信协议
Modbus通信中只有一个设备可以发送请求。其他从设备接收主机发送的数据来进行响应,从机是任何外围设备,如I/O传感器,阀门,网络驱动器,或其他测量类型的设备。从站处理信息和使用Modbus将其数据发送给主站。
也就是说,不能Modbus同步进行通信,主机在同一时间内只能向一个从机发送请求,总线上每次只有一个数据进行传输,即主机发送,从机应答,主机不发送,总线上就没有数据通信。
从机不会自己发送消息给主站,只能回复从主机发送的消息请求。
RS485_RS232_CAN_Modbus总线协议_第10张图片
Modbus并没有忙机制判断,比方说主机给从机发送命令, 从机没有收到或者正在处理其他东西,这时候就不能响应主机,因为modbus的总线只是传输数据,没有其他仲裁机制,所以需要通过软件的方式来判断是否正常接收。

你可能感兴趣的:(嵌入式,嵌入式硬件,网络协议)