【E1193】用原子阿波罗STM32F429 做的Modbus TCP/IP主从和RTU主从通信

2021-09-14 08:43:29      索炜达电子      657     

项目编号:E1193

文件大小:3.2M

源码说明:带中文注释

开发环境:C编译器

简要概述:

Modbus 通信,用的是原子的阿波罗 STM32F429 开发板


通信协议:

1. MODBUS TCP/IP 主站      可以预定义采集从站的报文,报文有优先级.优先级的数量在MB.H中定义

2. MODBUS TCP/IP 从站(TCP服务端)可以支持4个主站(连接数量可以在MB.H中定义)连接本站

3. MODBUS RTU 主站    可以预定义采集从站的报文,报文有优先级.优先级的数量在MB.H中定义

4.  MODBUS RTU 从站


由于网口占用了串口2和串口3的端口,所以主站和从站我都定义为串口1,通过宏定义只使用主站或从站。

MODBUS TCP/IP的主站和从站与RTU可以同时使用,如果通过跳线将RTU主站或从站进行端口映射不与网口冲突,4个功能可以同时开启。

屏的驱动我这里只有7寸电容屏,所以驱动只保留了7寸屏的驱动,如果有屏的话,有一些调试信息打印在屏上。

OS操作系统就不要抱怨了,这个是我自己编的,自己要什么功能自己加的,如果要改其他OS的话应该UCOSII比较接近,MODBUS任务的话根据UCOSII改就可以了。我的MODBUS任务用了信号量,MODBUS TCP/IP 主站和MODBUS RTU 主站各一个信号量。屏幕打印用了一个互斥量。

功能码我没有全部做全,01,02,03,04,05,06做了,15,16还没来得及做。

MODBUS_BIN.rar这个是bin文件,可以在阿波罗429的综合例程里,用运行器运行。


配置:

作为modbus TCP/IP从站:可以有4个MODBUS TCP/IP主站来采集数据。本机的IP地址为:192.168.3.30 modbus地址 1.

作为modbus TCP/IP主站:连接的Modbus TCP/IP从站IP地址为192.168.3.131  modbus地址为2.程序里使用了03功能码读数据和06功能码写数据。

modbus RTU从站:串口冲突,没有配置,如果通过跳线和串口端口映射到其他串口,可以开启。

Modbus RTU主站:使用串口1 波特率19200,8,N,1 读取的modbus地址为2,使用03功能码读数据和06功能码写数据。

目录│文件列表:

 │ MODBUS.rar

 │ MODBUS_BIN.rar

TAGModbus
  • 18 次
  • 1 分