劉松斌 王海星 馬 雙 柳 明
(1. 東北石油大學(xué)電氣信息工程學(xué)院,黑龍江 大慶 163318; 2. 大慶油田第一采油廠儀表安裝維修大隊(duì),黑龍江 大慶 163453;3. 大慶儲(chǔ)運(yùn)銷售分公司葡北油庫,黑龍江 大慶 163000)
隨著工業(yè)的不斷進(jìn)步與發(fā)展,控制系統(tǒng)越來越復(fù)雜,處理的數(shù)據(jù)量也越來越大,但單片機(jī)等主控芯片的處理能力有限,難以滿足控制的需求,因此分布式系統(tǒng)逐漸成為主流。在分布式系統(tǒng)中各種數(shù)據(jù)的采集和對(duì)執(zhí)行機(jī)構(gòu)的控制都由下位機(jī)完成,而對(duì)采集到的數(shù)據(jù)進(jìn)行進(jìn)一步分析和處理則由功能更強(qiáng)大的上位機(jī)完成。由于單片機(jī)具有高可靠性、價(jià)格低廉和可應(yīng)用于惡劣工業(yè)環(huán)境的特點(diǎn),在分布式控制系統(tǒng)中大多采用單片機(jī)作為下位機(jī)。而PC機(jī)因其處理能力強(qiáng)及人機(jī)交互好等特點(diǎn)常被用作上位機(jī)。單片機(jī)與PC機(jī)通信常選用串口通信方式,串口通信是通過數(shù)據(jù)信號(hào)線、地線及控制線等按位進(jìn)行數(shù)據(jù)傳輸?shù)囊环N通信方式[1]。在PC領(lǐng)域里以RS-232、RS-485協(xié)議為代表的串口通信因其通信穩(wěn)定、抗干擾能力強(qiáng)及成本低等優(yōu)點(diǎn)被普遍應(yīng)用在工業(yè)領(lǐng)域。
LabVIEW(又稱為G語言)是一種基于數(shù)據(jù)流的圖形化編程環(huán)境[2],近年來在檢測(cè)和控制領(lǐng)域得到了快速發(fā)展。因其程序是圖形化的框圖形式,在人機(jī)交互等方面具有天然的優(yōu)勢(shì),故已逐漸成為上位機(jī)編程軟件的不二選擇。筆者設(shè)計(jì)了一種基于LabVIEW的單片機(jī)與PC機(jī)串口通信顯示系統(tǒng),為了更直觀地了解串口通信情況,為系統(tǒng)填加顯示模塊,用LCD實(shí)時(shí)顯示收發(fā)的數(shù)據(jù),從而驗(yàn)證串口通信是否成功。
串口通信系統(tǒng)顯示由4部分組成(圖1):PC機(jī)作為上位機(jī),負(fù)責(zé)數(shù)據(jù)的發(fā)送、接收和人機(jī)交互;單片機(jī)最小系統(tǒng)作為下位機(jī),負(fù)責(zé)串口數(shù)據(jù)的接收、發(fā)送和液晶驅(qū)動(dòng);MAX232芯片作為連接前兩部分的橋梁,將RS-232的負(fù)邏輯電平(邏輯1為-15~-3V,邏輯0為3~15V)[3]轉(zhuǎn)換成TTL電平(5V為邏輯1,0V為邏輯0);CH240128液晶顯示屏負(fù)責(zé)顯示數(shù)據(jù)的接收情況。
圖1 串口通信顯示系統(tǒng)硬件結(jié)構(gòu)
首先由單片機(jī)、晶振、電阻及電容等構(gòu)成單片機(jī)最小系統(tǒng)[4],在最小系統(tǒng)的基礎(chǔ)上結(jié)合MXA232芯片引出DB9串行端口。將單片機(jī)串口發(fā)送TXD與PC機(jī)串口接收RXD相連,單片機(jī)串口接收RXD與PC機(jī)串口發(fā)送TXD相連,并將二者的地相連。依據(jù)CH240128液晶的引腳定義,將其與單片機(jī)I/O引腳相連。串口通信顯示系統(tǒng)的硬件電路如圖2所示。
軟件程序設(shè)計(jì)分為兩部分:一是運(yùn)行在PC 端的LabVIEW程序;二是運(yùn)行在單片機(jī)中的C51程序。結(jié)合硬件實(shí)現(xiàn)串口通信與顯示功能,即在PC端發(fā)送一串字符串,通過串口發(fā)送到單片機(jī)中,單片機(jī)接收到數(shù)據(jù)后返回該字符串,并將其顯示到液晶上。
圖2 串口通信顯示系統(tǒng)硬件電路
LabVIEW串口通信程序主要通過NI-VISA節(jié)點(diǎn)來完成,NI-VISA是一個(gè)字節(jié)級(jí)的通信接口驅(qū)動(dòng)。通過NI-VISA函數(shù)[5]編寫的程序可以在任何具有串行端口NI-VISA[6]的機(jī)器上運(yùn)行,這就意味可以在具有LabVIEW和Windows的機(jī)器上寫入和測(cè)試串行VI,然后在NI的板卡[7]上使用相同的程序。其中,NI-VISA主要包括串口初始化、串口寫、串口讀、Bytes of port[8]及串口關(guān)閉等函數(shù)。串口初始化主要負(fù)責(zé)設(shè)置串口號(hào)、波特率及奇偶校驗(yàn)等參數(shù)。為了下位機(jī)能正確識(shí)別數(shù)據(jù),在數(shù)據(jù)首尾添加標(biāo)識(shí)位后寫入串口。
單片機(jī)串口程序(圖3)參數(shù)要與上位機(jī)的參數(shù)設(shè)置一致(如波特率、奇偶校驗(yàn)[9]等)。利用判斷語句去除標(biāo)識(shí)位后,對(duì)上位機(jī)發(fā)送來的數(shù)據(jù)進(jìn)行解析,再將數(shù)據(jù)寫入串口緩沖區(qū)SBUF寄存器。為了在液晶顯示收到的數(shù)據(jù),需要按照液晶的驅(qū)動(dòng)時(shí)序圖設(shè)置寫數(shù)據(jù)及寫指令等時(shí)序完成液晶的驅(qū)動(dòng),還需匹配串口通信和液晶顯示的時(shí)序。由于液晶顯示需要一定的時(shí)間,而串口通信數(shù)據(jù)收發(fā)很快,難以做到收到一個(gè)字節(jié)就顯示一個(gè)字節(jié)的數(shù)據(jù),因此需要將收到的數(shù)據(jù)放到一個(gè)數(shù)組中以中斷的方式顯示數(shù)據(jù)。
圖3 單片機(jī)程序流程框圖
結(jié)合硬件和軟件設(shè)計(jì),完成基于LabVIEW的單片機(jī)與PC機(jī)串口通信顯示系統(tǒng)設(shè)計(jì)。該系統(tǒng)運(yùn)行情況如圖4所示。在上位機(jī)發(fā)送數(shù)據(jù)123,單片機(jī)接收到數(shù)據(jù)后將123返回到上位機(jī),并將數(shù)據(jù)顯示在液晶屏上,實(shí)現(xiàn)了上位機(jī)(PC機(jī))與下位機(jī)(單片機(jī))的數(shù)據(jù)通信。
圖4 串口通信顯示系統(tǒng)運(yùn)行界面
利用圖形化編程軟件LabVIEW設(shè)計(jì)了單片機(jī)與PC機(jī)串口通信顯示系統(tǒng),實(shí)際應(yīng)用表明,該系統(tǒng)通信穩(wěn)定、可靠,抗干擾能力強(qiáng),為上位機(jī)與下位機(jī)通信提供了新的解決方案。而且該系統(tǒng)可以移植到NI系列板卡中作為數(shù)據(jù)顯示裝置,具有實(shí)際工程應(yīng)用價(jià)值。
[1] 徐超.LabVIEW在實(shí)時(shí)測(cè)控系統(tǒng)中的應(yīng)用研究[D].重慶:重慶大學(xué),2005.
[2] 陳樹學(xué),劉萱.LabVIEW寶典[M].北京:電子工業(yè)出版社,2011:35~80.
[3] 楊忠仁,饒程,鄒建,等.基于LabVIEW數(shù)據(jù)采集系統(tǒng)[J].重慶大學(xué)學(xué)報(bào)(自然科學(xué)版),2004,27(2):32~35.
[4] 張毅剛,彭喜元,姜守達(dá),等. 新編MCS51單片機(jī)應(yīng)用設(shè)計(jì)[M]. 哈爾濱:哈爾濱工業(yè)大學(xué)出版社,2012:8~13.
[5] 阮奇楨. 我和LabVIEW[M]. 北京:北航空航天大學(xué)出版社,2009:56~98.
[6] Johnson G W, Jennings R.LabVIEW Graphical Programming[M].New York:McGraw-Hill Professional, 2006: 65~70.
[7] Travis J, Kring J. Labview for Everyone[M]. London: Prentice Hall, 2002:45~47.
[8] Bitter R, Mohiuddin T, Nawrocki M. LabVIEW : Advanced Programming Techniques[M]. London: CRC Press Inc., 2006:89~93.
[9] Beyon J Y.LabVIEW Programming,Data Acquisition and Analysis[M].London: Prentice Hall,2000:106~120.