首页 百科知识 用户宏程序简介

用户宏程序简介

时间:2023-10-12 百科知识 版权反馈
【摘要】:使用用户宏程序时,数值可以直接指定或用变量指定。当用户变量时,变量值可用程序或用MDI面板操作改变。系统变量是自动控制和通用程序开发的基础。但是,在自动运行期间,宏程序调用不能切换到MDI方式。单程序段运行用于调试用户宏程序。⑤在EDIT方式中的运行 设定参数NE8和NE9为1,可对程序号8000~8900和9000~9999的用户宏程序和子程序进行保护。⑧进给暂停 在宏程序语句执行期间,进给暂停有效时,宏语句执行之后机床停止。

5.4.5 用户宏程序简介

1.变量

普通加工程序直接用数值指定G代码和移动距离,例如,G01和X100.0。使用用户宏程序时,数值可以直接指定或用变量指定。当用户变量时,变量值可用程序或用MDI面板操作改变。

如:#1=#2+100;

  G01 X#1 F300;

一般编程方法允许对变量命名,但用户宏程序不行。变量用变量符号(#)和后面的变量号指定。

例如:#1 表达式可以用于指定变量号。此时,表达式必须封闭在括号中。

例如:#[#1+#2−12]。

变量根据变量号可以分成四种类型:

①#0——空变量 该变量总是空,没有值能赋给该变量。

②#1~#33——局部变量 局部变量只能在宏程序中存储数据,进行运算。当断电时,局部变量被初始化为空。

③#100~#199,#500~#999——公共变量 公共变量在不同的宏程序中的意义相同。当断电时,变量#100~#199被初始化为空;变量#500~#999的数据保存,不丢失。

④#1000以上——系统变量 系统变量用于读和写CNC的各种数据。

局部变量和公共变量可以为0值或下面范围中的值:−1047~10−29或10−29~1047,如果计算结果超出有效范围,则发出P/S报警NO.111。

当在程序中定义变量值时,小数点可以省略。例:当定义#1=123;变量#1的实际值是123.000。

在地址后指定变量号即可引用其变量值。当用表达式指定变量时,要把表达式放在括号中。例如:G01X[#1+#2]F#3。

被引用变量的值根据地址的最小设定单位自动地舍入。例如:当系统的最小输入增量为1/1000mm单位,指令G00 X#1,并将12.3456赋值给变量#1,实际指令值为G00 X12.346。

改变引用变量的值的符号,要把负号(−)方在#的前面。例如:G00 X−#1。

当引用未定义的变量时,变量及地址字都被忽略。

例如:当变量#1的值是0,并且变量#2的值是空时,G00 X#1 Y#2的执行结果为G00 X0。

当变量值未定义时,这样的变量成为“空”变量。变量#0总是空变量,它不能写,只能读。

2.系统变量

系统变量用于读和写NC内部数据,例如,刀具偏置值和当前位置数据。但是,某些系统变量只能读。系统变量是自动控制和通用程序开发的基础。

①系统变量是可编程机床控制器(PMC)和用户宏程序之间交换的信号。

变量#1000~#1015能把16位信号从PMC送到用户宏程序,用于按位读取信号。

变量#1032用于一次性读取一个16位信号。

变量#1100~#1115能把16位信号从用户宏程序送到PMC,用于按位写信号。

变量#1132用于一次性写一个16位信号。

变量#1133用于从用户宏程序一次性写一个32位的信号到PMC。

以上变量的具体情况请详见连接说明书(B-63783C-1)。

②用系统变量可以读和写刀具补偿值。可使用的变量数取决于刀补数,是否区分外形补偿和磨损补偿以及是否区分刀长补偿和刀尖补偿。当偏置组数小于等于200时,也可使用#2001~#2400。

3.算术和逻辑运算

算术和逻辑运算可以在变量中执行,运算符右边的表达式可包含常量或由函数或运算符组成的变量。表达式中的变量#j和#k可以用常数替换。左边的变量也可以用表达式赋值。其功能和格式如下:

img367

img368

函数SIN、COS、ASIN、ACOS、TAN和ATAN的角度单位是度,如90°30′表示90.5°。取值范围如下:

当参数(NO.6004#0)NAT位设为0时,取值范围为270°~90°;

当参数(NO.6004#0)NAT位设为0时,取值范围为−90°~90°;

当# j超出−1~1的范围时,发出P/S报警NO.111。

4.宏程序语句和NC语句

下面的程序段为宏程序语句:包含算术或逻辑运算(=)的程序段;包含控制语句(例如:GOTO、DO、END)的程序段;包含宏程序调用指令(例如,用G65、G66、G67或其他G代码,M代码调用宏程序)的程序段。

除了宏程序语句以外的任何程序段都为NC语句。

5.宏程序调用

用以下方法可调用宏程序:

——非模态调用(G65)

——模态调用(G66、G67)

——用G代码调用宏程序

——用M代码调用宏程序

——用M代码调用子程序

——用T代码调用子程序

宏程序调用和子程序调用之间的差别:宏程序调用(G65)不同于子程序调用(M98),如下所述。

G65可以指定自变量(数据传送到宏程序);M98没有该功能。

当M98程序段包含另一个NC指令(例如,G01 X100.0 M98 P_)时,在指令执行之后调用子程序;相反,G65无条件调用宏程序。

M98程序段包含另一个NC指令(例如,G01 X100.0 M98 P_)时,在单程序段方式中,机床停止;相反,G65机床不停止。

用G65,改变局部变量的级别;用M98,不改变局部变量的级别。

6.用户宏程序的存储

用户宏程序与子程序相似,可用与子程序同样的方法进行存储和编程,存储容量由子程序和宏程序的总容量确定。

7.使用用户宏程序的限制

①MDI运行 在MDI方式中可以指定宏程序调用指令。但是,在自动运行期间,宏程序调用不能切换到MDI方式。

②顺序号检索 用户宏程序不能检索顺序号。

③单程序段 即使宏程序正在执行,在单程序段方式,程序段也不能停止。

包含宏程序调用指令(G65、G66或G67)的程序段,即使在单程序段方式时也不会停止。当设定SBM(参数No.6000第5位)为1时,包含算术运算指令和控制指令的程序段可以停止。

单程序段运行用于调试用户宏程序。注意,在刀具半径补偿C方式中,当宏程序语句中出现单程序段停止时,该语句被认为是不包含移动的程序段,在某些情况下,不能执行正确的补偿(严格地讲,该程序段被当成指定移动距离为0的移动)。

④任选程序段跳过 在<表达式>中间出现的“/”符号(在算术表达式的右边,封闭在括号[]中)被认为是除法运算符;不作为任选程序段跳过代码。

⑤在EDIT方式中的运行 设定参数NE8(参数No.3202的0位)和NE9(No.3202 的4位)为1,可对程序号8000~8900和9000~9999的用户宏程序和子程序进行保护。当存储器全清时(电源接通时,同时按下RESET 和DELETE键),存储器的全部内容包括宏程序都被清除。

⑥复位 当复位时,局部变量和#100~#199的公共变量被清除为空值。设定CLV和CCV(参数6001的第7位和第6位),它们可以不被清除。系统变量#1000~#1133不被清除。

复位操作清除任何用户宏程序和子程序的调用状态及D0状态并返回到主程序。

⑦程序再起动的显示与M98一样,子程序调用使用的M、T代码不显示。

⑧进给暂停 在宏程序语句执行期间,进给暂停有效时,宏语句执行之后机床停止。当复位或出现报警时,机床也停止。

⑨<表达式>中可以使用的常数值:+0.0000001~+99999999;

     −99999999到−0.0000001;

有效数值是8位(十进制),如果超过这个范围,出现P/S报警No.003。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