劉建河,趙玉丹,張玉強(qiáng)
LIU Jian-he1,ZHAO Yu-dan2,ZHANG Yu-qiang3
(1. 長(zhǎng)春理工大學(xué) 機(jī)電工程學(xué)院,長(zhǎng)春 130022;3. 長(zhǎng)春理工大學(xué) 理學(xué)院,長(zhǎng)春 130022)
計(jì)算機(jī)串口是使用得最為廣泛的接口,也是歷史最為悠久的通信接口,通常稱為COM口或RS-232口。大部分的智能儀器和儀表都配備了RS-485接口,RS-485是RS-422的改進(jìn)版,它能更好地抗噪聲,也增加了可通信設(shè)備的數(shù)量,最多可達(dá)32臺(tái),同時(shí)增加了傳輸?shù)木嚯x,可靠傳輸距離為1200m,實(shí)際上在3000m左右也可以正常工作。變頻器是該類智能儀器一個(gè)典型代表,用它驅(qū)動(dòng)電機(jī)安全,穩(wěn)定,可實(shí)現(xiàn)連續(xù)無(wú)級(jí)調(diào)速,無(wú)沖擊S曲線加減速運(yùn)動(dòng)等,也簡(jiǎn)化了整個(gè)機(jī)電系統(tǒng)的機(jī)械結(jié)構(gòu)。用PC通過(guò)變頻器對(duì)電機(jī)進(jìn)行控制時(shí),在硬件方面,使用一個(gè)RS-232和RS-485轉(zhuǎn)換器就可以非常容易地建立起PC與變頻器之間的硬件連接,在軟件方面,美國(guó)NI公司開(kāi)發(fā)的LABVIEW在數(shù)據(jù)采集與儀器控制方面最具有核心競(jìng)爭(zhēng)力。1993年,NI聯(lián)合許多在技術(shù)領(lǐng)域處于領(lǐng)先地位的公司,如HP,Tektronix,Racal等,成立了VXIplug&play系統(tǒng)聯(lián)盟,其目標(biāo)是確保多廠商的儀器具有協(xié)同工作的能力。虛擬儀器架構(gòu)VISA(Virtual Instrument Software Architecture)是VXIplug&play系統(tǒng)聯(lián)盟最重要的成果之一,它的目的是通過(guò)減少系統(tǒng)的建立時(shí)間來(lái)提高效率。隨著儀器類型的不斷增加和測(cè)試系統(tǒng)復(fù)雜化的提高,人們不希望為每一種硬件接口都要編寫(xiě)不同的程序,因此I/O接口的無(wú)關(guān)性對(duì)于I/O控制軟件來(lái)說(shuō)變得至關(guān)重要。當(dāng)用戶編寫(xiě)完一套儀器控制程序后,總是希望該程序在各種硬件接口上都能工作,VISA的出現(xiàn)使這種希望成為可能,通過(guò)調(diào)用相同的VISA庫(kù)函數(shù)并配置不同的設(shè)備參數(shù),就可以編寫(xiě)控制各種I/O接口儀器的通用程序。因此本文所述軟件的編制中,所有對(duì)串口的操作全都基于對(duì)LABVIEW的VISA庫(kù)函數(shù)的調(diào)用。下面就詳細(xì)介紹在LABVIEW環(huán)境下,通過(guò)調(diào)用VISA庫(kù)函數(shù)對(duì)串口進(jìn)行操作,以實(shí)現(xiàn)對(duì)電機(jī)的控制。
硬件的配置非常簡(jiǎn)單,如圖1所示。交流異步電動(dòng)機(jī)由變頻器直接驅(qū)動(dòng),PC輸出的RS-232信號(hào)經(jīng)轉(zhuǎn)換器轉(zhuǎn)換為RS-485信號(hào)后送進(jìn)變頻器。需要說(shuō)明兩點(diǎn),一是市售轉(zhuǎn)換器質(zhì)量良莠不齊,在選用時(shí)一定要選用質(zhì)量好些的,當(dāng)然價(jià)格也會(huì)高點(diǎn),二是個(gè)人PC如果是筆記本電腦的話,大部分已經(jīng)沒(méi)有RS-232串口了,需要在筆記本上再增加一個(gè)串口轉(zhuǎn)接卡。
圖1 控制系統(tǒng)的硬件配置
在編程之前首先要對(duì)變頻器的參數(shù)進(jìn)行設(shè)置。不同的變頻器對(duì)RS-485通信參數(shù)設(shè)置方法不盡相同,本文采用的是臺(tái)達(dá)VFD-A系列交流馬達(dá)變頻器,與RS-485通信相關(guān)的參數(shù)設(shè)置如下:
1)主頻率輸入來(lái)源選擇
Pr-00=d0002,主頻率輸入由RS-485串聯(lián)通訊介面控制。
2)運(yùn)轉(zhuǎn)指令來(lái)源設(shè)定
Pr-01=d0004,運(yùn)轉(zhuǎn)指令由RS-485串聯(lián)通訊介面控制。
3)資料傳輸速率設(shè)定
Pr-77=d0002,資料傳輸速率4800baud。
4)通訊位址
Pr-78=d0000,單臺(tái),通訊位址為00。
該軟件主要實(shí)現(xiàn)電機(jī)的正轉(zhuǎn),反轉(zhuǎn),點(diǎn)動(dòng)正轉(zhuǎn),點(diǎn)動(dòng)反轉(zhuǎn),停機(jī)及變頻器狀查詢等功能。LABVIEW程序分為前面板和程序框圖,前面板為圖形用戶界面GUI(Graphic User Interface),程序框圖相當(dāng)于其他編程語(yǔ)言的源代碼。本軟件前面板設(shè)計(jì)如圖2所示。主要包括三個(gè)部分,左邊為參數(shù)設(shè)定區(qū),用于輸入變頻運(yùn)轉(zhuǎn)頻率和對(duì)VISA資源的選擇,還可顯示運(yùn)轉(zhuǎn)指令字、運(yùn)轉(zhuǎn)指令以及通訊是否正常的指示;中間部分為電機(jī)運(yùn)轉(zhuǎn)方式選擇按鈕,點(diǎn)擊相應(yīng)的按鈕后電機(jī)執(zhí)行相應(yīng)的動(dòng)作;右邊為變頻器運(yùn)行狀態(tài)顯示,主要顯示變頻器的輸出電流和電機(jī)的運(yùn)行狀態(tài)。
圖2 軟件的前面板配置
所設(shè)計(jì)的程序框圖在執(zhí)行時(shí)是位于一個(gè)窗口下的,為了表述清楚,將其分成三個(gè)部分,分別如圖3,圖4和圖5所示。
圖3為電機(jī)運(yùn)轉(zhuǎn)方式選擇部分,用while循環(huán)結(jié)構(gòu)+事件結(jié)構(gòu)組成。在LABVIEW中,while循環(huán)不只是循環(huán)執(zhí)行數(shù)據(jù)的計(jì)算和判斷,同時(shí)還可以用于構(gòu)造復(fù)雜的設(shè)計(jì)模式,是LABVIEW編程中的關(guān)鍵和核心,事件結(jié)構(gòu)一般也必須放在while循環(huán)中執(zhí)行。本例程中,事件結(jié)構(gòu)對(duì)前面板50ms掃描一次,主要用來(lái)判斷前面板上用來(lái)控制電機(jī)運(yùn)轉(zhuǎn)方式的按鈕是否有動(dòng)作,如果有動(dòng)作,就給相應(yīng)的運(yùn)轉(zhuǎn)指令字賦對(duì)應(yīng)的值,同時(shí)使標(biāo)志位置位。本變頻器對(duì)應(yīng)“正轉(zhuǎn)”的指令字是字符串“01”,對(duì)應(yīng)“反轉(zhuǎn)”的是字符串“03”,對(duì)應(yīng)“點(diǎn)動(dòng)正轉(zhuǎn)”的是字符串“04”,對(duì)應(yīng)“點(diǎn)動(dòng)反轉(zhuǎn)”的是字符串“06”,對(duì)應(yīng)“停止”的是字符串“00”。
圖3 電機(jī)運(yùn)轉(zhuǎn)方式選擇部分的程序框圖
串口的操作部分是本軟件的核心,其程序框圖如圖4所示。在while循環(huán)左側(cè)是串口初始化部分,其中VISA資源位于控制面板的I/O子面板下,用于選擇可用的串口,VISA Serial Port Configuration位于函數(shù)選板Instrument I/O—serial子面板下,主要用來(lái)連接串口資源,并配置波特率,數(shù)據(jù)位和奇偶校驗(yàn)等初始化工作。while循環(huán)內(nèi)的第一個(gè)條件結(jié)構(gòu)以標(biāo)志位為執(zhí)行條件,當(dāng)其為真時(shí),執(zhí)行電機(jī)運(yùn)轉(zhuǎn)操作指令,該指令由控制字頭,和檢查,命令認(rèn)可,通訊地址位,運(yùn)轉(zhuǎn)指令字及運(yùn)轉(zhuǎn)頻率等11位字符構(gòu)成,因此用了一個(gè)字符連接函數(shù)將其連接成一個(gè)字符串后送入寫(xiě)串口節(jié)點(diǎn)。其中子程序1的功能是為了將輸入的頻率(十進(jìn)制浮點(diǎn)數(shù))轉(zhuǎn)化為四位字符串。當(dāng)數(shù)據(jù)流匯集到運(yùn)轉(zhuǎn)指令寫(xiě)操作時(shí),變頻器便驅(qū)動(dòng)電機(jī)執(zhí)行相應(yīng)的動(dòng)作。當(dāng)此條件結(jié)構(gòu)輸入標(biāo)志位為假時(shí),便執(zhí)行狀態(tài)查詢寫(xiě)串口操作,此處的寫(xiě)操作與運(yùn)轉(zhuǎn)指令寫(xiě)操作方法相同,只是指令的內(nèi)容不同而已,且此內(nèi)容與所用變頻器生產(chǎn)廠家和型號(hào)密切相關(guān)。需要注意的是,由于該變頻器是一問(wèn)一答的工作模式,如果不發(fā)送查詢指令(寫(xiě)串口),就不會(huì)返回變頻器的工作狀態(tài),因此查詢串口的操作不管電機(jī)是否運(yùn)行都需要連續(xù)不斷地執(zhí)行,所以在執(zhí)行運(yùn)轉(zhuǎn)指令寫(xiě)操作的同時(shí),要將標(biāo)志位復(fù)位。while循環(huán)內(nèi)的右半部分是對(duì)狀態(tài)查詢的結(jié)果進(jìn)行預(yù)處理,實(shí)際上是將變頻器的應(yīng)答信號(hào)壓入一個(gè)隊(duì)列。由于計(jì)算機(jī)執(zhí)行讀寫(xiě)指令有時(shí)間延遲,所以用了一個(gè)順序結(jié)構(gòu)進(jìn)行10ms的彌補(bǔ)。
圖4 串口的操作部分的程序框圖
圖5為變頻器運(yùn)行狀態(tài)顯示部分的程序框圖。運(yùn)行指令和狀態(tài)查詢指令寫(xiě)入變頻器后,計(jì)算機(jī)都會(huì)收到一個(gè)應(yīng)答信號(hào),我們只關(guān)心狀態(tài)查詢的結(jié)果,因此要對(duì)所收到的字符串(位于預(yù)處理的隊(duì)列中)進(jìn)行篩選和處理。電機(jī)運(yùn)行指令的回復(fù)信號(hào)與狀態(tài)查詢的回復(fù)信號(hào)均為11字符,但前者內(nèi)容含“C”,而后者內(nèi)容含“Q”,以此為依據(jù)進(jìn)行判斷,并將字符串轉(zhuǎn)化為數(shù)字顯示在前面板的“電流表”上。
圖5 隊(duì)列內(nèi)容處理顯示部分的程序框圖
在本軟件的編程中涉及到的關(guān)鍵技術(shù)主要有以下四個(gè)方面:
1)LABVIEW本身自然支持多線程工作,但在一個(gè)程序框圖中對(duì)串口的寫(xiě)操作不能有兩個(gè)或兩個(gè)以上的線程同時(shí)進(jìn)行。本程序一方面需要對(duì)串口進(jìn)行運(yùn)轉(zhuǎn)指令的寫(xiě)入,另一方面還需要不斷地查詢串口,為了解決這個(gè)矛盾,使用了一個(gè)標(biāo)志位,該標(biāo)志位只有在前面板按鈕有動(dòng)作時(shí)為真,執(zhí)行一次寫(xiě)操作,其他時(shí)間為假,從而可以循環(huán)進(jìn)行狀態(tài)查詢。
2)使用隊(duì)列結(jié)構(gòu)實(shí)現(xiàn)了生產(chǎn)者和消費(fèi)者的工作模式。圖4顯示的框圖最右半部分相當(dāng)于生產(chǎn)者,它將所有返回的信號(hào)都?jí)喝胍粋€(gè)隊(duì)列,從而產(chǎn)生一些待處理的數(shù)據(jù)到圖5的程序框圖中再進(jìn)行處理,圖5中的程序框圖就自然成了消費(fèi)者。
3)移位寄存器不受數(shù)據(jù)類型和數(shù)量的限制,因此本程序中使用空字符對(duì)移位寄存器進(jìn)行初始化,解決了可能會(huì)出現(xiàn)的數(shù)據(jù)溢出和其它一些不可預(yù)見(jiàn)的問(wèn)題。
4)對(duì)于控件的引用,一律使用Create-Property-Value的方式實(shí)現(xiàn),避免了使用局部變量,提高了程序的執(zhí)行效率。
完成了通過(guò)串口與變頻器通信實(shí)現(xiàn)對(duì)電機(jī)運(yùn)轉(zhuǎn)方式進(jìn)行控制,對(duì)變頻器工作狀態(tài)進(jìn)行查詢的軟硬件設(shè)計(jì),并給出了在設(shè)計(jì)中所用到的一些關(guān)鍵技術(shù)。整個(gè)系統(tǒng)運(yùn)行狀態(tài)良好,得到了用戶的一致好評(píng)。
[1] 陳樹(shù)學(xué).LabVIEW寶典[M].北京:電子工業(yè)出版社,2011.
[2] 陳錫輝.LabVIEW8.20從入門到精通[M].北京:清華大學(xué)出版社,2007.
[3] 李江全,等.LABVIEW虛擬儀器數(shù)據(jù)采集與串通信測(cè)控應(yīng)用實(shí)戰(zhàn)[M].北京:人民郵電出版社,2010.
[4] 孟輝.基于LabVIEW的PC機(jī)與變頻器的串口通信[J].現(xiàn)代電子技術(shù).2008(17):111-113.
[5] 夏鍇.基于LabVIEW讀取串口數(shù)據(jù)技術(shù)[J].制造業(yè)自動(dòng)化2012年(10上):21-22.