Modbus是一种通信协议,相当于机器之间经过一定规范的一种语言,它属于一种串行通信协议。
包含三种协议 modbus-RTU; modbus-ASCII;modbus-TCP
大部分硬件都支持modbus-RTU协议,对数据在传输过程和接收过程格式的规定
就是用来通信的 ,如果没有协议,发送一些数据例如01 06,接收方不知道这些数据是干啥用的,所以
协议就是制定数据的准则的
协议是一种开放的串行协议,广泛应用于当今的工业监控设备中。
该协议使用 RS-232 或 RS-485 串行接口进行通信,并得到市场上几乎所有商业 SCADA、HMI、OPC
服务器和数据采集软件程序的支持。因此,很容易将 Modbus 兼容设备集成到新的或现有的监控应用程序中
并具有即时的软件支持。
Modbus RTU 协议使用主/从技术在设备之间进行通信。这意味着,任何使用 Modbus RTU 协议的应用程序都将有一个 Modbus
主站和至少一个 Modbus 从站。Modbus Master(主) 通常是一台运行软件的主机监控计算机,它将与一个或多个 Modbus Slave(从) 设备进行通信。
Modbus 从设备是执行系统参数测量和控制系统中的开/关设备的设备。为了执行这些任务,主站向 Modbus 从站发送消息,请求执行特定任务。
帧就是系统 Master和Slave 设备之间发送的信息,master发送的叫做命令帧,Slave返回的叫做应答帧
帧的结构 = 地址位 + 功能码 + 数据 + CRC校验
**地址**: 占用一个字节,范围0-255,其中有效范围是1-247,其他有特殊用途
* **功能码**:占用一个字节,功能码的意义就是,知道这个指令是干啥的,比如你可以查询从机的数据,也可以修改数据,
所以不同功能码对应不同功能。
* **数据**:根据功能码不同,有不同结构,在下面的实例中有说明。
* **校验**:为了保证数据不错误,增加这个,然后再把前面的数据进行计算看数据是否一致,如果一致,就说明这帧数据是正确的,我再回复;
//如果不一样,说明你这个数据在传输的时候出了问题,数据不对的,所以就抛弃了。
Modbus-RTU协议一般我们用的最多功能码就是`03`和`06`,大部分都是用modbus来查询传感器上的信息用`03`查询功能码(读寄存器),
如果需要修改传感器寄存器的值就用`06`修改功能码(写寄存器),其他的不需要过多关注
上位机需要选择合适的 Modbus 协议栈、配置 Modbus 通信参数、建立 Modbus 通信连接、发送 Modbus 命令帧、
接收 Modbus 响应帧和关闭 Modbus 通信连接等步骤。
以上部分信息来源于网络,如有侵权请联系删除 !!!