2021-08-18 08:50:58 索煒達電子 1041
項目編號:E290
文件大?。?M
源碼說明:帶中文注釋
開發(fā)環(huán)境:C編譯器
簡要概述:
項目基于正點原子STM32F4探索者開發(fā)板和LabVIEW開發(fā)的上位機軟件進行Modbus協(xié)議通信;
項目采用TCP/IP通信方式,移植freeModbus協(xié)議到STM32,利用LabVIEW Modbus庫;
編寫配套上位機讀取開發(fā)板按鍵、AD值,并可通過上位機設(shè)置開發(fā)板LED、DAC狀態(tài)。
線 圈 :led控制
離散輸入 :按鍵讀取
保持寄存器:ADC讀取
輸入寄存器:DAC設(shè)置
1.上位機由LabVIEW 2013編寫,請使用高于2013的版本打開,并將ni modbus 庫解壓到指定路徑,詳見release;
2.ModbusPoll調(diào)試工具見release;
1.下位機采用正點原子探索者stm32f4開發(fā)板實現(xiàn);
1.開發(fā)板與運行上位機的PC需要連入同一局域網(wǎng);
2.編譯代碼前需要修改靜態(tài)IP參數(shù),需與您的局域網(wǎng)網(wǎng)段一致;
3.開發(fā)板需要插入LCD顯示屏;
4.PC需要安裝高于LabVIEW2013的開發(fā)環(huán)境,并將NI Modbus庫解壓到對應(yīng)文件夾;
5.運行LabVIEW上位機前,填入開發(fā)板的靜態(tài)IP;
6.不熟悉LabVIEW的同學(xué)可以使用ModbusPoll調(diào)試工具進行學(xué)習(xí)。
文件列表:
└ 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