專(zhuān)利名稱(chēng):基于TCP/IP協(xié)議及Linux網(wǎng)絡(luò)編程的數(shù)控系統(tǒng)遠(yuǎn)程DNC控制方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)控機(jī)床的技術(shù)領(lǐng)域,特別涉及一種基于TCP/IP協(xié)議及Linux網(wǎng)絡(luò)編 程的數(shù)控系統(tǒng)遠(yuǎn)程DNC控制方法。
背景技術(shù):
數(shù)控機(jī)床網(wǎng)絡(luò)DNC技術(shù)在我國(guó)經(jīng)過(guò)二十多年的發(fā)展,也經(jīng)歷了從紙帶到單機(jī),再 到簡(jiǎn)單網(wǎng)絡(luò),最后發(fā)展成為高級(jí)網(wǎng)絡(luò)的艱苦歷程。21世紀(jì)無(wú)疑是一個(gè)網(wǎng)絡(luò)的時(shí)代。隨著今 年來(lái)嵌入式操作系統(tǒng)的不斷進(jìn)步和深入,為數(shù)控系統(tǒng)升級(jí)換代提供了必要的前提和條件。 人們?cè)絹?lái)越多地使用這些高新技術(shù)來(lái)提高自己的生產(chǎn)效率,采用網(wǎng)絡(luò)技術(shù)來(lái)管理數(shù)控機(jī)床 也就成為必然。但現(xiàn)在大多數(shù)控系統(tǒng)采用RS-232串行通信協(xié)議。RS-232的缺點(diǎn)較多如傳 輸距離受限制,組網(wǎng)困難,傳輸效率低、使用前需要配置波特率、抗干擾能力差等。為此基于 Linux的數(shù)控系統(tǒng)采用TCP/IP協(xié)議實(shí)現(xiàn)遠(yuǎn)程DNC傳輸體現(xiàn)了不受距離限制、組網(wǎng)容易、傳輸 效率高、系統(tǒng)兼容性和互操作性好、資源共享能力強(qiáng),可以很容易的實(shí)現(xiàn)將控制現(xiàn)場(chǎng)的數(shù) 據(jù)與信息系統(tǒng)上的資源共享、易與Internet連接、低成本、與計(jì)算機(jī)、服務(wù)器的接口十分方 便等優(yōu)點(diǎn)。為數(shù)控系統(tǒng)的統(tǒng)一管理和監(jiān)控提供了必要的前提和環(huán)境。發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有數(shù)控系統(tǒng)遠(yuǎn)程DNC組網(wǎng)困難、傳輸效率低、易受干擾、 傳輸距離受限等缺點(diǎn),提供一種基于TCP/IP協(xié)議及Linux網(wǎng)絡(luò)編程的數(shù)控系統(tǒng)遠(yuǎn)程DNC控 制方法。
為了達(dá)到上述目的,本發(fā)明采用以下技術(shù)方案
本發(fā)明基于TCP/IP協(xié)議及Linux網(wǎng)絡(luò)編程的數(shù)控系統(tǒng)遠(yuǎn)程DNC控制方法,包括下 述步驟
S1、開(kāi)啟數(shù)控系統(tǒng),創(chuàng)建網(wǎng)絡(luò)線程,并且在網(wǎng)絡(luò)線程里面初始化網(wǎng)絡(luò)服務(wù)器端,進(jìn) 行綁定端口和IP,
S2、端口和IP綁定好后,就一直監(jiān)聽(tīng),看是否有客戶端連接,如無(wú),則一直監(jiān)聽(tīng),如 有,則建立與該客戶端的連接;
S3、當(dāng)客戶端和數(shù)控系統(tǒng)建立好連接后,啟動(dòng)定時(shí)器,向數(shù)控系統(tǒng)發(fā)送自定義心跳 包,若數(shù)控系統(tǒng)端接收不到心跳包則進(jìn)行Ping校驗(yàn),如果在進(jìn)行ping校驗(yàn)時(shí)可以接收到數(shù) 據(jù)則說(shuō)明網(wǎng)絡(luò)狀態(tài)正常,如果多次Ping校驗(yàn)也不通說(shuō)明斷線;
S4、當(dāng)客戶端和數(shù)控系統(tǒng)建立好連接后,用戶在用戶界面上進(jìn)行NC文件列表,上 傳NC程序,下載NC程序,刪除NC程序以及進(jìn)行DNC傳輸加工和停止傳輸加工的操作(各 個(gè)操作相互獨(dú)立,互不影響)。
所述查看NC文件的具體步驟如下
S21、客戶端給數(shù)控系統(tǒng)發(fā)送數(shù)據(jù)包;
S22、服務(wù)器端接收到后,在解析命令函數(shù)里面查詢(xún),找到對(duì)應(yīng)的處理函數(shù),在處理 函數(shù)里面得到NC文件列表指針;
S23、數(shù)控系統(tǒng)向客戶端發(fā)送命令數(shù)據(jù)包回應(yīng)數(shù)據(jù)包,發(fā)完后數(shù)控系統(tǒng)開(kāi)始發(fā)送文 件列表信息到客戶端;
S24、客戶端接收到數(shù)控系統(tǒng)發(fā)送的返回命令后就開(kāi)始準(zhǔn)備接收文件列表內(nèi)容,直 到接收完成。
所述下載NC程序的具體步驟如下
S31、選取NC文件列表中的一個(gè)NC程序;
S32、客戶端向數(shù)控系統(tǒng)發(fā)送下載程序命令,數(shù)控系統(tǒng)進(jìn)行解析,解析完成后找到 相應(yīng)的處理函數(shù)進(jìn)行處理;
S33、在檢測(cè)完一些網(wǎng)絡(luò)狀態(tài)后向客戶端發(fā)送回復(fù)命令、附加文件名以及文件大小 的先關(guān)信息,然后開(kāi)始將讀取的數(shù)據(jù)向客戶端發(fā)送;
S34、客戶端在接到客戶端返回的命令后就開(kāi)始接收,接收時(shí)的數(shù)據(jù)偏移小于文件 大小時(shí)繼續(xù)接收,當(dāng)相等時(shí)結(jié)束接收。
所述上傳NC程序具體步驟如下
S41、選取要上傳的文件,獲取文件大小的相關(guān)信息;
S42、客戶端向數(shù)控系統(tǒng)發(fā)送命令,客戶端解析到后在對(duì)應(yīng)的函數(shù)里進(jìn)行處理;
S43、在檢查完一些相關(guān)的狀態(tài)量后向客戶端回發(fā)命令;
S44、客戶端接收到回發(fā)命令后;先打開(kāi)所需要上傳的NC程序,然后發(fā)送一個(gè)命令 給數(shù)控系統(tǒng),數(shù)控系統(tǒng)開(kāi)始接收,直到接收到的文件等于所需要上傳的文件的大小時(shí)結(jié)束 接收;
S45、更新NC文件列表信息,并向客戶端發(fā)送更新后的NC程序列表信息。
所述刪除NC程序的具體步驟如下
S51、選擇列表項(xiàng)中的程序;
S52、向數(shù)控系統(tǒng)發(fā)送刪除文件命令,并將需要?jiǎng)h除的文件的文件名也發(fā)送過(guò)去;
S53、數(shù)控系統(tǒng)接收到命令后解析,然后在對(duì)應(yīng)的函數(shù)里面進(jìn)行處理;
S54、檢測(cè)完文件是否可刪后然后在NC文件鏈表里面刪除對(duì)應(yīng)的節(jié)點(diǎn);
S55、向客戶端發(fā)送NC文件列表,更行列表中的NC程序。
所述DNC傳輸加工的具體步驟如下
S61、首先客戶端發(fā)送DNC加工命令,然后發(fā)送查詢(xún)狀態(tài)命令,并啟動(dòng)兩個(gè)定時(shí)器, 一個(gè)定時(shí)發(fā)送查詢(xún)命令,一個(gè)定時(shí)發(fā)送發(fā)送數(shù)據(jù)命令;
S62、數(shù)控系統(tǒng)接收到查詢(xún)命令后解析,然后在相應(yīng)函數(shù)里面進(jìn)行處理;先檢測(cè)運(yùn) 行模式及IO通道,不成立則發(fā)送提示信息回客戶端;條件滿足則將網(wǎng)絡(luò)狀態(tài)設(shè)置為等待, 然后激活DNC傳輸,創(chuàng)建DNC線程然后根據(jù)DNC狀態(tài)機(jī)進(jìn)行相應(yīng)的處理;
S63、數(shù)控系統(tǒng)接收處理完查詢(xún)命令后,又接收到查詢(xún)命令,客戶端一直發(fā)送該命 令,數(shù)控系統(tǒng)接收解析完后,一直查詢(xún)運(yùn)行模式、DNC狀態(tài)、網(wǎng)絡(luò)線程狀態(tài),若運(yùn)行模式不是 DNC、IO斷開(kāi)不正確,DNC的Socket未準(zhǔn)備好,或者網(wǎng)絡(luò)線程未準(zhǔn)備好則直接返回,不做處 理,客戶端一直發(fā),一直查詢(xún)直到滿足條件;
S64、當(dāng)都滿足時(shí)數(shù)控系統(tǒng)向客戶端發(fā)送開(kāi)始DNC的命令,客戶端接到后開(kāi)始準(zhǔn)備發(fā)送;
S65、客戶端接收到開(kāi)始DNC的命令后,先打開(kāi)并讀取相應(yīng)的NC程序,準(zhǔn)備好后給 數(shù)控系統(tǒng)發(fā)送SEND_FILE_DNC,數(shù)控系統(tǒng)接收解析后再在相應(yīng)的函數(shù)里面進(jìn)行處理,開(kāi)始讀 取DNC傳輸數(shù)據(jù),然后再接收數(shù)據(jù);
S66、當(dāng)客戶端發(fā)送完成后會(huì)給數(shù)控系統(tǒng)發(fā)送結(jié)束DNC傳輸?shù)拿?,?shù)控系統(tǒng)繼續(xù) 發(fā)送Is行號(hào),保證同步,然后重新設(shè)置網(wǎng)絡(luò)標(biāo)識(shí)量,關(guān)閉Socket,再將DNC狀態(tài)機(jī)設(shè)置為關(guān) 閉,退出讀取的循環(huán),釋放G代碼,并初始化相應(yīng)的數(shù)據(jù)結(jié)構(gòu),退出DNC線程,結(jié)束加工。
進(jìn)一步的,步驟S65中還包括,在網(wǎng)絡(luò)線程接收的同時(shí),DNC線程根據(jù)相應(yīng)的網(wǎng)絡(luò) 狀態(tài)量進(jìn)行讀取NC代碼程序,然后進(jìn)行譯碼和加工,讀取一段NC代碼后把網(wǎng)絡(luò)標(biāo)記設(shè)置為 準(zhǔn)備狀態(tài),每加工完一段NC代碼后會(huì)判斷當(dāng)前文件指針指向的行號(hào)和初始時(shí)的行號(hào)的差 值是否大于1000,要是大于1000的話初始指針指向該指針之后的100行,這樣就釋放掉了 前面已加工的100代碼,循環(huán)每次都檢查釋放。
進(jìn)一步的,步驟S61中,在進(jìn)行DNC加工時(shí)客戶端啟動(dòng)了兩個(gè)定時(shí)器,一個(gè)發(fā)送查 詢(xún)命令,查詢(xún)是否可以進(jìn)行傳輸,另一個(gè)發(fā)送開(kāi)始發(fā)送數(shù)據(jù)命令,數(shù)控系統(tǒng)接收解析后獲取 當(dāng)前運(yùn)行的行號(hào),然后先給客戶端回發(fā)返回行號(hào)的命令,在發(fā)送相應(yīng)的運(yùn)行行號(hào),客戶端接 收解析返回行號(hào)的命令后就開(kāi)始接收行號(hào),這樣運(yùn)行的行號(hào)就一直向客戶端發(fā)送,兩邊界 面顯示行號(hào)同步。
在進(jìn)行DNC傳輸加工時(shí),可以停止DNC傳輸加工,其具體步驟如下
S101、客戶端先銷(xiāo)毀DNC傳輸加工時(shí)啟動(dòng)的兩個(gè)定時(shí)器;
S102、如果數(shù)控系統(tǒng)正在運(yùn)行的話先發(fā)送發(fā)送數(shù)據(jù)命令和一個(gè)附加參數(shù),再發(fā)送 結(jié)束DNC傳輸命令,數(shù)控系統(tǒng)接收發(fā)送數(shù)據(jù)命令并解析后進(jìn)行復(fù)位機(jī)床;
103、接收到結(jié)束DNC傳輸命令,然后和上面發(fā)送結(jié)束DNC傳輸命令一樣結(jié)束傳輸。
本發(fā)明相對(duì)于現(xiàn)有技術(shù)具有如下的優(yōu)點(diǎn)及效果
1、本發(fā)明使用TCP/IP協(xié)議作發(fā)送信息的通信協(xié)議,提供數(shù)據(jù)傳輸率和抗干擾的 能力。
2、本發(fā)明使用雙絞線作為通信介質(zhì),有效地提高傳輸距離。
3、本發(fā)明使用TCP/IP協(xié)議作為通信協(xié)議,更加方便與Internet連接,實(shí)現(xiàn)數(shù)據(jù)共孚。
圖1是本發(fā)明數(shù)控系統(tǒng)端網(wǎng)絡(luò)模塊框架圖2是本發(fā)明網(wǎng)絡(luò)交互流程圖3是本發(fā)明數(shù)控系統(tǒng)端DNC加工處理流程圖。
具體實(shí)施方式
下面結(jié)合實(shí)施例及附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)的描述,但本發(fā)明的實(shí)施方式不限 于此。
實(shí)施例
如圖1所示,基于LAN9111的物理網(wǎng)卡,在嵌入式Linux的操作系統(tǒng)上實(shí)現(xiàn)DNC在線傳輸加工和NC程序文件傳輸?shù)墓δ堋T诜?wù)器端的系統(tǒng)界面上采用面向嵌入式系統(tǒng)的輕量級(jí)圖形用戶界面支持庫(kù)MiniGUI進(jìn)行開(kāi)發(fā)。文件系統(tǒng)則采用yaff文件系統(tǒng),在內(nèi)存管理方式上采用動(dòng)靜結(jié)合的管理機(jī)制。在標(biāo)準(zhǔn)的TCP/IP協(xié)議基礎(chǔ)上開(kāi)發(fā)自定義的應(yīng)用協(xié)議, 上位機(jī)端給服務(wù)器(CNC端)發(fā)送數(shù)據(jù)包,服務(wù)器端解析包頭后根據(jù)包頭信息做出相應(yīng)的處理,回應(yīng)上位機(jī)的操作。
如圖2所示,以數(shù)控系統(tǒng)端為服務(wù)器端,遠(yuǎn)程DNC軟件為客戶端。當(dāng)數(shù)控系統(tǒng)啟動(dòng)(開(kāi)始)時(shí)就創(chuàng)建網(wǎng)絡(luò)線程(threacLSocket),在網(wǎng)絡(luò)線程里面初始化網(wǎng)絡(luò)服務(wù)器端 (socket_init_server),進(jìn)行綁定(bind)端口和IP,綁定好后就一直監(jiān)聽(tīng),看是否有客戶端連接,若無(wú)則一直監(jiān)聽(tīng)。有的話就建立連接。連接好了后循環(huán)調(diào)用解析命令的函數(shù) (socket_select_response),根據(jù)客戶端的請(qǐng)求命令進(jìn)行相應(yīng)的執(zhí)行操作和命令響應(yīng)。
客戶端程序啟動(dòng)后若是想和數(shù)控系統(tǒng)進(jìn)行通訊,則點(diǎn)擊菜單項(xiàng)的連接系統(tǒng),設(shè)置相應(yīng)的IP,點(diǎn)擊確定后創(chuàng)建套接字(open),然后客戶端和數(shù)控刺痛服務(wù)器端進(jìn)行連接 (connect),連接不成功則返回,連接成功則創(chuàng)建接收線程、啟動(dòng)定時(shí)器。接收線程里面根據(jù)我們自定義的通訊協(xié)議解析數(shù)據(jù)包,進(jìn)行相對(duì)應(yīng)的操作和回應(yīng)。
當(dāng)客戶端(PC)和數(shù)控系統(tǒng)建立好連接后,啟動(dòng)定時(shí)器,向數(shù)控系統(tǒng)端發(fā)送自定義心跳包(KEEP_ALIVE)。若數(shù)控系統(tǒng)端接收不到心跳包則進(jìn)行ping校驗(yàn),如果在進(jìn)行ping 校驗(yàn)時(shí)可以接收到數(shù)據(jù)則說(shuō)明網(wǎng)絡(luò)狀態(tài)正常;要是多次Ping校驗(yàn)也不通才說(shuō)明斷線。這樣就避免了由于一時(shí)斷線或一時(shí)的網(wǎng)絡(luò)信號(hào)不好導(dǎo)致接收不到數(shù)據(jù)而網(wǎng)絡(luò)斷開(kāi)的現(xiàn)象,從而達(dá)到防抖動(dòng)和一時(shí)斷線的目的。這樣客戶端與數(shù)控系統(tǒng)間的網(wǎng)線意外斷掉時(shí),在一定時(shí)間內(nèi)插上網(wǎng)線還可以繼續(xù)進(jìn)行DNC加工。
當(dāng)客戶端(PC)和數(shù)控系統(tǒng)建立好連接后,用戶可以在用戶界面上進(jìn)行相應(yīng)的操作查看NC文件列表,上傳NC程序,下載NC程序,刪除NC程序以及進(jìn)行DNC傳輸加工和停止傳輸加工。
建立好連接后當(dāng)用戶想查看數(shù)控系統(tǒng)的NC文件列表時(shí),點(diǎn)擊刷新按鈕,客戶端給數(shù)控系統(tǒng)發(fā)送數(shù)據(jù)包(GET_FILE_LIST),服務(wù)器端接收到后,在解析命令函數(shù)(S0Cket_ sel_ect_response)里面查詢(xún),找到對(duì)應(yīng)的處理函數(shù)(socket_send_f ile_list),然后得到NC文件列表指針,數(shù)控系統(tǒng)向客戶端發(fā)送命令數(shù)據(jù)包回應(yīng)數(shù)據(jù)包(SEND_FILE_LIST),發(fā)完后數(shù)控系統(tǒng)開(kāi)始發(fā)送文件列表信息到客戶端??蛻舳私邮盏綌?shù)控系統(tǒng)發(fā)送的返回命令 (SEND_FILE_LIST)后就開(kāi)始準(zhǔn)備接收文件列表內(nèi)容,直到接收完成。這樣客戶端就得到了數(shù)控系統(tǒng)NC文件列表信息。
當(dāng)客戶端要將數(shù)控系統(tǒng)的NC程序下載到本地主機(jī)時(shí),選取NC文件列表中的一個(gè)NC程序,點(diǎn)擊客戶端上的下載程序按鈕,然后客戶端向數(shù)控系統(tǒng)發(fā)送下載程序命令 (GET_FILE),數(shù)控系統(tǒng)進(jìn)行解析,在處理函數(shù)(S0Cket_get_file)里面進(jìn)行處理。在檢測(cè)完一些網(wǎng)絡(luò)狀態(tài)后向客戶端發(fā)送SEND_FILE、附加文件名、文件大小等先關(guān)信息,然后開(kāi)始將讀取的數(shù)據(jù)向客戶端發(fā)送。客戶端在接到SEND_FILE命令后就開(kāi)始接收。接收時(shí)都數(shù)據(jù)偏移小于文件大小時(shí)繼續(xù)接收,當(dāng)相等時(shí)結(jié)束接收。
當(dāng)客戶端要向數(shù)控系統(tǒng)端上傳文件時(shí),點(diǎn)擊上傳程序按鈕。首先選取要上傳的文件,獲取文件大小等相關(guān)信息后,客戶端向數(shù)控系統(tǒng)發(fā)送 UPDATE_FILE命令,客戶端解析到后在對(duì)應(yīng)的函數(shù)socket_update_file里進(jìn)行處理。在檢查完一些相關(guān)的狀態(tài)量后向客戶端回發(fā)命令(GET_FILE)。客戶端接收到GET_FILE后。先打開(kāi)所需要上傳的NC程序,然后發(fā)送一個(gè)命令SEND_FILE給數(shù)控系統(tǒng),數(shù)控系統(tǒng)開(kāi)始接收,直到接收到的文件等于所需要上傳的文件的大小時(shí)結(jié)束接收。然后更新NC文件列表信息,并向客戶端發(fā)送更新后的NC 程序列表信息。
當(dāng)需要?jiǎng)h除數(shù)控系統(tǒng)的NC程序時(shí),先選擇列表項(xiàng)中的程序,然后向數(shù)控系統(tǒng)發(fā)送刪除文件命令(DELETE_FILE),并將需要?jiǎng)h除的文件的文件名也發(fā)送過(guò)去。數(shù)控系統(tǒng)接收到命令后解析,然后找到相應(yīng)的函數(shù)s0Cket_rem0Ve_file函數(shù)里面進(jìn)行處理。檢測(cè)完文件是否可刪后然后在NC文件鏈表中刪除對(duì)應(yīng)的節(jié)點(diǎn)。然后向客戶端發(fā)送NC文件列表(S0Cket_ send_file_list),更新列表中的NC程序。
如圖3所示,當(dāng)客戶端與數(shù)控系統(tǒng)進(jìn)行DNC傳輸加工時(shí),首先客戶端發(fā)送DNC加工命令(UPDATE_FILE_DNC),然后再發(fā)送查詢(xún)狀態(tài)命令(QUERY_FILE_DNC),并啟動(dòng)兩個(gè)定時(shí)器,一個(gè)定時(shí)器一直發(fā)送查詢(xún)命令(QUERY_FILE_DNC),一個(gè)定時(shí)發(fā)送發(fā)送數(shù)據(jù)命令(SEND_ DATA);數(shù)控系統(tǒng)接收到查詢(xún)命令后解析,然后在相應(yīng)的函數(shù)(socket_update_file_dnc) 里面進(jìn)行處理;先檢測(cè)運(yùn)行模式,IO通道等先關(guān)條件,不成立則發(fā)送提示信息回客戶端;條件滿足則將網(wǎng)絡(luò)狀態(tài)設(shè)置為等待(S0CK_DNC_WAIT)狀態(tài),然后激活DNC傳輸,創(chuàng)建DNC線程然后根據(jù)DNC狀態(tài)機(jī)進(jìn)行相應(yīng)的處理;數(shù)控系統(tǒng)接收處理完查詢(xún)命令后,又接收到查詢(xún)命令(QUERY_FILE_DNC),客戶端一直發(fā)送該命令,數(shù)控系統(tǒng)接收解析完后,一直查詢(xún)運(yùn)行模式,DNC狀態(tài),網(wǎng)絡(luò)線程狀態(tài)等相關(guān)信息,不滿足則返回,不做處理,客戶端一直發(fā),一直查詢(xún)直到滿足條件;當(dāng)都滿足時(shí)數(shù)控系統(tǒng)向客戶端發(fā)送開(kāi)始DNC的命令(GET_FILE_DNC),客戶端接到后開(kāi)始準(zhǔn)備發(fā)送。
客戶端接收到開(kāi)始DNC的命令(GET_FILE_DNC)后,先打開(kāi)并讀取相應(yīng)的NC程序, 準(zhǔn)備好后給數(shù)控系統(tǒng)發(fā)送開(kāi)始發(fā)送DNC數(shù)據(jù)的命令(SEND_FILE_DNC),數(shù)控系統(tǒng)接收解析后再在相應(yīng)的函數(shù)(socket_send_file_dnc)里面準(zhǔn)備接收處理,然后開(kāi)始讀取DNC傳輸數(shù)據(jù)(dnc_read_net),然后在接收數(shù)據(jù)(socket_recv_data)。在網(wǎng)絡(luò)線程接收的同時(shí),DNC 線程根據(jù)相應(yīng)的網(wǎng)絡(luò)狀態(tài)量進(jìn)行讀取NC代碼程序(dnC_gC0de_l0ad_bUffer),然后進(jìn)行譯碼…然后進(jìn)行加工,讀取一段NC代碼后把網(wǎng)絡(luò)標(biāo)記設(shè)置為準(zhǔn)備狀態(tài)(S0CK_DNC_READY),這樣客戶端下次發(fā)送查詢(xún)命令時(shí)就又能滿足條件進(jìn)行發(fā)送。每加工完一段NC代碼后會(huì)判斷當(dāng)前文件指針指向 的行號(hào)和初始時(shí)的行號(hào)的差值是否大于1000,要是大于1000的話初始指針指向該指針之后的100行,這樣就釋放掉了前面已加工的100代碼,循環(huán)每次都檢查釋放,這樣保證已加載的程序不會(huì)超過(guò)1000行,從而節(jié)省了內(nèi)存空間。
在進(jìn)行DNC加工時(shí)客戶端啟動(dòng)了兩個(gè)定時(shí)器,一個(gè)發(fā)送查詢(xún)命令(QUERY_FILE_ DNC)查詢(xún)是否可以進(jìn)行傳輸,另一個(gè)發(fā)送數(shù)據(jù)命令(SEND_DATA),數(shù)控系統(tǒng)接收解析后獲取當(dāng)前運(yùn)行的行號(hào)(socket_send_mac_info),然后先給客戶端回發(fā)返回行號(hào)的命令(SEND_ MAC_P0S),再發(fā)送相應(yīng)的運(yùn)行行號(hào)。客戶端接收解析命令后就開(kāi)始接收行號(hào),這樣運(yùn)行的行號(hào)就一直向客戶端發(fā)送,兩邊界面顯示行號(hào)同步。
當(dāng)客戶端發(fā)送完成后會(huì)給數(shù)控系統(tǒng)發(fā)送結(jié)束DNC傳輸?shù)拿?END_FILE_DNC), 數(shù)控系統(tǒng)繼續(xù)發(fā)送Is行號(hào),保證同步,然后重新設(shè)置網(wǎng)絡(luò)標(biāo)識(shí)量,關(guān)閉Socket (dnc_ fopt->close),再將DNC狀態(tài)機(jī)設(shè)置為DNC_CL0SE,退出讀取的循環(huán),釋放G代碼,并初始化相應(yīng)的數(shù)據(jù)結(jié)構(gòu),退出DNC線程,結(jié)束加工。
當(dāng)正在進(jìn)行DNC傳輸加工時(shí)可以點(diǎn)擊停止傳輸按鈕停止DNC傳輸加工??蛻舳讼蠕N(xiāo)毀DNC傳輸加工時(shí)啟動(dòng)的兩個(gè)定時(shí)器,如果數(shù)控系統(tǒng)正在運(yùn)行的話先發(fā)送發(fā)送數(shù)據(jù)的命令(SEND_DATA)命令和一個(gè)附加參數(shù),再發(fā)送結(jié)束DNC傳輸?shù)拿?END_FILE_DNC),數(shù)控系統(tǒng)接收發(fā)送數(shù)據(jù)命令后進(jìn)行解析后進(jìn)行復(fù)位機(jī)床,然后接收到DNC傳輸命令(END_FILE_ DNC),然后和上面發(fā)送END_FILE_DNC —樣結(jié)束傳 輸。
上述實(shí)施例為本發(fā)明較佳的實(shí)施方式,但本發(fā)明的實(shí)施方式并不受上述實(shí)施例的限制,其他的任何未背離本發(fā)明的精神實(shí)質(zhì)與原理下所作的改變、修飾、替代、組合、簡(jiǎn)化, 均應(yīng)為等效的置換方式,都包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種基于TCP/IP協(xié)議及Linux網(wǎng)絡(luò)編程的數(shù)控系統(tǒng)遠(yuǎn)程DNC控制方法,其特征在于,包括下述步驟51、開(kāi)啟數(shù)控系統(tǒng),創(chuàng)建網(wǎng)絡(luò)線程,并且在網(wǎng)絡(luò)線程里面初始化網(wǎng)絡(luò)服務(wù)器端,進(jìn)行綁定端口和IP,52、端口和IP綁定好后,就一直監(jiān)聽(tīng),看是否有客戶端連接,如無(wú),則一直監(jiān)聽(tīng),如有, 則建立與該客戶端的連接;53、當(dāng)客戶端和數(shù)控系統(tǒng)建立好連接后,啟動(dòng)定時(shí)器,向數(shù)控系統(tǒng)發(fā)送自定義心跳包, 若數(shù)控系統(tǒng)端接收不到心跳包則進(jìn)行Ping校驗(yàn),如果在進(jìn)行ping校驗(yàn)時(shí)可以接收到數(shù)據(jù)則說(shuō)明網(wǎng)絡(luò)狀態(tài)正常,如果多次Ping校驗(yàn)也不通說(shuō)明斷線;54、當(dāng)客戶端和數(shù)控系統(tǒng)建立好連接后,用戶在用戶界面上進(jìn)行NC文件列表,上傳NC 程序,下載NC程序,刪除NC程序以及進(jìn)行DNC傳輸加工和停止傳輸加工的操作。
2.根據(jù)權(quán)利要求1所述的基于TCP/IP協(xié)議及Linux網(wǎng)絡(luò)編程的數(shù)控系統(tǒng)遠(yuǎn)程DNC控制方法,其特征在于,查看NC文件的具體步驟如下521、客戶端給數(shù)控系統(tǒng)發(fā)送數(shù)據(jù)包;522、服務(wù)器端接收到后,在解析命令函數(shù)里面查詢(xún),找到對(duì)應(yīng)的處理函數(shù),在處理函數(shù)里面得到NC文件列表指針;523、數(shù)控系統(tǒng)向客戶端發(fā)送命令數(shù)據(jù)包回應(yīng)數(shù)據(jù)包,發(fā)完后數(shù)控系統(tǒng)開(kāi)始發(fā)送文件列表信息到客戶端;524、客戶端接收到數(shù)控系統(tǒng)發(fā)送的返回命令后就開(kāi)始準(zhǔn)備接收文件列表內(nèi)容,直到接收完成。
3.根據(jù)權(quán)利要求1所述的基于TCP/IP協(xié)議及Linux網(wǎng)絡(luò)編程的數(shù)控系統(tǒng)遠(yuǎn)程DNC控制方法,其特征在于,所述下載NC程序的具體步驟如下531、選取NC文件列表中的一個(gè)NC程序;532、客戶端向數(shù)控系統(tǒng)發(fā)送下載程序命令,數(shù)控系統(tǒng)進(jìn)行解析,解析完成后找到相應(yīng)的處理函數(shù)進(jìn)行處理;533、在檢測(cè)完一些網(wǎng)絡(luò)狀態(tài)后向客戶端發(fā)送回復(fù)命令、附加文件名以及文件大小的先關(guān)信息,然后開(kāi)始將讀取的數(shù)據(jù)向客戶端發(fā)送;534、客戶端在接到客戶端返回的命令后就開(kāi)始接收,接收時(shí)的數(shù)據(jù)偏移小于文件大小時(shí)繼續(xù)接收,當(dāng)相等時(shí)結(jié)束接收。
4.根據(jù)權(quán)利要求1所述的基于TCP/IP協(xié)議及Linux網(wǎng)絡(luò)編程的數(shù)控系統(tǒng)遠(yuǎn)程DNC控制方法,其特征在于,所述上傳NC程序具體步驟如下541、選取要上傳的文件,獲取文件大小的相關(guān)信息;542、客戶端向數(shù)控系統(tǒng)發(fā)送命令,客戶端解析到后在對(duì)應(yīng)的函數(shù)里進(jìn)行處理;543、在檢查完一些相關(guān)的狀態(tài)量后向客戶端回發(fā)命令;544、客戶端接收到回發(fā)命令后;先打開(kāi)所需要上傳的NC程序,然后發(fā)送一個(gè)命令給數(shù)控系統(tǒng),數(shù)控系統(tǒng)開(kāi)始接收,直到接收到的文件等于所需要上傳的文件的大小時(shí)結(jié)束接收;545、更新NC文件列表信息,并向客戶端發(fā)送更新后的NC程序列表信息。
5.根據(jù)權(quán)利要求1所述的基于TCP/IP協(xié)議及Linux網(wǎng)絡(luò)編程的數(shù)控系統(tǒng)遠(yuǎn)程DNC控制方法,其特征在于,所述刪除NC程序的具體步驟如下s51、選擇列表項(xiàng)中的程序;s52、向數(shù)控系統(tǒng)發(fā)送刪除文件命令,并將需要?jiǎng)h除的文件的文件名也發(fā)送過(guò)去;s53、數(shù)控系統(tǒng)接收到命令后解析,然后在對(duì)應(yīng)的函數(shù)里面進(jìn)行處理;s54、檢測(cè)完文件是否可刪后然后在NC文件鏈表里面刪除對(duì)應(yīng)的節(jié)點(diǎn);s55、向客戶端發(fā)送NC文件列表,更行列表中的NC程序。
6.根據(jù)權(quán)利要求1所述的基于TCP/IP協(xié)議及Linux網(wǎng)絡(luò)編程的數(shù)控系統(tǒng)遠(yuǎn)程DNC控制方法,其特征在于,所述DNC傳輸加工的具體步驟如下561、首先客戶端發(fā)送DNC加工命令,然后發(fā)送查詢(xún)狀態(tài)命令,并啟動(dòng)兩個(gè)定時(shí)器,一個(gè)定時(shí)發(fā)送查詢(xún)命令,一個(gè)定時(shí)發(fā)送發(fā)送數(shù)據(jù)命令;562、數(shù)控系統(tǒng)接收到查詢(xún)命令后解析,然后在相應(yīng)函數(shù)里面進(jìn)行處理;先檢測(cè)運(yùn)行模式及IO通道,不成立則發(fā)送提示信息回客戶端;條件滿足則將網(wǎng)絡(luò)狀態(tài)設(shè)置為等待,然后激活DNC傳輸,創(chuàng)建DNC線程然后根據(jù)DNC狀態(tài)機(jī)進(jìn)行相應(yīng)的處理;563、數(shù)控系統(tǒng)接收處理完查詢(xún)命令后,又接收到查詢(xún)命令,客戶端一直發(fā)送該命令,數(shù)控系統(tǒng)接收解析完后,一直查詢(xún)運(yùn)行模式、DNC狀態(tài)和網(wǎng)絡(luò)線程狀態(tài),一直查詢(xún)運(yùn)行模式, DNC狀態(tài),網(wǎng)絡(luò)線程狀態(tài)等相關(guān)信息,不滿足則返回,不做處理,客戶端一直發(fā),一直查詢(xún)直到滿足條件;564、當(dāng)都滿足時(shí)數(shù)控系統(tǒng)向客戶端發(fā)送開(kāi)始DNC的命令,客戶端接到后開(kāi)始準(zhǔn)備發(fā)送;565、客戶端接收到開(kāi)始DNC的命令后,先打開(kāi)并讀取相應(yīng)的NC程序,準(zhǔn)備好后給數(shù)控系統(tǒng)發(fā)送SEND_FILE_DNC,數(shù)控系統(tǒng)接收解析后再在相應(yīng)的函數(shù)里面進(jìn)行處理,開(kāi)始讀取 DNC傳輸數(shù)據(jù),然后再接收數(shù)據(jù);566、當(dāng)客戶端發(fā)送完成后會(huì)給數(shù)控系統(tǒng)發(fā)送結(jié)束DNC傳輸?shù)拿?,?shù)控系統(tǒng)繼續(xù)發(fā)送 Is行號(hào),保證同步,然后重新設(shè)置網(wǎng)絡(luò)標(biāo)識(shí)量,關(guān)閉Socket,再將DNC狀態(tài)機(jī)設(shè)置為關(guān)閉,退出讀取的循環(huán),釋放G代碼,并初始化相應(yīng)的數(shù)據(jù)結(jié)構(gòu),退出DNC線程,結(jié)束加工。
7.根據(jù)權(quán)利要求6所述的基于TCP/IP協(xié)議及Linux網(wǎng)絡(luò)編程的數(shù)控系統(tǒng)遠(yuǎn)程DNC控制方法,其特征在于,步驟S65中還包括,在網(wǎng)絡(luò)線程接收的同時(shí),DNC線程根據(jù)相應(yīng)的網(wǎng)絡(luò)狀態(tài)量進(jìn)行讀取NC代碼程序,然后進(jìn)行譯碼和加工,讀取一段NC代碼后把網(wǎng)絡(luò)標(biāo)記設(shè)置為準(zhǔn)備狀態(tài),每加工完一段NC代碼后會(huì)判斷當(dāng)前文件指針指向的行號(hào)和初始時(shí)的行號(hào)的差值是否大于1000,要是大于1000的話初始指針指向該指針之后的100行,這樣就釋放掉了前面已加工的100代碼,循環(huán)每次都檢查釋放。
8.根據(jù)權(quán)利要求6所述基于TCP/IP協(xié)議及Linux網(wǎng)絡(luò)編程的數(shù)控系統(tǒng)遠(yuǎn)程DNC控制方法,其特征在于,步驟S61中,在進(jìn)行DNC加工時(shí)客戶端啟動(dòng)了兩個(gè)定時(shí)器,一個(gè)發(fā)送查詢(xún)命令,查詢(xún)是否可以進(jìn)行傳輸,另一個(gè)發(fā)送開(kāi)始發(fā)送數(shù)據(jù)命令,數(shù)控系統(tǒng)接收解析后獲取當(dāng)前運(yùn)行的行號(hào),然后先給客戶端回發(fā)返回行號(hào)的命令,在發(fā)送相應(yīng)的運(yùn)行行號(hào),客戶端接收解析返回行號(hào)的命令后就開(kāi)始接收行號(hào),這樣運(yùn)行的行號(hào)就一直向客戶端發(fā)送,兩邊界面顯示行號(hào)同步。
9.根據(jù)權(quán)利要求1所述的基于TCP/IP協(xié)議及Linux網(wǎng)絡(luò)編程的數(shù)控系統(tǒng)遠(yuǎn)程DNC控制方法,其特征在于,在進(jìn)行DNC傳輸加工時(shí),可以停止DNC傳輸加工,其具體步驟如下S101、客戶端先銷(xiāo)毀DNC傳輸加工時(shí)啟動(dòng)的兩個(gè)定時(shí)器;S102、如果數(shù)控系統(tǒng)正在運(yùn)行的話先發(fā)送發(fā)送數(shù)據(jù)命令和一個(gè)附加參數(shù),再發(fā)送結(jié)束 DNC傳輸命令,數(shù)控系統(tǒng)接收發(fā)送數(shù)據(jù)命令并解析后進(jìn)行復(fù)位機(jī)床;S103、 接收到結(jié)束DNC傳輸命令, 然后和上面發(fā)送結(jié)束DNC傳輸命令一樣結(jié)束傳輸。
全文摘要
本發(fā)明公開(kāi)了基于TCP/IP協(xié)議及Linux網(wǎng)絡(luò)編程的數(shù)控系統(tǒng)遠(yuǎn)程DNC控制方法,包括下述步驟S1、開(kāi)啟數(shù)控系統(tǒng),創(chuàng)建網(wǎng)絡(luò)線程,進(jìn)行綁定端口和IP,S2、端口和IP綁定好后,就一直監(jiān)聽(tīng),看是否有客戶端連接;S3、當(dāng)客戶端和數(shù)控系統(tǒng)建立好連接后,啟動(dòng)定時(shí)器,向數(shù)控系統(tǒng)發(fā)送自定義心跳包;S4、當(dāng)客戶端和數(shù)控系統(tǒng)建立好連接后,用戶在用戶界面上進(jìn)行NC文件列表,進(jìn)行上傳NC程序,下載NC程序,刪除NC程序以及進(jìn)行DNC傳輸加工和停止傳輸加工的操作。本發(fā)明以數(shù)控系統(tǒng)當(dāng)作服務(wù)器,用戶計(jì)算機(jī)當(dāng)作客戶端構(gòu)建以TCP/IP為底層協(xié)議、雙絞線作為通信介質(zhì)的網(wǎng)絡(luò)環(huán)境,使用TCP/IP協(xié)議作發(fā)送信息的通信協(xié)議,提供數(shù)據(jù)傳輸率和抗干擾的能力,同時(shí)更加方便與Internet連接,實(shí)現(xiàn)數(shù)據(jù)共享。
文檔編號(hào)G05B19/418GK103064391SQ20121058392
公開(kāi)日2013年4月24日 申請(qǐng)日期2012年12月28日 優(yōu)先權(quán)日2012年12月28日
發(fā)明者李志波 申請(qǐng)人:廣州數(shù)控設(shè)備有限公司