Modbus概述Modbus是施耐德电气于1979年发明的工业现场总线协议。 Modbus网络是一种工业通信系统,带有智能终端的可编程控制器和计算机通过公共线路或本地专用线路连接。 系统配置既包括硬件也包括软件。 可应用于各种数据采集和过程监控。
ModBus网络上只有一个主机,所有通信都由他发出。 网络可以支持247台以上的远程从站控制器,但实际支持的从站数取决于所使用的通信设备。 采用该系统,每个PC可以与中心主机交换信息,而不影响每个PC执行其控制任务。
Modbus协议包括ASCII、RTU、TCP等。 Modbus的ASCII、RTU协议规定了消息、数据的结构、命令和响应方式,数据通信采用Maser/Slave方式,Master端发出数据请求消息,Slave端收到正确的消息主机端也可以直接发送消息修改Slave端的数据,实现双向读写。
Modbus协议需要数据验证。 除了串行协议中的奇偶校验外,ASCII模式还使用LRC验证,RTU模式使用16位CRC验证,但在TCP模式下,TCP协议是面向连接的受信任协议,因此没有单独规定验证。 另外,Modbus采用主从方式定时收发数据,实际使用中的Slave站点断开后,例如故障或关机时,主控端可以诊断,故障修复后,网络可以自动连接。 因此,Modbus协议可靠性很高。
RTU通信模式比较普遍,其传输方式如下。
地址码功能代码数据区域奇偶校验位1字节1字节n字节16位CRC地址码:地址码是通信传输的第一个字节。 此字节表示用户设置了地址码的从设备将接收主机发送的信息。 另外,每个从站都有唯一的地址码,响应回复以各自的地址码开始。 主机发送的地址代码表示发送的从站地址,从站发送的地址代码表示返回的从站地址。
功能代码:通信传输的第2字节。 ModBus通信协议定义函数编号为1~127。 每次通信一般只使用其中的一部分功能代码。 作为主机请求的发送,用功能码向从机传递执行什么样的动作; 作为从站的响应,从站发送的功能代码与主机发送的功能代码相同,表示从站响应主机进行了操作。 从站发送的功能代码的最高位为1时,例如功能代码较大同时为127时,表示从站没有响应操作或发送错误。
数据区:数据区因功能代码而异。 数据区可以是实际值、设置点、主机到从机的目标地址,也可以是从机到主机的目标地址。
CRC代码: 2字节的错误检测代码。
当通信指令被发送到设备时,与该地址码匹配的设备接收通信指令,删除地址码读取信息,在无错误情况下执行其任务; 然后将执行结果返回给发送者。 返回的信息包括地址代码、执行操作的功能代码、执行操作结果的数据以及错误校验码。 发生错误时不发送任何内容。
MODBUS最常见的功能代码:
下面的“寄存器”实际上分别是“位变量”“16位变量”
01(0x01 )读寄存器
02 )0x02 )引脚离散量输入
03 )0x03 )读保持寄存器
04 )0x04 )读取输入寄存器
05 )0x05 )写入单个寄存器
06 )0x06 )写入单个寄存器
15 )0x0f )写入多个寄存器
16 )0x10 )写入多个寄存器
rs485特征RS-485的电特性:采用差分信号的正逻辑,逻辑“1”将两线间的电压差表示为(2-6) v; 逻辑“0”将两线间的电压差表示为-(2-6) v。 当接口的信号电平低于RS-232-C时,接口电路的芯片不易损坏,并且该电平与TTL电平兼容,便于与TTL电路连接。 RS-485数据的最高传输速率为10Mbps。 RS-485接口采用平衡驱动器和差分接收机的组合,抗共模干扰,即抗噪声干扰。 RS-485的最大通信距离约为1219m,最大传输速度为10Mbps,传输速度与传输距离成反比,传输速度越低,传输距离越长,传输比RS-485的最大通信距离长的距离需要增加485中继器。 RS-485总线通常最多支持32个节点,但使用特殊的485芯片可以达到128个或256个节点,最多可以支持400个节点。 在RS485通信网络中,通常使用485收发器来转换TTL电平和RS485电平,例如MAX13487芯片,并将单片机串行信号转换为485总线差分信号。 节点中的串行控制器使用RX和TX信号线连接到485收发器,收发器通过差分线连接到网络总线。 串行控制器和收发器之间通常以TTL信号传输,收发器和总线以差分信号传输。 在发送数据时,串行控制器的TX信号通过收发器转换为差分信号并发送到总线,并且在接收数据时,收发器将总线上的差分信号转换为TTL信号,并且经由RX端子将该TTL信号发送到串行控制器。 这些节点通常只有一个主机。 剩下的都是从机。 Modbus和RS485 Modbus规定了通信规则,并定义了控制器可以识别和使用的消息结构。 这些消息结构是定义的,无论它们通过什么网络进行通信。 RS485是串行通信的接口标准,它规定了硬件和物理电气特性。 在实际应用中,两者可以共存于一个系统中。 MODBUS提供软件级通信协议,主机和从机以相同的协议格式通信。 485提供硬件接口,通过串行交换数据。