双HHU手持单元在数控大型卧式车床上的应用(下)

2015-04-17 01:02沈阳机床集团沈一希斯事业部辽宁110142石洁芳
金属加工(冷加工) 2015年19期
关键词:源文件手轮源代码

沈阳机床集团沈一希斯事业部 (辽宁 110142) 石洁芳

沈阳机床成套设备有限责任公司 (辽宁 110142) 孙 波

3. PLC程序的调整

在随系统带的toolbox光盘里面有HHU的源程序。使用时先找到源文件的压缩文件HHU.exe,点击该文件,源文件会展开到一个文件目录里面,然后打开STEP7,选择相应的STEP7 程序,在源文件目录下(sources)选择插入源代码,把刚才展开的源代码插入到这个目录即可。打开源代码后,根据机床的实际情况作些相应的调整,汇编生成程序的功能块。

在PLC程序中,以下功能块是用来控制HHU的。FC68:HHU的处理程序,必须根据情况填写参数并在OB1里在调用FC119或FC124的前面调用FC68。DB68 :(在S7符号表中的符号是“_db68”)HHU的输入和输出缓冲区,在源代码里需要根据机床的实际情况进行重新修改,然后再汇编。DB69:FB2的暂存数据块。FC119&FC124:是修改过的FC19&FC24。

(1)DB68块的调整。在DB68 的源文件hhu2_db68.awl中可调整HHU和MCP (FC119/FC124) 上机械轴的顺序。MachaxNames:(“X1 Z1 Z11 X2 Z2 Z22 SP1 SP2....”),定义在HHU上显示的字符串包含了机床各轴的名字。xconf_ch1..10:(“1, 2, 3, -7”),(“4, 5, 6, -8”),定义每个通道使用的机床轴的分配(与机床数据 20070 相同)。如果是旋转轴,在数字前面加上负号。mode_grp:(1, 1, 402,402, 403, 403, 0, 0, 0, 0),通过最低位把相应的通道赋值给相应的方式组,倒数第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)。输入每个通道的名称(最多10个字符)。d i s p2:(N C_ALARM!!!!!!!!reset w.Rap.OVR),当HHU 不生效时,屏幕上面显示内容。

(2)F C68的输入输出定义。B H G_o n_condition:HHU生效的条件,比如通过这个参数可以防止在不适当的时候(程序运行时)激活手轮HHU。BHG_stop:等同于FB1里的参数BHGstop,如果为1的话,HHU与NCU的通信中断,这时可以从硬件上断开HHU。HW_to_mmc:等同于FB1的HWheelMMC,如果为1的话,当HHU 不生效时,可以通过MMC来选择第一个手轮。Inch:选择米制/英寸制,如果为1的话,则表示为英寸制。BHG_activ:表示手轮已经激活(一般用来触发一个PLC的用户提示信息)。chan_nr:选择的通道号(当HHU生效的时候选择的通道号或者是HHU 不生效时外部选择的通道号)。BAG_nr:所选择通道对应的方式组(根据DB68中的设定)。

(3)调用FC119/124 的参数。FC119(FC19)用于标准机床面板,FC124(FC24)用于窄机床面板。参数与调用FC19的参数基本相同, 但增加以下两个参数PoiXconf :DB68指向中变量xconf_ch1的起始地址。Mcp2 :是否有第2操作面板,false:mcp1//true:mcp2。注意:如果给Mcp2填写的参数不同于DB68.mode_grp分配通道时指定的面板,那么MCP将通讯不上(MCP上的LED灯闪烁)。

(4)PLC程序。按上面所列方法把相应版本的HH™U 源程序文件拷贝到用户的STEP7 程序中的源程序目录里,打开DB68 的源程序,根据机床的配置修改相应的参数,其中灰色部分是经常需要修改的地方。再打开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

4. 结语

手持单元在数控机床加工中应用非常普遍,尤其是由于结构原因选择了固定操纵台控制方式的,手持单元的作用就更加突出。手持单元操作灵活,功能明确,既可以实现手动对刀,也可以做自动加工的手动调整,作用不可小视。本台机床调试完毕后,两个HHU就可以同时工作而且相互不干扰。极大方便了操作者,对于大型机床来说双HHU具有非常大的便利性,值得广泛应用。

猜你喜欢
源文件手轮源代码
基于TXL的源代码插桩技术研究
数控机床电子手轮工作原理及故障分析
网络社区划分在软件质量问题分析中的应用
基于源文件可疑度的软件缺陷定位方法研究
软件源代码非公知性司法鉴定方法探析
基于语法和语义结合的源代码精确搜索方法
基于生产改造的数控铣床手轮加装策略研究
LKJ基础数据源文件自动编制系统的研究
数控机床电子手轮类故障及快速诊断方法
揭秘龙湖产品“源代码”