李 俠,張志龍,段美珠,劉 嘉
(北京工業(yè)大學(xué) 機(jī)電學(xué)院,北京 100124)
數(shù)字化爆機(jī)USB接口設(shè)計(jì)
李 俠,張志龍,段美珠,劉 嘉
(北京工業(yè)大學(xué) 機(jī)電學(xué)院,北京 100124)
針對(duì)數(shù)字化焊機(jī)的特點(diǎn)及發(fā)展趨勢(shì),設(shè)計(jì)了由USB總線傳輸層和焊機(jī)信息交互層構(gòu)成的兩層傳輸框架,同時(shí)以U盤作為信息交互的載體。USB總線傳輸層按照USB2.0協(xié)議搭建,實(shí)現(xiàn)U盤和USB橋接芯片的通信。信息交互層按照自己制定的協(xié)議實(shí)現(xiàn)上位機(jī)同焊機(jī)的通信。
USB總線;U盤驅(qū)動(dòng);信息交互
數(shù)字化焊機(jī)具有諸多優(yōu)勢(shì),如適應(yīng)性強(qiáng)、便于升級(jí)、穩(wěn)定性好等。利用高速、高精度數(shù)字信號(hào)處理技術(shù),可以只通過(guò)軟件設(shè)計(jì)來(lái)實(shí)現(xiàn)對(duì)焊機(jī)功能的改進(jìn),可以大大提高焊機(jī)的使用壽命和使用范圍[1]。針對(duì)數(shù)字化焊機(jī)的特點(diǎn),當(dāng)今發(fā)達(dá)國(guó)家的焊機(jī)制造商大都為焊機(jī)添加了信息交互系統(tǒng)。該系統(tǒng)多用于與計(jì)算機(jī)進(jìn)行通信、下載更新焊接程序以及把焊接過(guò)程中的參數(shù)傳遞給計(jì)算機(jī)。
通過(guò)直接或者間接的方式同計(jì)算機(jī)進(jìn)行信息交互逐漸成為了數(shù)字化焊機(jī)的發(fā)展趨勢(shì)。在此設(shè)計(jì)了一套基于USB技術(shù)的信息交互系統(tǒng),該系統(tǒng)分為USB事務(wù)傳輸層和焊機(jī)信息交互層。通過(guò)兩層傳輸框架,使上位機(jī)控制焊機(jī)的各種焊接參數(shù)并接收焊機(jī)傳來(lái)的數(shù)據(jù)。由于U盤具有諸多優(yōu)勢(shì):如傳輸速度快、系統(tǒng)支持性好、支持熱插拔、接口標(biāo)準(zhǔn)統(tǒng)一、攜帶方便等。所以采用U盤作為信息交互的載體,來(lái)實(shí)現(xiàn)計(jì)算機(jī)和焊機(jī)的通信。
系統(tǒng)由USB事務(wù)傳輸層和焊機(jī)信息交互層構(gòu)成。USB事務(wù)傳輸層處理U盤和USB橋接芯片之間的通信。信息交互層按照自己制定的協(xié)議處理上位機(jī)和焊機(jī)主控芯片之間的通信。總體方案如圖1所示。

