摘 要: 為了研究電纜在工作過程中的性能變化,采用了固高科技GUC運(yùn)動控制器,搭建了基于VS2008的電纜測試系統(tǒng)平臺。利用MFC編輯程序界面的方法以及控制器自帶的庫函數(shù),模擬實(shí)際工作情況,編寫了拖鏈電纜的運(yùn)動程序以及上位機(jī)的控制界面程序??刂平缑婵蓪?shí)時顯示被測電纜短路、斷路以及運(yùn)動參數(shù)等信息。整個系統(tǒng)操作簡單,運(yùn)行可靠。
關(guān)鍵詞: 電纜測試;GUC控制器;VS2008;MFC
機(jī)床電纜作為機(jī)床電氣系統(tǒng)的組成部分,擔(dān)負(fù)著電能和電能信號傳送的重任,在生產(chǎn)加工過程中扮演著重要角色。但長期頻繁的往復(fù)運(yùn)動必然使機(jī)床拖鏈中的電纜出現(xiàn)疲勞受損,而工作環(huán)境中的油污、粉塵等因素又加速了絕緣層老化,線芯短、斷路等現(xiàn)象。為了了解電纜的壽命并快速判斷電纜通斷,本文模擬機(jī)床拖鏈中電纜實(shí)際運(yùn)行條件,搭建含有油槽的測試平臺,選用固高科技生產(chǎn)的GUC系列運(yùn)動控制器,基于VS2008編譯環(huán)境中的VC++模塊,利用其提供的MFC編輯程序界面的方法以及控制器自帶的庫函數(shù),建立“PC+運(yùn)動控制器”開放式電纜測試運(yùn)動控制系統(tǒng)。
1 系統(tǒng)的總體結(jié)構(gòu)設(shè)計(jì)
電纜測試平臺在設(shè)計(jì)搭建過程中,要充分考慮布置在拖鏈中電纜的實(shí)際運(yùn)動情況以及工作環(huán)境對它的影響等因素。電纜測試系統(tǒng)試驗(yàn)臺實(shí)物圖如圖1所示。
電纜布置在拖鏈中,拖鏈一端固定在接線盒上,另一端固定在運(yùn)動負(fù)載上,電機(jī)連接聯(lián)軸器帶動滾珠絲杠,旋轉(zhuǎn)的滾珠絲桿通過滾軸螺母帶動負(fù)載水平往復(fù)性運(yùn)動。整個運(yùn)動過程既可實(shí)現(xiàn)勻速運(yùn)動,又可實(shí)現(xiàn)變速運(yùn)動,往復(fù)運(yùn)動次數(shù)以及運(yùn)動距離可以實(shí)時顯示。為了更符合電纜實(shí)際工作情況,可以對油槽中加入油污或切削液,也可以每隔一段時間,手動噴灑;在電纜測試運(yùn)動過程中,電纜兩端通過接線端子與控制器的I/O口相連接,構(gòu)成閉合回路,以便人機(jī)界面實(shí)時顯示電纜在反復(fù)運(yùn)動中出現(xiàn)的斷路、短路等情況。
2 系統(tǒng)的硬件設(shè)計(jì)
一般開放式運(yùn)動控制系統(tǒng)主要由PC、運(yùn)動控制卡、連接端子板、伺服驅(qū)動器以及伺服電機(jī)5個部分組成,如圖2所示。電纜測試運(yùn)動控制系統(tǒng)采用了固高科技生產(chǎn)的GUC系列運(yùn)動控制器,該控制器是PC技術(shù)與運(yùn)動控制技術(shù)相結(jié)合的產(chǎn)物,它以Intel標(biāo)準(zhǔn)X86架構(gòu)的CPU和芯片組為系統(tǒng)處理器,采用高性能DSP和FPGA作為運(yùn)動控制協(xié)處理器,在實(shí)現(xiàn)高性能多軸協(xié)調(diào)運(yùn)動控制的同時,可以實(shí)現(xiàn)普通PC的所有基本功能。電纜測試運(yùn)動控制系統(tǒng)硬件主要由以下幾部分器件組成。
(1)GUC-300-ESV運(yùn)動控制器;
(2)三洋伺服電機(jī)驅(qū)動器以及伺服電機(jī);
(3)驅(qū)動器電源以及+24 V直流電源(用于GUC系列運(yùn)動控制器及接口板電源);
(4)原點(diǎn)開關(guān)、正/負(fù)限位開關(guān);
(5)顯示器、輸入設(shè)備或?qū)S萌藱C(jī)界面。
電纜測試系統(tǒng)采用深圳固高科技生產(chǎn)GUC-300-ESV一體化運(yùn)動控制器,該控制器集系統(tǒng)處理器和運(yùn)動控制處理器于一體,運(yùn)動控制處理器采用GE系列控制器。這種嵌入式一體化的解決方案給用戶帶來很大的方便,一臺GUC-300-ESV控制器加上一個顯示器就可以建立一個等同于“PC+運(yùn)動控制器”開放式電纜測試運(yùn)動控制系統(tǒng)。
GUC-300-ESV運(yùn)動控制器提供C語言函數(shù)庫和Windows動態(tài)鏈接庫,可實(shí)現(xiàn)復(fù)雜的控制功能。該運(yùn)動控制器技術(shù)參數(shù)及功能如下[1]。
(1)系統(tǒng)處理器采用X86架構(gòu)、主頻100 MHz的CPU,PCI總線通信方式;
(2)控制周期為200 ?滋s且不可調(diào);
(3)3路(每軸一路)模擬量以及脈沖信號輸出,模擬量的分辨率為16 bit,輸出電壓范圍為-10 V~10 V,脈沖輸出最大頻率為256 kHz;
(4)帶有3路編碼器信號輸入,輸入最大頻率為4 MHz;
(5)每軸分別各有一個正、負(fù)限位信號、原點(diǎn)信號以及驅(qū)動報警信號等專用輸入信號,還有一個伺服允許信號和驅(qū)動器復(fù)位信號;
(6)分別擁有16路經(jīng)光電隔離處理過的通用數(shù)字量輸入輸出,其中16路通用輸出是采用集電極開路輸出,驅(qū)動能力達(dá)200 mA;
(7)可實(shí)現(xiàn)直線、圓弧插補(bǔ)運(yùn)動,提供了8 KB的緩沖區(qū),可實(shí)現(xiàn)運(yùn)動軌跡預(yù)處理;
(8)帶有PID+速度前饋+加速度前饋濾波器;
(9)可設(shè)置跟隨誤差極限、加速度極限以及輸出電壓飽和極限等一些安全保護(hù)措施;
(10)提供了DOS下的C語言函數(shù)庫和Windows下的動態(tài)鏈接庫,在Windows系統(tǒng)下,用戶可以使用任何能夠支持動態(tài)鏈接庫的開發(fā)工具來開發(fā)應(yīng)用程序,例如Visual C++、Visual Basic和Delphi等。
3 系統(tǒng)的軟件設(shè)計(jì)
電纜測試系統(tǒng)軟件設(shè)計(jì)是在Windows系統(tǒng)下基于GUC-300-ESV控制器進(jìn)行開發(fā)設(shè)計(jì)的,軟件設(shè)計(jì)主要包括兩個部分:一是可視化編程部分;另一個是代碼編程部分。可視化編程部分利用VS2008提供的強(qiáng)大軟件開發(fā)工具向?qū)?,不需要手工編寫代碼,只要根據(jù)自己的設(shè)計(jì)思想,用鼠標(biāo)或鍵盤進(jìn)行操作即可。與采用代碼編寫相比,用可視化編程部分進(jìn)行Window風(fēng)格的圖形用戶界面和各種控件的制作,將更加簡單方便。代碼編寫部分采用VS2008提供的文本編輯器,用面向?qū)ο蟮腣C++語言進(jìn)行編寫。
3.1 主機(jī)與運(yùn)動控制器通信的建立
使用運(yùn)動控制器開發(fā)應(yīng)用程序之前,先安裝驅(qū)動程序,并把運(yùn)動控制器自帶的動態(tài)鏈接庫ges.dll、頭文件ges.h以及ges.lib文件復(fù)制到工程文件夾里,在VS2008編譯器中對ges.lib文件進(jìn)行鏈接設(shè)置后,并在應(yīng)用程序文件中加入函數(shù)庫的頭文件的聲明,至此,就可以使用動態(tài)鏈接庫中的所有函數(shù)編寫應(yīng)用程序了[2]。
在安裝完驅(qū)動后,用控制器自帶軟件檢測主機(jī)是否與控制器建立聯(lián)系,自帶軟件運(yùn)行界面如圖3所示。若演示程序能正常工作,說明控制器通信正常,只有通信正常,才可以進(jìn)行系統(tǒng)的操作,否則需找出問題后,重新檢測。
3.2 可視化控制界面的設(shè)計(jì)
可視化控制界面的設(shè)計(jì)不僅要滿足控制要求,同時還要友好美觀。電纜測試平臺主控制界面及參數(shù)設(shè)置界面運(yùn)行結(jié)果分別如圖4、圖5所示。
主控制界面主要包括兩個部分:一部分負(fù)責(zé)實(shí)時顯示控制狀態(tài);另一部分是控制按鈕??刂茽顟B(tài)顯示包括顯示控制器初始化是否成功、測試工作臺是否回零,實(shí)時顯示往復(fù)運(yùn)動循環(huán)次數(shù)、工作臺運(yùn)行的規(guī)劃位置、實(shí)際位置以及運(yùn)行速度,主界面中間的I/O口狀態(tài)的顯示實(shí)時反映電纜在運(yùn)動過程中是否出現(xiàn)短路、斷路等情況;控制按鈕主要完成運(yùn)動控制的開始、停止、運(yùn)動控制的參數(shù)設(shè)置以及運(yùn)動方式的選擇等。
參數(shù)設(shè)置界面主要由軸運(yùn)動參數(shù)設(shè)置和控制器I/O口信號輸出選擇設(shè)置兩部分組成。軸運(yùn)動參數(shù)設(shè)置主要完成工作臺運(yùn)動速度、運(yùn)動方式(勻速或變速)以及往復(fù)運(yùn)動次數(shù)的設(shè)置;通過對I/O信號輸出口選擇設(shè)置,結(jié)合主控制界面I/O口狀態(tài)指示燈的顯示,可以判斷電纜是否出現(xiàn)短路、斷路等情況。
3.3 程序內(nèi)部代碼的編寫
打開Microsoft Visual Studio 2008軟件,選擇新建一個基于對話框的MFC應(yīng)用程序類型的項(xiàng)目,接著對對話框資源視圖添加一些控件,建立友好控制界面,最后對程序內(nèi)部手動編寫相應(yīng)的運(yùn)動控制代碼[3-6],總體程序編寫流程圖如圖6所示。
在OnInitDialog函數(shù)中,先對控制界面的大小、顯示的位置、界面字體和菜單按鈕進(jìn)行了初始化。檢測控制卡是否打開,調(diào)用運(yùn)動控制器函數(shù)庫中的GT_Open、GT_Reset函數(shù)對運(yùn)動控制器初始化并對專用信號參數(shù)進(jìn)行設(shè)置。部分初始化程序如下。
short CWireTestPlatformDlg::InitCard()
{
short rtn=0;
short lmtsns=0xffff;
short homesns=0x00ff;
rtn+=GT_Open(0xffff); //打開運(yùn)動控制器
Sleep(200);
rtn+=GT_Reset(); //復(fù)位運(yùn)動控制器
rtn+=GT_AlarmOff(1);
rtn+=GT_AlarmOn(2); //驅(qū)動使能
rtn+=GT_AlarmOff(3);
rtn+=GT_ClrSts(1);//清除控制軸1的狀態(tài)
rtn+=GT_ClrSts(2); //清除控制軸2的狀態(tài)
rtn+=GT_ClrSts(3); //清除控制軸3的狀態(tài)
rtn+=GT_LmtSns(lmtsns);
//設(shè)置控制軸限位開關(guān)的觸發(fā)電平
rtn+=GT_HomeSns(homesns);
//設(shè)置運(yùn)動控制器軸Home信號的觸發(fā)沿
return rtn;
}
將運(yùn)動中電纜兩端接在控制器通用數(shù)字I/O口上,形成閉合回路,在參數(shù)設(shè)置界面中設(shè)置輸出口, 使控制器相應(yīng)I/O口向與之相連的電纜輸出電平信號,并檢測是否有返回信號,通過主控制界面的I/O口指示燈的亮滅來判斷電纜在運(yùn)行中是否出現(xiàn)斷路、短路等情況。在程序中分別調(diào)用控制器函數(shù)庫中GT_ExInpt、GT_ExOpt函數(shù)讀取16路通用數(shù)字I/O輸入的電平狀態(tài)和設(shè)置16路通用數(shù)字I/O輸出的電平狀態(tài)來實(shí)現(xiàn)電纜通斷檢測。通斷測試流程如圖7所示。
實(shí)時更新I/O狀態(tài)程序如下。
GT_ExInpt(&m_Inputvalue);
//讀取路通用數(shù)字I/O輸入的電平狀態(tài)
if(!(m_Inputvalue &(1<<3)))
m_Outputvalue=m_Outputvalue &(~(1<<6));
GT_ExOpt(m_Outputvalue);
//設(shè)置通用數(shù)字I/O的輸出信號
主控界面指示燈顯示I/O狀態(tài)部分程序如下:
……
for(int i=0;i<16;i++)
{
if(m_Inputvalue &(1<<i))
//輸入信號無效指示燈不亮
m_InLed[i].SetIcon(IDI_GREEN_NO,CSize(24,24),0,0);
else
//輸入信號有效指示燈亮
m_InLed[i].SetIcon(IDI_GREEN_YES,CSize(24,24),0,0);
}
……
for(int i=0;i<16;i++)
{
if(m_Outputvalue &(1<<i))
//輸出信號無效指示燈不亮
m_OutLed[i].SetIcon(IDI_GREEN_NO,CSize(24,24),0,0);
else
//輸出信號有效指示燈亮
m_OutLed[i].SetIcon(IDI_GREEN_YES,CSize(24,24),0,0);
}
……
基于VC和GUC-300-ESV運(yùn)動控制器建立的電纜測試平臺,界面美觀實(shí)用、操作簡單,編寫測試實(shí)驗(yàn)程序,模擬機(jī)床在各種工況下運(yùn)行:勻速運(yùn)動、變加、減速運(yùn)動、快速定位運(yùn)動等,并對電纜進(jìn)行檢測,實(shí)時顯示電纜的通斷情況。電纜測試平臺還可對氣管、油管的可靠性進(jìn)行檢測,具有廣泛的應(yīng)用領(lǐng)域。
參考文獻(xiàn)
[1] 孫鑫,余安萍.VC++深入詳解[M].北京:電子工業(yè)出版社,2007.
[2] 侯俊杰.深入淺出MFC(第2版)[M].武漢:華中科技大學(xué)出版社,2001.
[3] 謝莉.VC++動態(tài)鏈接庫的開發(fā)及調(diào)用[J].微型機(jī)與應(yīng)用,2001,20(9):10-12.
[4] 深圳固高科技有限公司.GE系列運(yùn)動控制器編程手冊[Z].2009.
[5] 深圳固高科技有限公司.GE系列運(yùn)動控制器用戶手冊[Z].2009.
[6] 高煊,何廣平.基于VC++的四軸運(yùn)動控制卡軟件系統(tǒng)開發(fā)研究[J].制造技術(shù)與機(jī)床,2009(6):24-28.
[7] 范寶德,劉驚雷.基于VC的多線程編程技術(shù)及其實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,2002,21(7):10-12.