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