摘要:在工業(yè)自動(dòng)化控制系統(tǒng)中,常常需要進(jìn)行遠(yuǎn)程控制或數(shù)據(jù)采集等,我們常會(huì)想到用PCI控制板卡或PCI數(shù)據(jù)采集卡等,但增加這些PCI卡,勢(shì)必會(huì)增加成本。本文是利用虛擬串口軟件在PC機(jī)上創(chuàng)建兩個(gè)虛擬串口,并對(duì)這兩個(gè)串口配對(duì),用LabVIEW設(shè)計(jì)兩個(gè)串口通信程序,輕松實(shí)現(xiàn)串口之間的數(shù)據(jù)通信和采集。
關(guān)鍵詞:LabVIEW;虛擬串口;通信
Design and implementation
of communication between PC virtual serial ports based on LabVIEW
Pan Feng
School of mechanical and electrical engineering,Shenzhen Polytechnic GuangdongShenzhen 518055
Abstract:In industrial automation control system,PCI control board cards and PCI data acquisition cards are often used to conduct remote control or acquire data.However,the more these cards are used,the more the costs increase.In this essay,two virtual serial ports are created and matched on PC and the communication and collection of data between them are achieved by the communication program designed with LabVIEW
Key words:LabVIEW;virtual serial ports;communication
LabVIEW(Laboratory Virtual instrument Engineering)是一種圖形化的編程語(yǔ)言,它廣泛地被工業(yè)界、學(xué)術(shù)界和研究實(shí)驗(yàn)室所接受,視為一個(gè)標(biāo)準(zhǔn)的數(shù)據(jù)采集和儀器控制軟件。LabVIEW集成了與滿足GPIB、VXI、RS-232和RS-485協(xié)議的硬件及數(shù)據(jù)采集卡通信的全部功能。
在工業(yè)自動(dòng)化控制系統(tǒng)中,經(jīng)常需要進(jìn)行遠(yuǎn)程控制或數(shù)據(jù)采集,這些控制與數(shù)據(jù)采集可以通過(guò)哪些接口實(shí)現(xiàn)呢?我們常常會(huì)想到用PCI控制板卡或PCI數(shù)據(jù)采集板卡等,但要增加這些PCI卡,勢(shì)必會(huì)增加成本,基于LabVIEW下,利用虛擬串口也可以輕松實(shí)現(xiàn)上述功能,輕松實(shí)現(xiàn)串口之間的數(shù)據(jù)通信和采集。串口通信通常有兩種方式,一種是RS232通信方式,一種是RS485通信方式,前者適用于近距離通信,通常在15m范圍內(nèi),后者適用于遠(yuǎn)距離通信,通信距離通常是在1200米范圍內(nèi)。
1 系統(tǒng)功能
設(shè)計(jì)一個(gè)PC機(jī)串口通信程序,并完成其控制系統(tǒng)的程序設(shè)計(jì)、畫(huà)面制作、系統(tǒng)接線和運(yùn)行調(diào)試。
在程序的前面板上分別選擇這兩個(gè)虛擬串口com3和com4,兩個(gè)串口通信程序分別命名為A機(jī)與B機(jī)。建立好后,兩個(gè)程序運(yùn)行,A機(jī)發(fā)送字符或十六進(jìn)數(shù)值,B機(jī)應(yīng)該收到并顯示;B機(jī)發(fā)送字符或十六進(jìn)制數(shù)值,A機(jī)應(yīng)該收到并顯示,A機(jī)和B機(jī)串口通信界面如圖1所示。
2 系統(tǒng)設(shè)計(jì)流程框圖
先配置端口、波特率、停止位、數(shù)據(jù)位、校驗(yàn)位;然后在A機(jī)寫(xiě)入緩沖區(qū)寫(xiě)入要發(fā)送的字符,點(diǎn)擊A機(jī)發(fā)送按鈕;觀察B機(jī),是否收到A機(jī)所發(fā)送過(guò)來(lái)的字符;在B機(jī)寫(xiě)入緩沖區(qū)寫(xiě)入要發(fā)送的字符,點(diǎn)擊B機(jī)發(fā)送按鈕;觀察A機(jī),是否收到B機(jī)所發(fā)送過(guò)來(lái)的字符,根據(jù)系統(tǒng)控制要求,繪制系統(tǒng)流程如圖2所示[2]:
3 VISA配置串口
首先需要調(diào)用VISA Configure Serial Port完成串口參數(shù)的設(shè)置,包括串口資源分配、波特率、數(shù)據(jù)位、停止位、校驗(yàn)位和流控等等。
如果初始化沒(méi)有問(wèn)題,就可以使用這個(gè)串口進(jìn)行數(shù)據(jù)收發(fā)。發(fā)送數(shù)據(jù)使用VISA Write,接收數(shù)據(jù)使用VISA Read。在接收數(shù)據(jù)之前需要使用VISA Bytes at Serial Port查詢當(dāng)前串口接收緩沖區(qū)中的數(shù)據(jù)字節(jié)數(shù),如果VISA Read要讀取的字節(jié)數(shù)大于緩沖區(qū)中的數(shù)據(jù)字節(jié)數(shù),VISA Read操作將一直等待,直至Timeout或者緩沖區(qū)中的數(shù)據(jù)字節(jié)數(shù)達(dá)到要求的字節(jié)數(shù)。當(dāng)然也可以分批讀取接收緩沖區(qū)或者只從中讀取一定字節(jié)的數(shù)據(jù)。
在某些特殊情況下,需要設(shè)置串口接收/發(fā)送緩沖區(qū)的大小,此時(shí)可以使用VISA Set I/O Buffer Size;而使用VISA Flush I/O Buffer則可以清空接收與發(fā)送緩沖區(qū)。在串口使用結(jié)束后,使用VISA Close結(jié)束與VISA resource name指定的串口之間的會(huì)話。
4 根據(jù)控制要求進(jìn)行LabVIEW程序設(shè)計(jì)
根據(jù)控制要求進(jìn)行程序設(shè)計(jì),首先在桌面雙擊National Instruments LabVIEW 2011,進(jìn)入項(xiàng)目瀏覽器,在項(xiàng)目瀏覽器窗口,建立新項(xiàng)目,然后在我的電腦——右鍵新建——VI,新建VI后,我們會(huì)看到兩個(gè)新的窗口,分別是前面板和程序框圖,保存VI→并左右兩欄顯示。在程序框圖里添加VISA配置。
然后創(chuàng)建While循環(huán)與條件結(jié)構(gòu):
a.程序框圖——編程——結(jié)構(gòu)——While循環(huán)
b.程序框圖——編程——結(jié)構(gòu)——條件結(jié)構(gòu)
再然后創(chuàng)建串口配置輸入控件:
a.端口:在連線端口上右鍵——?jiǎng)?chuàng)建——輸入控件;
b.波特率:在連線波特率端口上右鍵——?jiǎng)?chuàng)建——輸入控件;
c.數(shù)據(jù)位:在連線數(shù)據(jù)位端口上右鍵——?jiǎng)?chuàng)建——輸入控件;
d.校驗(yàn)位:在連線校驗(yàn)位端口上右鍵——?jiǎng)?chuàng)建——輸入控件;
e.停止位:在連線停止位端口上右鍵——?jiǎng)?chuàng)建——輸入控件;
f.錯(cuò)誤輸入:在連線錯(cuò)誤輸入端口上右鍵——?jiǎng)?chuàng)建——輸入控件;
g.條件輸入框:在連線條件輸入框上右鍵——?jiǎng)?chuàng)建——輸入控件;
h.While循環(huán)停止:在連線While循環(huán)停止上右鍵——?jiǎng)?chuàng)建——輸入控件;
最后完善和優(yōu)化LabVIEW程序,最終形成如圖3所示程序[1]。
5 系統(tǒng)調(diào)試
在A機(jī)的寫(xiě)入緩沖區(qū)中,寫(xiě)入要發(fā)送的字符,點(diǎn)擊發(fā)送,觀察B機(jī)讀取緩沖區(qū)中顯示是否與A機(jī)發(fā)送的字符一致,如是一致,則說(shuō)明PC機(jī)與PC機(jī)虛擬串口通信正常,同理在B機(jī)的寫(xiě)入緩沖區(qū)中,寫(xiě)入要發(fā)送的字符,點(diǎn)擊發(fā)送,觀察A機(jī)讀取緩沖區(qū)中顯示是否與B機(jī)發(fā)送的字符一致。這樣基于LabVIEW下PC機(jī)與PC機(jī)虛擬串口通信程序的設(shè)計(jì)就完成了。點(diǎn)擊退出按鈕,系統(tǒng)即可退出運(yùn)行。
參考文獻(xiàn):
[1]黃荻.基于LabVIEW與STC單片機(jī)的溫度監(jiān)測(cè)系統(tǒng)設(shè)計(jì)[J].電子測(cè)試,2017(4):20-21
[2]湯佳明,安偉.基于LABVIEW的上位機(jī)串口通信程序設(shè)計(jì)[J].電子設(shè)計(jì)工程,2018(11):86-90
作者簡(jiǎn)介:潘鋒(1973— ),男,安徽六安人,碩士,研究方向:電氣自動(dòng)控制。