俞瀟強,陳家新,胡晨陽,陳 革,齊亞濱
(1.東華大學 機械工程學院,上海 201620; 2.中國紡織機械工業(yè)協(xié)會 ,北京 100028)
隨著電力電子技術和信息技術的飛速發(fā)展,UPS(Uninterruptible power system)電源系統(tǒng)的應用也越來越廣泛。它廣泛地應用于各類計算機應急電源中,如紡織裝備的中央監(jiān)控室、銀行清算中心、通信網(wǎng)管中心、互聯(lián)網(wǎng)數(shù)據(jù)交換中心、證券交易中心等領域[1]。為了保障對這些用電設備提供一種無中斷時間且抗干擾能力強的供電電源,則需要UPS電源供電系統(tǒng)提供高質(zhì)量穩(wěn)定的電源。而UPS電源本身質(zhì)量則是一項影響高效穩(wěn)定用電的關鍵因素,因此其出廠前的電氣性能檢測也成為人們研究的重點。
國內(nèi)外對于UPS電源出廠前電氣性能檢測和數(shù)據(jù)綜合分析環(huán)節(jié)下了大量功夫。國外對于 UPS 電源電氣性能測試的研究起步于 70 年代。艾默生電氣公司對于產(chǎn)品電氣性能檢測技術比較成熟,在UPS電源的操作面板上可以顯示輸入輸出電壓值,用戶負載也可以根據(jù)需要顯示出來,美國電力轉(zhuǎn)換集團在電氣測試過程中不需要計算機與UPS電源通訊便可順利地設置參數(shù),運行過程中網(wǎng)絡監(jiān)控功能強大[2-4]。國內(nèi)對于UPS電源電氣性能測試研究較晚,起步于上世紀80年代后期。達通股份有限公司在電氣檢測環(huán)節(jié)中,在控制面板上可以顯示輸入輸出電壓、頻率和負載等。廣東科士達科技有限公司采用單片機為核心的電源檢測設備,可以在線檢測電參數(shù),自動檢測各項參數(shù)(三相電壓、電流和頻率等)[5-6]。
對于文獻資料的分析可知UPS 電源電氣性能測試技術存在的問題:①先進 UPS 電源測試儀器的缺乏[7];②UPS 電源電氣測試過程難以實現(xiàn)全自動控制;③電氣測試周期長,影響企業(yè)生產(chǎn)效率主要表現(xiàn)在人工測試耗時費力,檢測精度低等。
在系統(tǒng)設計中上位機界面的設計可以采用多種語言工具如VB,LabVIEW,Delphi,VC++等。在用VC++開發(fā)時可采用微軟提供的MFC類庫[8]來編程,具有高效率和高穩(wěn)定性的特點。數(shù)據(jù)串口通訊直接利用MSComm控件來實現(xiàn),它是微軟公司提供的簡化Windows環(huán)境下串行通信編程的ActiveX控件[9],編程簡單方便,功能可靠穩(wěn)定。產(chǎn)品檢測產(chǎn)生的大量數(shù)據(jù)則采用SQL Server數(shù)據(jù)庫,它具有操作簡單、功能強大的特點。
在分析文獻資料和國內(nèi)外研究現(xiàn)狀的基礎上,提出了一種基于MFC上位機設計、系統(tǒng)配置文本開發(fā)、串口通訊、SQL Server 數(shù)據(jù)庫操作的UPS產(chǎn)品質(zhì)量檢測系統(tǒng)設計方法,可以達到自動化檢測、運行簡單可靠方便及低成本和通用性強的效果,對于UPS相關類似產(chǎn)品的檢測具有較好的參考和借鑒的意義。
在對一個系統(tǒng)進行整體設計之前,必須先進行功能分析。由產(chǎn)品檢測需求可知檢測系統(tǒng)主要實現(xiàn)的功能如下:
設計人機交互界面,便于用戶查看檢測狀態(tài)和執(zhí)行相關操作。
建立串口通信進行檢測數(shù)據(jù)的收發(fā),設置串口通訊協(xié)議。
檢測數(shù)據(jù)的操作與數(shù)據(jù)報表的打印,需要建立與后臺數(shù)據(jù)庫SQL Server的聯(lián)系。
根據(jù)系統(tǒng)功能分析,設計UPS產(chǎn)品檢測系統(tǒng)如圖1所示,該系統(tǒng)可由3個物理層實現(xiàn),分別是設備層、數(shù)據(jù)傳輸層和狀態(tài)顯示層。
圖1 檢測系統(tǒng)硬件結構圖
狀態(tài)顯示層主要是檢測項目數(shù)據(jù)與指令的顯示,數(shù)據(jù)傳輸層則是各種數(shù)據(jù)接口與處理器,它是系統(tǒng)信息的實際載體,具有數(shù)據(jù)備份機制,防止數(shù)據(jù)意外破壞[10]。設備層是最底層的硬件設備,包含各種檢測功能的設備以及待檢測UPS產(chǎn)品。
根據(jù)系統(tǒng)功能分析,可以設計出如圖2所示的,包含檢測主界面、串口設置、數(shù)據(jù)庫設置、項目匯總及幫助文檔等選項的軟件系統(tǒng)。
由系統(tǒng)硬件結構圖與系統(tǒng)軟件結構圖分析可設計出系統(tǒng)流程圖,其中包括業(yè)務流程圖、控制流程圖及數(shù)據(jù)流程圖三大流程圖。
圖2 檢測系統(tǒng)軟件結構圖
圖3業(yè)務流程圖主要表明了在檢測過程中每個環(huán)節(jié)的任務,使檢測的每個環(huán)節(jié)功能明確化,把需要檢測的項目都安排合理有序。
圖3 業(yè)務流程圖
圖4控制流程圖則細化到每一個環(huán)節(jié)的操作指令,從“做什么”轉(zhuǎn)化到“怎么做”,方便操作人員完成檢測工作。圖5數(shù)據(jù)流程圖則反映了在這個檢測系統(tǒng)中數(shù)據(jù)流的走向,當有錯誤數(shù)據(jù)產(chǎn)生時能夠及時發(fā)現(xiàn)并解除篩選出錯誤,從而進一步排除系統(tǒng)錯誤。通過系統(tǒng)流程圖的設計,開發(fā)研究人員可以明確具體的系統(tǒng)功能,可以精簡系統(tǒng)的流程環(huán)節(jié)避免不必要的冗余給系統(tǒng)的運作帶來不必要的阻礙。
圖4 控制流程圖
圖5 數(shù)據(jù)流程圖
一個用戶界面(User Interface)的設計,不僅僅能夠完成對命令和數(shù)據(jù)的輸入和輸出,還應該符合人性化的操作。有時使用者不具備相關專業(yè)知識技能,但是可以通過系統(tǒng)的指令也能夠完成相應的操作。
編程平臺使用的是Microsoft Visual studio 2013集成開發(fā)環(huán)境,編程語言采用C++,運用特定的微軟MFC庫來編程設計界面。
產(chǎn)品檢測界面主要運用對話框來設計,由檢測系統(tǒng)軟件模塊總體框架可知,包括檢測主界面、串口設置、數(shù)據(jù)庫設置、項目匯總、幫助文檔等選項。在對話框設計過程中則運用到:List Control Picture Control、ActiveX Control(Shockwave Flash Object、Microsoft Communication Control) 等關鍵控件。如圖6所示,以檢測主界面為例:考慮到顯示器的大小和檢測布局的需要,除了最上方的菜單欄選項外,將產(chǎn)品檢測的主要界面分為四個大致區(qū)域:左上方區(qū)域主要用于檢測數(shù)據(jù)的記錄,右上角區(qū)域用于檢測電路圖和動畫的操作演示,左下方主要是用于數(shù)據(jù)庫的連接和數(shù)據(jù)的打印等,右下方區(qū)域主要是各種操作指令的按鈕,控制系統(tǒng)運作。
在界面編程過程中涉及按鈕的事件響應函數(shù)、父窗口與子窗口的通信、窗口消息、動畫演示、圖片自適應算法等研究。因為有時圖片與Picture Control區(qū)域大小不匹配,所以需要進行圖片的自適應顯示。圖片自適應算法原理:先計算得到電路原理圖的長和寬,將這兩個值存入到兩個變量中;再計算獲得Picture Control 區(qū)域的長和寬;通過區(qū)域的長度和寬度與原理圖長和寬比較得到比例值,最后再將原來原理圖的長和寬乘以這個比例值就可以得到適合區(qū)域的圖片大小。圖片自適應算法的部分關鍵代碼如下:int height, width;
height = pic.GetHeight();//獲得圖片的高度
width = pic.GetWidth();//獲得圖片寬度
if (width <= theApp.picControlRect.Width() && height <= theApp.picControlRect.Width())
//圖片控件區(qū)域能夠放置圖片,無需縮放
{
theApp.picRect = CRect
(theApp.picControlRect.TopLeft(), CSize(width, height));
pic.StretchBlt(theApp.pDc->m_hDC, theApp.picRect, SRCCOPY);
//將圖片顯示到圖片控件表示的矩形區(qū)域
}
else
{
float xScale = (float)theApp.picControlRect.Width() / (float)width;
//獲得寬度比例值
float yScale = (float)theApp.picControlRect.Height() / (float)height;
//獲得高度比例值
float ScaleIndex = ((xScale >= yScale) ? yScale : xScale);//選取寬和高兩者中的較小比例值,不會導致圖片的溢出從而在圖片控件區(qū)域顯示不完全
theApp.picRect = CRect(theApp.picControlRect.TopLeft(), CSize((int)width*ScaleIndex, (int)height*ScaleIndex));
pic.StretchBlt(theApp.pDc->m_hDC, theApp.picRect, SRCCOPY);
//將重新縮放后的圖片顯示到Picture Control區(qū)域
}
如圖7所示,當一個產(chǎn)品的所有檢測項目全部完成后,會將檢測信息放置在項目匯總界面,在項目匯總界面會包含檢測環(huán)境的顯示、檢測技術要求和類型顯示、每個檢測項目檢測信息的顯示。除此之外還能夠查看該項目的操作演示過程包含圖片與動畫的演示。
圖6 檢測主界面
圖7 項目匯總界面
有時為了對檢測數(shù)據(jù)的紙質(zhì)備份,需要將報表數(shù)據(jù)通過外部打印設備打印出來,為此設計了數(shù)據(jù)報表的打印功能,打印效果如圖8所示,部分關鍵代碼如下:
int count = m_list.GetItemCount();//得到報表行數(shù)
int row = m_list.GetHeaderCtrl()->GetItemCount();//得到報表列數(shù)
//先打印表頭
CDC dc;
CRect rc(200, 200, 1700, 1000);
LVCOLUMN lvcol;
wchar_t str[256];
lvcol.mask = LVCF_TEXT;//屏蔽位的組合,表明哪些成員是有效的
lvcol.pszText = str;//指向存放列表頭標題正文的緩沖區(qū)
lvcol.cchTextMax = 256;//標題正文緩沖區(qū)的長度
for (int i = 0; i { //獲取表頭數(shù)據(jù) m_list.GetColumn(i, &lvcol); CString szMsg; szMsg.Format(_T("%s"), lvcol.pszText); pDC->DrawText(szMsg, &tempRect, DT_LEFT | DT_TOP | DT_SINGLELINE);//繪制表頭內(nèi)容 //tempRect = tempRect + CPoint(1800, 0); tempRect = tempRect + CPoint(950, 0); } //以下打印報表里的內(nèi)容 tempRect = tempRect + CPoint(0, 300); tempRect = tempRect - CPoint(4750, 0); for (int i = 0; i < count; i++)//循環(huán)報表的行與列遍歷式打印數(shù)據(jù) { for (int j = 0; j < row; j++) { CString currentText; currentText = m_list.GetItemText(i, j); pDC->DrawText(currentText, &tempRect, DT_LEFT | DT_TOP | DT_SINGLELINE);//將文字繪出來 tempRect = tempRect + CPoint(950, 0); pDC->MoveTo(DrawRect.left, DrawRect.top + (DrawRect.bottom - DrawRect.top) / 20 + 300 * j); pDC->LineTo(DrawRect.right, DrawRect.top + (DrawRect.bottom - DrawRect.top) / 20 + 300 * j); } tempRect = tempRect - CPoint(row * 950, 0); tempRect = tempRect + CPoint(0, 300); pDC->MoveTo(DrawRect.left, DrawRect.top + (DrawRect.bottom - DrawRect.top) / 20 + 300 * i); pDC->LineTo(DrawRect.right, DrawRect.top + (DrawRect.bottom - DrawRect.top) / 20 + 300 * i); } 項目編號檢測時間檢測項目檢測數(shù)據(jù)備注信息12017-07-0315:29:06輸入電壓可變范圍180v~250v相電壓22017-07-0315:29:09輸入電壓可變范圍312~433v線電壓32017-07-0315:29:13輸入功率因數(shù)0.9842017-07-0315:29:18輸入電流諧波成分3%2~39次諧波52017-07-0315:29:21輸入頻率變化范圍49Hz~51Hz62017-07-0315:29:25頻率跟蹤范圍48Hz~52Hz72017-07-0315:29:29頻率跟蹤速率1Hz82017-07-0315:29:34輸出電壓穩(wěn)定精度1%92017-07-0315:29:37輸出預率51Hz電池逆變方式102017-07-0315:29:40輸出波形失真度1%阻性負載112017-07-0315:29:44輸出波形失真度2%非線性負載122017-07-0315:29:48輸出電壓不平衡度3%132017-07-0315:29:51動態(tài)電壓瞬變范圈-2%~+2%142017-07-0315:29:56輪胎質(zhì)量檢測系統(tǒng)10ms152017-07-0315:30:00輸出電壓相位偏差1?182017-07-0315:30:03市電與電池轉(zhuǎn)換時間0ms172017-07-0315:30:08旁路逆變轉(zhuǎn)換時間0.5ms>3kVA182017-07-0315:30:11旁路逆變轉(zhuǎn)換時間0.5ms≤3kVA192017-07-0315:30:14效率85%額定輸出功率 圖8數(shù)據(jù)報表打印效果圖 圖9 檢測系統(tǒng)配置文件圖 該檢測系統(tǒng)的設計除了可以為UPS產(chǎn)品檢測還可以拓展為類似的橫向產(chǎn)品檢測如輪胎、手機等。在系統(tǒng)設計時增加了windows系統(tǒng)配置文件的設置如圖9所示,在操作界面上選擇打開配置文件選項,即可打開后綴為.ini配置文件更改其中的檢測產(chǎn)品名稱和檢測項目及可延伸到其他產(chǎn)品的項目檢測。如將產(chǎn)品檢測名稱更改為“輪胎質(zhì)量檢測”,將原來的UPS檢測項目名稱更改為輪胎的檢測項目,即可將原有的檢測系統(tǒng)拓展到新的產(chǎn)品檢測中來。 在現(xiàn)代的實時檢測系統(tǒng)和工業(yè)化領域中,串口通信技術是一種重要的數(shù)據(jù)傳輸手段。RS-232C標準的全稱是EIA-RS-232C標準,其中EIA代表美國電子工業(yè)協(xié)會,RS代表推薦標準,232是標識號,C代表RS232最新一次修改,在這之前還有RS232A,RS232B協(xié)議[11]。 上位機編程平臺使用的仍是Microsoft Visual studio 2013集成開發(fā)環(huán)境,編程語言采用C++,硬件微處理器采用dsPIC30f4011,微處理器是UPS的核心,在整個UPS中起到了控制的作用,是整個系統(tǒng)的控制中心。數(shù)據(jù)傳輸采用USB轉(zhuǎn)RS232數(shù)據(jù)線,ICD2調(diào)試盒,圖10是實驗硬件平臺,驅(qū)動程序采用MAPLAB編譯環(huán)境,C語言編寫代碼。 圖10 實驗硬件平臺 在串口通信測試窗口中,主要運用MSCOMM32.OCX控件,可以為MSCOMM32.OCX控件添加事件處理函數(shù),包括波特率和傳輸協(xié)議的設置。串口打開后,其屬性被設置為默認值,根據(jù)具體需要,通過調(diào)用GetCommState (COMFile, &dcb)讀取當前串口設備控制塊DCB(Device Control Block)設置,修改后通過SetCommState (COMFile, &dcb)將其寫入。檢測數(shù)據(jù)可以通過串口傳輸?shù)缴衔粰C界面上顯示出來。 以選擇COM3串口和設置波特率為9600為例,部分代碼如下: if (m_mscomm.get_PortOpen()) { m_mscomm.put_PortOpen(FALSE); } m_mscomm.put_CommPort(3); //選擇COM3 m_mscomm.put_InBufferSize(1024); //接收緩沖區(qū) m_mscomm.put_OutBufferSize(1024);//發(fā)送緩沖區(qū) m_mscomm.put_InputLen(0);//設置當前接收區(qū)數(shù)據(jù)長度為0,表示全部讀取 m_mscomm.put_InputMode(1);//以二進制方式讀寫數(shù)據(jù) m_mscomm.put_RThreshold(1);//接收緩沖區(qū)有1個及1個以上字符時,將引發(fā)接收數(shù)據(jù)的OnComm m_mscomm.put_Settings(_T("9600,n,8,1"));//波特率9600無檢驗位,8個數(shù)據(jù)位,1個停止位 SQL Server是微軟推出的大型數(shù)據(jù)庫管理系統(tǒng),VC++提供了多種數(shù)據(jù)庫開發(fā)技術和編程規(guī)范,主要包括ODBC API,MFC ODBC,DAO,OLE DB和ADO[12]。鑒于上位機界面設計采用MFC完成,所以在數(shù)據(jù)庫訪問上選取MFC ODBC技術。 編程平臺使用的仍是Microsoft Visual studio 2013集成開發(fā)環(huán)境,編程語言采用C++,數(shù)據(jù)庫采用微軟的SQL Server。 為了完成檢測系統(tǒng)與數(shù)據(jù)庫的連接,需要配置ODBC數(shù)據(jù)源,包含DSN數(shù)據(jù)源名稱、UID數(shù)據(jù)庫用戶名、PWD數(shù)據(jù)庫用戶密碼的設置。完成ODBC數(shù)據(jù)源的配置之后,就可以在上位機軟件程序中編寫相應的連接數(shù)據(jù)庫,部分代碼如下: UpdateData(1); TRY{ m_db.OpenEx(_T("DSN=YUSQL;UID=PC-20160619NDEA;PWD="), CDatabase::noOdbcDialog); }//配置DSN數(shù)據(jù)源名稱,UID數(shù)據(jù)庫用戶名,PWD密碼這里設為空 CATCH(CDBException, ex)//由數(shù)據(jù)庫類引起的異常報錯 { AfxMessageBox(ex->m_strError); AfxMessageBox(ex->m_strStateNativeOrigin); } AND_CATCH(CMemoryException, pEx)//由內(nèi)存溢出引起的異常報錯 { pEx->ReportError(); MessageBox(_T("memory exception")); } AND_CATCH(CException, e)//由微軟基類庫異常引起的報錯 { TCHAR szError[100]; e->GetErrorMessage(szError, 100); AfxMessageBox(szError); } END_CATCH MessageBox(_T("數(shù)據(jù)庫連接成功!")); 當一個產(chǎn)品的所有檢測項目完成后,可以將數(shù)據(jù)列表中的檢測數(shù)據(jù)保存到數(shù)據(jù)庫,之后還可以完成數(shù)據(jù)的篩選、排序等后續(xù)操作。檢測數(shù)據(jù)可以用如圖11的數(shù)據(jù)庫表直觀的顯示出來。 圖11 數(shù)據(jù)庫檢測數(shù)據(jù)顯示 按照國家通信行業(yè)標準,選取在線式UPS作為系統(tǒng)檢測的代表。登錄操作系統(tǒng)進入檢測界面,進入串口設置選項選擇好串口和波特率,完成上下位機的通訊;進入數(shù)據(jù)庫設置選擇完成后臺數(shù)據(jù)庫的連接。按照國家標準YD/T1095-2008,開始對UPS的每個項目逐個進行檢驗,檢測指令通過操作面板的按鈕完成,檢測狀態(tài)通過下位機的指示燈來顯示。檢驗數(shù)據(jù)從下位機經(jīng)過RS232轉(zhuǎn)USB傳輸?shù)缴衔粰C的數(shù)據(jù)列表中。檢測數(shù)據(jù)可以通過報表打印的形式輸出,方便檢測人員的檢查與記錄備份;還可以保存到后臺數(shù)據(jù)庫為后續(xù)的查詢、修改等做準備。經(jīng)過實驗表明,該系統(tǒng)可以自動化地完成對UPS產(chǎn)品項目的檢測,操作過程簡單方便,檢測過程穩(wěn)定可靠,達到了系統(tǒng)設計初的預期效果。 這個系統(tǒng)的設計研究涵蓋了VC++的界面編程、系統(tǒng)文件配置、串口通信編程、數(shù)據(jù)庫操作等技術。經(jīng)過實驗檢驗,產(chǎn)品檢測系統(tǒng)運行良好,自動化程度較高,操作過程簡單方便,解決了傳統(tǒng)過程中人工檢測帶來的效率低下、精度低和成本高的問題。按照國家標準進行檢驗更好地保障了檢驗后產(chǎn)品更高的合格率,避免一些廠商只針對幾個重要項目檢測而導致的后續(xù)故障。為了增加檢測系統(tǒng)的通用性,系統(tǒng)配置文件的更改可以方便地拓展到其他產(chǎn)品項目的檢測,對于類似的檢測系統(tǒng)具有較好的參考借鑒意義。該系統(tǒng)還存在需要完善的地方,該產(chǎn)品質(zhì)量檢測系統(tǒng)每次只能對一個UPS電源進行檢測,對于批量同時檢測電氣性能還有待進一步研究??梢詤⒖紤枚啻谂c多線程技術來完善解決方案??偟膩碚f,該檢測系統(tǒng)應用前景比較廣泛、技術可移植性較高。 [參考文獻] [1] 黃金霖. UPS電源電氣測試技術與性能分析研究[D].南昌:江西理工大學,2013. [2] Hirachik, Nakaokam. UPS circuit configuration incorporation incorporating buck-boost chopper circuit with two magnetically coupled coils[J].Electronics Letters,2008,39(18):1345-1346. [3] E Varkarraki,N Lymberopoulos,E Zoulias,et al. Hydrogen-based uninterruptible power supply[J]. International Journal of Hydrogen Energy, 2007,32(10):1589-1596. [4] Kattakayam T A,Srinivasan K. Uninterrupted power supply for autonomous small refrigerators[J]. Fuel and Energy Abstracts, 2005, 1(39):57-63. [5] 張博. 電氣參數(shù)測試理論及其自動測試系統(tǒng)的研究[D].西安:西北工業(yè)大學,2002. [6]卜樹坡,曹建東,章雯. 總線型感應電動機全電式綜合測試系統(tǒng)[J]. 自動化儀表,2011(12): 58-60,64. [7] Wang J,Liu H K, Dou S X, et al. Enhanced performance of VRLA batteries with a novel spirally wound electrode design[J]. Journal of Power Source, 2003, 113:224-241. [8] 晁永生,樊軍,申曉萍,等. 淺談Visual C++串口通信編程[J]. 科技廣場,2007(1): 71-73. [9] 張海良. 光伏電站遠程監(jiān)控系統(tǒng)的設計和研究[D].秦皇島:燕山大學,2006. [10] 李麗,吉武俊,武照云,等.基于工藝流程圖的車間生產(chǎn)管理系統(tǒng)設計與開發(fā)[J].組合機床與自動化加工技術,2017(1):149-150. [11] 潘方.RS232串口通信在PC機與單片機通信中的應用[J].現(xiàn)代電子技術,2012,35(13):69-71. [12] 李濤,劉凱奎,王永皎.Visual C++ + SQL Server 數(shù)據(jù)庫開發(fā)與實例[M].北京:清華大學出版社,2006. (編輯李秀敏)2.6 通用拓展模塊
3 數(shù)據(jù)通訊系統(tǒng)設計
3.1 概述
3.2 編程平臺與硬件設備
3.3 方案設計與實現(xiàn)
4 數(shù)據(jù)庫系統(tǒng)設計
4.1 概述
4.2 編程工具
4.3 方案設計
5 實驗結果與分析
6 結論