【E290】基于STM32F4的Modbus TCP上下位机通信项目

2021-08-18 08:50:58      索炜达电子      742     

项目编号:E290

文件大小:2M

源码说明:带中文注释

开发环境:C编译器

简要概述:

项目简介

  • 项目基于正点原子STM32F4探索者开发板和LabVIEW开发的上位机软件进行Modbus协议通信;

  • 项目采用TCP/IP通信方式,移植freeModbus协议到STM32,利用LabVIEW Modbus库;

  • 编写配套上位机读取开发板按键、AD值,并可通过上位机设置开发板LED、DAC状态。

功能简介

  • 线 圈 :led控制

  • 离散输入 :按键读取

  • 保持寄存器:ADC读取

  • 输入寄存器:DAC设置

上位机

  • 1.上位机由LabVIEW 2013编写,请使用高于2013的版本打开,并将ni modbus 库解压到指定路径,详见release;

  • 2.ModbusPoll调试工具见release;

下位机

  • 1.下位机采用正点原子探索者stm32f4开发板实现;

注意事项

  • 1.开发板与运行上位机的PC需要连入同一局域网;

  • 2.编译代码前需要修改静态IP参数,需与您的局域网网段一致;

  • 3.开发板需要插入LCD显示屏;

  • 4.PC需要安装高于LabVIEW2013的开发环境,并将NI Modbus库解压到对应文件夹;

  • 5.运行LabVIEW上位机前,填入开发板的静态IP;

  • 6.不熟悉LabVIEW的同学可以使用ModbusPoll调试工具进行学习。

【E290】基于STM32F4的Modbus TCP上下位机通信项目

