基于嵌入式STM32的Modbus RTU协议实现(4)

时间:2026-01-15

·36·仪表技术2014年第11期

从站能否解析请求帧及时响出请求帧完成相应功能,

应主站请求,发出应答帧。与PC机相连之后,分别对两种功能服务进行若干测试,并根据ModbusRTU协议的内容验证所得到的结果是否正确。在主站PC机上的截图如5所示。

图4ModbusRTU从站程序流程图

outputnum=(*Rx++)<<8;

outputnum+=(*Rx++);//输出数量

if(outputnum<=0x07d0&&outputnum>=0x0001){

if(StartAddr<=0xffff&&startaddr>=0x0000)//起始地址{

send[0]=SlaveID;send[1]=0x03;send[2]=2*outputnum;for(n=1;n<=2*outputnum;n++){

send[n+2]=ox[startaddr+n-1];

re_crc=GetCRC16(send,2*outputnum+3);send[2*outputnum+4]=re_crc&0xff;send[2*outputnum+3]=re_crc>>8&0xff;}

图5主站PC机通信测试

由图5可以看出ModbusRTU主站对地址为1的

ModbusRTU从站的操作,读寄存器地址01和写寄存这里以03读寄存器功能为例来分析。器地址01,

主站PC机通过串口发送一个Modbus帧包含8个字节,工控板判断出是ModbusRTU帧,执行RTU服01代表所请求的从站地址,03代表所要执行的读务,

0001为寄存器的寄存器号(1号寄存寄存器功能,

0001为寄存器的数量(1个字节),D5CA为器),

CRC校验码。从站接到主站的请求帧后,解析帧,返01代回一个响应,反应帧如图5的接收所示,同样的,

03代表该帧执行的功能是读寄存表了该从站的地址,

02代表了字节计数,即为后面读出来数据的总字器,

7984为CRC校验码。其中0001即为数据采集节数,

系统所读取到的放在1号寄存器里的数字量。4

结论

3.3

系统通信参数

ModbusRTU是基于串口的数据传输模式,为了实

现主站和从站之间的通信,在同一网络上所有设备都必须设置相同的传输模式和串口参数。本设计中的通信参数设置如表3所示。

表3

通信参数串口波特率奇偶校验数据长度停止位

PC端COM19600bit/s

无8位1位

串口通信参数

数据采集系统端ModbusRTU9600bit/s

无8位1

本系统采用了STM32F103ZE嵌入式微控制器,可以使系统小型化,提高了系统性能,并且便于各种外设的扩展,可以实现多功能采集。本系统将基于STM32F103ZE微处理器为核心的数据采集系统作为485总线上,PC机作为主站成功地获从站配置在RS-取了设备参数,并利用上位机界面显示采集信号,达到了系统设计的基本要求。

通过实验测试,本文所介绍的ModbusRTU协议的主从通信模式,可以良好地应用于工业现场的设备参数的通信传输。由于系统通信可靠、传输速率快,在电力及其他工业现场具有广阔的应用前景。

(下转第54页)

3.4

系统通信调试

采用Modbus调试精灵作为RTU主站软件,用户

可以通过该人机界面选择从站地址来依次查看对各客户端的操作(读寄存器操作和写寄存器操作)。Modb-usRTU的测试目标是:RTU主站能否对RTU从站发

基于嵌入式STM32的Modbus RTU协议实现(4).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:4.9 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:19元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219