




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
基于單片機(jī)的現(xiàn)場溫濕度采集系統(tǒng)的硬件和軟件系統(tǒng)設(shè)計案例目錄TOC\o"1-3"\h\u28085基于單片機(jī)的現(xiàn)場溫濕度采集系統(tǒng)的硬件和軟件系統(tǒng)設(shè)計案例 124851硬件設(shè)計 160631.1STM32L475開發(fā)板詳解 1309781.1.1MCU 1245031.1.2STLINKV2.1 2179781.2硬件接口 3211761.3溫濕度傳感器AHT10 4320921.1.1AHT10 473051.1.2I2C通信 5295431.4串口服務(wù)器 5236932軟件設(shè)計 7304812.1Modbus協(xié)議的通信 720672.2下位機(jī)程序設(shè)計 8194732.2.1FreeModbus協(xié)議棧的移植 843442.2.2Modbus協(xié)議在STM32單片機(jī)上的實現(xiàn) 9281102.3上位機(jī)監(jiān)控計算機(jī)的實現(xiàn) 10312602.1.1MCGS組態(tài)軟件 10154752.1.2Modbus協(xié)議的RTU模式在上位機(jī)的實現(xiàn) 1142552.1.3Modbus協(xié)議的TCP模式在上位機(jī)的實現(xiàn) 1240222.1.4ModbusTCP轉(zhuǎn)RTU 13307352.4溫濕度的采集 13176272.5溫濕度數(shù)據(jù)在液晶屏上的顯示 151硬件設(shè)計硬件部分需要對單片機(jī)進(jìn)行選型,選擇一個合適的溫濕度傳感器,對串口進(jìn)行合適的配置,串口服務(wù)器的使用,以及相關(guān)外設(shè)的連接和使用。1.1STM32L475開發(fā)板詳解1.1.1MCU正點原子的潘多拉STM32L475開發(fā)板選用的是STM32L475VET6來作為MCU,該芯片功能非常強(qiáng)大,STM32L4是意法半導(dǎo)體公司推出的一款MCU,由于其強(qiáng)大的低功耗性能、擁有很廣泛的應(yīng)用前景REF_Ref72491103\r\h[2]。該芯片的資源包括:集成FPU和DSP指令,并具有128KBSRAM、512KBFLASH、SPI、三個IIC、多個串口(本課題常用的只有2個)、一個低功耗串口、一個全速USBOTG、一個CAN接口、還包括82個通用IO口、芯片主頻為80MHz。MCU引腳圖如圖3-1。圖3-1MCU引腳圖1.1.2STLINKV2.1開發(fā)板的STLINKV2.1原理圖如圖3-2所示,潘多拉STM32L475開發(fā)板板載的STLINKV2.1集程序下載、仿真調(diào)試和串口功能與一體。在需要進(jìn)行程序下載和仿真的時候,選擇SWD模式。所以在使用STLINKV2.1的串口功能時,需要使用短接帽將串口1的PA10與PA9這兩個引腳分別與TXD與RXD進(jìn)行連接。這樣USB接口可以連接到電腦USB口,單片機(jī)就可以當(dāng)作從機(jī)與電腦進(jìn)行通信。圖3-2STLINKV2.1原理圖引腳圖如圖3-3圖3-3STM32F103C8T6引腳圖1.2硬件接口主要采用了STM32L475上的三個串口。本課題的Modbus協(xié)議的在物理層用的TTL通信接口,除此之外還可以用RS485這種只需要用兩根線電壓的差來發(fā)送與接收,硬件設(shè)備連接的時候非常方便REF_Ref71898599\r\h[4]。但由于這個開發(fā)板較小,除了串口一可以直接用USB接口,其余的串口都需要利用CH340將USB轉(zhuǎn)TTL串口,在使用的過程會有一些不便,當(dāng)需要使用RS485線的時候,協(xié)議轉(zhuǎn)換起來也會造成許多不方便。串口1:STLINKV2.1的串口同STM32的串口1進(jìn)行連接的接口(USART1),當(dāng)他們通過跳帽進(jìn)行對接,使PA9和PA10分別和STLINK的RX和TX連接起來,就可以實現(xiàn)串口通信。有了板載的STLINKV2.1功能,就可以直接省去USB轉(zhuǎn)TTL的工具,只需要一根MicroUSB線就可以實現(xiàn)串口輸出功能。串口1使用到的IO如表3-1。表3-1串口1PA9和PA10在STM32CuberMX里面配置如圖3-4。圖3-4串口1的引腳配置使用短路帽將USART1排針的PA10與PA9分別與TXD與RXD進(jìn)行連接,這樣串口1就可以與電腦的USB串口進(jìn)行通訊。原理圖如圖3-5。圖3-5串口1原理圖(2)串口2:STM32L475開發(fā)板中并沒有直接引出串口2,而是將串口2的引腳放在了ATK模塊中,這是一個通用的接口,可以支持正點原子開發(fā)的多種模塊。本課題僅僅使用了ATK模塊的RX和TX引腳當(dāng)作串口二使用(此處需要注意的是開發(fā)板上標(biāo)注的RX和TX與實際引腳的是相反的)。串口2的IO分配如表3-2表3-2串口2由于開發(fā)板只引出了PA2和PA3故需要利用CH340將USB轉(zhuǎn)TTL串口,從而實現(xiàn)串口2與電腦的USB口進(jìn)行串口通訊。(3)串口3:從原理圖中找到PB10和PB11分別是串口三的TX和RX,使用方法如串口2。本課題只在同時移植主站和從站到單片機(jī)上的時候才使用了串口3。1.3溫濕度傳感器AHT101.1.1AHT10本課題采用STM32L475上自帶的AHT10溫濕度傳感器來進(jìn)行采集溫濕度。可以用來監(jiān)控不同環(huán)境里的溫度和濕度。AHT10模塊的原理圖如圖3-6。圖3-6AHT10模塊的原理圖AHT10傳感器和單片機(jī)的通信是使用的IIC方式,單片機(jī)通過串行數(shù)據(jù)引腳IIC_SDA(PC1)、串行時鐘引腳IIC_SCL2(PD6)對傳感器AHT10發(fā)送命令、讀取數(shù)據(jù)等REF_Ref71898427\r\h[4]。該傳感器工作電壓范圍為1.8V-1.3V。溫度、濕度的量程和精度如表3-3表3-3溫濕度的量程和精度功能量程精度溫度-40~85±0.5℃(典型值)相對濕度0~100%RH±3%RH(典型值)并且I2C總線具有低功耗,抗干擾強(qiáng)的優(yōu)點,AHT10的品質(zhì)非常優(yōu)秀、響應(yīng)速度很快、抗干擾的能力也比較強(qiáng)。能測量的溫度和濕度檢測的范圍都比較大完全能夠滿足監(jiān)控系統(tǒng)對溫濕度采集的要求。1.1.2I2C通信I2C總線是一種二線制同步串行總線,通信起來較為方便。僅僅只需要利用2根線就可以使連接在總線上的設(shè)備之間進(jìn)行數(shù)據(jù)傳送,分別是串行數(shù)據(jù)線和串行時鐘線。應(yīng)用單片機(jī)的普通I/O口模擬I2C通信模式時,可以選擇單片機(jī)上任意的2個I/O口作為SCL和SDA引腳,分析I2C的時序,根據(jù)I2C的時序編寫I2C通信模塊的程序代碼REF_Ref71898427\r\h[5]。詳細(xì)的I2C通信參考文獻(xiàn)REF_Ref72491739\r\h[6]。本課題是將鐘線SCL與STM32的PD6連接,串行數(shù)據(jù)線SDA與STM32的PC1連接,最終實現(xiàn)STM32與傳感器AHT10的通信,從而實現(xiàn)溫濕度的采集。1.4串口服務(wù)器串口服務(wù)器可以實現(xiàn)將串口轉(zhuǎn)成網(wǎng)絡(luò),可以將Modbus串口通信協(xié)議轉(zhuǎn)換成以太網(wǎng)通信。這樣的話串口設(shè)備就可以快速擁有TCP/IP網(wǎng)絡(luò)接口的功能,從而通過網(wǎng)絡(luò)來進(jìn)行數(shù)據(jù)的傳輸,這樣就能進(jìn)行較遠(yuǎn)距離的通訊。所用型號如圖3-7。圖3-7智嵌物聯(lián)串口服務(wù)器ZQWL-EthRS-H4是實現(xiàn)4路串口(每路都支持RS485、RS232或RS422模式)與以太網(wǎng)的數(shù)據(jù)相互轉(zhuǎn)換的設(shè)備。設(shè)備的IP地址等網(wǎng)絡(luò)參數(shù)以及4路串口的參數(shù)都可以進(jìn)行修改。本課題由于需要運用ModbusTCP網(wǎng)絡(luò)協(xié)議來建立通訊,故選用串口服務(wù)器來完成協(xié)議的轉(zhuǎn)換,串口服務(wù)器的485總線接口連接STM32單片機(jī),串口服務(wù)器的網(wǎng)絡(luò)接口連接到上位監(jiān)控計算機(jī)。這樣就可以實現(xiàn)從485總線到以太網(wǎng)的轉(zhuǎn)換。最終就可以完成遠(yuǎn)程監(jiān)和無線數(shù)據(jù)傳輸。
2軟件設(shè)計軟件設(shè)計主要有三個方面:一是Modbus協(xié)議在上位機(jī)的實現(xiàn),二是Modbus協(xié)議在單片機(jī)上的實現(xiàn),三是實現(xiàn)對溫濕度傳感器AHT10數(shù)據(jù)的采集,最終實現(xiàn)上位監(jiān)控計算機(jī)與現(xiàn)場采集設(shè)備間的通信,并且可以在上位機(jī)觀測到溫濕度的變化。2.1Modbus協(xié)議的通信Modbus協(xié)議是一種工業(yè)現(xiàn)場總線協(xié)議標(biāo)準(zhǔn)??梢詫崿F(xiàn)的功能有很多種,它的主要的功能碼如表4-1。表4-1Modbus常用功能碼功能碼描述01H讀線圈寄存器02H讀離散輸入寄存器03H讀保持寄存器04H讀輸入寄存器05H寫單個線圈寄存器06H寫單個保持寄存器0FH寫多個線圈寄存器10H寫多個保持寄存器其中運用到最多的有:03功能碼:讀保持寄存器,字節(jié)指令操作,可讀單個或者多個;05功能碼:寫單個線圈,位操作,只能寫一個,可以通過一位同時控制8個LED燈。Modbus協(xié)議的通信有以下兩種途徑:(1)串口方式進(jìn)行通信:主要是RTU和ASCII模式,本課題主要運用的ModbusRTU,RTU的幀結(jié)構(gòu)如表4-2所示,在ModbusRTU傳輸模式下數(shù)據(jù)幀的第一個字節(jié)代表的是溫度傳感器的設(shè)備地址,從站不停地偵測總線,來判斷上位機(jī)的指令是不是發(fā)向自己的;功能代碼決定了當(dāng)前指令的作用;數(shù)據(jù)段為傳輸?shù)木唧w信息(如溫濕度傳感器采集到的溫濕度數(shù)據(jù));兩位CRC校驗碼則用來避免各種干擾,能夠起到降低誤碼率,提高了傳輸可靠性的作用。表4-2ModbusRTU報文幀子節(jié)點地址功能代碼數(shù)據(jù)CRC校驗1字節(jié)1字節(jié)0-252字節(jié)CRC低CRC高(2)利用網(wǎng)絡(luò)的方式進(jìn)行Modbus通信:FreeModbus支持TCP模式,這個模式的功能碼與RTU模式的一樣。當(dāng)在現(xiàn)場嵌入式設(shè)備上運行時,可以利用TCP協(xié)議和上位監(jiān)控計算機(jī)進(jìn)行通信。TCP報文幀由MBAP頭和PDU數(shù)據(jù)單元構(gòu)成。PDU由功能碼和數(shù)據(jù)組成。利用以太網(wǎng)通信的時候server端就相當(dāng)于從站,只能等待連接。2.2下位機(jī)程序設(shè)計2.2.1FreeModbus協(xié)議棧的移植FreeModbus是一個開源的協(xié)議。它具有RTU、ASCII模式和TCP協(xié)議的支持。它的代碼規(guī)范并且移植方便簡單,給程序的開發(fā)帶來了極大的便利。又由于它具有可裁剪性,因此可以根據(jù)自己的需求來對代碼進(jìn)行任意的裁剪。同時FreeModbus對軟硬件的要求也不高、資源占用的不多,使用起來簡單方便REF_Ref71899412\r\h[9]。因為協(xié)議棧的程序編寫較為復(fù)雜,自己編寫工作量過大,并且代碼沒有經(jīng)過長期運行不可靠。因此在RT-Thread操作系統(tǒng)系下移植FreeModbus協(xié)議棧到STM32單片機(jī)上面以實現(xiàn)遠(yuǎn)程上位機(jī)的RTU模式的Modbus通信功能。利用ENV工具來對串口進(jìn)行配置(ENV工具進(jìn)行配置可以對自己需要的板載資源包進(jìn)行任意的組合,滿足自己開發(fā)的各種需要),可以方便快速的移植從站協(xié)議到STM32單片機(jī)。FreeModbus協(xié)議中有4種寄存器,開關(guān)輸入寄存器、線圈寄存器、保持寄存器和輸入寄存器,Modbus所有的功能都是通過這四種不同的類型來實現(xiàn)。但是不同的用戶數(shù)據(jù)緩沖區(qū)在結(jié)構(gòu)上不一定是一樣的,所以相應(yīng)的數(shù)據(jù)處理方式就會各不相同,因此我們應(yīng)該把各種數(shù)據(jù)類型對應(yīng)的操作按照不同的數(shù)據(jù)緩沖區(qū)來進(jìn)行不同操作。四種數(shù)據(jù)處理回調(diào)接函數(shù)如下:eMBMasterRegInputCB();輸入寄存器回調(diào)接口,輸入寄存器可讀,但不可寫;eMBMasterRegHoldingCB();保持寄存器回調(diào)接口,保持寄存器可讀可寫;eMBMasterRegCoilsCB();線圈回調(diào)接口,線圈寄存器可讀可寫;eMBMasterRegDiscreteCB();離散輸入回調(diào)接口,可讀但不可寫。當(dāng)有功能函數(shù)調(diào)用的時候,就可以通過不同的回調(diào)函數(shù)進(jìn)行回讀,然后進(jìn)行數(shù)據(jù)處理和傳送。往從機(jī)中寫入數(shù)據(jù)函數(shù)具體如下所示,本課題使用中其中第一個參數(shù)為SLAVE_ADDR(在開始已經(jīng)將這個定義為1,即從機(jī)地址為0x01。);第二個參數(shù)寫寄存器的起始地址使用的是前面已經(jīng)定義過的2(即寫數(shù)據(jù)的起始地址為2);第三個參數(shù)寫寄存器的總數(shù)使用的是MB_SEND_REG_NUM(已被定義為2,即向從機(jī)寫入兩個數(shù)據(jù));第四個參數(shù)為寫寄存器的數(shù)據(jù)(下面所示的函數(shù)表示的數(shù)據(jù)為data數(shù)組中的數(shù)據(jù))。讀數(shù)據(jù)函數(shù)與寫類似。2.2.2Modbus協(xié)議在STM32單片機(jī)上的實現(xiàn)在主程序中先定義好從機(jī)地址、波特率、奇偶校驗、停止位和端口號等。首先通過eMBSlaveInit來從機(jī)協(xié)議棧進(jìn)行初始化操作,從機(jī)中涉及到的部分硬件就會跟著進(jìn)行初始化,同時利用HAL_UART_MspDeInit()函數(shù)對串口進(jìn)行初始化,由于ENV工具配置的生成的串口初始化函數(shù)只有串口1的,而本課題所使用的還有別的串口,因此需要自己編寫其他在數(shù)據(jù)采集過程中所用到的串口的初始化。利用在線程輪詢調(diào)用eMSlavePoll方式,來實現(xiàn)主站和從站的通信。使用一個線程的第一步就是先創(chuàng)建一個線程。通過創(chuàng)建線程在主函數(shù)中創(chuàng)建了兩個動態(tài)線程。當(dāng)調(diào)用一個線程時,系統(tǒng)就從動態(tài)堆內(nèi)存中分配一個線程句柄,然后按照線程函數(shù)里面的參數(shù)中定義的棧的值來分配對應(yīng)大小的空間。線程1:tid1=rt_thread_create("md_s_poll",mb_slave_poll,RT_NULL,512,MB_POLL_THREAD_PRIORITY,10);創(chuàng)建線程1,名稱是md_s_poll,入口函數(shù)是mb_slave_poll,線程大小是512字節(jié),優(yōu)先級設(shè)置的10(優(yōu)先級范圍根據(jù)系統(tǒng)配置情況,數(shù)值越小那么優(yōu)先級久會越高)。當(dāng)線程執(zhí)行成功以后就會返回一個句柄,就可以用來判斷。創(chuàng)建的線程首先會是初始化,這個時候線程是不會進(jìn)入到就緒線程的隊列,當(dāng)獲得線程控制塊后,我們可以在線程初始化完成以后利用rt_thread_startup(tid1)函數(shù)接口讓該線程進(jìn)入就緒態(tài),隨后按照設(shè)置的優(yōu)先級等待。當(dāng)新啟動的線程優(yōu)先級高于當(dāng)前的線程那么就會先啟動這個優(yōu)先級更高的線程。啟動這個線程后,在函數(shù)mb_slave_poll中進(jìn)行輪詢。線程2:tid2=rt_thread_create("md_s_send",send_slave_entry,RT_NULL,512,MB_SEND_THREAD_PRIORITY,10);創(chuàng)建線程2,名稱是md_s_send,入口函數(shù)是send_slave_entry。“send_slave_entry”函數(shù)主要是實現(xiàn)從站發(fā)送數(shù)據(jù),將溫度和濕度的數(shù)值寫到保持寄存器中,將LED燈的值寫到離散寄存器中。一般來在線程的實際應(yīng)用的時候會利用rt_thread_mdelay();函數(shù)讓正在運行的線程延遲一定的時間,以便有足夠的時間進(jìn)行響應(yīng),直到設(shè)置的時間到了以后才會再次運行。主要程序參考附錄二。2.3上位機(jī)監(jiān)控計算機(jī)的實現(xiàn)2.1.1MCGS組態(tài)軟件MCGS組態(tài)軟件可以快速構(gòu)造和生成上位機(jī)監(jiān)控系統(tǒng),實現(xiàn)上位機(jī)的功能。主要實現(xiàn)數(shù)據(jù)的采集、檢測和處理,能面向多種操作系統(tǒng)平臺。MCGS擁有強(qiáng)大的用戶操作界面可以自行繪制所需要的操作界面,利用公式進(jìn)行數(shù)據(jù)處理也很方便,同時還有生成報表、產(chǎn)生報警的功能,除此之外還具有網(wǎng)絡(luò)通訊(支持Modbus、串口及TCP/IP協(xié)議)的功能以及可以支持各種不同硬件設(shè)備REF_Ref71899243\r\h[7]。當(dāng)MCGS與現(xiàn)場的硬件設(shè)備連接以后,就可以便捷的開發(fā)出各種運用于現(xiàn)場數(shù)據(jù)采集及處理的監(jiān)控系統(tǒng)。MCGS設(shè)數(shù)據(jù)的采集和輸出的原理圖如圖4-1。圖4-1MCGS原理圖2.1.2Modbus協(xié)議的RTU模式在上位機(jī)的實現(xiàn)組態(tài)軟件MCGS6.2中的ModbusRTU驅(qū)動程序是基于Modbus通信協(xié)議編制的。因此,在設(shè)計監(jiān)控界面的時候,只需要設(shè)置與單片機(jī)程序中一樣的波特率,校驗方式,和下位機(jī)地址就可以將單片機(jī)寄存器中的數(shù)據(jù)采集到實時數(shù)據(jù)庫中,或者將數(shù)據(jù)寫入到單片機(jī)的寄存器中。最終MCGS組態(tài)軟件就可以實現(xiàn)與下位機(jī)的通信。我們在MCGS編程的時候,當(dāng)涉及到與硬件連接的時候,我們可以通過簡單地模塊化組態(tài)從而來設(shè)計所需要的監(jiān)控系統(tǒng)REF_Ref71899248\r\h[8]。由于使用的ModbusRTU協(xié)議來進(jìn)行串口通信,因此在使用MCGS軟件進(jìn)行設(shè)計的時候要先在設(shè)備窗口選用通用串口父設(shè)備,這樣才能正確建立通信。然后設(shè)置相關(guān)的設(shè)備屬性來建立連接,建立了連接以后就可以將外部設(shè)備的數(shù)據(jù)讀取到MCGS的實時數(shù)據(jù)庫。隨后添加設(shè)備,在名稱內(nèi)部設(shè)置相應(yīng)的地址變量和寄存器地址來讀取想用的參數(shù),通道連接如圖4-2。圖4-2通道連接隨后在用戶界面繪制簡單的操作界面來實時顯示所采集的溫濕度數(shù)據(jù),并且可以通過寫線圈實現(xiàn)LED燈的控制。最終使ModbusRTU協(xié)議能夠在上位監(jiān)控計算機(jī)實現(xiàn)。上位監(jiān)控計算機(jī)界面如圖4-2。正常情況下LED燈為綠色,當(dāng)溫濕度超出一定的值時就可以使LED燈變成紅色產(chǎn)生提醒的作用。圖4-3上位監(jiān)控計算機(jī)界面2.1.3Modbus協(xié)議的TCP模式在上位機(jī)的實現(xiàn)在需要遠(yuǎn)程監(jiān)控或數(shù)據(jù)采集的場所,通過ModbusRTU的傳統(tǒng)通信方式滿足不了需求,這個時候用以太網(wǎng)來進(jìn)行通信就成了最好的選擇,由于在RT-Thread操作系統(tǒng)下進(jìn)行FreeModbus協(xié)議棧中的ModbusTCP模式移植有些問題,所以最終采取了利用串口服務(wù)器來實現(xiàn)串口轉(zhuǎn)網(wǎng)絡(luò)。在MCGS組態(tài)軟件實現(xiàn)TCP模式與RTU模式不同的首先在于,TCP模式的父設(shè)備選擇的是“通用TCP/IP父設(shè)備“”,父設(shè)備選擇網(wǎng)路類型的選擇中選擇TCP,選擇客戶端,其中的遠(yuǎn)程IP地址則根據(jù)遠(yuǎn)程設(shè)備的IP地址來確定。建立好連接后,實時數(shù)據(jù)庫的配置與RTU模式里的配置方法一致。建立連接需要先將上位機(jī)的IP地址改為和串口服務(wù)器設(shè)備在同一個網(wǎng)段,使上位監(jiān)控計算機(jī)的IP地址和遠(yuǎn)程設(shè)備在同一個網(wǎng)段,串口服務(wù)最初的IP地址為192.168.1.253,測試時直接用默認(rèn)IP地址,因此將上位監(jiān)控計算機(jī)的地址設(shè)置為192.168.1.112。設(shè)置完成后查詢得到電腦的地址如圖4-3圖4-4上位監(jiān)控計算機(jī)IP地址在配置串口服務(wù)器時選擇TCP_SERVER模式,由于需要實現(xiàn)ModbusTCP協(xié)議到ModbusRTU協(xié)議的轉(zhuǎn)換因此需要將“ModbusTCP轉(zhuǎn)RTU”選項勾選。其余的配置(波特率,校驗方式等)與程序里面給從站定義的保持一致。詳細(xì)配置界面如圖4-4所示,這樣設(shè)置完成以后建立連接的時候就能實現(xiàn)數(shù)據(jù)的正確傳輸了,能利用ModbusPoll在設(shè)置成TCP/IP模式的時候采集到的單片機(jī)采集的數(shù)據(jù),也可以利用MCGS顯示單片機(jī)采集到的數(shù)據(jù)。最終就完成了ModbusTCP協(xié)議在上位機(jī)的實現(xiàn)。圖4-5串口服務(wù)器的配置2.1.4ModbusTCP轉(zhuǎn)RTU“TCP轉(zhuǎn)RTU”這個選項是進(jìn)行協(xié)議轉(zhuǎn)換的所需要的,只有網(wǎng)絡(luò)和串口數(shù)據(jù)符合ModbusTCP和RTU協(xié)議格式的時候才會對數(shù)據(jù)格式進(jìn)行變換,否則就會把數(shù)據(jù)丟棄。當(dāng)串口服務(wù)器選擇的TCP_SERVER模式時,與其進(jìn)行通信的的MCGS組態(tài)軟件或者是ModbusPoll軟件等都需要工作在TCPClient模式。最開始嘗試通信的時候可以先利用ModbusPoll來模擬通信,正確連接線路后,利用串口服務(wù)器配置軟件對串口服務(wù)器進(jìn)行配置,將“TCP轉(zhuǎn)RTU”打勾。設(shè)置完成以后就通過ModbusPoll來建立連接,將串口服務(wù)器的IP和端口號設(shè)置好就可以進(jìn)行連接。連接完成以后就可以在ModbusPoll上看到相應(yīng)的數(shù)據(jù)。2.4溫濕度的采集本課題所用的AHT10采用的是I2C通信方法采集溫濕度,使用I2C總線設(shè)備時要先利用I2C總線的設(shè)備的名稱來得到設(shè)備句柄。通過查找設(shè)備函數(shù)rt_device_find(AHT10_I2C_BUS_NAME)來實現(xiàn)總線設(shè)備名稱獲取設(shè)備句柄,在主函數(shù)最上面將AHT10_I2C_BUS_NAME定義為"i2c4"(系統(tǒng)的I2C設(shè)備的名稱一般都用i2c0,i2c1等,本次使用的名稱是i2c4)。當(dāng)?shù)玫絀2C總線設(shè)備句柄后,就能利用rt_i2c_transfer(bus,&msgs,1)函數(shù)來進(jìn)行數(shù)據(jù)傳輸,其中bus代表I2C總線設(shè)備句柄,其中&msgs為指向待傳輸?shù)南?shù)組指針,1即消息數(shù)組元素個數(shù),返回值為消息數(shù)組元素個數(shù),因此可以利用rt_i2c_transfer(bus,&msgs,1)==1語句來進(jìn)行判斷數(shù)據(jù)傳輸是否有錯誤。利用I2C進(jìn)行數(shù)據(jù)傳輸將讀取溫濕度的值后放入寄存器中,以便發(fā)送給上位監(jiān)控計算機(jī)。當(dāng)要到讀取溫度和濕度的數(shù)據(jù)時首先通過調(diào)用aht10_init(void)函數(shù)對AHT10進(jìn)行初始化。通過寫傳感器寄存器和讀傳感器寄存器來將AHT10中的溫度和濕度數(shù)據(jù)調(diào)用,然后將溫度和濕度的數(shù)據(jù)進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換方法如下:*cur_humi=(temp[1]<<12|temp[2]<<4|(temp[3]&0xf0)>>4)*100.0/(1<<20);*cur_temp=((temp[3]&0xf)<<16|temp[4]<<8|temp[5])*200.0/(1<<20)-50;隨后將轉(zhuǎn)換好的溫度和濕度的數(shù)值放到已經(jīng)定義好的數(shù)組usSRegHoldBuf[S_REG_HOLDING_NREGS]中,分別將溫度和濕度寫到寄存器0和寄存器1中,這樣上位機(jī)就可以通過ModbusRTU/
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 情景高爾夫培訓(xùn)課件
- 2026屆江蘇省常州市14校聯(lián)盟化學(xué)高一第一學(xué)期期中質(zhì)量跟蹤監(jiān)視模擬試題含解析
- 營銷活動的策劃方案有哪些
- 幼兒園教科研的工作方案
- 2026屆重慶市梁平實驗中學(xué)化學(xué)高一第一學(xué)期期中預(yù)測試題含解析
- 2026屆江西省上饒市民??荚嚶?lián)盟化學(xué)高二上期中達(dá)標(biāo)檢測模擬試題含解析
- 恒捷安全知識培訓(xùn)課件學(xué)校
- 文庫發(fā)布:恐龍課件
- 恐龍無處不在課件
- 江蘇省南京市江浦高級中學(xué)2026屆化學(xué)高二上期末教學(xué)質(zhì)量檢測試題含答案
- 弱電行業(yè)公司簡介
- 2025光大銀行個人經(jīng)營性貸款借款合同
- 月餅食品購銷合同
- 《資治通鑒》與為將之道知到課后答案智慧樹章節(jié)測試答案2025年春武警指揮學(xué)院
- 2024-2025學(xué)年度人教版物理八年級下冊期末綜合檢測題(含答案)
- 漆膜鉛筆硬度培訓(xùn)
- 2025-2030年中國少兒英語培訓(xùn)市場發(fā)展?fàn)顩r及投資前景規(guī)劃研究報告
- 常用公文寫作規(guī)范培訓(xùn)
- 系統(tǒng)性硬化癥個案護(hù)理
- 礦山用電安全培訓(xùn)課件
- 寧德新能源verify測試題庫
評論
0/150
提交評論