文件列表:

 └ stm32f4_modbus_tcp

    └ stm32f4_modbus_tcp

       ├ LabVIEW-TCP-Modbus-Demo

       │  │ ModbusTCP-Demo.vi

       │  └ SubVI

       │     │ DiscreteInputsReg.vi

       │     │ InputRegisters.vi

       │     │ WriteCoils.vi

       │     └ WriteMultipleReg.vi

       ├ STM32F4-FreeModBus-Lwip-TCP-uCOSII-Demo

       │  │ keilkilll.bat

       │  │ readme.txt

       │  ├ CORE

       │  │  │ core_cm4.h

       │  │  │ core_cm4_simd.h

       │  │  │ core_cmFunc.h

       │  │  │ core_cmInstr.h

       │  │  └ startup_stm32f40_41xxx.s

       │  ├ FreeModbusTCP

       │  │  ├ app

       │  │  │  │ user_mb_app.c

       │  │  │  └ user_mb_app.h

       │  │  ├ modbus

       │  │  │  │ mb.c

       │  │  │  ├ ascii

       │  │  │  │  │ mbascii.c

       │  │  │  │  └ mbascii.h

       │  │  │  ├ functions

       │  │  │  │  │ mbfunccoils.c

       │  │  │  │  │ mbfuncdiag.c

       │  │  │  │  │ mbfuncdisc.c

       │  │  │  │  │ mbfuncholding.c

       │  │  │  │  │ mbfuncinput.c

       │  │  │  │  │ mbfuncother.c

       │  │  │  │  └ mbutils.c

       │  │  │  ├ include

       │  │  │  │  │ mb.h

       │  │  │  │  │ mbconfig.h

       │  │  │  │  │ mbframe.h

       │  │  │  │  │ mbfunc.h

       │  │  │  │  │ mbport.h

       │  │  │  │  │ mbproto.h

       │  │  │  │  └ mbutils.h

       │  │  │  ├ rtu

       │  │  │  │  │ mbcrc.c

       │  │  │  │  │ mbcrc.h

       │  │  │  │  │ mbrtu.c

       │  │  │  │  └ mbrtu.h

       │  │  │  └ tcp

       │  │  │     │ mbtcp.c

       │  │  │     └ mbtcp.h

       │  │  └ port

       │  │     │ port.h

       │  │     │ portevent.c

       │  │     │ portother.c

       │  │     └ porttcp.c

       │  ├ FWLIB

       │  │  ├ STM32F4x7_ETH_Driver

       │  │  │  ├ inc

       │  │  │  │  │ stm32f4x7_eth.h

       │  │  │  │  └ stm32f4x7_eth_conf.h

       │  │  │  └ src

       │  │  │     └ stm32f4x7_eth.c

       │  │  └ STM32F4xx_StdPeriph_Driver

       │  │     ├ 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

       │  │  ├ ADC

       │  │  │  │ adc.c

       │  │  │  └ adc.h

       │  │  ├ ADC3

       │  │  │  │ adc3.c

       │  │  │  └ adc3.h

       │  │  ├ BEEP

       │  │  │  │ beep.c

       │  │  │  └ beep.h

       │  │  ├ DAC

       │  │  │  │ dac.c

       │  │  │  └ dac.h

       │  │  ├ ETHERNET

       │  │  │  │ lan8720.c

       │  │  │  └ lan8720.h

       │  │  ├ KEY

       │  │  │  │ key.c

       │  │  │  └ key.h

       │  │  ├ LCD

       │  │  │  │ FONT.H

       │  │  │  │ lcd.c

       │  │  │  └ lcd.h

       │  │  ├ LED

       │  │  │  │ led.c

       │  │  │  └ led.h

       │  │  ├ LSENS

       │  │  │  │ lsens.c

       │  │  │  └ lsens.h

       │  │  ├ MALLOC

       │  │  │  │ malloc.c

       │  │  │  └ malloc.h

       │  │  ├ PWM_DAC

       │  │  │  │ pwmdac.c

       │  │  │  └ pwmdac.h

       │  │  ├ SRAM

       │  │  │  │ sram.c

       │  │  │  └ sram.h

       │  │  └ TIMER

       │  │     │ timer.c

       │  │     └ timer.h

       │  ├ LWIP

       │  │  ├ arch

       │  │  │  │ cc.h

       │  │  │  │ cpu.h

       │  │  │  │ perf.h

       │  │  │  │ sys_arch.c

       │  │  │  └ sys_arch.h

       │  │  ├ lwip-1.4.1

       │  │  │  │ CHANGELOG

       │  │  │  │ COPYING

       │  │  │  │ FILES

       │  │  │  │ README

       │  │  │  │ UPGRADING

       │  │  │  ├ doc

       │  │  │  │  │ contrib.txt

       │  │  │  │  │ FILES

       │  │  │  │  │ rawapi.txt

       │  │  │  │  │ savannah.txt

       │  │  │  │  │ snmp_agent.txt

       │  │  │  │  └ sys_arch.txt

       │  │  │  ├ src

       │  │  │  │  │ FILES

       │  │  │  │  ├ api

       │  │  │  │  │  │ api_lib.c

       │  │  │  │  │  │ api_msg.c

       │  │  │  │  │  │ err.c

       │  │  │  │  │  │ netbuf.c

       │  │  │  │  │  │ netdb.c

       │  │  │  │  │  │ netifapi.c

       │  │  │  │  │  │ sockets.c

       │  │  │  │  │  └ tcpip.c

       │  │  │  │  ├ core

       │  │  │  │  │  │ def.c

       │  │  │  │  │  │ dhcp.c

       │  │  │  │  │  │ dns.c

       │  │  │  │  │  │ init.c

       │  │  │  │  │  │ lwip_sys.c

       │  │  │  │  │  │ mem.c

       │  │  │  │  │  │ memp.c

       │  │  │  │  │  │ netif.c

       │  │  │  │  │  │ pbuf.c

       │  │  │  │  │  │ raw.c

       │  │  │  │  │  │ stats.c

       │  │  │  │  │  │ tcp.c

       │  │  │  │  │  │ tcp_in.c

       │  │  │  │  │  │ tcp_out.c

       │  │  │  │  │  │ timers.c

       │  │  │  │  │  │ udp.c

       │  │  │  │  │  ├ ipv4

       │  │  │  │  │  │  │ autoip.c

       │  │  │  │  │  │  │ icmp.c

       │  │  │  │  │  │  │ igmp.c

       │  │  │  │  │  │  │ inet.c

       │  │  │  │  │  │  │ inet_chksum.c

       │  │  │  │  │  │  │ ip.c

       │  │  │  │  │  │  │ ip_addr.c

       │  │  │  │  │  │  └ ip_frag.c

       │  │  │  │  │  ├ ipv6

       │  │  │  │  │  │  │ icmp6.c

       │  │  │  │  │  │  │ inet6.c

       │  │  │  │  │  │  │ ip6.c

       │  │  │  │  │  │  │ ip6_addr.c

       │  │  │  │  │  │  └ README

       │  │  │  │  │  └ snmp

       │  │  │  │  │     │ asn1_dec.c

       │  │  │  │  │     │ asn1_enc.c

       │  │  │  │  │     │ mib2.c

       │  │  │  │  │     │ mib_structs.c

       │  │  │  │  │     │ msg_in.c

       │  │  │  │  │     └ msg_out.c

       │  │  │  │  ├ include

       │  │  │  │  │  ├ ipv4

       │  │  │  │  │  │  └ lwip

       │  │  │  │  │  │     │ autoip.h

       │  │  │  │  │  │     │ icmp.h

       │  │  │  │  │  │     │ igmp.h

       │  │  │  │  │  │     │ inet.h

       │  │  │  │  │  │     │ inet_chksum.h

       │  │  │  │  │  │     │ ip.h

       │  │  │  │  │  │     │ ip_addr.h

       │  │  │  │  │  │     └ ip_frag.h

       │  │  │  │  │  ├ ipv6

       │  │  │  │  │  │  └ lwip

       │  │  │  │  │  │     │ icmp.h

       │  │  │  │  │  │     │ inet.h

       │  │  │  │  │  │     │ ip.h

       │  │  │  │  │  │     └ ip_addr.h

       │  │  │  │  │  ├ lwip

       │  │  │  │  │  │  │ api.h

       │  │  │  │  │  │  │ api_msg.h

TAGModbus
  • 12 次
  • 1 分