摘要:文章針對SIEMENS 840D NCU與PLC之間數(shù)據(jù)通訊的實(shí)現(xiàn)方法進(jìn)行詳細(xì)的說明,包括FB2/FB3、FC21的應(yīng)用技術(shù),并配合相應(yīng)的舉例。
關(guān)鍵詞:840D 數(shù)據(jù)交換 FB2 FC21 NC_var selector
Data exchange between NC and PLC for SIEMENS 840D
HU Guoqing
1.前言
在數(shù)控系統(tǒng)調(diào)試過程中,經(jīng)常需要在NC、PLC之間進(jìn)行數(shù)據(jù)交換,以使整個系統(tǒng)都在程序控制之中,作為當(dāng)今世界優(yōu)秀的高端數(shù)控產(chǎn)品代表SIEMENS 840D,它提供了先進(jìn)的通道和技術(shù)支撐,使你可以輕松地實(shí)現(xiàn)數(shù)據(jù)的暢通交換。筆者根據(jù)工作過程中積累的設(shè)計與編程經(jīng)驗(yàn),在此就這個主題與同行探討。
經(jīng)常使用的數(shù)據(jù)交換包括M代碼、T代碼、H/F功能傳輸以及840D系統(tǒng)提供的功能強(qiáng)大的接口信號,不需敘述。在這里只是針對一些專用數(shù)控功能應(yīng)用時需用到的數(shù)據(jù)交換方法進(jìn)行較詳細(xì)的說明。
2. PLC讀/寫NC參數(shù)/變量
在進(jìn)行數(shù)控銑鏜床滑枕低頭補(bǔ)償或刀庫定位控制編程時,都需要用到PLC讀/寫NC參數(shù)或變量。
SIEMENS的8x0D toolbox中提供了FB2(GET)/FB3(PUT)功能塊程序,結(jié)合使用配套的NC_var Selector軟件就可實(shí)現(xiàn)此項功能。其中FB2用于讀取NC變量(包括MD參數(shù)和NC內(nèi)部變量),F(xiàn)B3用于寫NC變量。
2.1 NC_var Selector的使用
對于讀取的NC變量,應(yīng)先使用NC_var Selector軟件選擇所需的變量,最終建立一個AWL源文件。
下面就以Ver6.4版為例說明其使用步驟:
首先建立一個新的Project,在庫文件打開框中根據(jù)需要選擇ncv_NcData.mdb(讀取NC參數(shù))或者ncv_611d.mdb(讀取611D驅(qū)動參數(shù))等。
根據(jù)需要選擇相應(yīng)的變量。為了提高效率,可以雙擊Unit或Compenent列,等出現(xiàn)Selections on NC-variables對話框時,點(diǎn)擊option中selection框,然后在selection parameters方框中選擇變量類型。
選完了變量后,必要時可對各變量名稱進(jìn)行修改,然后保存變量表,命名可以將要生成的DB塊名稱,如DB150.var等。
選擇Code菜單下Generate功能,生成DB150.awl文件。(請注意文件目錄)
2.2 Step 7下生成DB塊
下面以Step 7 V5.1版為例說明其步驟:
在Project中Sources目錄下,使用菜單Insert下External Source…功能導(dǎo)入DB150.awl文件。
雙擊DB150.awl打開文件,在S7 LAD/STL/FBD下進(jìn)行編譯(在File菜單下),生成DB150.stl。
在Project下選擇DB150,將其Download到PLC CPU中。
在符號表中增加條目:Symbol——NCVAR,Address——DB150,DATA TYPE——DA150。
2.3 使用FB2功能塊
在OB1中增加一個網(wǎng)絡(luò),調(diào)用FB2,調(diào)用時需要自動生成一個背景數(shù)據(jù)塊,此時你可以定義一個當(dāng)前系統(tǒng)中不存在的塊名(如DB110)。下面說明其各參數(shù)的含義以及如何輸入其數(shù)值。
CALL FB 2 , DB110
Req :=塊操作請求,類型:BOOL。每激活一次讀操作進(jìn)行一次。1:激活。
NumVar :=變量數(shù)量。輸入要讀取變量的數(shù)量,如B#16#3等。
Addr1 :=變量1。如DB150中變量1,“NCVAR”.C1_M_AXCONF_MACHAX_1
Unit1 := Column1:= Line1 :=可輸入0或?qū)嶋H位置值。
Addr2 :=變量2。如DB150中變量2,“NCVAR”.C1_M_AXCONF_MACHAX_2
……
RD1 :=變量存放地址1,注意其類型與Addr1對應(yīng)的變量類型一致。如DB129.DB_VAR1等。
RD2 :=變量存放地址2,其類型應(yīng)與Addr2變量類型一致。如P#M220.0 INT1等。
RD3 :=……
Error :=出錯代碼,類型:BOOL。若數(shù)據(jù)傳輸出錯,則該位為1,正常為0。
NDR :=執(zhí)行代碼,類型:BOOL。若數(shù)據(jù)傳輸成功,則該位為1,否則為0。
State :=狀態(tài)字,類型:WORD。若傳輸不成功,則通過狀態(tài)字可判斷原因。將狀態(tài)字?jǐn)?shù)值作比較,可以編程輸出到自定義報警地址之中。
NOP 0
2.4 編程注意事項
1) FB2 /FB3生效的前提是在OB100初始化程序中調(diào)用FB1(RUN_UP)時須設(shè)置NCKomm=TRUE。
2) 為了防止因非正常中止(如斷電、RESET等)造成通訊中斷,致使通訊數(shù)據(jù)阻塞,應(yīng)在非正常中止后的第一個OB1循環(huán)中屏蔽FB2/FB3的調(diào)用(需用到首次循環(huán)變量)。(同樣的建議適用于FB4/FB5功能塊)
3) 對于多通道數(shù)控系統(tǒng)而言,若需要讀取通道參數(shù),則在一次FB2/FB3調(diào)用任務(wù)中ADDR1~8中只能出現(xiàn)一個通道的通道參數(shù)。
4) 通常一次讀/寫過程要持續(xù)1~2個PLC循環(huán),因此FB2/FB3只能在循環(huán)模式下調(diào)用。
2.5 前面主要對讀取NC參數(shù)進(jìn)行了闡述,如果需寫NC參數(shù),其方法基本一致,F(xiàn)B3的參數(shù)也基本相同。
3. NC程序讀/寫PLC數(shù)據(jù)
對于多附件頭、自動存取刀具的平面刀庫,由于其類型/位置檢測信號都是進(jìn)入PLC的,在用NC子程序編寫對刀或?qū)S脛幼鲬?yīng)用程序時,經(jīng)常需要讀取PLC數(shù)據(jù)。
SIEMENS的8x0D toolbox中提供了FC21(Transfer)功能塊程序,結(jié)合NC變量$A_DB*的使用就可實(shí)現(xiàn)此項功能。
3.1 FC21功能塊的使用
FC21的使用相對比較簡單,只需要在程序中調(diào)用它,填入相應(yīng)的參數(shù)即可。下面說明其各參數(shù)的含義。
CALL FC 21
Enable :=使能,類型:BOOL。1——激活功能塊。
Funct :=塊功能,類型:BYTE。3——讀NC變量,4——寫NC變量
S7Var :=PLC數(shù)據(jù)地址,類型:任意(根據(jù)需傳送的數(shù)據(jù)數(shù)量而定)。如:P#M220.0 BYTE 1,P#DB100.DBX8.0 BYTE 4等。注意:起始地址須是指針,后面表示數(shù)據(jù)長度。
IVAR1 :=類型:INT。對于Funct=3/4時,其含義是位置偏置,即相對起始地址偏置值。通常設(shè)為0。
IVAR2 := 類型:INT。對于Funct=3/4時,通常設(shè)為-1。
Error := 出錯指示,類型:BOOL。若數(shù)據(jù)傳輸出錯,則該位為1,正常為0。
ErrCode:=錯誤代碼,類型:INT。
在PLC程序中對S7Var的數(shù)據(jù)值分別進(jìn)行控制,在NC程序中就可得到相應(yīng)的值。
3.2 NC編程中$A_DB*變量的使用
840D的NC系統(tǒng)變量中有四種用于讀/寫PLC變量,分別是$A_DBB、$A_DBW、$A_DBD、$A_DBR,分別用于操作8位字節(jié)、16位字、32位雙字和32位實(shí)數(shù)。
變量使用格式:$DB*[n] n=0,1,2…
例如:其中$DBB[0]對應(yīng)FC21傳送的第一個字節(jié),其中$DBB[1]對應(yīng)FC21傳送的第二個字節(jié),依此類推。
編程實(shí)例1: IF ($A_DBB[0]<>4)AND($A_DBB[0]<>8)
GOTOF N3000
編程實(shí)例2: MSG(“XT_No:“<<$A_DBB[1]<<””)
本文所述的數(shù)據(jù)交換功能對于840D系統(tǒng)來說僅是鳳毛麟角,其更多更簡便實(shí)用的方法尚需進(jìn)一步探討。文中不恰當(dāng)之處,敬請同行指正為感。