1 總體結構及實現方法 數控軟件總體結構圖
1.1 軟件的總體結構
CNC系統常常作為一個獨立的過程控制單元用于工業自動化生產過程中,因此它的系統軟件必須完成管理和控制兩大功能。CNC系統是由軟件和硬件組成的,硬件為軟件的運行提供支持環境。由于硬件和軟件在邏輯上是等價的,由硬件完成的工作原則上也可以由軟件完成。因此軟件的結構取決于軟件和硬件的分工,也取決于軟件本身的工作性質。根據目前該系統的設計,下位機只負責位置伺服控制,因此上位機負責其余的管理工作和控制工作。
數控軟件的總體結構可以設計成六層,即輸入層,譯碼層,刀補層,協調層,監控層,設備驅動層。輸入層是數控程序。譯碼層將數控指令解釋成為數控系統的內部數據格式。刀補層進行刀具補償。協調層將指令分解到數控系統的各個功能部件。如數控指令翻譯、輔助功能設備控制和運動控制。監控層對于系統當前的狀態和當前指令的合法性進行檢驗。設備驅動層直接實現對系統功能部件的控制。
在該數控系統的軟件中,采用了前后臺型的結構形式,前臺程序即實時中斷程序完成全部的實時功能(包括協調層、監控層、設備驅動層),主要是插補功能和系統診斷功能、I/O處理等。后臺程序的主要功能是插補前的準備功能及調度管理(包括輸入層、譯碼層、刀補層),具體地講,是數控程序輸入、譯碼、刀具補償、顯示及上述任務之間的調度管理功能。后臺程序是一個循環運行程序,在運行過程中,前臺程序(中斷服務程序)不斷插入,共同完成零件加工任務。而位置伺服的任務主要由下位機完成。
在譯碼層和刀補層中,我們采用多任務調度的方式協調系統的工作,進行優化后可以最充分地利用系統的資源。加工程序由上位機進行譯碼、刀具補償、速度處理后,得到刀具中心的插補指令數據,上位機將這些插補指令數據和其它的指令數據以固定格式存放于一緩沖區中,每次中斷發生時,上位機根據這些指令數據進行相應的處理,如果存在插補指令則實時計算出插補數據,并且送入下位機,下位機從緩沖區根據這些數據控制相應軸的電機動作。當上位機中的一幀指令數據被讀完后,在插補間隙自動計算出新的插補指令數據,填入緩沖區。
在上位機的內存中設置若干個插補緩沖區,用標志字指示當前數據塊的位置,引導下位機讀取當前指令數據。當下位機進行控制時,上位機不斷進行預插補計算,直至所有插補緩沖區填滿為止,當接收到下位機的中斷信號后,上位機進行實時的插補計算,并且將數據送到下位機。采用這樣方式能夠最充分地利用上位機CPU的時間,真正實現并行實時工作。
1.2 軟件的具體實現方法
1.2.1 軟件的運行環境和開發環境
采用Microsoft Windows 3.1作為開發環境,采用Borland C++ 3.1作為編程語言。
1.2.2 具體實現方法
啟動畫面的修改
在Windows啟動時,會出現一幅帶有Microsoft標志的啟動畫面,但作為專用數控系統,我們希望能用自己的啟動畫面代替該啟動畫面,顯示具有數控系統標志的啟動畫面。方法如下:
方法一:
(a) 創建一幅BMP圖,再它壓縮成RLE文件,命名為CNC.RLE;
(b) 執行下面的命令形成新的WIN模塊:COPY/B WINF +VGALOGO.LGO+CNC.RLE
(c) 重新啟動Windows,可看到新的啟動畫面。
方法二:
(a) 編制一個DOS下顯示圖形的程序,圖形可以是任意格式(*.bmp,*.gif,*.jpg等均可),選擇自己需要并且喜歡的圖形作為啟動標志;
(b) 編制一個批處理文件,將圖形顯示程序放在前面,將Windows的啟動命令Win/B放在后面(/B選擇項使啟動標志不出現);
(c) 用生成的批處理文件代替原來的Windows的啟動命令,運行即可。
多任務調度的實現
在我們的數控系統中,為了實現多個任務之間的協調與管理,我們采用非搶先式的多任務調度和多緩沖區的方式實現了對于實時性不強的任務(數控程序輸入、譯碼、刀具補償、顯示等)的調度,其具體實現方法是:
(a) 規定每個任務優先級計算方法(優先級為非固定的);
(b) 建立任務隊列,排列當前需要完成的任務,此隊列不考慮優先級;
(c) 在每個任務周期,計算每個任務的優先級,執行優先級最高的任務;
(d) 將每次任務執行的結果存儲在多個緩沖區中,然后可以執行下一個同類任務。
在數控系統中,顯示的任務優先級始終是最低的,而其它的任務的優先級則是變動的。通過變動各個任務的優先級進行協調,雖然每次都執行的是優先級最高的任務,但實際上各個任務都會得到執行,在沒有其它任務的情況下顯示,也可以得到執行。
多緩沖區的實現方法
為了協調多個任務之間的運行,在軟件中建立多個數據緩沖區,具體的實現方法是:
(a) 為多緩沖區分配內存,建立指向當前緩沖區的讀、寫指針,構成一個環形多緩沖區;
(b) 為每塊內存設置一個標志位,作為對各緩沖區進行操作的判斷依據;
(c) 每讀一個緩沖區,對該緩沖區設置已讀標志,當前讀指針向前移動一個緩沖區;
(d) 每寫一個緩沖區,對該緩沖區設置已寫標志,當前寫指針向前移動一個緩沖區;
(e) 對于當前操作未結束的緩沖區,設置正在操作標志,禁止其它操作。
采用這種方法,將系統中必須在單個插補周期內完成的運算“均化”在多個插補周期內完成,有效地利用了CPU的計算時間,提高了系統的工作效率。
Windows環境下的中斷的實現
Windows是一種非獨占式的多任務系統,應用程序通過應用程序隊列來接收輸入,然后消息循環從應用程序隊列中獲取輸入消息,并把它發送給相應的窗口。在這種工作模式下,實現實時控制較為困難。然而,從另外一個角度看,用戶的鍵盤、鼠標及定時器輸入都是硬件中斷,而Windows提供的設備驅動程序實際上是中斷服務程序。由于實際加工對于實時性的要求很高,因此必須采用中斷的方式實現實時性強的任務。由于中斷可以在任何時刻發生,而不限于使用設備的應用程序運行期間,所以中斷服務程序必須在固定代碼段中。在大框架EMS內存配置中,只有一種類型的代碼才能保證任何時刻均可用來進行此類中斷服務,這種類型的代碼就是動態連接庫(DLL)的固定代碼段中的代碼。在保證可靠性的前提下,必須采用DLL來實現中斷。在我們的系統中采用DLL實現了硬件中斷,運行可靠。
替換系統外殼,成為專用系統
Windows中Progman.exe是Windows的外殼,是Windows的重要組成部分,但并不是Windows中的必備成分,每個用戶都可以編制自己的外殼程序。由于數控系統與生產設備直接連接,用戶常常希望數控系統是一個專用系統,另外,Windows本身是一個多任務系統,同時執行多個應用程序可能會發生程序間的沖突,因此,有必要對Windows 進行改造,改造方法很簡單,采用數控軟件代替Windows的“Shell”——Progman.exe,這樣,Windows啟動后直接運行數控軟件,在用戶的操作中,感受不到Windows的存在,同時避免了應用程序之間的軟硬件的沖突。
2 后語
以PC為基礎的CNC是NC技術發展的必然趨勢,它保證了CNC的基礎軟硬件隨PC技術的而不斷更新,使NC技術緊跟PC技術的發展,可直接應用PC的發展成果,這對節省開發費用、縮短開發周期具有重要的意義。
業務咨詢:932174181 媒體合作:2279387437 24小時服務熱線:15136468001 盤古機械網 - 全面、科學的機械行業免費發布信息網站 Copyright 2017 PGJXO.COM 豫ICP備12019803號
邹平县 | 威信县 | 柯坪县 | 通山县 | 光泽县 | 靖边县 |