news 2026/10/13 15:30:08

MODBUS-RTU协议主机和从机代码STM32 包含2个程序代码,主机和从机(我代码最容易看懂)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MODBUS-RTU协议主机和从机代码STM32 包含2个程序代码,主机和从机(我代码最容易看懂)

MODBUS-RTU协议主机和从机代码STM32 包含2个程序代码,主机和从机(我代码最容易看懂) 基于温度传感器DS18B20的MODBUS-RTU从机 主机发送指令:01 03 20 00 00 01 8F CA 从机收到指令返回温度数据 06指令修改Add通信地址/站号和波特率 主机代码,主动发03指令读其它设备数据并把返回用数码管显示 程序代码包含:stm32单片机(stm32f103vet6) 我的代码是最容易看懂的 很多人想要很多功能号 实现原理就是用if判断数据帧有点区别,所以学会一条功能号,其它自然会了 4位595数码管模块显示

直接上干货,咱们用STM32F103VET6玩转MODBUS-RTU通讯。先看从机代码怎么处理温度数据——DS18B20的数值直接塞进MODBUS数据帧,简单粗暴有效。

从机接收处理核心代码:

if(usRxBuffer[1] == 0x03) //功能码判断 { if(memcmp(&usRxBuffer[2],"\x20\x00\x00\x01",4)==0) //寄存器地址校验 { temp = DS18B20_GetTemp(); //获取温度值 usSndBuffer[3] = temp >> 8; //拆分高字节 usSndBuffer[4] = temp & 0xFF; //低字节 CRC16(usSndBuffer,5); //生成CRC校验码 Send_Data(usSndBuffer,7); //发送7字节数据包 } }

这里用memcmp直接匹配地址比逐字节判断更省事。温度数据用16位整数传输,注意DS18B20采集时记得放大10倍处理小数位。

改地址和波特率的功能码06实现更带劲:

case 0x06: if(usRxBuffer[4] == 0x00 && usRxBuffer[5] == 0xC0) //特定写入值触发修改 { DeviceAddr = usRxBuffer[2]; //新设备地址 UART1_BaudRate = 38400; //切换波特率 USART_Init(...); //重新初始化串口 } break;

这种暗号式修改方式适合快速调试,实际应用建议做成可配置参数。

主机代码这边,数码管显示和MODBUS查询得配合好:

void MODBUS_Query(void) { static uint8_t query[8] = {0x01,0x03,0x20,0x00,0x00,0x01,0x00,0x00}; CRC16(query,6); //动态生成校验码 USART_Send(query,8); //发送查询指令 HAL_Delay(200); //等待从机响应 } //数码管显示用移位寄存器驱动 void Show_Temp(int temp) { uint8_t codes[4]; codes[0] = SEG_CODE[temp/1000]; //千位 codes[1] = SEG_CODE[(temp%1000)/100] | 0x80; //百位带小数点 codes[2] = SEG_CODE[(temp%100)/10]; //十位 codes[3] = SEG_CODE[temp%10]; //个位 HC595_Send(codes,4); //串行输出到595 }

注意温度显示时百位的小数点处理,这里用了或运算直接点亮最高位。595驱动时序要卡准,建议用SPI硬件加速。

功能码扩展其实就那回事,比如想加个05功能码控制继电器:

if(usRxBuffer[1] == 0x05) { uint16_t coil_addr = (usRxBuffer[2]<<8) | usRxBuffer[3]; if(coil_addr == 0x0001) //指定线圈地址 { RELAY = (usRxBuffer[4] == 0xFF) ? 1 : 0; //强制置位/复位 } }

看到没?核心就是判断功能码后处理对应地址数据。MODBUS协议层搞定后,业务逻辑随便加。

最后提醒:调试时先用USB转485工具监视数据帧,用十六进制模式查看原始报文。遇到CRC校验错误别慌,八成是字节超时没处理好,调整定时器参数比死磕代码更有效。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/13 6:00:37

自适应主动学习让罕见病标注成本砍半

&#x1f4dd; 博客主页&#xff1a;Jax的CSDN主页 自适应主动学习&#xff1a;罕见病AI标注成本的革命性突破目录自适应主动学习&#xff1a;罕见病AI标注成本的革命性突破 引言&#xff1a;罕见病诊断的“数据荒漠”困境 痛点深度剖析&#xff1a;为什么罕见病标注成本居高不…

作者头像 李华
网站建设 2026/10/13 13:58:35

周末项目:用AI分类器整理童年照片,成本不到3块钱

周末项目&#xff1a;用AI分类器整理童年照片&#xff0c;成本不到3块钱 1. 为什么你需要这个方案 作为一位宝妈&#xff0c;手机里存满了孩子的成长照片&#xff0c;从出生到第一次走路、第一次上学&#xff0c;这些珍贵的瞬间都值得好好保存。但问题来了&#xff1a; 照片…

作者头像 李华
网站建设 2026/10/13 10:14:49

HY-MT1.5大模型镜像优势解析|媲美商业API的开源之选

HY-MT1.5大模型镜像优势解析&#xff5c;媲美商业API的开源之选 在多语言交流日益频繁的今天&#xff0c;高质量、低延迟的机器翻译能力已成为智能应用的核心需求。腾讯混元团队推出的 HY-MT1.5 系列翻译大模型&#xff0c;凭借其卓越的跨语言理解能力和对混合语种场景的精准处…

作者头像 李华
网站建设 2026/10/12 19:08:29

AI分类器省钱攻略:按需付费比买显卡省90%,1小时1块起

AI分类器省钱攻略&#xff1a;按需付费比买显卡省90%&#xff0c;1小时1块起 1. 为什么你需要按需付费的AI分类器&#xff1f; 作为一名自由职业者&#xff0c;你可能经常需要处理各种文档分类工作&#xff1a;客户合同归档、发票整理、项目资料归类等。传统方式要么耗时耗力…

作者头像 李华
网站建设 2026/10/12 19:50:25

分类器模型解释性分析:云端Jupyter+GPU 5分钟出报告

分类器模型解释性分析&#xff1a;云端JupyterGPU 5分钟出报告 引言&#xff1a;为什么需要解释AI分类决策&#xff1f; 在金融风控、医疗诊断等关键领域&#xff0c;AI模型不能只是"黑箱"——我们需要清楚知道它为什么做出某个决策。比如贷款被拒的客户有权知道具…

作者头像 李华
网站建设 2026/10/11 0:25:46

资源受限设备也能跑大模型?基于AutoGLM-Phone-9B的多模态推理方案

资源受限设备也能跑大模型&#xff1f;基于AutoGLM-Phone-9B的多模态推理方案 随着大模型在自然语言处理、计算机视觉和语音识别等领域的广泛应用&#xff0c;如何将这些高参数量的模型部署到资源受限的移动设备上&#xff0c;成为工业界和学术界共同关注的核心问题。传统的大…

作者头像 李华