摘 要: 以電機(jī)星三角降壓?jiǎn)?dòng)監(jiān)控系統(tǒng)為例,介紹了通過(guò)FX2N-232BD通信擴(kuò)展板,實(shí)現(xiàn)LabVIEW與FX2N系列PLC串口通信的方法。設(shè)計(jì)了電機(jī)星三角降壓?jiǎn)?dòng)的PLC控制電路,編寫(xiě)了三菱PLC通信擴(kuò)展板的通信程序,給出了上位機(jī)LabVIEW軟件的監(jiān)控程序,并且創(chuàng)建了用于人機(jī)交互的前面板。
關(guān)鍵詞: LabVIEW軟件;三菱FX2N系列PLC;FX2N-232BD通信擴(kuò)展板;串口通信
LabVIEW是美國(guó)國(guó)家儀器公司(NI公司)推出的用于數(shù)據(jù)采集、儀器控制、數(shù)據(jù)分析與數(shù)據(jù)表達(dá)的圖形化編程環(huán)境,它是一個(gè)開(kāi)放的開(kāi)發(fā)環(huán)境,具有PCI、GPIB、PXI、VXI、RS-232/485、USB等儀器通信總線標(biāo)準(zhǔn)的所有功能函數(shù),開(kāi)發(fā)者可以利用這些函數(shù)與不同總線標(biāo)準(zhǔn)接口的數(shù)據(jù)采集硬件交互工作。本文介紹的是利用RS-232串口通信協(xié)議,實(shí)現(xiàn)上位PC LabVIEW軟件與下位機(jī)三菱PLC之間的數(shù)據(jù)通信[1]。
要實(shí)現(xiàn)LabVIEW的串口通信,在PC上正確安裝LabVIEW軟件后,還必須安裝NI_VISA串口通信協(xié)議驅(qū)動(dòng)。而三菱PLC的串口通信,則要在FX2N PLC基本單元上加裝FX2N-232BD通信擴(kuò)展板。加裝通信擴(kuò)展板的方法是:從PLC基本單元的上表面卸下面板的蓋子,將FX2N-232BD通信板壓入到連接器上,用M3螺釘將通信板固定在基本單元上,再將PC和通信板的九針串口通過(guò)RS-232通信電纜連接起來(lái),如圖1所示[2]。
軟件和硬件設(shè)備安裝好后,就可以編制LabVIEW和PLC通信程序,通過(guò)FX2N-232BD通信擴(kuò)展板,實(shí)現(xiàn)上下位機(jī)的數(shù)據(jù)通信。
1 三菱PLC串口通信實(shí)現(xiàn)
異步電動(dòng)機(jī)的星三角降壓?jiǎn)?dòng)控制要求如下:當(dāng)上位機(jī)中LabVIEW軟件中前面板的啟停開(kāi)關(guān)打到啟動(dòng)檔,下位機(jī)三菱PLC的輸出繼電器Y1和Y2得電,控制電源接觸器和星形連接接觸器動(dòng)作,使電機(jī)星形連接啟動(dòng),20 s后輸出繼電器Y2失電,星形連接接觸器主觸頭斷開(kāi),而輸出繼電器Y3得電,三角形連接接觸器主觸頭接通,電機(jī)進(jìn)入正常運(yùn)行狀態(tài)。當(dāng)前面板的啟停開(kāi)關(guān)打到停止檔,Y0~Y3這4個(gè)輸出繼電器全部失電,所有接觸器的主觸頭斷開(kāi),電機(jī)停機(jī)。當(dāng)電機(jī)過(guò)載時(shí),連接在X0處的熱繼電器的常閉觸頭斷開(kāi),電機(jī)停機(jī)。如果電機(jī)星形連接啟動(dòng)階段或其發(fā)生過(guò)載時(shí),連接在Y0處的指示燈亮,其他情況指示燈滅。根據(jù)控制要求設(shè)計(jì)的電機(jī)星三角降壓?jiǎn)?dòng)的PLC控制電路如圖2所示。
要監(jiān)控PLC控制電路的運(yùn)行,F(xiàn)X2N-232BD通信擴(kuò)展板需要向上位機(jī)監(jiān)控軟件LabVIEW發(fā)送PLC輸出繼電器Y0~Y3的狀態(tài)和星形連接啟動(dòng)的時(shí)間進(jìn)度,并接受LabVIEW發(fā)出的啟停命令,為此編寫(xiě)的基于FX2N-232BD的三菱PLC通信程序如圖3所示[3]。
FX2N-232BD的通信格式是通過(guò)PLC的特殊數(shù)據(jù)寄存器D8120來(lái)設(shè)定的。PLC上電后,M8002繼電器接通一個(gè)掃描周期,執(zhí)行MOV指令,將D8120設(shè)置為H87,即將通信格式規(guī)定為:數(shù)據(jù)長(zhǎng)度為8位、偶校驗(yàn)、停止位為1位、波特率為9 600 b/s。LabVIEW的通信程序必須把PC的串口COM通信格式設(shè)為與FX2N-232BD的通信格式一致。
PLC處于“RUN”狀態(tài),M8000繼電器常開(kāi)觸點(diǎn)一直接通,M8161繼電器線圈得電,這可使串口通信按8位字節(jié)數(shù)據(jù)處理。M8000常開(kāi)觸點(diǎn)接通,RS指令執(zhí)行,RS指令是通信用的功能擴(kuò)展板發(fā)送和接收串行數(shù)據(jù)的指令,圖3中的RS指令指定了發(fā)送數(shù)據(jù)緩沖區(qū)的首地址是數(shù)據(jù)寄存器D0,發(fā)送緩沖區(qū)內(nèi)的數(shù)據(jù)寄存器的個(gè)數(shù)為2,接收數(shù)據(jù)緩沖區(qū)的首地址為D20,接收緩沖區(qū)內(nèi)的數(shù)據(jù)寄存器個(gè)數(shù)為1。RS指令執(zhí)行后,通信系統(tǒng)馬上處于接收等待狀態(tài)。
LabVIEW軟件向PLC發(fā)出的啟停命令通過(guò)發(fā)送十六進(jìn)制數(shù)H0DD或H0FF來(lái)實(shí)現(xiàn),根據(jù)圖3的18邏輯行程序所示,當(dāng)PLC接收完數(shù)據(jù),系統(tǒng)自動(dòng)置位M8123接收完成標(biāo)志位,M8123常開(kāi)觸點(diǎn)接通,CMP指令把存放在接收數(shù)據(jù)緩沖區(qū)D20中的數(shù)據(jù)分別與H0DD和H0FF比較,若與H0DD相等,則說(shuō)明是啟動(dòng)命令,M1被置位,若與H0FF相等,則說(shuō)明是停止命令,M11被置位。當(dāng)處理完畢接收的數(shù)據(jù)后,必須人為地通過(guò)RST指令復(fù)位M8123,若M8123不復(fù)位,系統(tǒng)將禁止發(fā)送和接收數(shù)據(jù)。
根據(jù)圖3的35邏輯行程序所示,M8012繼電器常開(kāi)觸點(diǎn)每0.1 s接通一次,通過(guò)MOV指令將Y0~Y3的狀態(tài)和星形連接啟動(dòng)的時(shí)間T0分別賦值給發(fā)送數(shù)據(jù)緩沖區(qū)的D0和D1,并執(zhí)行SET指令,人為置位M8122發(fā)送請(qǐng)求標(biāo)志位,RS指令轉(zhuǎn)為發(fā)送狀態(tài),這樣D0和D1中的數(shù)據(jù)每隔0.1 s發(fā)送給上位PC,提供給LabVIEW軟件處理。發(fā)送完畢后,系統(tǒng)會(huì)自動(dòng)對(duì)M8122復(fù)位,然后自動(dòng)轉(zhuǎn)到接收等待狀態(tài)。
PLC按照PC發(fā)送的啟停命令,實(shí)現(xiàn)電機(jī)星三角降壓?jiǎn)?dòng)的控制程序如圖4所示。
根據(jù)圖2和圖4,當(dāng)PLC接收到啟動(dòng)命令時(shí),M1得電,執(zhí)行49邏輯行程序的MOV指令,將7賦值給由Y0~Y3組成的位組件K1Y000,實(shí)現(xiàn)電機(jī)星形連接啟動(dòng)。通過(guò)56邏輯行程序延時(shí)20 s。20 s后,由60邏輯行程序完成電機(jī)星形連接分?jǐn)?,同時(shí)三角形連接運(yùn)行。當(dāng)PLC接收到停止命令時(shí),M11得電,由66邏輯行程序,使Y0~Y3全部失電,電機(jī)斷電停機(jī)。當(dāng)電機(jī)發(fā)生過(guò)載時(shí),X0常閉觸點(diǎn)接通,電機(jī)停機(jī)。
2 LabVIEW軟件串口通信的實(shí)現(xiàn)方法
LabVIEW虛擬儀器程序由前面板和框圖程序組成,前面板是人機(jī)交互的界面,界面上有用戶(hù)輸入和顯示輸出兩類(lèi)控件;框圖程序則是用戶(hù)編制的程序源代碼,以定義和控制在前面板上的控件輸入和輸出功能。圖5為上位機(jī)監(jiān)控三菱PLC實(shí)現(xiàn)電機(jī)星三角降壓?jiǎn)?dòng)的LabVIEW框圖程序[4]。
圖5所示的圖形化編程設(shè)計(jì)采用NI_VISA串口Serial函數(shù)來(lái)完成PC與PLC之間的串口通信。VISA中的Serial函數(shù)庫(kù)里包含VISA Configure Serial Port、VISA Write、VISA Read、VISA Close等子函數(shù)。本設(shè)計(jì)用到的4個(gè)VISA串口子函數(shù)是:VISA串口配置函數(shù)VISA Configure Serial Port、VISA寫(xiě)入函數(shù)VISA Write、VISA讀取函數(shù)VISA Read和VISA 關(guān)閉函數(shù)VISA Close。
VISA串口配置函數(shù)VISA Configure Serial Port的作用是完成串口參數(shù)的初始化設(shè)置,包括串口資源名稱(chēng)、波特率、奇偶校驗(yàn)、數(shù)據(jù)比特、是否啟用終止符等。由于VISA寫(xiě)入函數(shù)VISA Write只接受字符串輸入,所以LabVIEW向PLC寫(xiě)入的啟動(dòng)命令和停止命令標(biāo)識(shí)符H0DD或H0FF,要通過(guò)如圖5所示的“創(chuàng)建數(shù)組”函數(shù)和“字節(jié)數(shù)組至字符串轉(zhuǎn)換”函數(shù),組成字符串,輸入到VISA Write函數(shù)的寫(xiě)入緩沖區(qū)中。VISA Write函數(shù)將寫(xiě)入緩沖區(qū)的內(nèi)容通過(guò)串口發(fā)送到PLC。VISA讀取函數(shù)VISA Read從串口讀取PLC發(fā)送的字符串,每次讀取字節(jié)數(shù)設(shè)置為2,它的輸出通過(guò)“字符串至字節(jié)數(shù)組轉(zhuǎn)換”函數(shù)和“索引數(shù)組1”函數(shù),把字符串轉(zhuǎn)換為兩個(gè)無(wú)符號(hào)字節(jié)數(shù)據(jù),這兩個(gè)字節(jié)數(shù)據(jù)分別包含了PLC的Y0~Y3狀態(tài)和星形連接啟動(dòng)時(shí)間T0。VISA關(guān)閉函數(shù)VISA Close的作用是在程序停止之前,必須要把使用的串口設(shè)備關(guān)閉,若不關(guān)閉,其他程序就不能使用該設(shè)備。
圖5中有個(gè)條件結(jié)構(gòu),在前面板上,切換“啟停切換”水平搖桿開(kāi)關(guān),滿足“真”條件,向PLC寫(xiě)入啟動(dòng)命令標(biāo)識(shí)符,而滿足“假”條件,則向PLC寫(xiě)入停止命令標(biāo)識(shí)符。
由“索引數(shù)組1”函數(shù)的索引0生成的字節(jié)數(shù)據(jù)通過(guò)“數(shù)值至布爾數(shù)組轉(zhuǎn)換”函數(shù)和“索引數(shù)組2”函數(shù),把8位無(wú)符號(hào)字節(jié)的低4位拆分出4個(gè)布爾數(shù),并以指示燈的形式顯示在前面板中,用來(lái)監(jiān)視PLC的輸出繼電器Y0~Y3的狀態(tài),反映出電機(jī)的工作狀態(tài)。“索引數(shù)組1”函數(shù)的索引1生成的字節(jié)數(shù)據(jù)除以10就是以秒為單位的啟動(dòng)時(shí)間,它以水平進(jìn)度條和實(shí)時(shí)數(shù)據(jù)的形式顯示在前面板中。
在條件結(jié)構(gòu)外還有個(gè)While循環(huán)結(jié)構(gòu),目的是反復(fù)執(zhí)行對(duì)PLC寫(xiě)入或讀取數(shù)據(jù)的程序,直到前面板按下“退出”按鈕,結(jié)束程序運(yùn)行[5-6]。
按上述步驟,把電機(jī)星三角降壓?jiǎn)?dòng)監(jiān)控系統(tǒng)搭建完成后,上下位機(jī)聯(lián)機(jī)運(yùn)行,實(shí)驗(yàn)現(xiàn)象表明基于FX2N-232BD通信擴(kuò)展板的LabVIEW與FX2N系列PLC的串口通信方法是可行的。本文充分利用了LabVIEW易開(kāi)發(fā)、人機(jī)界面良好的特點(diǎn),將組態(tài)軟件和VB、VC++等高級(jí)語(yǔ)言的優(yōu)點(diǎn)完美結(jié)合起來(lái), 通過(guò)這種串口通信方法,很方便地完成了上位PC對(duì)三菱PLC各類(lèi)軟元件的讀寫(xiě)操作,從而為實(shí)現(xiàn)工業(yè)現(xiàn)場(chǎng)的監(jiān)控與現(xiàn)場(chǎng)數(shù)據(jù)的分析打下了基礎(chǔ)。
參考文獻(xiàn)
[1] 張桐,陳國(guó)順,王正林.精通LabVIEW程序設(shè)計(jì)[M].北京:電子工業(yè)出版社,2008:224-228.
[2] 張運(yùn)剛,宋小春,郭武強(qiáng).從入門(mén)到精通三菱FX2NPLC技術(shù)與應(yīng)用[M].北京:人民郵電出版社,2007:283-298.
[3] 馬振鋒,劉獻(xiàn)禮,王鵬,等.基于LabVIEW7.1的PC與PLC通信[J].哈爾濱理工大學(xué)學(xué)報(bào),2005,10(5):30-33.
[4] 張從雄.虛擬儀器技術(shù)分析與設(shè)計(jì)[M].北京:電子工業(yè)出版社,2007:100-108.
[5] 施壽生.虛擬儀器串口卡設(shè)計(jì)[J].樂(lè)山師范學(xué)院學(xué)報(bào),2008,23(12):29-30.
[6] 張力.基于LabVIEW的旋轉(zhuǎn)編碼器轉(zhuǎn)角及轉(zhuǎn)速測(cè)量?jī)x的設(shè)計(jì)[J].三峽大學(xué)學(xué)報(bào)(自然科學(xué)版),2008,30(3):67-69.