陶金牛,李錫文
(1.華中科技大學,湖北 武漢 430074;2.空軍第一航空學院,河南 信陽 464000)
蠕動泵,又稱軟管泵,按工作原理屬于容積泵。工作時,流體位于密封的軟管內(nèi),滾輪對軟管擠壓產(chǎn)生吸力[1],可以傳輸具有腐蝕性和剪切力敏感的流體[2],因此被廣泛應(yīng)用于制藥、食品和化工行業(yè)。
目前,小流量蠕動泵使用較多,其傳輸?shù)牧黧w黏性低,流量以mL3/min計,采用直流調(diào)速驅(qū)動。而傳輸大傳輸流量(超過103L/h)、高黏度流體時應(yīng)采用變頻調(diào)速驅(qū)動的蠕動泵,但目前這種應(yīng)用還不完善。為了實現(xiàn)某定量加料系統(tǒng)中的自動運行和遠程控制,本文針對采用LS變頻器的大流量蠕動泵,基于虛擬儀器技術(shù),完成了其控制系統(tǒng)的開發(fā)。
蠕動泵控制系統(tǒng)硬件組成如圖1所示。通過基于LS專用通信協(xié)議編寫的控制軟件,實現(xiàn)上位機與蠕動泵之間的數(shù)據(jù)交換,實時改變轉(zhuǎn)速并獲取當前的運行參數(shù)。由于采用的是RS485半雙工異步(UART)通信,最大可靠通信距離達到700m,因此上位機和變頻器能夠布置在不同的場所,實現(xiàn)遠程操縱。另外,變頻器與蠕動泵之間支持最大電纜長度為500m,也能夠?qū)崿F(xiàn)分開放置。
上位機控制軟件使用LabVIEW進行編寫。Lab-VIEW圖形化編程語言具有完善的人機交互控件,并具有豐富的函數(shù)庫和儀器驅(qū)動,可以方便地將各廠商的硬件集成到系統(tǒng)中。本軟件各功能主要是對串口通信協(xié)議的調(diào)用,所以,編程的實質(zhì)是使用LabVIEW中VISA串口通信模塊實現(xiàn)LS通信協(xié)議的各種功能。
圖1 蠕動泵控制系統(tǒng)硬件組成
系統(tǒng)使用LS公司生產(chǎn)的SV-iG5系列變頻器,它支持 Modbus-RTU、Modbus-ASCⅡ通信協(xié)議和 LS公司開發(fā)的串行通信協(xié)議LS-BusASCⅡ。Modbus協(xié)議的應(yīng)用比較常見,而LS協(xié)議目前主要應(yīng)用于LS旗下的變頻器、PLC等產(chǎn)品中。
LS通信協(xié)議支持RS-485接口,允許“兩線結(jié)構(gòu)”的點對點和點對多的數(shù)據(jù)傳輸,LS兩線制拓撲結(jié)構(gòu)如圖2所示,圖2中S+,S-,CM對應(yīng)著RS485接口的邏輯1、邏輯0和公共地,最多可以支持16臺變頻器。
LS-BusASCⅡ是一個主/從協(xié)議,變頻器作為從機,計算機作為主機。在同一時刻只有一個主站和多個從站連接于通信線路中,信息通信總是由主站發(fā)起,從站在沒有收到來自主站的請求時不發(fā)送數(shù)據(jù),從站之間不發(fā)生通信。
圖2 LS兩線制拓撲結(jié)構(gòu)
類似于 Modbus-ASCⅡ協(xié)議,LS-BusASCⅡ協(xié)議中數(shù)據(jù)以十六進制ASCⅡ碼的形式傳輸[3]。例如,上位機要發(fā)送十進制數(shù)值“3000”給變頻器,則首先要將其轉(zhuǎn)換為十六進制字符串“0BB8”,然后將每個字符轉(zhuǎn)換為十六進制ASCⅡ碼“30h42h43h38h”進行傳輸。上位機接收變頻器的數(shù)據(jù)時,執(zhí)行相反的過程。
LS-BusASCⅡ協(xié)議報文遵守嚴格的格式和字符長度限制。協(xié)議規(guī)定了3種基本報文格式:請求、應(yīng)答回復(fù)和拒絕應(yīng)答回復(fù)。同時還規(guī)定了4種功能碼,分別是“R”,“W”,“X”和“Y”,代表4種基本操作:讀取寄存器、寫入寄存器、監(jiān)控注冊和監(jiān)控讀取。這4種基本操作的請求、應(yīng)答回復(fù)和拒絕應(yīng)答回復(fù)報文各不相同,具體包含的字節(jié)見表1。
表1 LS-BusASCⅡ協(xié)議詳細報文格式及長度
表1中,Drive No為儀器編號相當于儀器的地址,在報文中占用2個字節(jié),從站編號從01開始,最大為0F,上位機指定發(fā)送的對象需要與變頻器I/O-46參數(shù)中的字符一致;Address為寄存器地址,變頻器中不同地址的寄存器對應(yīng)著不同的功能,改變或讀取其中的值,可以改變或獲取蠕動泵的運行狀態(tài);協(xié)議采用了名為“SUM”的求和校驗,SUM值是全部有效字節(jié)(不帶頭尾碼)的十六進制ASCⅡ碼相加后所得數(shù)值的低八位,SUM值首先由發(fā)送設(shè)備計算,然后將其轉(zhuǎn)換為字符串附在報文中,接收設(shè)備再次計算,并將計算結(jié)果與實際接收到的SUM值進行比較,如果不相等,則報錯。
系統(tǒng)的程序運行界面如圖3所示,主要功能有蠕動泵的正轉(zhuǎn)、反轉(zhuǎn)和停止,以及電壓、電流、頻率的設(shè)定與監(jiān)控。這些功能按觸發(fā)條件可以分為3類:按鈕觸發(fā)、旋鈕觸發(fā)和無動作觸發(fā)。
按鈕觸發(fā)包括蠕動泵的正轉(zhuǎn)、反轉(zhuǎn)和停止,這些指令通過點擊前面板上的布爾控件觸發(fā),不點擊不執(zhí)行,而且執(zhí)行時要從程序的其他分支跳出。旋鈕觸發(fā)包括頻率和轉(zhuǎn)速的設(shè)定,這種設(shè)定是實時的,改變了旋鈕的位置,蠕動泵的轉(zhuǎn)速就隨之改變。電壓、電流、頻率的監(jiān)控顯示功能屬于無動作觸發(fā)一類,而且需要實時更新,為了簡化程序,我們把旋鈕觸發(fā)和無動作觸發(fā)放在同一個程序分支中。主程序流程如圖4所示。
圖3 程序運行界面
主程序是一個while循環(huán)結(jié)構(gòu),每一次循環(huán)都要監(jiān)測“正轉(zhuǎn)按鈕”、“反轉(zhuǎn)按鈕”和“停止按鈕”的值,并把這些值賦給一個一維數(shù)組,然后利用“搜索數(shù)組”函數(shù)獲取按鈕狀態(tài)變量,用這個變量去觸發(fā)條件結(jié)構(gòu)的分支。例如,當“正轉(zhuǎn)按鈕”被按下,“搜索數(shù)組”函數(shù)輸出的值就為0,程序就執(zhí)行值為0的條件分支,若無按鈕按下,“搜索數(shù)組”函數(shù)的值為-1。
支持模塊化編程是LabVIEW開發(fā)環(huán)境的一個優(yōu)點,模塊化使得程序更加合理,層次也更加分明。整個程序的VI結(jié)構(gòu)如圖5所示。
子程序“正轉(zhuǎn)指令”的程序框圖如圖6所示,需要說明的是,頭碼和尾碼并不存在于LabVIEW默認的ASCⅡ編碼表中,因此,在子程序中直接用十六進制字符串常量05h和06h作為輸入。其他命令字符只需要按照表1中所列協(xié)議格式編寫程序即可生成。
圖4 主程序流程圖
本文分析總結(jié)了LS通信協(xié)議的規(guī)則和原理,在編程中采用了將LS協(xié)議字符串生成與串口操作分離的子程序結(jié)構(gòu),這種結(jié)構(gòu)可以減少串口讀寫次數(shù),使主程序的結(jié)構(gòu)更加靈活,調(diào)試也更方便。所構(gòu)建的蠕動泵控制程序,實現(xiàn)了對蠕動泵的遠程控制和監(jiān)控,穩(wěn)定性和實時性較好,已在某定量加料系統(tǒng)中投入了使用。
圖5 主程序VI結(jié)構(gòu)
圖6 正轉(zhuǎn)指令子VI
[1] 張萬成.蠕動泵及其應(yīng)用[J].化工自動化及儀表,1986(6):69-71.
[2] 劉顯軍.蠕動泵的結(jié)構(gòu)原理及其應(yīng)用[J].流體機械,1998(12):38-40.
[3] 機械工業(yè)儀器儀表綜合技術(shù)經(jīng)濟研究所.GB/T 19582.1—2008基于Modbus協(xié)議的工業(yè)自動化網(wǎng)絡(luò)規(guī)范[S].北京:中國標準出版社,2008:1-48.