劉璐,袁戰(zhàn)軍,郭靜
(陜西國(guó)際商貿(mào)學(xué)院信息與工程學(xué)院,陜西咸陽(yáng)712046)
在現(xiàn)代工業(yè)不斷發(fā)展和進(jìn)步的過(guò)程中,控制系統(tǒng)也越來(lái)越復(fù)雜,數(shù)據(jù)的處理量也在不斷的提高,但是單片機(jī)的處理能力是有限的,從而無(wú)法滿足控制需求,所以分布式系統(tǒng)逐漸備受重視。在分布式系統(tǒng)數(shù)據(jù)收集過(guò)程中主要是通過(guò)下位機(jī)實(shí)現(xiàn),將收集數(shù)據(jù)實(shí)現(xiàn)進(jìn)一步分析及處理是通過(guò)上位機(jī)實(shí)現(xiàn)[1]。因?yàn)閱纹瑱C(jī)的價(jià)格較低,并且具有較高的可靠性,所以被廣泛應(yīng)用到較為惡劣的工業(yè)環(huán)境中,分布式控制系統(tǒng)大部分都是使用單片機(jī)作為下位機(jī)。但是計(jì)算機(jī)的處理能力較強(qiáng),并且具有良好的人際交互優(yōu)勢(shì),所以其被作為上位機(jī)使用[2]。單片機(jī)和計(jì)算機(jī)通信一般都是使用串口通信模式,其主要是利用數(shù)據(jù)信號(hào)線、控制線和地線等按位實(shí)現(xiàn)數(shù)據(jù)通信的方式。Labview屬于以數(shù)據(jù)流為基礎(chǔ)的圖形化編程環(huán)境,其被廣泛應(yīng)用到控制領(lǐng)域和檢測(cè)方面。因?yàn)槌绦驅(qū)儆趫D形化框圖的形式,在人機(jī)交互過(guò)程中具有一定的優(yōu)勢(shì),并且其逐漸成為上位機(jī)的編程軟件[3]。基于此,本文就實(shí)現(xiàn)了基于Labview的計(jì)算機(jī)和單片機(jī)通信設(shè)計(jì)。
文中所設(shè)計(jì)的通信硬件主要包括4部分,圖1為計(jì)算機(jī)和單片機(jī)的線路設(shè)計(jì)結(jié)構(gòu),計(jì)算機(jī)屬于上位機(jī),其主要目的就是實(shí)現(xiàn)數(shù)據(jù)的發(fā)送、接受及人機(jī)交互。單片機(jī)作為下位機(jī),其主要目的就是實(shí)現(xiàn)串口數(shù)據(jù)接口和發(fā)送[4]。
圖1 計(jì)算機(jī)和單片機(jī)的線路設(shè)計(jì)結(jié)構(gòu)
首先,通過(guò)單片機(jī)、電阻、晶振和電容創(chuàng)建單片機(jī)最小的系統(tǒng),基于最小系統(tǒng),根據(jù)MXA232芯片實(shí)現(xiàn)DB9串行端口的引出。使單片機(jī)串口到計(jì)算機(jī)和TXD中發(fā)送,并且接收到RXD的連接,單片機(jī)串口接收到計(jì)算機(jī)和RXD串口的連接對(duì)TXD相連進(jìn)行發(fā)送,并且將兩者和單片機(jī)的I/O引腳相互連接[5]。圖2為串口通信顯示系統(tǒng)硬件的電路結(jié)構(gòu)。
圖2 串口通信顯示系統(tǒng)硬件的電路結(jié)構(gòu)
系統(tǒng)中的計(jì)算機(jī)屬于主控機(jī),其主要作用就是控制下位單片機(jī),實(shí)現(xiàn)下位機(jī)發(fā)送數(shù)據(jù)的存儲(chǔ)和處理,程序使用Labview進(jìn)行編寫(xiě)。下位單片機(jī)的主要目的就是實(shí)現(xiàn)工業(yè)現(xiàn)場(chǎng)的監(jiān)控對(duì)象檢測(cè)及控制,程序使用匯編語(yǔ)言進(jìn)行編寫(xiě)。為了能夠有效提高通信過(guò)程中的可靠性,通信雙方要簽訂相應(yīng)的通信協(xié)議,也就是雙方都需要遵守的約定。比如,數(shù)據(jù)傳輸格式、校驗(yàn)格式及波特率等[6]。本文實(shí)現(xiàn)的通信協(xié)議主要為:使用RS-232異步通信,數(shù)據(jù)傳輸格式為11 bit。
圖3為單片機(jī)主函數(shù)的程序流程,圖4為單片機(jī)串口中斷函數(shù)的程序流程。其中的參數(shù)要和上位機(jī)參數(shù)設(shè)置相同,比如奇偶校驗(yàn)、波特率等,通過(guò)對(duì)語(yǔ)句判斷,將標(biāo)識(shí)位去除,全面解析上位機(jī)發(fā)送的數(shù)據(jù),之后使數(shù)據(jù)能夠到串口緩沖區(qū)寄存器進(jìn)行寫(xiě)入。為了能夠?qū)?shù)據(jù)通過(guò)液晶充分的展現(xiàn)出來(lái),就要根據(jù)液晶驅(qū)動(dòng)時(shí)序圖實(shí)現(xiàn)數(shù)據(jù)、寫(xiě)指令等一系列時(shí)序的設(shè)置,然后實(shí)現(xiàn)串口通信及液晶顯示時(shí)序的匹配。因?yàn)橐壕б哂幸欢ǖ臅r(shí)間,而且串口通信數(shù)據(jù)收發(fā)比較快,無(wú)法接收某個(gè)字節(jié)并且將此字節(jié)顯示處理,所以就要將接收數(shù)據(jù)到另外數(shù)組中通過(guò)中斷方式充分展現(xiàn)[7]。
圖3 單片機(jī)主函數(shù)的程序流程
圖4 單片機(jī)串口中斷函數(shù)的程序流程
Labview具有5個(gè)串行通信節(jié)點(diǎn),其主要功能就是串口設(shè)置、串口讀、串口寫(xiě)、串口緩存的檢測(cè)、中斷等多種功能,此節(jié)點(diǎn)都是在功能模板的I/O子模板中設(shè)置[8]。
串口通信節(jié)點(diǎn)使用過(guò)程比較簡(jiǎn)單,并且容易理解,以下為其節(jié)點(diǎn)的定義、功能及使用方法。
1)初始化。圖5為初始化串口的設(shè)置,其主要功能就是實(shí)現(xiàn)數(shù)據(jù)位、波特率、奇偶校驗(yàn)位、停止位等的設(shè)計(jì),其在通過(guò)計(jì)算機(jī)對(duì)串口儀器設(shè)備進(jìn)行控制的過(guò)程中會(huì)使用,在使用串口通信之前,要實(shí)現(xiàn)串口的配置,從而實(shí)現(xiàn)正常通信[9]。
圖5 初始化串口的設(shè)置
2)串口寫(xiě)。圖6為串口寫(xiě)的設(shè)置,此節(jié)點(diǎn)將需要送到數(shù)據(jù)發(fā)送到串口輸出緩存中。
圖6 串口寫(xiě)的設(shè)置
3)檢測(cè)串口緩存字節(jié)數(shù)。圖7為檢測(cè)串口緩存字節(jié)數(shù)的設(shè)置,在使用此節(jié)點(diǎn)檢測(cè)到目前串口輸入緩存中已經(jīng)具有的字節(jié)數(shù),之后制定serial port read節(jié)點(diǎn),通過(guò)串口輸入緩存實(shí)現(xiàn)字節(jié)數(shù)的讀取,從而保證以此就能夠?qū)⒕彺鏀?shù)據(jù)全部讀取[10]。
圖7 檢測(cè)串口緩存字節(jié)數(shù)的設(shè)置
4)串口讀。圖8為串口讀的設(shè)置,通過(guò)串口緩存實(shí)現(xiàn)端端口制定長(zhǎng)度數(shù)據(jù)的讀取。
圖8 串口讀的設(shè)置
5)串行通信設(shè)計(jì)。圖9為串行通信的設(shè)計(jì)。
圖9 串行通信的設(shè)計(jì)
在通過(guò)Labview開(kāi)發(fā)環(huán)境創(chuàng)建程序的過(guò)程中,其主要包括程序板、程序調(diào)試和框圖程序的設(shè)計(jì),前面板設(shè)計(jì)的主要目的就是實(shí)現(xiàn)良好人機(jī)交互界面的生成,用戶利用操作控件實(shí)現(xiàn)操作,并且實(shí)現(xiàn)輸入?yún)?shù)的設(shè)計(jì),還能夠?qū)崿F(xiàn)輸入量指示器的設(shè)計(jì),從而顯示數(shù)據(jù)??驁D程序設(shè)計(jì)的主要目的就是實(shí)現(xiàn)數(shù)據(jù)端口、節(jié)點(diǎn)及連線的程序設(shè)計(jì)[11]。圖10為計(jì)算機(jī)和單片機(jī)通信的結(jié)構(gòu)圖。
圖10 計(jì)算機(jī)和單片機(jī)通信的結(jié)構(gòu)圖
以本文設(shè)計(jì)要求,在DDS信號(hào)源掃頻模式前面板設(shè)計(jì)窗口中利用添加控件板數(shù)值實(shí)現(xiàn)控件輸入、開(kāi)關(guān)、按鈕等一系列的操作,利用DDS實(shí)現(xiàn)起始掃描及頻率截止、掃描周期、掃描步進(jìn)等輸入數(shù)值,以此實(shí)現(xiàn)數(shù)據(jù)的控制。能夠?qū)Π粹o的形狀、位置、控制量精度、名稱進(jìn)行調(diào)整,通過(guò)控件選板實(shí)現(xiàn)I/O口資源名稱控件的添加,從而能夠?qū)崿F(xiàn)串口通信設(shè)備的安裝。并且根據(jù)不同的信號(hào),實(shí)現(xiàn)跳頻、單頻工作模式前面板的設(shè)計(jì),從而使操作更加便捷及簡(jiǎn)單[12]。圖11為前面板的設(shè)計(jì)結(jié)構(gòu)。
在實(shí)現(xiàn)框圖程序設(shè)計(jì)的過(guò)程中,要在框圖窗口面板中選擇滿足需求的節(jié)點(diǎn)圖表,之后在框圖中通過(guò)端子和其相互連接,這個(gè)時(shí)候要使用單片機(jī)為AD芯片控制寄存和幅度、頻率、駐留時(shí)間和步進(jìn)等一系列的寄存器實(shí)現(xiàn)控制字信息的發(fā)送,在通過(guò)Labview實(shí)現(xiàn)設(shè)計(jì)單片機(jī)和計(jì)算機(jī)通信的時(shí)候,要使前面板輸入DDS掃頻起始頻率、掃頻步進(jìn)、截止頻率、掃頻周期等十進(jìn)制數(shù)值通過(guò)相應(yīng)運(yùn)算轉(zhuǎn)換成為十六進(jìn)制數(shù)值,使用VISA寫(xiě)入函數(shù)使緩沖區(qū)相應(yīng)的十六進(jìn)制數(shù)據(jù)到VISA資源名稱進(jìn)行接口及設(shè)備的寫(xiě)入,最后對(duì)單片機(jī)進(jìn)行發(fā)送[12-13]。圖12為單片機(jī)和計(jì)算機(jī)框圖程序的設(shè)計(jì)。
圖12 單片機(jī)和計(jì)算機(jī)框圖程序的設(shè)計(jì)
現(xiàn)代串口通信程序開(kāi)發(fā)過(guò)程中,在計(jì)算機(jī)操作系統(tǒng)中一般使用VC、VB等高級(jí)語(yǔ)言進(jìn)行編寫(xiě),在使用其實(shí)現(xiàn)串口通信程序開(kāi)發(fā)過(guò)程中,開(kāi)發(fā)人員要面臨較為繁瑣的API函數(shù)編程,使用文本語(yǔ)言編寫(xiě)串口通信較為復(fù)雜,并且花費(fèi)時(shí)間比較長(zhǎng),所以在實(shí)現(xiàn)主機(jī)通信程序設(shè)計(jì)的過(guò)程中,都使用Labview圖形化語(yǔ)言進(jìn)行編程,其能夠?qū)⒏呒?jí)語(yǔ)言函數(shù)封裝成為圖形功能模塊,圖標(biāo)之間的相互連線能夠?qū)崿F(xiàn)功能模塊的相互傳遞,其編程較為簡(jiǎn)單,能夠直接使用[14]。
首先對(duì)VIS進(jìn)行調(diào)用,從而設(shè)置串口參數(shù),包括比特率、串口號(hào)及數(shù)據(jù)中的停止位、位數(shù)、數(shù)據(jù)流量控制及奇偶檢驗(yàn),假如初始化沒(méi)有問(wèn)題就使用此串口實(shí)現(xiàn)數(shù)據(jù)收發(fā),在串口結(jié)束使用過(guò)程中,通過(guò)VIS結(jié)束和相應(yīng)串口進(jìn)行對(duì)話[15]。圖13為VISA調(diào)用的工作流程。
圖13 VISA調(diào)用的工作流程
根據(jù)軟件和硬件的設(shè)計(jì)實(shí)現(xiàn)以Labview為基礎(chǔ)的計(jì)算機(jī)和單片機(jī)串口通信的設(shè)計(jì),通過(guò)上位機(jī)實(shí)現(xiàn)數(shù)據(jù)123的發(fā)送,單片機(jī)在接收到數(shù)據(jù)之后到上位機(jī)進(jìn)行返回,并且在液晶屏中實(shí)現(xiàn)數(shù)據(jù)的顯示,從而能夠?qū)崿F(xiàn)計(jì)算機(jī)和單片機(jī)的數(shù)據(jù)通信[16]。
Labview屬于虛擬儀器開(kāi)發(fā)的工具,圖形化編程界面能夠使開(kāi)發(fā)人員便于開(kāi)發(fā)理想虛擬儀器程序,并且Labview還具有較為強(qiáng)大的網(wǎng)絡(luò)功能,通過(guò)Labview開(kāi)發(fā)更加便捷。本文實(shí)現(xiàn)Labview實(shí)現(xiàn)了計(jì)算機(jī)和單片機(jī)的通信設(shè)計(jì),通過(guò)最后調(diào)試表示,本文所設(shè)計(jì)的通信能夠?qū)崿F(xiàn)計(jì)算機(jī)數(shù)據(jù)的實(shí)時(shí)通信,并且提高通信的精準(zhǔn)度。