徐國成



摘要:本文提出了基于 STM32 單片機(jī)的數(shù)據(jù)采集控制系統(tǒng)的設(shè)計,從硬件與軟件系統(tǒng)方面來實現(xiàn)對工業(yè)現(xiàn)場所需數(shù)據(jù)的實時采集和監(jiān)測,保障了生產(chǎn)過程的平穩(wěn)運(yùn)行,對于企業(yè)管控一體化建設(shè)具有重要的意義。
關(guān)鍵詞:STM32;單片機(jī);數(shù)據(jù)采集
引言
數(shù)據(jù)采集是對所需數(shù)據(jù)獲取的一個過程,一般是經(jīng)過傳感器等將設(shè)備的信號傳輸至主控器進(jìn)行處理與分析。數(shù)據(jù)采集系統(tǒng)則是結(jié)合計算機(jī)等測試平臺搭建軟硬件產(chǎn)品組成的系統(tǒng)[1]。近年來,在科學(xué)研究、工業(yè)現(xiàn)場等領(lǐng)域數(shù)據(jù)采集技術(shù)尤為突出。該技術(shù)已經(jīng)應(yīng)用在航空航天、衛(wèi)星雷達(dá)、遙感監(jiān)控、通信技術(shù)、工業(yè)生產(chǎn)等領(lǐng)域。數(shù)據(jù)采集系統(tǒng)中數(shù)據(jù)的采集、存儲與處理三者密不可分,隨著科學(xué)技術(shù)日新月異的發(fā)展變化,數(shù)據(jù)采集技術(shù)也日趨完善,得到不斷的更新和發(fā)展。
1.系統(tǒng)總體設(shè)計
單片機(jī)作為主控芯片,實現(xiàn)對采集過程和輸出的控制,單片機(jī)處理后的數(shù)據(jù)通過串行通訊方式傳輸?shù)揭蕴W(wǎng)接口,通過交換機(jī)將電路板和計算機(jī)進(jìn)行連接,然后把數(shù)據(jù)傳輸給上位機(jī),實現(xiàn)遠(yuǎn)程I/O數(shù)據(jù)采集與實時顯示。
2.系統(tǒng)硬件設(shè)計
本系統(tǒng)要實現(xiàn)對工業(yè)現(xiàn)場中的 16 路數(shù)字量和 8 路模擬量的數(shù)據(jù)采集和實時顯示,通過方案的論證,選擇單片機(jī)來完成系統(tǒng)設(shè)計。設(shè)計 DI、DO、AI、AO 四塊電路板[2]。每塊電路都使用 STM32F103RB 芯片作為主控器,選擇CH9121網(wǎng)絡(luò)串口透傳模塊和 RJ45水晶頭網(wǎng)口進(jìn)行連接,通過網(wǎng)線連接至同一路由器,然后和計算機(jī)相連,在上位機(jī)軟件上進(jìn)行數(shù)據(jù)的實時采集與顯示。其中,四塊電路板只有數(shù)據(jù)采集部分不一樣,電源電路、主控模塊、網(wǎng)絡(luò)通信模塊等公共部分將以單塊電路板的外圍電路進(jìn)行描述,然后分別描述不同的部分。
通過STM32F03RB芯片來完成整個數(shù)據(jù)采集過程的主控作用。數(shù)字信號采集時,16路數(shù)字信號驅(qū)動繼電器后與主控器的 16 個I/O口相連,通過軟件編程讀取相應(yīng)I/O口的狀態(tài)值獲得 16 路數(shù)據(jù);模擬數(shù)據(jù)采集時,輸入的8路模擬信號經(jīng)過集成芯片進(jìn)行處理后,然后連接至主控器的I/O,其整個過程需要STM32F103RB芯片提供集成轉(zhuǎn)換芯片所需的時鐘。STM32F103RB 不僅控制數(shù)據(jù)采集與處理過程,同時還將處理后的數(shù)據(jù)通過網(wǎng)線上傳至計算機(jī),實現(xiàn)對工業(yè)現(xiàn)場機(jī)器運(yùn)行狀態(tài)的實時監(jiān)測。
本系統(tǒng)對8路模擬信號進(jìn)行采集,其中包括3路PT100,3路K型熱電偶和2路4~20mA
電流信號,模擬量要經(jīng)過調(diào)理電路才能被主控芯片的I/O口采集。其中PT100熱電阻連接的集成芯是 MAX31865,K型熱電偶連接的是MAX6675,這兩塊芯片內(nèi)部都集成了SPI通信總線進(jìn)行數(shù)據(jù)傳輸。
3.系統(tǒng)軟件設(shè)計
整機(jī)軟件設(shè)計包括單片機(jī)主程序、數(shù)據(jù)采集與處理程序、串口通信程序、上位機(jī)通信程序和報警程序。其中,單片機(jī)主程序包含時鐘的初始化、相關(guān)I/O口的初始化、USART串口和 SPI 總線的配置。數(shù)據(jù)采集與處理分為數(shù)字量控制采樣和模擬量控制采樣。串口通信程序是對使用到的串口進(jìn)行參數(shù)設(shè)置,并編寫簡單的通信協(xié)議實現(xiàn)數(shù)據(jù)的收發(fā)。集成采集芯片通信程序是通過SPI總線進(jìn)行數(shù)據(jù)通信以及對采集到的溫度進(jìn)行線性的模數(shù)轉(zhuǎn)換。上位機(jī)通信程序是通過對CH9121芯片寫入命令或者通過上位機(jī)進(jìn)行參數(shù)配置,將兩者配置在同一局域網(wǎng),通過TCP/IP協(xié)議來進(jìn)行數(shù)據(jù)傳輸。
本系統(tǒng)要完成對工業(yè)現(xiàn)場中16通道數(shù)字量和8通道模擬量的采樣與處理,在工作之前,首先要完成通道參數(shù)的配置工作,具體包括通道輸入信號類型、報警門限參數(shù)等。整個工程的程序一般包含數(shù)據(jù)采樣處理和數(shù)據(jù)通信[3]。程序的主體為數(shù)據(jù)采集與顯示、報警處理部分。經(jīng)過配置后的模塊工作流程主要為:(1)將程序燒錄進(jìn)電路板上電后,程序在Flash中運(yùn)行,部分程序復(fù)制到 RAM 中運(yùn)行;(2)程序從Flash中讀取配置通道參數(shù),分別對16路開關(guān)量和 8 路模擬量進(jìn)行循環(huán)采樣,若沒有配置信息,就等待接受配置信息;(3)進(jìn)行數(shù)據(jù)采集時,采樣頻率是 5Hz,即1秒鐘采集 5 次;(4)完成模擬量、開關(guān)量等多種傳感器的數(shù)據(jù)采集任務(wù),若出現(xiàn)故障,則系統(tǒng)給出指示燈報警信號;數(shù)據(jù)通信部分是在中斷函數(shù)中完成,其主要工作包括:(1)接收分析主機(jī)命令類型;(2)將采樣數(shù)據(jù)上傳至計算機(jī)進(jìn)行顯示;(3)配置通道參數(shù)。
單片機(jī)芯片初始化模塊主要實現(xiàn)的功能是將運(yùn)行時的芯片各功能模塊進(jìn)行初始化,主遠(yuǎn)程I/O數(shù)據(jù)采集控制系統(tǒng)設(shè)計要是通過配置各個模塊控制寄存器來實現(xiàn)。單片機(jī)上電后看門狗處于使能狀態(tài),如果不周期性地進(jìn)行查看操作就會出現(xiàn)復(fù)位。因此,對看門的操作最簡單的辦法就是禁止看門狗。雖然看門狗是比較有效的一個措施,但是這種方法不可取。所以,當(dāng)調(diào)試完畢再添加看門狗電路,從而確保系統(tǒng)穩(wěn)定運(yùn)行。主程序流程圖如圖2所示。
8路模擬熱通道采集的信號為電壓信號,需要轉(zhuǎn)化為相應(yīng)的物理量進(jìn)行傳輸和顯示,這是將物理量轉(zhuǎn)化為電壓信號的逆過程。本設(shè)計采集到的物理量主要是溫度、電流。通過數(shù)字轉(zhuǎn)換芯片直接轉(zhuǎn)換成電壓信號接至主控芯片I/O口,在顯示時還要通過對比采集到的電阻和電壓轉(zhuǎn)換為最原始的溫度和電流。圖3為各通道數(shù)據(jù)采集轉(zhuǎn)換流程圖。
4.系統(tǒng)測試
對于本系統(tǒng),在經(jīng)過硬件電路分析,軟件程序介紹后,還要完成聯(lián)合調(diào)試。通過系統(tǒng)
調(diào)試才能最終實現(xiàn)系統(tǒng)的功能。軟硬件分模塊調(diào)試,可以做到硬件電路和軟件程序相結(jié)合,
變?yōu)榭烧J褂玫囊惶紫到y(tǒng)。硬件調(diào)試首先將電路板焊接完成,檢查元器件的焊接情況,
某些有極性的元器件放置是否正確,是否存在短路、虛焊的情況,然后分模塊進(jìn)行硬件功
能測試。經(jīng)過檢查無誤后開始聯(lián)機(jī)調(diào)試。聯(lián)機(jī)調(diào)試是全面測試數(shù)據(jù)存儲、主控器設(shè)備、串
口和網(wǎng)口通信等是否正常。將測試程序下載進(jìn)調(diào)試好的電路,在硬件平臺上開始軟件程序測試。測試程序主要是將程序下載到硬件電路板上來驗證功能是否實現(xiàn),主要包括串口通信、采集程序和網(wǎng)口通信的測試。
對各個模塊的芯片進(jìn)行了上電測試,確保電源供電模塊正常,能夠使系統(tǒng)上電后正常運(yùn)行。然后分別對數(shù)據(jù)采集、串口通信和網(wǎng)口通信進(jìn)行測試。采集模塊是對輸入的16 路電壓信號進(jìn)行采集,通過檢測對應(yīng)I/O口的狀態(tài)和串口進(jìn)行傳輸?shù)臄?shù)據(jù),從而證明開關(guān)量的采集一切正常;串口通信模塊需要用程序編寫串口通信協(xié)議,然后通過串口測試板來顯示收發(fā)數(shù)據(jù)是否正常;網(wǎng)口通信測試是將電路板和計算機(jī)通過路由器進(jìn)行連接,然后通過上位機(jī)進(jìn)行配置,將他們接入到同一局域網(wǎng)進(jìn)行數(shù)據(jù)的收發(fā)。CH9121芯片內(nèi)嵌入了TCP/IP,以完成數(shù)據(jù)在網(wǎng)口和串口通信中的交互。測試結(jié)果表明網(wǎng)絡(luò)串口透傳一切正常,可以將串口數(shù)據(jù)正確地上傳至計算機(jī)。
參考文獻(xiàn)
[1] 王琳,商周,王學(xué)偉. 數(shù)據(jù)采集系統(tǒng)的發(fā)展與應(yīng)用[J]. 電測與儀表,2004:4-8.
[2] 張曉萍. 單片機(jī)數(shù)據(jù)采集系統(tǒng)通信接口設(shè)計[J]. 數(shù)字通信世界,2017:5-8.
[3] 賀偉,李輝. 基于單片機(jī)的多路數(shù)據(jù)采集系統(tǒng)設(shè)計[J]. 飲食科學(xué),2017:20-22.
[4]李鵬. MSP430 單片機(jī)在多路數(shù)據(jù)采集系統(tǒng)設(shè)計中的應(yīng)用[J]. ?無線互聯(lián)科技,2016:
[5] 王鵬. 基于 Modbus 協(xié)議的數(shù)據(jù)采集系統(tǒng)的研究[D]. ?合肥工業(yè)大學(xué)碩士論文,2019.