圖1 總體方案框圖
上位機(jī)按照信息交互層的協(xié)議編寫焊機(jī)指令并通過(guò)USB總線保存到U盤;U盤和USB橋接芯片CY7C67300按照USB總線協(xié)議通信,構(gòu)成了USB事務(wù)傳輸層,一方面把上位機(jī)編寫的指令傳輸給焊機(jī),另一方面負(fù)責(zé)接收焊機(jī)傳來(lái)的各種焊接參數(shù);焊機(jī)主控芯片負(fù)責(zé)接收并處理焊機(jī)指令,根據(jù)指令的要求傳回焊接參數(shù)。
1.1 USB總線協(xié)議簡(jiǎn)介
USB底層傳輸?shù)淖罨締挝皇侨N包,分別是令牌包、數(shù)據(jù)包和握手包。利用這三種包就可以構(gòu)成USB傳輸事務(wù),對(duì)于全速USB設(shè)備來(lái)說(shuō)傳輸事務(wù)主要有SETUP事務(wù)、DATA IN事務(wù)、DATA OUT事務(wù)[2]。令牌包由主機(jī)發(fā)送給從機(jī),告訴從機(jī)本次傳輸是哪種事務(wù);數(shù)據(jù)包用來(lái)傳輸具體的數(shù)據(jù),方向要根據(jù)事務(wù)類型來(lái)決定,例如在DATA IN事務(wù)中,從機(jī)會(huì)把主機(jī)要求的數(shù)據(jù)放在數(shù)據(jù)包中并傳給主機(jī);握手包和數(shù)據(jù)包的傳輸方向相反,用來(lái)告訴對(duì)方本次傳輸是否成功。USB傳輸有四種傳輸方式,分別是控制傳輸、中斷傳輸、批量傳輸和等時(shí)傳輸。每種傳輸方式都是由之前提到的三種傳輸事務(wù)構(gòu)成。
USB協(xié)議除了定義底層傳輸協(xié)議外,還規(guī)定了若干種設(shè)備類規(guī)范,如人機(jī)接口設(shè)備(HID)、大容量存儲(chǔ)設(shè)備(MSC)、音頻設(shè)備、通信設(shè)備等,每個(gè)設(shè)備類規(guī)范還包括若干個(gè)子規(guī)范,在USB驅(qū)動(dòng)層就是要按照這些設(shè)備類規(guī)范來(lái)編寫。如U盤就屬于大容量存儲(chǔ)設(shè)備,所以要按照MSC設(shè)備類規(guī)范來(lái)編寫。
MSC設(shè)備類協(xié)議主要由四個(gè)子協(xié)議組成:(1) CBI傳輸協(xié)議。該協(xié)議規(guī)定USB主機(jī)可以采用批量傳輸、中斷傳輸、控制傳輸同從機(jī)通信;(2)BULK-ONLY傳輸協(xié)議(BOT)。該協(xié)議規(guī)定從機(jī)和主機(jī)采用批量傳輸?shù)姆绞竭M(jìn)行通信;(3)適用于硬盤的ATA命令集和適用于USB移動(dòng)存儲(chǔ)設(shè)備的UFI命令集。在編寫U盤驅(qū)動(dòng)程序時(shí)需要遵守BOT協(xié)議和UFI命令集。
1.2 USB傳輸層設(shè)計(jì)
由于利用U盤作為數(shù)據(jù)傳輸?shù)妮d體,而U盤屬于MSC設(shè)備,所以采用以USB總線驅(qū)動(dòng)層、MSC設(shè)備類驅(qū)動(dòng)層、UFI命令層、FAT文件系統(tǒng)層為框架的傳輸方式[3]。USB傳輸層結(jié)構(gòu)如圖2所示。

圖2 USB傳輸層結(jié)構(gòu)
文件系統(tǒng)層負(fù)責(zé)文件級(jí)的操作,包括在U盤中尋找指定的文件以及向文件中寫入、讀取數(shù)據(jù)等多個(gè)函數(shù),通過(guò)調(diào)用UFI命令來(lái)實(shí)現(xiàn)。UFI命令層利用Read10、Write10等UFI命令對(duì)U盤指定地址進(jìn)行讀寫,從而實(shí)現(xiàn)尋找指定文件的首簇、建立該文件的簇鏈等功能[4]。在MSC驅(qū)動(dòng)層按照MSC設(shè)備類規(guī)范把需要傳輸?shù)拿詈蛿?shù)據(jù)打包,按照BOT協(xié)議來(lái)傳輸。USB總線驅(qū)動(dòng)層按照批量傳輸?shù)姆绞胶蚒盤進(jìn)行傳輸,把打包好的命令或數(shù)據(jù)放到USB總線上傳給U盤的硬件接口層。U盤對(duì)總線傳來(lái)的數(shù)據(jù)進(jìn)行處理并對(duì)FLASH存儲(chǔ)區(qū)進(jìn)行操作。
下面以橋接芯片從U盤讀取數(shù)據(jù)為例說(shuō)明U盤和USB橋接芯片之間的數(shù)據(jù)傳輸過(guò)程。當(dāng)橋接芯片檢測(cè)到U盤連接后,會(huì)調(diào)用文件系統(tǒng)層的函數(shù)find_file()尋找文件“data.txt”的首簇并建立該文件的簇鏈,通過(guò)首簇確定該文件的起始扇區(qū)號(hào),然后調(diào)用read_file()以扇區(qū)為單位讀取文件,在read_file()中按照MSC設(shè)備類協(xié)議,將UFI命令放到USB總線上傳輸,U盤接到命令后會(huì)將指定扇區(qū)的內(nèi)容放到總線上回傳給橋接芯片,這樣就實(shí)現(xiàn)了數(shù)據(jù)的讀取。
1.3 信息交互層協(xié)議制定
在信息交互層中,上位機(jī)通過(guò)若干條指令來(lái)實(shí)現(xiàn)對(duì)焊機(jī)的控制,每一條指令通過(guò)一定的協(xié)議格式來(lái)編寫。具體來(lái)說(shuō)每條完整的指令都是由五個(gè)字節(jié)組成的,包括指令編號(hào)、指令序號(hào)、指令參數(shù)三部分,指令編號(hào)和序號(hào)各占一個(gè)字節(jié)。參數(shù)占三個(gè)字節(jié),每個(gè)字節(jié)保存一個(gè)參數(shù)。對(duì)于一次指令傳輸來(lái)說(shuō),除了由若干條指令構(gòu)成的指令序列,還需要在傳輸?shù)牡谝粋€(gè)字節(jié)內(nèi)寫入本次傳輸?shù)目傋止?jié)數(shù)。例如一個(gè)要發(fā)送兩條指令的傳輸,那么該次傳輸?shù)氖鬃止?jié)就要寫入11,代表一共要傳輸11個(gè)字節(jié),如圖3所示。
序號(hào)的作用是指定這些指令的執(zhí)行順序,在焊機(jī)主程序接到這組數(shù)據(jù)后會(huì)調(diào)用相關(guān)函數(shù),使這些指令按照序號(hào)從小到大的順序依次執(zhí)行。指令編號(hào)由一個(gè)字節(jié)組成,所以最多可以指示256條指令,每條指令實(shí)際上就對(duì)應(yīng)著焊機(jī)主程序中的一個(gè)響應(yīng)函數(shù)。參數(shù)1到參數(shù)3就作為這個(gè)函數(shù)的參數(shù)。
1.4 信息交互層設(shè)計(jì)
在信息交互層中,上位機(jī)按照制定的協(xié)議格式編寫焊機(jī)指令,焊機(jī)主控芯片接到指令后調(diào)用響應(yīng)函數(shù)調(diào)整焊接主程序的各項(xiàng)參數(shù),進(jìn)而改善焊接工藝;也可以通過(guò)指令使焊機(jī)的主控芯片將采集的電流、電壓等參數(shù)傳遞給上位機(jī),從而實(shí)現(xiàn)信息交互。

