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