基于1394總線通信的I/O模塊在數(shù)控系統(tǒng)中的應(yīng)用
圖3光耦電路圖
根據(jù)光耦芯片TLP521-4的使用條件,Ic范圍應(yīng)在0~10 mA;,If范圍應(yīng)在0~25 mA;Ic/If范圍應(yīng)在100%~600%。又根據(jù)光耦芯片內(nèi)部結(jié)構(gòu)可知,輸入部分為一個(gè)發(fā)光二極管,故其工作電流,,不可太小。對(duì)于輸入光耦電路,選取R1=4.7kΩ,R2=470Ω,則有Ic=7.02 mA,If=5.11 mA,Ic/If=137Ω;對(duì)于輸出光耦電路,選取R3=1kΩ,R4=4.7kΩ,則有Ic=5.11 mA,If=3.3 mA,Ic/If=155%,均在正常工作范圍內(nèi)。
2 I/O模塊通信軟件設(shè)計(jì)
IEEE 1394協(xié)議支持異步傳輸和等時(shí)傳輸兩種機(jī)制。本設(shè)計(jì)采用的是異步傳輸模式,其特點(diǎn)是???,通過發(fā)送ACK信號(hào)及響應(yīng)包來(lái)實(shí)現(xiàn)。1394芯片為收發(fā)數(shù)據(jù)準(zhǔn)備了FIFO空間。針對(duì)異步傳輸?shù)氖茿RF(異步數(shù)據(jù)包接收FIFO),ATF(異步數(shù)據(jù)包傳輸FIFO)空間,空間大小可以進(jìn)行配置分配,F(xiàn)IFO空間總和為512個(gè)Quadlet(4字節(jié)字)。由于FIFO不能直接映射到DSP空間,需要通過操作CFR寄存器(配置寄存器)來(lái)讀寫FIFO空間。
發(fā)送數(shù)據(jù)時(shí),通過Write First,Write Continue,Write Update 3個(gè)寄存器將數(shù)據(jù)寫入ATF,發(fā)送器從ATF寄存器中取出數(shù)據(jù),并把它們打包成規(guī)則的串行總線數(shù)據(jù)包的格式,然后通過物理層仲裁總線,并發(fā)送數(shù)據(jù)包。發(fā)送數(shù)據(jù)包之后若能接收到正確的ACK信號(hào)及響應(yīng)包則表示發(fā)送成功,否則需要重傳。接收數(shù)據(jù)時(shí),首先接收器從物理層接口取走數(shù)據(jù)并檢查目標(biāo)節(jié)點(diǎn)是否為當(dāng)前節(jié)點(diǎn),CRC字段是否正確。若檢測(cè)到是正確的異步包,則將數(shù)據(jù)包存入ARF中。ARF中存人數(shù)據(jù)后,可以通過讀取ARFThere寄存器,了解ARF中收到的數(shù)據(jù)量,之后通過操作ARFRead寄存器讀取接收到的異步數(shù)據(jù)。讀取之后發(fā)送正確的響應(yīng)包,完成數(shù)據(jù)接收。實(shí)現(xiàn)數(shù)據(jù)發(fā)送接收部分代碼如下:
3 I/O模塊在數(shù)控系統(tǒng)中的應(yīng)用
3.1 I/O模塊在數(shù)控系統(tǒng)中的功能測(cè)試
使用基于1394通信的I/O模塊完成上位機(jī)應(yīng)用程序?qū)C(jī)床的控制。I/O模塊輸入端連接刀庫(kù)左移極限、刀庫(kù)右移極限、刀庫(kù)回零、刀庫(kù)定位、刀庫(kù)提前感應(yīng)、手輪軸選擇(x、y、z、A、C共5個(gè)輸入)、手輪擋位選擇(1,0.1,0..01共3個(gè)輸入)共13個(gè)輸入。I/O模塊輸出端連接機(jī)床照明燈、冷卻泵、主軸使能、主軸定位、主軸正轉(zhuǎn)、主軸反轉(zhuǎn)、主軸停止、主軸松刀、潤(rùn)滑泵、伺服上電、刀庫(kù)左移、刀庫(kù)右移、刀庫(kù)正轉(zhuǎn)、刀庫(kù)反轉(zhuǎn)、刀具夾緊、刀具松開和刀具定位共17個(gè)輸出。其余輸入輸出端口置高。為了保證數(shù)據(jù)的準(zhǔn)確性,1394通信采用異步傳輸方式。所有數(shù)據(jù)運(yùn)算及處理均由上位機(jī)應(yīng)用程序完成,I/O模塊主要負(fù)責(zé)數(shù)據(jù)傳輸。程序框圖如圖4所示。
圖4 I/0模塊功能測(cè)試流程圖
上位機(jī)每4 ms向I/0發(fā)送一次異步數(shù)據(jù),I/O模塊收到上位機(jī)數(shù)據(jù)后觸發(fā)中斷,進(jìn)入中斷程序。根據(jù)收到數(shù)據(jù)命令控制機(jī)床運(yùn)行,并將輸入GPIO狀況發(fā)送給上位機(jī)。數(shù)百萬(wàn)個(gè)周期測(cè)試下來(lái),機(jī)床運(yùn)行正常。查看到輸入開關(guān)量被正確傳輸?shù)缴衔粰C(jī),上位機(jī)控制數(shù)據(jù)也被正確的輸出給數(shù)控機(jī)床,并且機(jī)床能夠?qū)崟r(shí)執(zhí)行指令。驗(yàn)證了1394總線的高速傳輸,及I/O模塊在高檔數(shù)控系統(tǒng)中的功能實(shí)現(xiàn)。
評(píng)論