陳學軍,林海波,吳鋼華
CHEN Xue-jun1,3, LIN Hai-bo2, WU Gang-hua3
(1. 臺州職業技術學院 電子電氣系,臺州 318000;2. 臺州職業技術學院 機電工程學院,臺州 318000;3. 上海大學 機電工程與自動化學院,上海 20072)
在數控加工中,由于標準數控系統采用標準的G代碼編程,標準操作界面,一般用戶只能用直線、圓弧插補指令編制加工程序,機床廠家也只能對一些如報警類的文本等進行一些編輯。對于一些由復雜曲線或曲面所構成的非圓零件的磨削,就需要進行特殊曲線的插補、誤差補償、工藝參數的實時調整等[1],這些功能的實現都對操作人員的技術水平和操作經驗提出較高的要求;另外,在加工中經常會遇到一些相似的復雜零件,若采用傳統編程,將造成工作量大、易出錯,生產效率低等問題。 針對這些問題,對一些專用設備如磨床等,根據用戶要求開發數控系統的二次界面,實現各種參數補償或參數化自動編程等成為提高生產效率的關鍵。西門子840D數控系統的二次開發功能為實現這些參數化編程和參數補償等提供了平臺。本文研究了西門子數控系統的OEM 開發軟件和開發環境 ,主要針對數控磨齒機的用戶界面要求,進行了二次界面的設計與嵌入,實現數控齒輪磨削的參數化編程和誤差補償。
SINUMERIK 840D 數控系統的CNC分為五個部分,由人機界面CPU(MMC-CPU)、數字控制CPU(NCK-CPU)和可編程邏輯控制器CPU(PLCCPU)三部分再加上伺服驅動控制和中間通訊部分。在物理結構上,NC-CPU和PLC-CPU合為一體,合成在NCU(Numerical Control Unit)中,但在邏輯功能上相互獨立。 人機界面負責NC數據的輸入和顯示,實現機床的操作、監視、編程、參數設置等功能,它由OP單元、MMC單元(人機通信)、MCP(機床操作面板)三部分組成;可編程控制器PLC具有機床邏輯控制、機床操作、PLC數據管理等功能;NCK具有NC 代碼執行、代碼預處理、插補計算、伺服控制、NC數據管理等功能。SINUMERIK 840D 是一個開放的數控系統,用戶購買開發軟件包,即可通過API調用系統內置的各種功能,定制窗口界面,且開發環境為在通用PC 的WINDOWS 平臺下用 VB、VC 等圖形化軟件進行開發。
840D數控系統的開發軟件是OEM軟件包,可用在MMC103以上各種機床界面的二次開發。將OEM 開發軟件安裝在計算機上,在HMIAdvanced 文件中,OEM 與數據管理文件DH、頭文件HD、臨時文件夾ALTMP、用戶修改信息USER、MMC2標準用戶界面和其他信息ADD ON等文件夾一起構成了SINUMERIK840D系統文件結構,OEM 軟件包的主要功能有:人機界面上各種軟件的定義;利用 OEM提供的 DDE 接口,可以實現NCU 中文件的管理及各種變量和參數的訪問、R 參數訪問、PLC 中各種變量的訪問、MMC中文件的管理[2]。
OEM 軟件中的順序結構控制提供了西門子程序的標準框架,也提供了很多標準的模塊和窗體。按照用戶需求編寫的 OEM開發程序必須嵌入到西門子提供的標準順序控制的框架中,使用完整的順序控制,HMI軟件包才支持程序,否則不能進行程序的運行[3]。為了快捷地進行OEM軟件的開發設計,我們可以利用HMI-Programming-Package中的OEM Samples實例,選擇其中一個實例如OEMBSP0進行操作界面設計、動態鏈接庫的創建等。
磨齒機加工的的非圓齒輪種類不同、形狀各異,但由于工件輪廓形成具有規律性,其形狀可用諸如齒數、模數、壓力角和螺旋角等有限個特征參數來描述[4]。根據數控磨齒機的功能要求,可將齒輪數控編程所需的參數分為五組:齒輪類型參數、齒輪參數、刀具參數、工藝過程參數和機床安裝參數[5]。開發的操作界面的整體框圖如圖1所示:

