ModBus通讯协议与RS485

Modbus简介

Modbus是1979年施耐德电气发明的用于工业现场的总线协议。Modbus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。其系统结构既包括硬件、亦包括软件。它可应用于各种数据采集和过程监控。

ModBus网络只有一个主机,所有通信都由他发出。网络可支持247个之多的远程从属控制器,但实际所支持的从机数要由所用通信设备决定。采用这个系统,各PC可以和中心主机交换信息而不影响各PC执行本身的控制任务。

Modbus协议包括ASCII、RTU、TCP等。Modbus的ASCII、RTU协议规定了消息、数据的结构、命令和就答的方式,数据通讯采用Maser/Slave方式,Master端发出数据请求消息,Slave端接收到正确消息后就可以发送数据到Master端以响应请求;Master端也可以直接发消息修改Slave端的数据,实现双向读写。

Modbus协议需要对数据进行校验,串行协议中除有奇偶校验外,ASCII模式采用LRC校验,RTU模式采用16位CRC校验,但TCP模式没有额外规定校验,因为TCP协议是一个面向连接的可靠协议。另外,Modbus采用主从方式定时收发数据,在实际使用中如果某Slave站点断开后(如故障或关机),Master端可以诊断出来,而当故障修复后,网络又可自动接通。因此,Modbus协议的可靠性较好。

RTU通讯模式是比较常用的,其传送方式如下:

地址码 功能码 数据区 校验位
一字节 一字节 n字节 16位CRC

地址码:地址码为通讯传送的第一个字节。这个字节表明由用户设定地址码的从机将接收由主机发送来的信息。并且每个从机都有具有唯一的地址码,并且响应回送均以各自的地址码开始。主机发送的地址码表明将发送到的从机地址,而从机发送的地址码表明回送的从机地址。

功能码:通讯传送的第二个字节。ModBus通讯协议定义功能号为1到127。每次通讯一般只利用其中的一部分功能码。作为主机请求发送,通过功能码告诉从机执行什么动作;作为从机响应,从机发送的功能码与从主机发送来的功能码一样,并表明从机已响应主机进行操作。如果从机发送的功能码的最高位为1(比如功能码大与此同时127),则表明从机没有响应操作或发送出错。

数据区:数据区是根据不同的功能码而不同。数据区可以是实际数值、设置点、主机发送给从机或从机发送给主机的地址。

CRC码:二字节的错误检测码。

当通讯命令发送至仪器时,符合相应地址码的设备接通讯命令,并除去地址码,读取信息,如果没有出错,则执行相应的任务;然后把执行结果返送给发送者。返送的信息中包括地址码、执行动作的功能码、执行动作后结果的数据以及错误校验码。如果出错就不发送任何信息。
MODBUS最常用功能码:
下面“寄存器”其实分别直的就是“位变量”“16位变量”
01 (0x01) 读寄存器
02 (0x02) 读离散量输入
03 (0x03) 读保持寄存器
04(0x04) 读输入寄存器
05 (0x05) 写单个寄存器
06 (0x06) 写单个寄存器
15 (0x0F) 写多个寄存器
16 (0x10) 写多个寄存器

rs485特点

  1. RS-485的电气特性:采用差分信号正逻辑,逻辑“1”以两线间的电压差为+(2-6)V表示;逻辑”0“以两线间的电压差为-(2-6)V表示。接口信号电平比RS-232-C降低了,就不易损坏接口电路的芯片, 且该电平与TTL电平兼容,可方便与TTL电路连接。
  2. RS-485的数据最高传输速率为10Mbps。
  3. RS-485接口是采用平衡驱动器和差分接收器的组合,抗共模干扰能力增强,即抗噪声干扰性好。
  4. RS-485最大的通信距离约为1219m,最大传输速率为10Mbps,传输速率与传输距离成反比,传输速率越低,传输距离越长,如果需传输比RS-485最大通信距离更长的距离,需要加485中继器。RS-485总线一般最大支持32个节点,如果使用特制的485芯片,可以达到128个或者256个节点,最大的可以支持到400个节点。
  5. 在 RS485 通信网络中,通常会使用 485 收发器来转换 TTL 电平和 RS485 电平(如MAX13487芯片),将单片机串口信号转换成485总线的差分信号。节点中的串口控制器使用 RX 与 TX 信号线连接到 485 收发器上,而收发器通过差分线连接到网络总线,串口控制器与收发器之间一般使用 TTL 信号传输,收发器与总线则使用差分信号来传输。发送数据时,串口控制器的 TX 信号经过收发器转换成差分信号传输到总线上,而接收数据时,收发器把总线上的差分信号转化成 TTL 信号通过 RX 引脚传输到串口控制器中。通常在这些节点中只能有一个主机,剩下的全为从机。

Modbus与RS485

Modbus规定了通讯规则,定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的。RS485则是一种串行通讯的接口标准,是对于硬件上、物理上的电气特性的规定,在实际应用中,二者是可以共存于一套系统中的,MODBUS提供软件层面的通信协议,主机和从机以相同的协议格式进行通讯,485提供硬件接口,通过串口将进行数据交换。

你可能感兴趣的:(嵌入式)