圖3 信息交互層協(xié)議
上位機(jī)采用VB編寫,通過(guò)上位機(jī)界面選擇要傳輸?shù)闹噶钜约霸撝噶畹男蛱?hào)和參數(shù)。這些數(shù)據(jù)會(huì)按照焊機(jī)指令協(xié)議的格式進(jìn)行編排并存放到U盤指定文件中。上位機(jī)界面如圖4所示。

圖4 上位機(jī)界面
上位機(jī)中每一個(gè)指令名都對(duì)應(yīng)著一個(gè)指令編號(hào),焊機(jī)主程序會(huì)根據(jù)這個(gè)編號(hào)調(diào)用對(duì)應(yīng)的響應(yīng)函數(shù),實(shí)際上界面上的指令名就是響應(yīng)函數(shù)的函數(shù)名。例如在界面中選擇led0指令,那么主程序中就會(huì)調(diào)用led0()。fun數(shù)組的每一個(gè)元素都保存著一個(gè)響應(yīng)函數(shù)的入口地址,而該數(shù)組元素的腳標(biāo)就對(duì)應(yīng)著焊機(jī)指令的編號(hào)。本系統(tǒng)就是以這個(gè)指針數(shù)組為橋梁來(lái)實(shí)現(xiàn)焊機(jī)指令與響應(yīng)函數(shù)的對(duì)應(yīng)關(guān)系。
XC164從SPI總線上收到這些指令后會(huì)引發(fā)中斷,進(jìn)入中斷服務(wù)子程序,將指令序列存入cmd_idx數(shù)組中,然后返回主程序。在主程序中調(diào)用函數(shù)按照信息交互層協(xié)議的格式對(duì)指令序列進(jìn)行處理,并按照指令序號(hào)從小到大的順序執(zhí)行每條指令對(duì)應(yīng)的響應(yīng)函數(shù)。處理過(guò)程如圖5所示。

圖5 下位機(jī)處理指令
具體的函數(shù)處理過(guò)程要依靠指向整型變量的指針數(shù)組inter來(lái)完成。該數(shù)組中的元素保存著指令序號(hào)字段的地址,然后以序號(hào)從小到大為順序?qū)?shù)組中的元素進(jìn)行排序。排序之后inter[0]即指向最小的那個(gè)序號(hào),(inter[0]-1)就指向該序號(hào)對(duì)應(yīng)的指令編號(hào),由此可以實(shí)現(xiàn)按序號(hào)從小到大的順序執(zhí)行響應(yīng)函數(shù)。通過(guò)這些響應(yīng)函數(shù)就可以調(diào)整焊接主程序的各項(xiàng)參數(shù)或者將采集到的電流、電壓等參數(shù)傳遞給上位機(jī),從而實(shí)現(xiàn)信息交互。
2.1 上位機(jī)指令輸出測(cè)試
通過(guò)上位機(jī)輸出指令控制XC164的PWM0通道占空比來(lái)測(cè)試焊機(jī)指令是否能通過(guò)系統(tǒng)進(jìn)行傳輸。PWM模塊頻率為4 kHz,輸出指令前PWM0占空比為80%,如圖6所示。