圖1 數控磨齒機參數化編程軟件框圖
用VB進行操作界面的設計,每一框中的內容就是一個界面,每個界面包括窗體和模塊,本設計一共十個窗口,每一個窗口作為單獨的子功能,以子窗口的形式分別被調用,多個窗體一起組成整個界面功能。 分別為對窗體的有關屬性是這樣設置的:標題(Caption),名稱(Name),標注(Tag)都設置成一個內容,一般按照窗體的序列(OEMFRAM0至OEMFRAM9)或窗體的名稱來設置,便于程序的應用與調用。
在VB環境中,把設計的數控磨齒機軟件界面控制程序的窗體和模塊生成gearwheel.exe執行程序,以便嵌入到西門子提供的標準順序控制中。
西門子提供的標準控制界面的水平軟鍵的菜單文本在VB環境下是不能編輯的,只有通過VC語言創建動態鏈接庫來實現寫入。創建順序控制的動態語言DLL要根據相應的RC文件,利用VC++來創建。創建動態鏈接庫之前,先建立一個RC源文件,即一個用寫字板來編輯的RC文本。本工程中的RC源文件的部分內容如下
STRINGTABLE DISCARDABLE
BEGIN
0 "10 " //水平軟鍵的起始地址
1 "100" //垂直軟鍵的起始地址
2 "200" //對話框或文本的起始地址
10 "機床狀態" // 第 一個界面的第一個水平軟鍵的文本
11 "參數設置" // 第一個界面的第二個水平軟鍵件的文本
12 "誤差補償" // 第一個界面的第三個水平軟鍵的文本
13 "運行軌跡" // 第一個界面的第四個水平軟鍵的文本
16 "退出" // 第一個界面的第七個水平軟鍵的文本
END
文本中的內容就是軟件標簽和對話框、標簽上要實現的文本,所以RC文件中的文本與軟鍵等控件有一一對應的關系[6]。RC文件建立后,利用VC++,生成動態鏈接庫G_UK.DLL,并確保所處的文件是“release”,而不是“debug”。
OEM軟件順序控制主要有以下六個文件:初始化文件REGIE.INI,執行程序文件GEARWHEEL.EXE,MMC.INI ,狀 態 管 理 文件GEARWHEEL. ZUS , GEARWHEEL. INI,窗口管理文件GEARWHEEL. MDI ,語言文件LANGUAGE. DLL,其結構如圖2所示。

