ModBus-RTU通讯协议编程

本文详细介绍了ModBus-RTU通信协议的编程方法,包括协议简介、信息帧结构、功能码详解,以及串口通信和协议层程序配置。通过TMS320F280049C单片机实现RS-232通信,讲解了数据的接收处理、CRC校验以及功能函数的编写。提供了CRC校验函数和实验代码的下载链接。
摘要由CSDN通过智能技术生成

编者说:

ModBus通信协议结构简单,编程方便,在工业应用现场被广泛使用,特别是PLC应用场合。需要指出的是,ModBus只是一种通信协议,即设备之间的数据约束方式,使用时需要有底层的驱动程序支持,例如,串口通讯。串口通信使用简单,在ModBus协议中应用广泛。在信号的传输方式上又分为RS-232通信,RS-485通信,这种区分只是在数据的传输方式方作划分,底层的驱动程序完全一样。需要长距离、长距离、可靠性高的传输方式时,我们就选择RS-485通信,需要短距离、高速率通信时,我们就用RS-232通信。

这篇博客主要讲述ModBus-RTU通信协议的编程方法,实现时采用串口通信,RS-232的传输方式,采用的单片机为TMS320F280049C。

(1)ModBus通信协议简介

Modbus协议可以说是工业自动化领域应用最为广泛的通讯协议,因为他的开放性、可扩充性和标准化使它成为一个通用工业标准。有了它,不同厂商的产品可以简单可靠的接入网络,实现系统的集中监控,分散控制功能。

目前Modbus规约主要使用的是ASCII, RTU, TCP等,并没有规定物理层。目前Modbus常用的接口形式主要有RS-232C,RS485,RS422,也有使用RJ45接口的,ModBus的ASCII, RTU协议则在此基础上规定了消息、数据的结构、命令和应答的方式。ModBus数据通信采用Master/Slave方式(主/从),即Master端发出数据请求消息,Slave端接收到正确消息后就可以发送数据到Master端以响应请求;Master端也可以直接发消息修改Slave端的数据,实现双向读写。

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

(2)ModBus信息帧结构

当设备之间进行通信时,都是以信息帧的结构进行数据之间的传送。信息帧即数据的组成方式,一个信息帧由多位字节数据组成,具体格式如下所示(这里主要讲述RTU格式的信息帧):

开始 设备地址 功能码 数据位 校验位 终止
T1-T2-T3-T4 8bit 8bit N * 8bit 16bit T1-T2-T3-T4

RTU模式中,信息开始至少需要有3.5个字符的静止时间,依据使用的波特率,很容易计算这个静止的时间(如下图中的T1-T2-T3-T4)。接着,第一个区的数据为设备地址。

设备地址:当与主机进行通信的设备有多个时,主机通过设备地址号来选择与哪个设备进行通信。设备地址号为1字节。

功能码:当主机与从机通信时,主机通过功能码来选择对从机进行什么操作。部分功能码列出如下表所示,详细的功能码列表请查阅相关资料。功能码数据长度为1字节

功能码 名称 作用
0x03 读取保持寄存器 读取保持寄存器数据
0x06 预置单寄存器 将数据写入到某寄存器

数据位:要传送的具体数据,由多个字节组成。

校验位:主机或从机可用校验码进行判别接收信息是否出错。错误校验采用CRC-16校验方法。CRC校验的算法后边讲解。

(3)ModBus功能码详解

1. 0x03号命令,读可读写模拟量寄存器(保持寄存器):

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值