化雪薈
(佛山職業(yè)技術(shù)學(xué)院,廣東佛山 528000)
國內(nèi)外自動測試系統(tǒng)在軍事領(lǐng)域中有廣泛的應(yīng)用,但是在民用方面上相對應(yīng)用較少,自動檢測系統(tǒng)在工業(yè)上應(yīng)用非常廣泛,對工業(yè)產(chǎn)品的開發(fā)、檢測、工藝的改進(jìn)都有極大的促進(jìn)作用。在民用自動測試系統(tǒng)模塊主要有ADC采樣、伺服電機(jī)驅(qū)動相關(guān)參數(shù)的測量、光電隔離繼電器輸出控制接口、視頻檢測等模塊。本文主要集中討論多路伺服電機(jī)的控制模塊的開發(fā)和應(yīng)用,在理論研究的基礎(chǔ)上,采用DSP控制芯片實現(xiàn)了10路松下A6交流伺服電機(jī)控制,給出了控制系統(tǒng)結(jié)構(gòu)圖,部分電路原理圖和軟件部分的控制策略,最后完成控制系統(tǒng)的設(shè)計,并在某企業(yè)的智能窗簾導(dǎo)軌與機(jī)頭壽命測試系統(tǒng)中應(yīng)用,證實了該控制系統(tǒng)的有效性[1-4]。
10路伺服電機(jī)系統(tǒng)采用測速環(huán)、位置環(huán)、轉(zhuǎn)矩環(huán)三環(huán)控制,其中位置環(huán)的給出信號為測速環(huán)給入信號,測速環(huán)給出信號為轉(zhuǎn)矩環(huán)給入信號,系統(tǒng)控制圖如圖1 所示。系統(tǒng)采用魯棒PID控制對外部干擾進(jìn)行補(bǔ)償,提高動態(tài)性能,消除波動,同時消除電機(jī)定位時出現(xiàn)的振蕩現(xiàn)象[5-6]。
圖1 控制系統(tǒng)圖
10路伺服電機(jī)控制系統(tǒng)包括主控芯片、USB 模塊、總線模塊、伺服驅(qū)動、PWM 輸出、DAC 模塊、ADC 模塊、電源模塊等內(nèi)容。
(1)DSP控制模塊
DSP芯片采用的TMS320F28379D是32 位浮點(diǎn)微控制器單元,芯片為新型雙核架構(gòu),每個內(nèi)核頻率為200 MHz,F(xiàn)lash存儲1 MB,有4個模數(shù)轉(zhuǎn)換器(ADC),可控制24 個外部通道,8個數(shù)模轉(zhuǎn)換器(DAC);增強(qiáng)型控制外設(shè),24 條PWM通道,6個eCAP 模塊,3 個eQEP 模塊;并有標(biāo)準(zhǔn)SDFM 數(shù)據(jù)濾波器;通信采用USB2.0模式。DSP控制系統(tǒng)圖如圖2所示。
(2)IO總線擴(kuò)展模塊
TCA6424是低壓24位I2C和帶中斷輸出復(fù)位和配置寄存器的SMbus I/O擴(kuò)展器。ADG3308是一款雙向電平轉(zhuǎn)換器,內(nèi)置8個雙向通道,器件的內(nèi)部結(jié)構(gòu)允許執(zhí)行雙向電平轉(zhuǎn)換,可用于多電壓數(shù)字系統(tǒng)。在本系統(tǒng)中主要作用是DSP控制器與高壓器件之間的數(shù)據(jù)傳輸。IO總線擴(kuò)展原理圖如圖3所示。
伺服電機(jī)(servo motor)是一種應(yīng)用于運(yùn)動控制系統(tǒng)種的控制電機(jī),它的輸出參數(shù)為位置、速度、加速度或轉(zhuǎn)矩等。伺服電機(jī)可使控制速度、位置精度非常準(zhǔn)確,可以將電壓信號轉(zhuǎn)化為轉(zhuǎn)矩和轉(zhuǎn)速以驅(qū)動控制對象。伺服電機(jī)轉(zhuǎn)子轉(zhuǎn)速受輸入信號控制,并能快速反應(yīng),在自動控制系統(tǒng)中,用作執(zhí)行元件,且具有機(jī)電時間常數(shù)小、線性度高、始動電壓等特性,可把所收到的電信號轉(zhuǎn)換成電動機(jī)軸上的角位移或角速度輸出。伺服電機(jī)現(xiàn)在基本上分無刷直流和交流伺服兩種,本文伺服電機(jī)型采用松下A6MBDLT25SF型號,這個型號電機(jī)的驅(qū)動波形是無刷直流電機(jī),是梯形波,無刷直流電機(jī)也可以叫永磁無刷同步電機(jī)。輸入電壓200 ~240 V,功率0.4 kW,最大電流值20 A,頻率250 Hz,最大通信16 000次/s,轉(zhuǎn)速3 000 r/min,轉(zhuǎn)矩1.27 N,驅(qū)動器速度響應(yīng)性3.2 kHz,電機(jī)絕對編碼器精度23 bit(8/Mp/r),通信周期最快為0.062 5 ms,具有高精度位置比較和無限運(yùn)轉(zhuǎn)絕對式功能[7-8]。松下A6 伺服電機(jī)機(jī)械特性曲線如圖4所示。
圖2 DSP控制系統(tǒng)圖
圖3 IO總線擴(kuò)展原理圖
圖4 松下A6 伺服電機(jī)機(jī)械特性曲線
多核DSP下位機(jī)啟動后首先進(jìn)行DSP多核初始化,然后進(jìn)行盤內(nèi)資源(如定時器、PWM、CAP 等功能模塊)初始化。驅(qū)動網(wǎng)絡(luò)模塊,初始化擴(kuò)展功能模塊(電機(jī)控制、功率檢測、ADC采樣等)。然后進(jìn)行授權(quán)控制并進(jìn)入系統(tǒng)任務(wù)對各項應(yīng)用進(jìn)行調(diào)度[9-11]。數(shù)據(jù)發(fā)送需要經(jīng)過數(shù)據(jù)封裝、數(shù)據(jù)加密、然后發(fā)送出去。數(shù)據(jù)接收需要進(jìn)行數(shù)據(jù)解密,數(shù)據(jù)解析,然后根據(jù)解析的內(nèi)容進(jìn)行相應(yīng)的控制或功能。
軟件根據(jù)上位機(jī)發(fā)來的指令(數(shù)據(jù)解析得到)進(jìn)行多核處理,實現(xiàn)高速高效的實時控制,如圖5所示。
圖5 軟件設(shè)計流程
部分程序如下:
void Widget::setDcDataSlot ()
{
int i,j;
int dval;
int index;
int vmin,vmax;
/ / 數(shù)據(jù)濾波
index = 0;
if(usb.dcCnt < 3)
{
/ / 均值濾波
if (usb.dcCnt)
{
for (i =0;i < 14;i+ = usb.dcCnt)
{
dval = 0;
for (j =0;j < usb.dcCnt;j++ )
{
dval + = usb.dcBuf [j][i];
}
usb.dcResBuf[index]= (((double)
(dval))/usb.dcCnt)*3*dcScaleDef
[index]/4096;
index++;
}
usb.rxSize = index;
}
}
else
{
/ / 去毛刺+均值濾波
for (i =0;i < 14;i++)
{
dval = usb.dcBuf [0][i];
vmin = usb.dcBuf [0][i];
vmax = usb.dcBuf [0][i];
for (j =1;j < usb.dcCnt;j++ )
{
if (vmin > usb.dcBuf [j][i])
vmin = usb.dcBuf [j][i];
if (vmax < usb.dcBuf [j][i])
vmax = usb.dcBuf [j][i];
dval + = usb.dcBuf [j][i];
}
usb.dcResBuf[i]= (((double)(dval-vmin
-vmax))/(usb.dcCnt-2))*3*dcScaleDef
[i]/4096;
}
}
this- >test.dcFlag = 1;
}
由于數(shù)據(jù)傳輸量大,USB 通信采用BULK 模式,網(wǎng)絡(luò)通信采用UDP傳輸,這些通信模式都是無校驗的通信。為了保證數(shù)據(jù)傳輸過程中的可靠性以及正確性,通過數(shù)據(jù)傳輸協(xié)議來進(jìn)行數(shù)據(jù)的傳輸以及校驗。
(1)通訊模式
USB通訊采用標(biāo)準(zhǔn)協(xié)議USB2.0,通訊模式采用BULK模式以方便大量數(shù)據(jù)傳輸。網(wǎng)絡(luò)傳輸采用TCP/IP 以太網(wǎng)協(xié)議,數(shù)據(jù)通訊采用UDP傳輸以方便大量數(shù)據(jù)快速傳輸。
(2)數(shù)據(jù)傳輸協(xié)議
由于上位機(jī)和下位機(jī)傳輸?shù)臄?shù)據(jù)具有不同的用途,為了區(qū)分?jǐn)?shù)據(jù)的具體用途和控制數(shù)據(jù)的可靠傳輸,制定數(shù)據(jù)傳輸協(xié)議[12-13]。
報文格式:報文頭+報文內(nèi)容+校驗和;報文頭:數(shù)據(jù)收發(fā)的第1 ~6字節(jié),固定格式和長度。格式如下:
【Command】+ 【status】+ 【packageCnt】+ 【size】
【Command】為指令碼,數(shù)據(jù)第1 字節(jié),指定數(shù)據(jù)用途;【Status】為狀態(tài),數(shù)據(jù)第2 字節(jié),標(biāo)記當(dāng)前數(shù)據(jù)傳輸狀態(tài),用于控制傳輸以及數(shù)據(jù)校驗和應(yīng)答,接收端根據(jù)此狀態(tài)進(jìn)行控制數(shù)據(jù)的重發(fā)、判斷數(shù)據(jù)是否傳輸完成等操作;【packageCnt】為數(shù)據(jù)包計數(shù),數(shù)據(jù)第3 ~4 字節(jié),傳輸大數(shù)據(jù)時用于數(shù)據(jù)索引,應(yīng)用程序可以根據(jù)此索引按順序還原數(shù)據(jù);【size】為數(shù)據(jù)長度,數(shù)據(jù)第5 ~6字節(jié),不包含前6 字節(jié)和最后字節(jié)的數(shù)據(jù)長度。
報文內(nèi)容:【Content】為報文內(nèi)容,數(shù)據(jù)第7 ~63(網(wǎng)絡(luò)傳輸7 ~1455)字節(jié),二進(jìn)制編碼數(shù)據(jù)。
校驗和:【checksum】,報文內(nèi)容【Content】最后一個字節(jié)的下一個字節(jié),數(shù)據(jù)傳輸?shù)男r灪?,用于校驗?shù)據(jù)傳輸是否正確。
報文封裝如下:
【Command】 + 【status】 + 【packageCnt】 + 【size】 +【Content】+ 【checksum】
報文傳輸長度:6 +size+1。
(3)數(shù)據(jù)加密解密
考慮到數(shù)據(jù)的安全問題,主控器(PC 上位機(jī))與實時測控器(多核DSP下位機(jī))的數(shù)據(jù)傳輸采用密文形式傳輸。需要傳輸?shù)臄?shù)據(jù),經(jīng)過加密算法進(jìn)行加密,之后將加密的數(shù)據(jù)進(jìn)行封裝發(fā)送。當(dāng)接收到數(shù)據(jù)時,經(jīng)過解密算法進(jìn)行解密,然后進(jìn)行數(shù)據(jù)解析,根據(jù)解析的內(nèi)容進(jìn)行相應(yīng)的操作。
(4)數(shù)據(jù)封裝和解析
數(shù)據(jù)封裝:經(jīng)過加密的數(shù)據(jù),通過數(shù)據(jù)封裝將數(shù)據(jù)轉(zhuǎn)換成數(shù)據(jù)傳輸協(xié)議的報文格式進(jìn)行發(fā)送。數(shù)據(jù)解析:經(jīng)過解密的接受數(shù)據(jù),通過數(shù)據(jù)解析進(jìn)行數(shù)據(jù)管理,根據(jù)解析內(nèi)容實現(xiàn)各種操作和功能。
(5)系統(tǒng)授權(quán)
為了控制系統(tǒng)軟件的版權(quán)問題以及控制系統(tǒng)使用時間,采用授權(quán)文件的方式進(jìn)行授權(quán)管理。授權(quán)文件通過3 層授權(quán)算法生成,實現(xiàn)系統(tǒng)軟件授權(quán)管理。第一層授權(quán)算法,采集PC電腦CPU、硬盤、主板的序列號,采集DSP 芯片的UID以及掛接的各模塊的ID以及控制時間等信息進(jìn)行數(shù)據(jù)變換生成第一層密文。第二層授權(quán)算法,將第一層密文進(jìn)行隨機(jī)分布算法打亂,然后進(jìn)行第二層數(shù)據(jù)變換形成第二層密文。第三層授權(quán)算法,將第二層密文進(jìn)行MD5轉(zhuǎn)換,轉(zhuǎn)換后的數(shù)據(jù)再次進(jìn)行隨機(jī)分布算法打亂,生成第三層密文并生成授權(quán)文件。
圖6 已產(chǎn)業(yè)化的某款智能窗簾機(jī)頭壽命測試系統(tǒng)參數(shù)設(shè)置
本系統(tǒng)作為全自動檢測裝置的前期階段,實現(xiàn)了穩(wěn)定的控制10路伺服電機(jī),并對控制系統(tǒng)進(jìn)行了模塊化設(shè)計,后期會繼續(xù)開發(fā)視頻檢測等功能模塊。如圖6 所示,目前該系統(tǒng)已經(jīng)應(yīng)用于某企業(yè)開發(fā)的智能窗簾導(dǎo)軌與機(jī)頭壽命測試中,能動態(tài)呈現(xiàn)導(dǎo)軌和窗簾機(jī)頭的工作過程,信息顯示區(qū)實時顯示產(chǎn)品運(yùn)行時間、運(yùn)行次數(shù)、機(jī)頭開合次數(shù)、測試時間內(nèi)異常次數(shù)等數(shù)據(jù),并智能統(tǒng)計異常點(diǎn)電機(jī)的電壓、電流、功率、功率因數(shù)、距離、速度等參數(shù),為工作人員進(jìn)行故障分析提供數(shù)據(jù)。