圖2 OEM順序結構
下面通過全數控磨床控制界面的嵌入實現過程,來說明整個順序控制的結構和各文件之間的功能和關系。
1)建立程序管理文件Regie. ini
Regie是一個控制程序,可以對輔助程序(基本模塊)、區域應用程序、動態鏈接庫和VBX文件進行柔性管理,它具有系統初始化、加載動態鏈接庫、啟動應用程序、系統配置、區域轉換的功能。順序控制的啟動是是由regie預先起動輔助應用(DDL,VBX)到區域應用。當一個應用程序啟動后,Regie就等待,直到提示初始化結束。Regie分三種類型的區域應用:一種是標準的OEM區域應用,由VB創建,嵌入到順序控制中;第二種是WINDOWS下的PCs用戶應用程序;第三種是WINDOWS下的標準應用程序如EXCEL或EDIT等。,Regie用 REGIE.INI、REGIE.DLL、Regielanguage.INI、OEMFRAME.INI、MMC.INI文件來實現這些區域應用程序。
Regie. Ini可用文本進行編輯,就象windows的其他初始化文件一樣。各應用程序是由regie開始管理啟動,其信息一起置于regie. ini中,構成程序管理文件。因此,用戶開發的所有應用程序都要在Regie..ini中進行配置,程序都需要通過它來嵌入到西門子標準的 HMI 系統中。
在C:SiemensSinumerikHMI-Advancedmmc2中, regie. ini已經進行了標準化的設置,要想把設計的應用程序嵌入到標準界面中,只需在regie中修改一些設置。在[TaskConfiguration]中,task0-7對應著標準界面八個水平軟鍵,HSK0~HSK5為數控系統標準控制界面按鍵,設計時一般從HSK6、HSK7進入用戶自己開發的OEM軟件控制。在數控磨齒機床的OEM軟件設計中,可基本沿用標準界面框架控制,本設計的OEM應用程序名為gearwheel,由HSK6軟鍵進入應用程序,響應極限時間為20s。在C:SiemensSinumerikHMIAdvancedOEM下的regie. ini中,進行如下設置:
[TaskConfiguration]
Task6=name:=gearwheel, timeout:=20000,PreLoad:=true
在系統啟動時需要直接進入并顯示設計的應用程序的畫面,設置如下:
圖2 OEM順序結構
[Miscellaneous]
PoweronTaskIndex =6
這樣,只要按下水平軟鍵第七個鍵,就進入到開發的應用程序中。在此磨齒機床的OEM軟件開發中,沿用標準用戶界面MMC2中的mmc. in,i不再另進行設置。
2)在…/OEM/下建立新的文件夾GearWheel,并在GearWheel中以文本形式建立子窗口列表文件GearWheel.MDI及控制文件GearWheel.ZUS 。
其中MDIList是開發的二次界面的子窗口的列表,所有的子窗口名稱列表都在 GearWheel.MDI中。
GearWheel.MDI用寫字板編輯,包含了各子窗口的名稱、子窗口的類型、預處理措施和注釋等信息[7]。本磨床的二次開發控制軟件中,經過合理規劃和設計,進行如下設置:
"OEMFRAM0" 1 //主界面
"OEMFRAM1" 1 //機床狀態
"OEMFRAM2" 1 //參數設置
"OEMFRAM3" 1 //誤差補償
"OEMFRAM4" 1 //運動軌跡
"OEMFRAM5" 2 //齒輪類型
"OEMFRAM6" 2 //齒輪參數
"OEMFRAM7" 2 //刀具參數
"OEMFRAM8" 2 //工藝參數
"OEMFRAM9" 2 //安裝參數
"OEMFRAM0" 、"OEMFRAM1"等表示子窗體名稱,數字“1”表示第一個狀態“2”表示第二個狀態,//后面為注釋文字。OEM0是主界面,在程序執行時以第一個界面出現,接下來的窗體依次在相應軟鍵按下時顯現。
GearWheel.ZUS也是用寫字板編輯的, 記錄著開發的應用程序的所有狀態和行為,描述狀態中的軟鍵分配任務。由于篇幅的關系,在此僅列出一個主界面的狀態矩陣。
999 "----------------------------------------------------"
999 "Zustand Htext Vtext Childs Return Folgezustand Flag Kommentar "
999 主界面
[0] 0 0 "OEMFRAM0" "0" 0
0 -1 -1 "" "0" 1
1 -1 -1 "" "1" 2
2 -1 -1 "" "2" 3
3 -1 -1 "" "3" 4
4 -1 -1 "" "4" -1
5 -1 -1 "" "5" -1
6 -1 -1 "" "6" -1
7 -1 -1 "" "7" -1
8 -1 -1 "" "8" -1
9 -1 -1 "" "9" -1
10 -1 -1 "" "10" -1
11 -1 -1 "" "11" -1
12 -1 -1 "" "12" -1
13 -1 -1 "" "13" -1
14 -1 -1 "" "14" -1
15 -1 -1 "" "15" -1
16 -1 -1 "" "16" 0
第一個狀態矩陣中的第一行中的[0]表示狀態的號碼,表示第一個狀態,頁面號為0,第一個頁面是設計的主界面;第二個矩陣中的[1]表示第2個狀態,頁面號為1,是加工顯示頁面。0 0分別表示水平軟鍵和垂直軟鍵的起始地址, "OEM0"表示顯示窗口對應的主界面名稱, "0"表示返回值,最后一個0表示標志符(FLAG),標志符表示各狀態控制子界面的頁面序號。
第二行中首位的0表示第一個水平軟鍵,向下0~7表示水平方向的8個軟鍵,8~15表示垂直方向的8個軟鍵,16表示返回鍵,返回值下面的數字表示按下鍵時將要返回的狀態。其他幾行的參數同第一行對應。
設計的狀態矩陣一中,在主界面下,當按下水平軟件的第一個按鍵時,將切換到頁面[1],也就是"機床狀態" ,當按下第2個水平軟鍵時,將切換到頁面[3],也就是參數設置畫面,按下第三個水平軟鍵時,將切換到[4] ,也就是運動軌跡畫面。只要設定狀態矩陣中的這些參數,就可達到滿意的軟鍵分配及頁面控制功能。
3)編輯本工程的初始化文件GearWheel.ini,將其移至…/OEM/下。
GearWheel.ini是OEM界面控制的向導文件,它控制著子窗口和控制文件的管理,文件名字由程序模塊PRIVATE.BAS中作為一個常量來定義。可用文本進行編輯,其內容分為CONTROL與DEBUG兩大部分:
[CONTROL]
MDIList=GearWheelGearWheel.MDI
ControlFile=GearWheelGearWheel.ZUS
[DEBUG]
i_Button=1
Stop_Button=1
Recall_Button=1
設置好后把GearWheel.ini系統初始化文件拷貝到OEM目錄下,否則可執行程序在運行時找洷路徑。
4)在OEM中嵌入前兩步生成的VB多窗體執行文件gearwheel.exe及VC語言生成的g_uk. dll與ini文件。
將前面生成的gearwheel.exe執行文件移至…/OEM/下, 將多種語言的g_uk. Dll文件移至language文件夾中,language文件夾中的RE_UK.ini初始化文件中包含了軟鍵文本,要使HSK6(第7個水平軟鍵)的顯示文本為“齒輪磨削”, 打開RE_UK.ini文件,可進行如下設置:
[HSoftkeyTexts]
[HSK6="齒輪磨削"]
設計的界面嵌入后,要在界面上顯示軸的坐標值、進給速度,同時把相應的參數設置等讀入系統程序中實現數控機床的監控與運行。就必須要建立DDE鏈接來實現這些數據交換的功能,需要OEM為我們提供的DDE接口以訪問NC、PLC、MMC103的變量和文件。本工程所設計的程序 NC/PLC之間的通訊是通過OEM軟件所提供的OPC(OLE for process control,過程控制)和Sinumerik-COM接口來實現的[8]。使用NC-DDE服務程序所提供三種服務:變量訪問(訪問NC,PLC,Drives中的數據變量),區域服務(在HMI和NCU之間的文件復制),PI指令服務(調用NCU中的指令)。NC-DDE服務程序是訪問底層數控部分的唯一接口,任何向數控系統傳遞或從數控系統接收的數據都要經過NC-DDE服務程序。用戶程序通過動態數據交換協議(DDE)來調用NCDDE服務程序中的服務。所設計的磨床的NC當前坐標位置動態獲取與顯示:其實現方法如下:
數據自動更新
Label1.LinkTopic = "ncdde|ncu840d"
Label1.LinkItem="/Channel/MachineAxis/actToolBasePos[u2,3]"
Label1.LinkMode = 1 'Hotlink
NC 變量參數的寫入:
Label1.LinkTopic = "ncdde|ncu840d"
Label1.LinkItem = "/Channel/Parameter/R[1]"
Label1.LinkMode = 2 'Manual
Label1.Caption = "4" ;寫入值
Label1.LinkPoke
NC 指令的執行:
Label1.LinkTopic = "ncdde|ncu840d"
Label1.LinkMode = 2
Label1.LinkExecute "COPY_TO_NC(""C:NC est.mpf"",_/NC/_N_MPF_DIR/N_TEST_MPF,
trans)" ;送文件到 NC
數據自動更新里面,第二通道中第三根軸實際位置發生改變時系統數據自動進行更新,數據自動更新時LinkMode必須設置為1。
NC 變量參數的寫入就是用戶把數據4寫到第一通道中的R[1]中,Label1.LinkMode = 2,即手動,動態數據交換方法必須為LinkPoke。
NC 指令的執行就是把TEST_MPF文件從MMC傳送到NC。Label1.LinkMode = 2,即手動。
至此,完成了整個OEM的設計過程,啟動HMI-startup,進入HMI標準界面,點擊“齒輪磨削“軟鍵即進入OEM軟件用戶主界面,如圖3所示。點擊“參數設置“ 軟鍵, 進入OEM軟件用戶參數設置畫面,進行滿足加工要求的相關參數設置。

