浅谈SIEMENS数控系统UG后置处理常用TCL语句使用技巧
2018-12-05刘解语
刘解语
(洛阳市第一高级中学,河南 洛阳 471000)
1 引言
不同的数控系统对NC程序格式有不同的要求,UG软件提供了一个性能优异的后置处理工具PostBuilder,利用它可以把UG软件制作的刀轨源文件转换成特定数控系统能接受的NC程序格式,这个过程叫“后置处理”[1]。UG软件使用TCL语言以方便后置处理模块的编辑与设计。
TCL(ToolCommand Language机器命令语言)是一种很通用的交互式解释性计算机语言,与C语言有相似的地方。TCL语言首先是一种简单的脚本语言,其提供了一套标准语法用于发布命令给一些交互程序;其次,TCL是一个库,可以被嵌入应用程序。用户一旦掌握了TCL语言就可以很容易地在UG的后置处理工具Post Builder中插入用户自定义的TCL子程序,以满足数控系统的特殊要求[2]。
2 TCL语言替换命令及应用
2.1 TCL语言替换命令
替换命令(substitution)是TCL中重要的概念,TCL把替换分为三种:命令替换、变量替换和反斜杠符号替换。在一个命令的参数中使用另一个命令的结果,这被称之为命令替换。例如:
当方括号出现在一个命令中的时候,TCL把方括号内的所有语句看作是一组TCL命令并对这组命令进行解释,用结果替代中括号内的文字,这称为命令替换。
当变量前面出现在一个“$”符号的时候,TCL会把该变量用它的值来替换,这被称之为变量替换。例如上面的例子中,TCL将用变量a的值15来替换变量a,结果第二个set命令的结果是b被赋值为60。
TCL中还有一个替换是反斜杠符号替换,例如“ ”被替换为 tab,“\”被替换为“”。
2.2 TCL语言替换命令在Siemens数控系统程序结构头部固定格式中的应用
Siemens数控系统在程序头对程序名称有固定的格式要求,否则不能识别。为了在程序头显示如下的固定格式:
这就需要用到TCL语言的替换命令。为此需要在UG软件Post Builder的startof program部分创建一个进程proc,如图1所示。
此proc中TCL语言内容如下:
上面的语句中使用了MOM_output_literal""命令,其可以把""内的文本及变量输出到NC程序中。
图1 Siemens系统程序头PostBuilder设置
程序输出效果如图2所示:
图2 Siemens系统程序头输出效果
3 TCL语言流程控制命令及应用
3.1 TCL语言流程控制命令
TCL流程控制主要包括条件转移和循环控制,用于控制程序执行的流向。
其中条件转移指令可以控制程序执行哪些指令、跳过哪些指令,其用于判断条件真假,如果条件为真,执行一个流程的指向;如果为假,则执行另一个流程的指令。而循环控制可以控制程序重复执行某些命令。TCL语言流程控制结构命令的综合运用可以处理遇到的各种复杂情况。
TCL语言流程控制结构命令主要指令见表1:
表1 TCL语言流程控制结构命令
例如条件语句if:
if语句使得变量x的值为负时,将它设置为0。
再例如条件匹配语句sw itch[3],其可以依据一个给定的值对多个脚本中的一个脚本进行求值,其语法结构为:
sw itch命令依次针对每个pattern(模式)参数匹配它的string参数。如果它发现一个pattern匹配string,则立即通过把跟随在(这个模式)后面的body参数递归传递给TCL解释器来求值,并返回这次求值的结果。如果最后的pattern参数是default,则它匹配所有的东西。如果没有pattern参数匹配string,并且没有给出缺省,则sw itch命令返回一个空串。
3.3 TCL语言条件转移命令
例1:TCL语言条件转移命令在Siemens数控系统高速加工指令中的应用
Siemens 840D数控系统中有个高速加工指令[4],CYCLE832(a,b,c),根据常用加工工艺要求,设计如下 CYCLE832指令:
在零件加工余量大于等于1时,输出CYCLE832(0.1,2,1);
在零件加工余量大于0小于1时,输出CYCLE832(0.05,2,1);
在零件加工余量等于0时,输出CYCLE832(0.01,2,1)。
比如在零件加工余量为2时,数控程序输出为CYCLE832(0.1,2,1)。
为此需要在UG软件Post Builder的Operation Start Sequence的initialmove里创建一个进程proc,如图3所示。
图3 Siemens系统高速加工指令高速加工指令PostBuilder设置
内容如下:
例如,当加工如图4a所示的零件时,粗加工中设置如图4b所示零件基准面的加工余量为1,则此刀轨使用Siemens数控系统后置处理后,生成的NC代码如图4c所示。因为加工余量的设置,会在NC代码特定位置出现对应的不同的CYCLE832高速加工指令。
图4 TCL语言条件转移命令在Siemens数控系统高速加工指令中的应用
例2:TCL语言条件转移命令在Siemens数控系统换刀操作中的应用
每条刀轨加工结束之后需要判断是否需要换刀,如果需要换刀,则输出关闭主轴M 5命令,关闭冷却液M 9命令,为此,使用TCL语言写成用户自定义命令,在UG/Post Builder软件的Operation End Sequence中的End of path中创建一个进程proc,如图5所示。
图5 Siemens系统程序尾PostBuilder设置
其内容如下:
其中变量mom_next_oper_has_tool_change的取值可以为YES或者NO,string为TCL语言的字符串命令,在此条件转移指令中,如果变量mom_next_oper_has_tool_change的值为YES,则意味着下一操作有换刀动作为真,需要输出M 5及M 9,如果不需要换刀,则不输出任何语句。
3.3 TCL语言条件匹配
例1:TCL语言条件匹配命令在Siemens数控系统换刀类型指令中的应用
数控机床换刀有两种:手动(MANUAL)与自动(AUTO),根据换刀类型的不同,数控系统分别执行相应的不同的指令,为实现这个功能,可以使用条件匹配指令,其内容如下:
首先对变量mom_tool_change_type进行声明,它定义换刀类型,有两个取值,MANUAL与AUTO;Sw itch命令对mom_tool_change_type的取值进行匹配,如果取值为MANUAL,则执行PB_manual_tool_change子程序,如果取值为AUTO,则执行PB_auto_tool_change子程序。
例2:TCL语言条件匹配命令在Siemens数控系统输出程序单位中的应用
UG软件模型建模单位与后置处理输出程序单位常常存在不一致的现象,比如有些国家使用英制单位IN建立模型,而我们使用公制单位MM做后置处理,这样就会出现错误,为消除这种错误,可以使用如下语句:
解释如下:首先对变量mom_output_unit、mom_part_unit、mom_siemens_tol进行声明,变量mom_output_unit意为后置处理输出程序的单位,变量mom_part_unit为模型建模单位,这两个变量的取值都只有2个:IN(英制单位)或者MM(公制单位),但mom_output_unit与mom_part_unit可以不同;mom_siemens_tol为中间变量,是UG软件建模数值,无单位。
使用TCL语言条件转移指令if,对mom_output_unit与mom_part_unit的值进行判断,当mom_output_unit与mom_part_unit取值不同时,用TCL条件匹配指令sw itch对mom_output_unit的值进行匹配:如果后置处理需要输出IN英制单位(这时意味着模型建模单位为MM公制单位),则把中间变量mom_siemens_tol建模尺寸数值除以25.4;如果后置处理需要输出MM公制单位(这时意味着模型建模单位为IN英制单位),则把中间变量mom_siemens_tol建模尺寸数值乘以25.4;最后使用TCL语言替换命令把mom_siemens_tol的6位小数格式赋值给自己。
根据TCL语言条件转移指令if,当mom_output_unit与mom_part_unit取值相同时,不做任何处理。
4 结束语
TCL语言目前已应用于UG软件的Post Builder、Process Assistants(CAM过程辅助)等多个功能模块。Post Builder中的Custom Command(用户自定义命令)可以让用户插入自己编写的TCL子程序,以满足特殊需要的输出格式,如需对UG软件进行高级定制或二次开发,则必须熟练掌握TCL语言。