1. 项目概述与MODBUS协议基础
在工业自动化领域,MODBUS协议就像设备间的"普通话",让不同厂商生产的设备能够相互理解。这次我们要拆解的是一套完整的MODBUS通信解决方案,包含C#上位机程序、STM32下位机固件以及Flash烧写工具。这套系统特别适合需要快速搭建工业控制场景的开发者,比如自动化产线监控、智能仓储设备通信等。
MODBUS协议本质上是一种主从式通信协议,上位机作为主站主动发起请求,下位机作为从站响应请求。协议支持两种传输模式:RTU(二进制格式)和ASCII(文本格式)。我们这套源码采用的是RTU模式,传输效率更高,典型波特率设置为9600或19200bps。协议中定义了四种基本数据类型:
- 线圈(Coil):可读可写的布尔量,对应PLC中的DO输出
- 离散输入(Discrete Input):只读布尔量,对应DI输入
- 保持寄存器(Holding Register):可读可写的16位数据,对应AO输出
- 输入寄存器(Input Register):只读16位数据,对应AI输入
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 开发环境搭建与硬件选型
2.1 上位机开发环境配置
上位机采用C#开发,推荐使用Visual Studio 2019及以上版本。需要安装的组件包括:
- .NET Framework 4.7.2(工业场景首选稳定版本)
- SerialPort控件(System.IO.Ports命名空间)
- 可选安装Modbus库(如NModbus)用于协议调试
配置示例:
csharp复制// 串口基础配置
SerialPort port = new SerialPort("COM3", 9600, Parity.None, 8, StopBits.One);
port.Handshake = Handshake.None;
port.ReadTimeout = 500; // 超时设置需大于从站响应时间
2.2 下位机硬件平台
下位机基于STM32F103C8T6(蓝核板)开发,主要硬件特性:
- Cortex-M3内核,72MHz主频
- 64KB Flash + 20KB RAM
- 3个USART接口(建议使用USART2作MODBUS通信)
- 定时器TIM2用于协议超时检测
uC/OS-III实
