2021-09-06 09:13:12 索炜达电子 773
项目编号:E815
文件大小:3M
源码说明:带中文注释
开发环境:C编译器
简要概述:
MODBUS RTU,是现在工控行业非常重要的一个现场应用协议。相信做工控现场的师兄都知道。我也因需要,做了个从站,方便大家使用。
经自己3个星期的努力,终于把MODBUS RTU在STM32F407控制器上成功实现了,每句话都加注了详细的说明。
有需要的小伙伴可以选用
截图如下
主机配置如下
1 modbus poll主机不断给从机1发送03读寄存器命令:
Tx:066-01 03 00 00 00 0A C5 CD
Modbus RTU 03码解析
MODBUS应答
示例-03码.主机Modbus poll软件命令如下
主站发出/命令:读地址006B(十进制107)开始的0003(3)个寄存器地址。
从站返回/应答:03码,返回06(十进制6)个字节寄存器,022B(555),0000(0),0064(100)
STM32F407从机回答如下
Tx:066-01 03 00 00 00 0A C5 CD
命令解析:读1号(01)从站寄存器(03),从00(00 00)开始,共10(00 0A)个寄存器。
Rx:067-01 03 14 05 4B 03 EA 08 FF 20 0C 05 4B 03 EA 08 FF 2D 00 2D 00 2D 00 EC 08
应答解析:01:地址;03:功能码;14:字节数量10个(2进制14=10进制20)
05 4B :2进制054B=10进制1355; 03 EA :1002; 08 FF:2303; 20 0C:8204; 05 4B:1355;
03 EA :1002; 08 FF :2303; 2D 00:115200; 2D 00 :115200;2D 00:115200;
EC 08 :校验码-5112
目录│文件列表:
├ MODBUS协议报文解析
│ │ commdata.txt
│ │ MODBUS协议(功能码及报文解析).pdf
│ └ Modbus通讯说明.txt
├ Modbus通讯
│ └ Modbus通讯
│ │ keilkilll.bat
│ │ readme.txt
│ ├ CORE
│ │ │ core_cm4.h
│ │ │ core_cm4_simd.h
│ │ │ core_cmFunc.h
│ │ │ core_cmInstr.h
│ │ └ startup_stm32f40_41xxx.s
│ ├ FWLIB
│ │ ├ inc
│ │ │ │ misc.h
│ │ │ │ stm32f4xx_adc.h
│ │ │ │ stm32f4xx_can.h
│ │ │ │ stm32f4xx_crc.h
│ │ │ │ stm32f4xx_cryp.h
│ │ │ │ stm32f4xx_dac.h
│ │ │ │ stm32f4xx_dbgmcu.h
│ │ │ │ stm32f4xx_dcmi.h
│ │ │ │ stm32f4xx_dma.h
│ │ │ │ stm32f4xx_dma2d.h
│ │ │ │ stm32f4xx_exti.h
│ │ │ │ stm32f4xx_flash.h
│ │ │ │ stm32f4xx_flash_ramfunc.h
│ │ │ │ stm32f4xx_fmc.h
│ │ │ │ stm32f4xx_fsmc.h
│ │ │ │ stm32f4xx_gpio.h
│ │ │ │ stm32f4xx_hash.h
│ │ │ │ stm32f4xx_i2c.h
│ │ │ │ stm32f4xx_iwdg.h
│ │ │ │ stm32f4xx_ltdc.h
│ │ │ │ stm32f4xx_pwr.h
│ │ │ │ stm32f4xx_rcc.h
│ │ │ │ stm32f4xx_rng.h
│ │ │ │ stm32f4xx_rtc.h
│ │ │ │ stm32f4xx_sai.h
│ │ │ │ stm32f4xx_sdio.h
│ │ │ │ stm32f4xx_spi.h
│ │ │ │ stm32f4xx_syscfg.h
│ │ │ │ stm32f4xx_tim.h
│ │ │ │ stm32f4xx_usart.h
│ │ │ └ stm32f4xx_wwdg.h
│ │ └ src
│ │ │ misc.c
│ │ │ stm32f4xx_adc.c
│ │ │ stm32f4xx_can.c
│ │ │ stm32f4xx_crc.c
│ │ │ stm32f4xx_cryp.c
│ │ │ stm32f4xx_cryp_aes.c
│ │ │ stm32f4xx_cryp_des.c
│ │ │ stm32f4xx_cryp_tdes.c
│ │ │ stm32f4xx_dac.c
│ │ │ stm32f4xx_dbgmcu.c
│ │ │ stm32f4xx_dcmi.c
│ │ │ stm32f4xx_dma.c
│ │ │ stm32f4xx_dma2d.c
│ │ │ stm32f4xx_exti.c
│ │ │ stm32f4xx_flash.c
│ │ │ stm32f4xx_flash_ramfunc.c
│ │ │ stm32f4xx_fmc.c
│ │ │ stm32f4xx_fsmc.c
│ │ │ stm32f4xx_gpio.c
│ │ │ stm32f4xx_hash.c
│ │ │ stm32f4xx_hash_md5.c
│ │ │ stm32f4xx_hash_sha1.c
│ │ │ stm32f4xx_i2c.c
│ │ │ stm32f4xx_iwdg.c
│ │ │ stm32f4xx_ltdc.c
│ │ │ stm32f4xx_pwr.c
│ │ │ stm32f4xx_rcc.c
│ │ │ stm32f4xx_rng.c
│ │ │ stm32f4xx_rtc.c
│ │ │ stm32f4xx_sai.c
│ │ │ stm32f4xx_sdio.c
│ │ │ stm32f4xx_spi.c
│ │ │ stm32f4xx_syscfg.c
│ │ │ stm32f4xx_tim.c
│ │ │ stm32f4xx_usart.c
│ │ └ stm32f4xx_wwdg.c
│ ├ HARDWARE
│ │ ├ KEY
│ │ │ │ key.c
│ │ │ └ key.h
│ │ ├ LED
│ │ │ │ led.c
│ │ │ └ led.h
│ │ └ modbus
│ │ │ modbus.c
│ │ └ modbus.h
│ ├ OBJ
│ │ └ Template.hex
│ ├ README
│ │ └ README.txt
│ ├ SYSTEM
│ │ ├ delay
│ │ │ │ delay.c
│ │ │ └ delay.h
│ │ ├ sys
│ │ │ │ sys.c
│ │ │ └ sys.h
│ │ └ usart
│ │ │ usart.c
│ │ └ usart.h
│ └ USER
│ │ JLinkSettings.ini
│ │ main.c
│ │ modbus.uvguix.Administrator
│ │ modbus.uvoptx
│ │ modbus.uvprojx
│ │ stm32f4xx.h
│ │ stm32f4xx_conf.h
│ │ stm32f4xx_it.c
│ │ stm32f4xx_it.h
│ │ system_stm32f4xx.c
│ │ system_stm32f4xx.h
│ │ Template.uvguix.Administrator
│ └ Template.uvoptx
├ Modbus通讯改1图片
│ └ Modbus通讯改1图片
│ │ 06码下写正确.png
│ │ 微信截图_20200509093959.png
│ │ 微信截图_20200509094219.png
│ │ 微信截图_20200509100030.png
│ │ 微信截图_20200509100043.png
│ │ 通信1.png
│ │ 通信2.png
│ │ 通信说明.docx
│ │ 配置.png
│ │ 配置2.png
│ │ 默认通信1.txt
│ └ 默认通信2.png
└ Modbus通讯改2
└ Modbus通讯改2
│ keilkilll.bat
│ readme.txt
├ CORE
│ │ core_cm4.h
│ │ core_cm4_simd.h
│ │ core_cmFunc.h
│ │ core_cmInstr.h
│ └ startup_stm32f40_41xxx.s
├ FWLIB
│ ├ inc
│ │ │ misc.h
│ │ │ stm32f4xx_adc.h
│ │ │ stm32f4xx_can.h
│ │ │ stm32f4xx_crc.h
│ │ │ stm32f4xx_cryp.h
│ │ │ stm32f4xx_dac.h
│ │ │ stm32f4xx_dbgmcu.h
│ │ │ stm32f4xx_dcmi.h
│ │ │ stm32f4xx_dma.h
│ │ │ stm32f4xx_dma2d.h
│ │ │ stm32f4xx_exti.h
│ │ │ stm32f4xx_flash.h
│ │ │ stm32f4xx_flash_ramfunc.h
│ │ │ stm32f4xx_fmc.h
│ │ │ stm32f4xx_fsmc.h
│ │ │ stm32f4xx_gpio.h
│ │ │ stm32f4xx_hash.h
│ │ │ stm32f4xx_i2c.h
│ │ │ stm32f4xx_iwdg.h
│ │ │ stm32f4xx_ltdc.h
│ │ │ stm32f4xx_pwr.h
│ │ │ stm32f4xx_rcc.h
│ │ │ stm32f4xx_rng.h
│ │ │ stm32f4xx_rtc.h
│ │ │ stm32f4xx_sai.h
│ │ │ stm32f4xx_sdio.h
│ │ │ stm32f4xx_spi.h
│ │ │ stm32f4xx_syscfg.h
│ │ │ stm32f4xx_tim.h
│ │ │ stm32f4xx_usart.h
│ │ └ stm32f4xx_wwdg.h
│ └ src
│ │ misc.c
│ │ stm32f4xx_adc.c
│ │ stm32f4xx_can.c
│ │ stm32f4xx_crc.c
│ │ stm32f4xx_cryp.c
│ │ stm32f4xx_cryp_aes.c
│ │ stm32f4xx_cryp_des.c
│ │ stm32f4xx_cryp_tdes.c
│ │ stm32f4xx_dac.c
│ │ stm32f4xx_dbgmcu.c
│ │ stm32f4xx_dcmi.c
│ │ stm32f4xx_dma.c
│ │ stm32f4xx_dma2d.c
│ │ stm32f4xx_exti.c
│ │ stm32f4xx_flash.c
│ │ stm32f4xx_flash_ramfunc.c
│ │ stm32f4xx_fmc.c
│ │ stm32f4xx_fsmc.c
│ │ stm32f4xx_gpio.c
│ │ stm32f4xx_hash.c
│ │ stm32f4xx_hash_md5.c
│ │ stm32f4xx_hash_sha1.c
│ │ stm32f4xx_i2c.c
│ │ stm32f4xx_iwdg.c
│ │ stm32f4xx_ltdc.c
│ │ stm32f4xx_pwr.c
│ │ stm32f4xx_rcc.c
│ │ stm32f4xx_rng.c
│ │ stm32f4xx_rtc.c
│ │ stm32f4xx_sai.c
│ │ stm32f4xx_sdio.c
│ │ stm32f4xx_spi.c
│ │ stm32f4xx_syscfg.c
│ │ stm32f4xx_tim.c
│ │ stm32f4xx_usart.c
│ └ stm32f4xx_wwdg.c
├ HARDWARE
│ ├ KEY
│ │ │ key.c
│ │ └ key.h
│ ├ LED
│ │ │ led.c
│ │ └ led.h
│ ├ modbus
│ │ │ modbus.c
│ │ └ modbus.h
│ └ OLED
│ │ bmp.h
│ │ oled.c
│ │ oled.h
│ └ oledfont.h
├ OBJ
│ └ Template.hex
├ README
│ └ README.txt
├ SYSTEM
│ ├ delay
│ │ │ delay.c
│ │ └ delay.h
│ ├ sys
│ │ │ sys.c
│ │ └ sys.h
│ └ usart
│ │ usart.c
│ └ usart.h
└ USER
│ JLinkSettings.ini
│ main.c
│ modbus.uvguix.Administrator
│ modbus.uvoptx
│ modbus.uvprojx
│ stm32f4xx.h
│ stm32f4xx_conf.h
│ stm32f4xx_it.c
│ stm32f4xx_it.h
│ system_stm32f4xx.c
│ system_stm32f4xx.h
│ Template.uvguix.Administrator
│ Template.uvoptx
└ DebugConfig
└ Modbus_STM32F407ZG.dbgconf