圖6 執(zhí)行指令前的PWM波形
通過(guò)上位機(jī)向U盤寫入指令:0x06 0x03 0x00 0x32 0x00 0x00。從這些數(shù)據(jù)可以看出,本次傳輸共6個(gè)字節(jié),指令編號(hào)為3,指令序號(hào)為0,對(duì)應(yīng)著響應(yīng)函數(shù)PWM0(),參數(shù)1的值為50,在該參數(shù)下響應(yīng)函數(shù)會(huì)將PWM0通道的占空比調(diào)整為60%,如圖7所示。

圖7 執(zhí)行指令后的PWM波形
2.2 焊機(jī)數(shù)據(jù)回傳測(cè)試
測(cè)試通過(guò)焊機(jī)將A/D模塊采集到的正弦波轉(zhuǎn)換成二進(jìn)制數(shù)保存在U盤中,上位機(jī)再將U盤中的數(shù)據(jù)轉(zhuǎn)換成對(duì)應(yīng)的電壓數(shù)值,以此來(lái)測(cè)試系統(tǒng)是否能正確接收焊機(jī)返回的數(shù)據(jù)。正弦波由信號(hào)發(fā)生器產(chǎn)生,頻率為100 Hz,幅值2 V,如圖8所示。

圖8 信號(hào)發(fā)生器產(chǎn)生的正弦波形
圖9為上位機(jī)讀取U盤數(shù)據(jù)并轉(zhuǎn)換成電壓后的波形,右側(cè)為一個(gè)周期所采集到的數(shù)據(jù),XC164的采樣頻率為1 kHz,可以看出正弦波通過(guò)本系統(tǒng)傳輸后能夠在上位機(jī)中正確顯示。

圖9 上位機(jī)轉(zhuǎn)換后的波形
通過(guò)以上兩個(gè)測(cè)試可以證明本系統(tǒng)的傳輸方案設(shè)計(jì)是合理的,能夠?qū)崿F(xiàn)上位機(jī)同焊機(jī)的雙向信息交互。
本系統(tǒng)將USB總線技術(shù)應(yīng)用到數(shù)字化焊機(jī)中,以U盤為載體,兩層傳輸協(xié)議為框架,通過(guò)制定信息交互層協(xié)議實(shí)現(xiàn)了上位機(jī)和焊機(jī)之間的信息交互。USB技術(shù)同數(shù)字化焊機(jī)的結(jié)合一方面擴(kuò)展了USB的應(yīng)用范圍,另一方面也為數(shù)字化焊機(jī)在遠(yuǎn)程升級(jí)、優(yōu)化焊接工藝、質(zhì)量監(jiān)控等方面提供了有力的支持。
[1]劉 嘉,殷樹言,丁京柱.數(shù)字化焊機(jī)及其特點(diǎn)[J].電焊機(jī),2001,31(6):8-10,16.
[2]李英偉.USB2.0原理與工程開發(fā)[M].北京:國(guó)防工業(yè)出版社,2007.
[3]周 東,王立德,劉 彪,等.基于DSP的USB海量存儲(chǔ)設(shè)備的設(shè)計(jì)及實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2009.25(2-2):146-148.
[4]宋群生,宋亞瓊.硬盤扇區(qū)讀寫技術(shù)[M].北京:機(jī)械工業(yè)出版社,2004.
Design on USB interface for Digital controlled welding machine
LI Xia
,ZHANG Zhi-long,DUAN Mei-zhu,LIU Jia
(College of Mechanical Engineering and Applied Electronics Technology,Beijing University of Technology,Beijing 100124,China)
Aiming to characteristic and development tendency of the digital controlled welding machine,designed two-layer transfer framework which is consist of USB transport layer and mutual information layer,USB flash be used as carrier of mutual information.USB transport layer was built by USB2.0 protocol,achieving communication between USB flash and USB bridge chip.Mutual information layer achieved communication between upper machine and welding machine by custom communication protocol.
USB bus;USB flash drive;mutual information
TG409
A
1001-2303(2011)06-0090-04
2010-11-05
李 俠(1983—),男,北京人,碩士,主要從事焊機(jī)自動(dòng)化方面的研究工作。