一、modbus
Modbus RTU通信时使用的数据帧结构如下图,而Moubus TCP通信的数据帧和这个稍微不一样,没有crc检验,因为tcp本就是一种可靠传输协议

| 功能码 | 作用 |
|---|---|
| 01 | 读取线圈状态 |
| 02 | 读取输入状态 |
| 03 | 读取保持寄存器 |
| 04 | 读取输入寄存器 |
| 05 | 强置单线圈 |
| 06 | 预置单寄存器 |
| 07 | 读取异常状态 |
| 08 | 回送诊断校验 |
| 09 | 编程(只用于484) |
| 0A | 控询 |
| 0B | 读取事件计数 |
| 0C | 读取通信事件记录 |
| 0D | 编程(184/384/484/584等) |
| 0E | 探寻 |
| 0F | 强置多线圈 |
| 10 | 预置多线圈 |
| 11 | 报告多寄存器 |
| 12 | 可使主机模拟编程功能 |
| 13 | 重置通信链路 |
| 14 | 读取通用参数 |
| 15 | 写入通用参数 |
| 16 | 屏蔽写寄存器 |
| 17 | 读/写多个寄存器 |
二、W5500
D-W5500 EVB以太网模块是一款基于WIZnet W5500芯片的以太网模块,且性价比高的以太网模块。W5500是一款全硬件TCP/IP嵌入式以太网控制器,为嵌入式系统提供了更加建议的互联网连接方案。
W5500固化了TCP/IP协议栈,10/100Mbps以太网数据链路层(MAC)及物理层(PHY),使得用户使用单芯片就能够在他们的应用中拓展网络连接。内嵌32K字节片上缓存以供以太网处理,并且可以同时使用8个硬件Socket独立通讯;SPI(外设船型接口)从而能够更加容易与外设MCU整合,并且W5500使用了高效SPI协议支持80MHz,从而实现高速网络通讯。
模块还支持3.3V或者5V电源供电,当5V供电时还可以输出3.3V的电压,方便用户在不同的单片机系统中使用。
线路接法
PA3 -> W5500_RST
PA4 -> W5500_SCS
PA5 -> W5500_SCK
PA6 -> W5500_MISO
PA7 -> W5500_MOSI
三、代码实现
- 初始化从机网络
void Load_Net_Parameters(void)
{
Gateway_IP[0] = 192;//加载网关参数
Gateway_IP[1] = 168;
Gateway_IP[2] = 1;
Gateway_IP[3] = 1;
Sub_Mask[0]=255

本文介绍了如何使用STM32F103微控制器配合W5500以太网模块实现Modbus TCP通信,详细讲解了数据帧结构、Modbus功能码的应用以及W5500的网络配置和代码实现过程。

4040

被折叠的 条评论
为什么被折叠?