圖3 用戶主界面

圖4 參數設置界面
針對二次界面用戶開發問題,本文主要研究了西門子840D數控系統OEM軟件的開發方法,以數控齒輪磨削參數化自動加工為對象,提出了設計和解決方法,完成了二次界面的設計并運行。設計的二次控制界面的應用大大簡化了復雜相似零件的編程,節省加工時間,提高生產率和產品精度。
[1] 徐華兵, 周軍輝. 數控磨齒機加工準雙曲面齒輪[J]. 現代制造工程. 2003(8): 22-24.
[2] SINUMERIC 840D/840Di HMI Environment User’s Manual[M]. SIEMENS, 2001.2.
[3] 李南, 王剛, 趙學. 開發軟件OEM下界面的編制[J]. 機床與液壓, 2006(8): 207-209.
[4] 胡赤兵, 余亮. 非圓齒輪數控滾齒加工的參數化自動編程系統[J]. 機械設計與制造. 2010. 2(16): 168-169.
[5] 朱秀琳, 文懷興, 孫波. 數控磨齒機人機界面的開發[J].制造技術與機床. 2004(5): 98-100.
[6] 吳艷花. 基于VB下西門子840D數控系統界面的二次開發[J]. 蘭州理工大學, 2005.
[7] 陳順紅, 張桂香. 基于840D的凸輪軸磨床數控軟件的開發[J]. 制造技術與機床. 2008(3): 147-149.
[8] 魏春雪. SINUMERIK840D在軋輥磨床曲線加工中的應用[D]. 蘭州理工大學, 2006.