沈陽機(jī)床集團(tuán)沈一希斯事業(yè)部 (遼寧 110142) 石潔芳
沈陽機(jī)床成套設(shè)備有限責(zé)任公司 (遼寧 110142) 孫 波
在隨系統(tǒng)帶的toolbox光盤里面有HHU的源程序。使用時(shí)先找到源文件的壓縮文件HHU.exe,點(diǎn)擊該文件,源文件會(huì)展開到一個(gè)文件目錄里面,然后打開STEP7,選擇相應(yīng)的STEP7 程序,在源文件目錄下(sources)選擇插入源代碼,把剛才展開的源代碼插入到這個(gè)目錄即可。打開源代碼后,根據(jù)機(jī)床的實(shí)際情況作些相應(yīng)的調(diào)整,匯編生成程序的功能塊。
在PLC程序中,以下功能塊是用來控制HHU的。FC68:HHU的處理程序,必須根據(jù)情況填寫參數(shù)并在OB1里在調(diào)用FC119或FC124的前面調(diào)用FC68。DB68 :(在S7符號(hào)表中的符號(hào)是“_db68”)HHU的輸入和輸出緩沖區(qū),在源代碼里需要根據(jù)機(jī)床的實(shí)際情況進(jìn)行重新修改,然后再匯編。DB69:FB2的暫存數(shù)據(jù)塊。FC119&FC124:是修改過的FC19&FC24。
(1)DB68塊的調(diào)整。在DB68 的源文件hhu2_db68.awl中可調(diào)整HHU和MCP (FC119/FC124) 上機(jī)械軸的順序。MachaxNames:(“X1 Z1 Z11 X2 Z2 Z22 SP1 SP2....”),定義在HHU上顯示的字符串包含了機(jī)床各軸的名字。xconf_ch1..10:(“1, 2, 3, -7”),(“4, 5, 6, -8”),定義每個(gè)通道使用的機(jī)床軸的分配(與機(jī)床數(shù)據(jù) 20070 相同)。如果是旋轉(zhuǎn)軸,在數(shù)字前面加上負(fù)號(hào)。mode_grp:(1, 1, 402,402, 403, 403, 0, 0, 0, 0),通過最低位把相應(yīng)的通道賦值給相應(yīng)的方式組,倒數(shù)第3位定義MCP的尋址00x:FC119/MCP1;10x:FC119/MCP2;20x: FC124/MCP1;40x: FC124/MCP2。NameOfChan1..10:(CHAN1,CHAN2,HilfsKan,Lad.Rechts,Lad.Links,NameChan6,NameChan7,NameChan8,N a m e C h a n9,N a m e C h a n10)。輸入每個(gè)通道的名稱(最多10個(gè)字符)。d i s p2:(N C_ALARM!!!!!!!!reset w.Rap.OVR),當(dāng)HHU 不生效時(shí),屏幕上面顯示內(nèi)容。
(2)F C68的輸入輸出定義。B H G_o n_condition:HHU生效的條件,比如通過這個(gè)參數(shù)可以防止在不適當(dāng)?shù)臅r(shí)候(程序運(yùn)行時(shí))激活手輪HHU。BHG_stop:等同于FB1里的參數(shù)BHGstop,如果為1的話,HHU與NCU的通信中斷,這時(shí)可以從硬件上斷開HHU。HW_to_mmc:等同于FB1的HWheelMMC,如果為1的話,當(dāng)HHU 不生效時(shí),可以通過MMC來選擇第一個(gè)手輪。Inch:選擇米制/英寸制,如果為1的話,則表示為英寸制。BHG_activ:表示手輪已經(jīng)激活(一般用來觸發(fā)一個(gè)PLC的用戶提示信息)。chan_nr:選擇的通道號(hào)(當(dāng)HHU生效的時(shí)候選擇的通道號(hào)或者是HHU 不生效時(shí)外部選擇的通道號(hào))。BAG_nr:所選擇通道對(duì)應(yīng)的方式組(根據(jù)DB68中的設(shè)定)。
(3)調(diào)用FC119/124 的參數(shù)。FC119(FC19)用于標(biāo)準(zhǔn)機(jī)床面板,F(xiàn)C124(FC24)用于窄機(jī)床面板。參數(shù)與調(diào)用FC19的參數(shù)基本相同, 但增加以下兩個(gè)參數(shù)PoiXconf :DB68指向中變量xconf_ch1的起始地址。Mcp2 :是否有第2操作面板,false:mcp1//true:mcp2。注意:如果給Mcp2填寫的參數(shù)不同于DB68.mode_grp分配通道時(shí)指定的面板,那么MCP將通訊不上(MCP上的LED燈閃爍)。
(4)PLC程序。按上面所列方法把相應(yīng)版本的HH?U 源程序文件拷貝到用戶的STEP7 程序中的源程序目錄里,打開DB68 的源程序,根據(jù)機(jī)床的配置修改相應(yīng)的參數(shù),其中灰色部分是經(jīng)常需要修改的地方。再打開hhu2_fc119, hhu2_fc68,編譯生成新的FC119和FC68。
DATA_BLOCK _DB68
STRUCT
bits: array [0..5] of byte;
d i s p 1: s t r i n g[3 2]:= ‘N a m e O f C h a n AUTOgeoX+1234.567 disp2: string[32]:=‘SMTCL-SCHIESS HTC1601000sub’; disp3: string[32]:=‘ ax01 ax02 ax03 ax04 ax05 ax06’; disp4: string[32]:=‘ ax07 ax08 ax09 ax10 ax11 ax12’; disp5: string[32]:=‘BAG:__ Chan:__ ’; MachaxNames: string[128]:= ‘X1 Z1 Z11 X2 Z2 Z22 SP1 SP2 AX9AX10AX11ax12ax13ax14ax15ax16ax17ax18ax19ax20ax 21ax22ax23ax24ax25ax26ax27ax28ax29ax30ax31ax32’; xconf_ch1: array [0..11] of int:= 1, 2, 3, -7; xconf_ch2: array [0..11] of int:= 4, 5, 6, -8; xconf_ch3: array [0..11] of int:=0; xconf_ch4: array [0..11] of int:=0; xconf_ch5: array [0..11] of int:=0; xconf_ch6: array [0..11] of int:=0; xconf_ch7: array [0..11] of int:=0; xconf_ch8: array [0..11] of int:=0; xconf_ch9: array [0..11] of int:=0; xconf_ch10: array [0..11] of int:=0; mode_grp: array [0..9] of int:= 1, 1, 402, 402, 403, 403, 0, 0,0, 0; NameOfChan1: string[10]:= ‘CHAN1’; NameOfChan2: string[10]:= ‘CHAN2’; NameOfChan3: string[10]:= ‘HilfsKan’; NameOfChan4: string[10]:= ‘Lad.Rechts’; NameOfChan5: string[10]:= ‘Lad.Links’; NameOfChan6: string[10]:= ‘NameChan6’; NameOfChan7: string[10]:= ‘NameChan7’; NameOfChan8: string[10]:= ‘NameChan8’; NameOfChan9: string[10]:= ‘NameChan9’; NameOfChan10:string[10]:= ‘NameChan10’; IncDisp:string[24]:=‘,..1,001,010,1001,0010,0’; disp6: string[32]:=‘NC_ALARM!!!!!!!!reset w.Rap.OVR’; disp7: string[32]; state_fb2: word; block_66: string[66]; hhu_out: array [0..19] of byte; hhu_in: array [0..7] of byte; hhu_st_out: array [0..3] of byte; hhu_st_in: array [0..3] of byte; disp_nr: byte; save_ch_nr: byte; save_mst01: dword; save_INC: byte:=b#16#1; act_pos_geo: 0.000000e+000; mst_aus23ret: dword; chan_ret: array [0..1] of word; aux_srw: word; cmdContrPos; STRUCT SYNTAX_ID : BYTE := B#16#82; bereich_u_einheit :byte := B#16#41; spalte :word := W#16#0; zeile :word := W#16#0; bausteintyp :byte := B#16#73; ZEILENANZAHL : BYTE := B#16#1; typ :byte := B#16#F; laenge :byte := B#16#8; END_STRUCT; C1_SPARP_block0_4; STRUCT SYNTAX_ID : BYTE := B#16#82; bereich_u_einheit :byte := B#16#41; spalte :word := W#16#0; zeile :word := W#16#0; bausteintyp :byte := B#16#73; ZEILENANZAHL : BYTE := B#16#1; typ :byte := B#16#F; laenge :byte := B#16#8; END_STRUCT; C1_SPARP_progName1_3; STRUCT SYNTAX_ID : BYTE := B#16#82; bereich_u_einheit :byte := B#16#41; spalte :word := W#16#3; zeile :word := W#16#1; bausteintyp :byte := B#16#7D; ZEILENANZAHL : BYTE := B#16#1; typ :byte := B#16#13; laenge :byte := B#16#20; END_STRUCT ; END_STRUCT ; BEGIN END_DATA_BLOCK OB100的修改(程序): CALL FB 1 , DB7 IN0 :=1 //MCPNum IN1 :=P#I 0.0 //MCP1In IN2 :=P#Q 0.0 //MCP1Out IN3 :=P#Q 8.0 //MCP1StatSend IN4 :=P#Q 12.0 //MCP1StatRec IN5 :=6 //MCP1BusAdr IN6 :=S5T#700MS //MCP1Timeout IN7 :=S5T#200MS //MCP1Cycl IN8 := // IN9 := // IN10 := // IN11 := // IN12 := // IN13 := // IN14 := // IN15 := // IN16 :=FALSE // IN17 := // IN18 := // IN19 := // IN20 := // IN21 := // IN22 := // IN23 :=2 //BHG IN24 :=P#DB68.DBX 870.0(“_DB68”.hhu_in) //BHGIn IN25 :=P#DB68.DBX 850.0(“_DB68”.hhu_out) //BHGOut IN26 :=P#DB68.DBX 878.0(“_DB68”.hhu_st_out) //BHGStatSend IN27 :=P#DB68.DBX 882.0(“_DB68”.hhu_st_in) //BHGStatRec IN28 := // IN29 := // IN30 := // IN31 :=S5T#80MS //BHGCycl IN32 :=2 //BHGRecGDNo IN33 :=2 //BHGRecGBZNo IN34 :=1 //BHGRecObjNo IN35 :=2 //BHGSendGDNo IN36 :=1 //BHGSendGBZNo IN37 :=1 //BHGSendObjNo IN38 :=FALSE //BHGMPI IN39 := // IN40 := // IN41 :=S5T#200MS //NCCyclTimeout IN42 :=S5T#50S //NCRunupTimeout IN43 := // IN44 :=TRUE //NCKomm IN45 := // IN46 :=FALSE //HWheelMMC IN47 := // IN48 := // IN49 := // IN50 := // IN51 := // IN52 := // OUT53:= // OUT54:= // OUT55:= // OUT56:= // OUT57:= // OUT58:= // OUT59:= // OUT60:= // 修改OB1,用如下的程序段代替原來的FC19: L DB19.DBB 8(“MMC”.A_MCPChan) OW W#16#0 JN M006 L 1 T DB19.DBB 8(“MMC”.A_MCPChan) M006: L 2 T MB 380 CALL FC 68 IN0 :=DB100.DBX1.0 //BHG_on_condition IN1 :=I33.7 //BHG_stop IN2 :=FALSE //HW_to_mmc IN3 :=DB10.DBX107.7(“NC”.E_SystemInchDim) //inch OUT4:=DB2.DBX187.6(“ALMSG_DB”.A7000xx[63])//BHG_activ IO5 :=DB19.DBB8(“MMC”.A_MCPChan) //chan_nr IO6 :=MB381 //BAG_nr A DB2.DBX 187.6(“ALMSG_DB”.A7000xx[63]) JC M002 L DB19.DBB 22(“MMC”.E_Chan) OW W#16#0 JN M003 L 1 M003: T DB19.DBB 8(“MMC”.A_MCPChan) M002: CALL FC 119 IN0 :=P#DB68.DBX 306.0(“_DB68”.xconf_ch1) //PoiXconf IN1 :=DB19.DBB8(“MMC”.A_MCPChan) //ChanNo IN2 :=B#16#7 //SpindleIFNo IN3 :=FALSE //Mcp2 OUT4:=M206.0(“ALMSG_DB”.C1.FDD_5100xx[8]) //FeedHold OUT5:=M206.1(“ALMSG_DB”._5FdStop6005xx[8]) //SpindleHold CALL FC 119 IN0 :=P#DB68.DBX 306.0(“_DB68”.xconf_ch1) //PoiXconf IN1 :=DB19.DBB8(“MMC”.A_MCPChan) //ChanNo IN2 :=B#16#8 //SpindleIFNo IN3 :=FALSE //Mcp2 OUT4:=M206.0(“ALMSG_DB”.C1.FDD_5100xx[8])//FeedHold OUT5:=M206.1(“ALMSG_DB”._5FdStop6005xx[8])//SpindleHold 手持單元在數(shù)控機(jī)床加工中應(yīng)用非常普遍,尤其是由于結(jié)構(gòu)原因選擇了固定操縱臺(tái)控制方式的,手持單元的作用就更加突出。手持單元操作靈活,功能明確,既可以實(shí)現(xiàn)手動(dòng)對(duì)刀,也可以做自動(dòng)加工的手動(dòng)調(diào)整,作用不可小視。本臺(tái)機(jī)床調(diào)試完畢后,兩個(gè)HHU就可以同時(shí)工作而且相互不干擾。極大方便了操作者,對(duì)于大型機(jī)床來說雙HHU具有非常大的便利性,值得廣泛應(yīng)用。4. 結(jié)語