技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國(guó)傳動(dòng)網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > 基于PC機(jī)的DNC傳輸軟件的開(kāi)發(fā)

基于PC機(jī)的DNC傳輸軟件的開(kāi)發(fā)

時(shí)間:2009-09-04 11:00:17來(lái)源:limin

導(dǎo)語(yǔ):?為了解決機(jī)床數(shù)控系統(tǒng)對(duì)大容量數(shù)控程序的處理,開(kāi)發(fā)了基于PC機(jī)的DNC傳輸軟件。該軟件采用MSComm控件和流量控制技術(shù),結(jié)合豐富的通信參數(shù)選項(xiàng),實(shí)現(xiàn)了數(shù)控機(jī)床的DNC工作方式。
1 引言 隨著我國(guó)制造業(yè)的迅速發(fā)展,數(shù)控機(jī)床機(jī)械加工行業(yè)得到了廣泛的應(yīng)用。要實(shí)現(xiàn)數(shù)控機(jī)床對(duì)整個(gè)機(jī)械加工過(guò)程的自動(dòng)控制就必須編寫(xiě)機(jī)床數(shù)控系統(tǒng)能夠識(shí)別的數(shù)控加工程序,該程序可由人工進(jìn)行編寫(xiě),也可由計(jì)算機(jī)輔助制造(CAM)軟件自動(dòng)生成。近年來(lái),CAM軟件得到了迅猛地發(fā)展,如國(guó)外的Pro/E、UG、MASTERCAM和國(guó)內(nèi)的CAXA,其功能也日趨智能化,可以實(shí)現(xiàn)復(fù)雜曲面結(jié)構(gòu)零件的快速編程,給產(chǎn)品的生產(chǎn)加工帶來(lái)了巨大的便利。但是隨著零件結(jié)構(gòu)的復(fù)雜化,CAM軟件生成加工代碼的容量將會(huì)很大,如果超過(guò)了機(jī)床數(shù)控系統(tǒng)的程序存儲(chǔ)空間,將不能一次性存儲(chǔ)在數(shù)控系統(tǒng)中。雖然目前較為先進(jìn)的數(shù)控系統(tǒng)配有以太網(wǎng)或USB通信接口,但考慮到早期生產(chǎn)的數(shù)控系統(tǒng)只配備了RS232C串行通信接口,且在很多企業(yè)中占有一定的比重。為了解決該類(lèi)型數(shù)控系統(tǒng)對(duì)于大容量程序的處理問(wèn)題,必須使數(shù)控機(jī)床處于DNC加工狀態(tài),即通過(guò)串行通信接口將一部分程序先傳輸至數(shù)控系統(tǒng),由數(shù)控系統(tǒng)處理并完成零件加工過(guò)程的控制,當(dāng)這部分程序執(zhí)行完之后再由數(shù)控系統(tǒng)將其刪除,并繼續(xù)通過(guò)串行通信接口讀取剩余的程序,如此循環(huán)直到程序全部執(zhí)行完畢,該過(guò)程即結(jié)束。 本文作者討論了在實(shí)現(xiàn)數(shù)控機(jī)床DNC加工過(guò)程中的硬件連接要求、機(jī)床數(shù)控系統(tǒng)參數(shù)設(shè)置和VB程序的設(shè)計(jì)方法。 2 硬件連接要求 本次研究使用的機(jī)床設(shè)備為南通機(jī)床廠(chǎng)制造的V600數(shù)控銑床,配備的數(shù)控系統(tǒng)型號(hào)為FANUC 0iMATE-MC,該數(shù)控系統(tǒng)提供了一個(gè)25針的RS232C串行通信接口。數(shù)控加工程序由PC機(jī)通過(guò)串行通信接口進(jìn)行發(fā)送,由于目前市場(chǎng)上的PC機(jī)只提供9針的RS232C串行通信接口,因此微機(jī)與數(shù)控機(jī)床進(jìn)行連接時(shí)需提供一根一端為9針(DB9)另一端為25針(DB25)的串行通信電纜線(xiàn)。下面對(duì)該電纜線(xiàn)的電氣信號(hào)和連接注意事項(xiàng)做出說(shuō)明。 2.1 電氣信號(hào) 串行通信電纜線(xiàn)可由機(jī)床制造商提供,也可從電子產(chǎn)品市場(chǎng)購(gòu)買(mǎi)。RS232C的各個(gè)引腳有著不同的功能,要想實(shí)現(xiàn)微機(jī)與機(jī)床數(shù)控系統(tǒng)之間的串行通信一般只需要用到其中的3個(gè)引腳,它們分別是接收數(shù)據(jù)、發(fā)送數(shù)據(jù)和信號(hào)地。其引腳連接關(guān)系如表1所示。 表1 DB9和DB25常用引腳連接關(guān)系
在進(jìn)行串行通信時(shí),數(shù)控系統(tǒng)的接收數(shù)據(jù)引腳和發(fā)送數(shù)據(jù)引腳必須分別接微機(jī)的發(fā)送數(shù)據(jù)引腳和接收數(shù)據(jù)引腳,以達(dá)到數(shù)據(jù)的“收”與“發(fā)”,因此在電子產(chǎn)品市場(chǎng)購(gòu)買(mǎi)的串行通信電纜線(xiàn)必須進(jìn)行跳線(xiàn)處理,方法是將電纜線(xiàn)一端的接收數(shù)據(jù)引腳和發(fā)送數(shù)據(jù)引腳進(jìn)行對(duì)調(diào)。如果是機(jī)床制造商提供的串行通信電纜線(xiàn),因?yàn)閺S(chǎng)家已經(jīng)事先進(jìn)行跳線(xiàn)處理,因此不需要再進(jìn)行跳線(xiàn)。 在通信過(guò)程中還需考慮數(shù)據(jù)的流量控制,以防止數(shù)控系統(tǒng)和微機(jī)的串口接收緩沖區(qū)發(fā)生“溢出”,而實(shí)現(xiàn)流量控制的便是握手信號(hào)。握手分硬件握手和軟件握手,硬件握手需要通過(guò)串口中專(zhuān)門(mén)的握手信號(hào)引腳來(lái)實(shí)現(xiàn),而軟件握手是通過(guò)數(shù)控系統(tǒng)和微機(jī)串口的發(fā)送數(shù)據(jù)引腳發(fā)送ASCII碼第19個(gè)字符和第17個(gè)字符來(lái)控制數(shù)據(jù)發(fā)送的暫停和恢復(fù)。如果發(fā)送的數(shù)據(jù)中存在ASCII碼第19個(gè)字符或第17個(gè)字符便不能使用軟件握手方法,否則會(huì)出現(xiàn)“錯(cuò)誤的握手”。由于數(shù)控加工程序的指令中并沒(méi)有ASCII碼第19個(gè)字符和第17個(gè)字符對(duì)應(yīng)的加工指令,因此不會(huì)出現(xiàn)“錯(cuò)誤的握手”情況的發(fā)生,同時(shí)FANUC Oi-MATE-MC數(shù)控系統(tǒng)支持軟件握手,如采用軟件握手實(shí)現(xiàn)串行通信則只需使用3個(gè)引腳便能完成任務(wù),其硬件連接將變得簡(jiǎn)單易行。 2.2 連接注意事項(xiàng) 當(dāng)數(shù)控系統(tǒng)和微機(jī)中的任何一個(gè)先上電時(shí),由于兩者串口電路的電位可能不同,如果此時(shí)直接使用電纜線(xiàn)連接數(shù)控系統(tǒng)和微機(jī)的串口,可能會(huì)因?yàn)殡娢徊疃霈F(xiàn)放電,燒壞串口電路。因此推薦使用光電隔離器安裝于電纜線(xiàn)的兩端,以分別保護(hù)數(shù)控系統(tǒng)和微機(jī)。 使用光電隔離器可以保證設(shè)備的使用安全,但是會(huì)增加硬件投入成本。如果在數(shù)控機(jī)床和微機(jī)上電之前先將兩者用串行通信電纜線(xiàn)進(jìn)行連接,此時(shí)因?yàn)閮烧叽陔娐返碾娢灰呀?jīng)相同,然后再對(duì)數(shù)控機(jī)床和微機(jī)分別上電,這樣就不會(huì)造成串口電路的損壞。在實(shí)際生產(chǎn)使用中因?yàn)楹苌贂?huì)頻繁將串行通信電纜線(xiàn)拔下,因此在不使用光電隔離器時(shí)使用以上方法連接數(shù)控系統(tǒng)和微機(jī)的串口是安全的,同時(shí)也是可以減少硬件成本投入的。 3 機(jī)床數(shù)控系統(tǒng)參數(shù)設(shè)置 串行通信過(guò)程中通信雙方必須按照相同的通信協(xié)議才能實(shí)現(xiàn)數(shù)據(jù)的正確傳輸,其中數(shù)控系統(tǒng)是以系統(tǒng)參數(shù)的形式完成串行通信參數(shù)的設(shè)置的。針對(duì)本次研究中所使用的FANUC 0i-MATE-MC數(shù)控系統(tǒng),其必須設(shè)置的串行通信參數(shù)如表2所示。 串行通信過(guò)程中對(duì)于數(shù)據(jù)位和奇偶校驗(yàn)也需要進(jìn)行正確的設(shè)置,F(xiàn)ANUC 0i-MATE-MC數(shù)控系統(tǒng)對(duì)這兩個(gè)參數(shù)有其固定值,無(wú)需對(duì)其進(jìn)行設(shè)置。但是在使用VB軟件編程時(shí)必須知道該數(shù)控系統(tǒng)中數(shù)據(jù)位和奇偶校驗(yàn)的設(shè)置情況,否則無(wú)法進(jìn)行正確的通信。通過(guò)查閱該數(shù)控系統(tǒng)的使用說(shuō)明書(shū)可以知道其數(shù)據(jù)位為7位,可以表示ASCII碼為0-127的字符,由于數(shù)控加工程序的指令均為ASCII碼0-127的字符,因此在VB軟件中也應(yīng)使用7位數(shù)據(jù)來(lái)傳輸各個(gè)字符。同時(shí)該型號(hào)的數(shù)控系統(tǒng)不進(jìn)行奇偶校驗(yàn),因此VB軟件中也應(yīng)設(shè)置無(wú)奇偶校驗(yàn)。 表2 機(jī)床數(shù)控系統(tǒng)串行通信參數(shù)設(shè)置值及含義
4 VB程序的設(shè)計(jì)方法 圖1 數(shù)控DNC軟件運(yùn)行界面
本次研究使用的編程軟件為Visual BASIC 6.0,考慮到該DNC軟件應(yīng)簡(jiǎn)單易用,因此使用了單一編程界面(SDl),所有的操作選項(xiàng)均按類(lèi)別分類(lèi)。編程中使用的主要控件為RichTextBox、ProgressBar、ComboBox、CommonDialog和MSComm。RichTextBox控件的功能為顯示加載的數(shù)控加工程序文本;ProgressBar控件的功能為顯示發(fā)送程序的進(jìn)度;ComboBox控件的功能為提供各通信參數(shù)的選擇操作;CommonDialog控件的功能為產(chǎn)生文件打開(kāi)與保存的對(duì)話(huà)框;MSComm控件的功能為通過(guò)PC機(jī)的串行通信接口實(shí)現(xiàn)數(shù)據(jù)的收與發(fā)。該DNC軟件提供了兩大功能:一是微機(jī)發(fā)送數(shù)控加工程序至機(jī)床,實(shí)現(xiàn)DNC加工;二是微機(jī)讀取機(jī)床發(fā)送出的數(shù)控加工程序,實(shí)現(xiàn)機(jī)床程序存儲(chǔ)區(qū)的備份。下面對(duì)該軟件運(yùn)行的主要流程和各功能的關(guān)鍵設(shè)計(jì)方法進(jìn)行介紹,其運(yùn)行界面如圖1所示。 4.1 軟件運(yùn)行的主要流程 發(fā)送文件時(shí),應(yīng)通過(guò)CommonDialog控件及相關(guān)代碼生成打開(kāi)文件的對(duì)話(huà)框,并將選中的文件內(nèi)容加載至RichTextBox控件的文本顯示區(qū)域內(nèi),最后通過(guò)按下發(fā)送文件按鈕將數(shù)控加工程序發(fā)送至數(shù)控系統(tǒng)。接收文件時(shí),當(dāng)按下接收文件按鈕后將通過(guò)CommonDialog控件及相關(guān)代碼生成保存文件的對(duì)話(huà)框,并選擇保存路徑,然后進(jìn)入等待接收狀態(tài),一旦有數(shù)據(jù)進(jìn)入即開(kāi)始接收,接收完畢后將自動(dòng)保存文件至相應(yīng)的路徑,圖2為發(fā)送與接收過(guò)程的設(shè)計(jì)流程圖。 圖2 發(fā)送與接收過(guò)程的設(shè)計(jì)流程圖
4.2 各功能的關(guān)鍵設(shè)計(jì)方法 4.2.1 分割文件 發(fā)送給數(shù)控系統(tǒng)的數(shù)控加工程序的容量可能比較大,考慮到MSComm控件發(fā)送緩沖區(qū)的大小不可能設(shè)置太大(此處使用默認(rèn)的512字節(jié)),因此必須對(duì)數(shù)控加工程序進(jìn)行分割,分多次進(jìn)行發(fā)送。此處可采用FOR循環(huán)結(jié)構(gòu)來(lái)實(shí)現(xiàn)多次的發(fā)送,而循環(huán)的次數(shù)由文件總大小和每次發(fā)送數(shù)據(jù)的大小來(lái)決定,考慮到數(shù)控系統(tǒng)串口的接收緩沖區(qū)比較小,如果一次發(fā)送的數(shù)據(jù)過(guò)大則會(huì)使其緩沖區(qū)溢出并產(chǎn)生報(bào)警,此處可設(shè)置每次發(fā)送數(shù)據(jù)的大小為200字節(jié)。 4.2.2 軟件握手的實(shí)現(xiàn) 在進(jìn)行DNC加工時(shí)必須進(jìn)行流量控制,以防止PC機(jī)串口發(fā)送超速而造成數(shù)控系統(tǒng)的溢出報(bào)警,此處采用軟件握手來(lái)實(shí)現(xiàn)對(duì)流量的控制。其設(shè)計(jì)方法是在發(fā)送循環(huán)中加入DoLoop循環(huán)結(jié)構(gòu),通過(guò)不斷讀取輸入緩沖區(qū)并查找是否收到數(shù)控系統(tǒng)發(fā)來(lái)的暫停發(fā)送(13H)或恢復(fù)發(fā)送信號(hào)(11H)來(lái)決定是否繼續(xù)發(fā)送數(shù)據(jù),該循環(huán)結(jié)構(gòu)的程序代碼如下: Do bufwait:Comml.Input‘讀取輸人緩沖區(qū) If InStr(bufwait,Chr$(&H13))>0Then wait=True End If‘判斷是否暫停發(fā)送 If InStr(bufwait,Chr$(&H11))>0Then wait=False End If‘判斷是否收恢復(fù)發(fā)送 DoEvents‘先將控制權(quán)交給Windows Loop While wait=True‘ 以上程序代碼中必須事先定義bufwait為字符串變量,wait為布爾型變量。 4.2.3 檢查輸出緩沖區(qū) 在通過(guò)串口發(fā)送一個(gè)程序段之前還必須檢查輸出緩沖區(qū)中是否有未發(fā)送完的字節(jié),否則可能會(huì)使得輸出緩沖區(qū)中不斷堆積新的數(shù)據(jù)而導(dǎo)致溢出。實(shí)現(xiàn)以上功能的設(shè)計(jì)方法是在軟件握手的功能后加入一個(gè)DoLoop循環(huán)結(jié)構(gòu),通過(guò)不斷檢查MSComm控件中的OutBufferCount屬性是否為0來(lái)決定是否繼續(xù)發(fā)送數(shù)據(jù),該循環(huán)結(jié)構(gòu)的程序代碼如下: Do outcount=Comml.OutBufferCount‘讀取輸出緩沖區(qū)的字節(jié)數(shù) If outcount=0 Then sendempty=False Else sendempty=True End If‘判斷是否是零字節(jié) 讀取輸出緩 DoEvents‘先將控制權(quán)交給Windows Loop While sendempty=True 以上程序代碼中必須事先定義outcount為整形變量,sendempty為布爾型變量。 4.2.4 檢查文件發(fā)送或接收是否結(jié)束 在發(fā)送文件的過(guò)程中要想知道是否發(fā)送結(jié)束可以檢查FOR循環(huán)的當(dāng)前循環(huán)次數(shù)是否為總循環(huán)次數(shù),但是在接收文件的過(guò)程中因?yàn)槭孪炔⒉恢罃?shù)控系統(tǒng)發(fā)送的程序有多大,因此必須采用其它方法來(lái)解決該問(wèn)題。 FANUC數(shù)控系統(tǒng)對(duì)程序傳輸?shù)耐ㄐ艆f(xié)議做了如下規(guī)定:程序的開(kāi)頭和結(jié)尾必須采用“%”來(lái)表示程序傳輸?shù)拈_(kāi)始和結(jié)束。因此要想知道程序是否發(fā)送或接收完畢可以通過(guò)查找程序中的“%”這一字符來(lái)實(shí)現(xiàn),在文件發(fā)送循環(huán)中實(shí)現(xiàn)該功能的程序代碼如下: j=InStr(buf,“%”)‘返回發(fā)送數(shù)據(jù)中“%”字符的地址 If j>0 Then counter=counter+1‘對(duì)“%”字符計(jì)數(shù) If times=1 Then j=j+1 If InStr(j,bur,“%”)>0 Then counter=counter+1 End If End If‘對(duì)總發(fā)送次數(shù)為1的情況作“%”字符的2次檢查 End If‘檢查文件是否發(fā)送結(jié)束 If counter=2 Then msgvalue=MsgBox(“傳輸完畢”,vbOKOnly+vbInformation,“消息”) If msgvalue=vbOK Then Frame3.Enabled=True Comm1.PortOpen=False‘關(guān)閉串口,結(jié)束發(fā)送過(guò)程 ProgressBar1.Visible=False Label1.Visible=False Command1.Enabled=True Commanc3.Enabled=True Command4.Enabled=True End If Exit Sub End If 以上程序代碼中必須事先定義buf為字符串變量,j、counter、times和msgvalue為整形變量。設(shè)計(jì)中還考慮到了如果發(fā)送的程序過(guò)短(總發(fā)送次數(shù)times變量為1),可能在發(fā)送的字符串變量buf中存在2個(gè)“%”字符,因此對(duì)于該情況必須在查找到第一個(gè)“%”之后對(duì)剩余的字符串再查找一次,以確定是否還有第二個(gè)“%”字符。如果找到2個(gè)“%”字符(計(jì)數(shù)器變量counter為2),則提示用戶(hù)程序傳輸完畢。檢查接收文件是否結(jié)束的程序代碼與檢查發(fā)送文件是否結(jié)束的程序代碼類(lèi)似,在此不再贅述。 4.2.5 文件接收的自動(dòng)化 當(dāng)接收程序處于等待狀態(tài)時(shí),在操作人員按下數(shù)控系統(tǒng)的發(fā)送程序按鍵后,該軟件的文件接收過(guò)程即自動(dòng)開(kāi)始。為了實(shí)現(xiàn)文件接收過(guò)程的自動(dòng)化,應(yīng)使用MSComm控件的OnComm過(guò)程來(lái)處理數(shù)據(jù)的接收。在通信參數(shù)初始化中應(yīng)設(shè)置MSComm控件的RThreshold屬性為1,以保證串口一旦接收到字符即引發(fā)OnComm過(guò)程接收數(shù)據(jù)并對(duì)收到的數(shù)據(jù)進(jìn)行處理。為方便將來(lái)數(shù)據(jù)的處理,在OnComm過(guò)程中應(yīng)使用字節(jié)型數(shù)組以二進(jìn)制方式接收并暫存數(shù)據(jù),實(shí)現(xiàn)該功能的部分程序代碼如下: Select Case Comm1.CommEvent Case comEvReceive‘判斷串口是否收到數(shù)據(jù) slen=Comm1.InBufferCount‘讀取輸入緩沖區(qū)收到的字節(jié)數(shù) Comm1.InputLen=slen‘設(shè)置讀取字節(jié)長(zhǎng)度為收到的字節(jié)數(shù) ReDimbytlnput(slen)‘重新定義字節(jié)數(shù)組的長(zhǎng)度 tmp=Comm1.Input bytInput=tmp‘讀取輸入緩沖區(qū)數(shù)據(jù)至字節(jié)數(shù)組 processdata‘調(diào)用數(shù)據(jù)處理函數(shù) 以上程序代碼中必須事先定義slen為整形變量,tmp為變體型變量,bytInput()為字節(jié)型數(shù)組。processdata為數(shù)據(jù)處理函數(shù),該函數(shù)的功能為過(guò)濾無(wú)需顯示的字符并將數(shù)據(jù)在RichTextBox控件的文本框中顯示。 5 結(jié)束語(yǔ) 本文作者在介紹PC機(jī)與數(shù)控系統(tǒng)進(jìn)行串行通信時(shí)其硬件連接要求和數(shù)控系統(tǒng)的通信參數(shù)設(shè)置方法的基礎(chǔ)上,利用VB6.0軟件實(shí)現(xiàn)了DNC加工狀態(tài)下的程序發(fā)送和程序接收備份功能。該軟件在FANUC 0iMATE-MC數(shù)控上經(jīng)過(guò)測(cè)試,運(yùn)行正常。同時(shí)該軟件提供了豐富的通信參數(shù)選項(xiàng),因此在其它型號(hào)的FANUC數(shù)控系統(tǒng)上或通信協(xié)議相同的其它廠(chǎng)商的數(shù)控系統(tǒng)上均能正常運(yùn)行,這大大提高了該軟件的通用性。

標(biāo)簽:

點(diǎn)贊

分享到:

上一篇:三相無(wú)刷直流電機(jī)控制系統(tǒng)

下一篇:微能WIN-V63矢量控制變頻器在...

中國(guó)傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來(lái)源:中國(guó)傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國(guó)傳動(dòng)網(wǎng)(m.u63ivq3.com)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來(lái)源“中國(guó)傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來(lái)源的稿件,均來(lái)自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來(lái)源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡(jiǎn)介|會(huì)員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見(jiàn)反饋|sitemap

傳動(dòng)網(wǎng)-工業(yè)自動(dòng)化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺(tái)

網(wǎng)站客服服務(wù)咨詢(xún)采購(gòu)咨詢(xún)媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權(quán)所有
粵ICP備 14004826號(hào) | 營(yíng)業(yè)執(zhí)照證書(shū) | 不良信息舉報(bào)中心 | 粵公網(wǎng)安備 44030402000946號(hào)