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