在SINUMERIK 802D/802Dsl/808D/810D/828D/840D/840Dsl等系统中,用户宏程序全部采用变量形式的参数化编程。与FANUC、MITSUBISHI等系统的宏程序相比,虽然参数化编程的变量类型、系统变量、变量赋值和宏程序调用等方面存在许多不同,但彼此的编程思路(即在程序内使用参数/变量赋值与数学逻辑处理)和应用目的(即简化程序的编制、扩大程序的通用性、节省刀位数据的计算时间等)大致相同。
SINUMERIK系统的宏程序编程中,带有前缀形式的系统变量可读取和写入CNC运行时各种数据的变化。
系统变量既可被直接引用在赋值号“=”左侧,通过“=”右侧的数值、变量、字符串或表达式进行赋值;也可被直接或间接引用在“=”右侧,直接对“=”左侧赋值,或经运算处理后间接赋值。
通常,系统变量不同,其赋值类型、赋值长度等要求也不同。SINUMERIK系统宏程序中系统变量引用与赋值的示例,见表。
表 SINUMERIK系统宏程序中系统变量引用与赋值的示例
No. 宏程序段示例 宏程序段注释
1 $P_UIFR[1]=CTRANS(X,R201,Y,R202,Z,R203); X、Y、Z轴的可编程工件原点(G54)
对应地精偏移至参数R201、R202和R203
处。其中$P_UIFR[n]为预定义框架变量,
在零件程序中读取或写入可设置的工件原
点偏移G54~G599;CTRANS为多个坐标
轴的可编程原点偏移指令。
2 $MC_GCODE_RESET_VALUES[45]=3; 用作预处理变量的机床数据MD20150[45]
给定G代码组46的缺省值为LFPOS(向某
个位置轴向抬起指令)
3 IF $MC_CHAN_NAME=="Cutting"; IF条件转移语句,$MC_CHAN_NAME设
定通道号为Cutting
LFPOS; 向某个位置轴向抬起
POLF[X]=AC($MA_POS_LIMIT_PLUS[X]-1); 给定X轴退至绝对指令方式下(MD36110
设定的X轴正向第1软限位值减去1mm)的
目标位置
POLF[Z]=AC($MA_POS_LIMIT_PLUS[Z]-1); 给定Z轴退至绝对指令方式下(MD36110
设定的Z轴正向第1软限位值减去1mm)的
目标位置
POLFMASK(X,Z); 在轴之间没有关系的情况下,释放已指定
的回退轴X、Z
ENDIF; IF跳转的结束行
4 $AC_TIMER[3]=0; 数据类型REAL的通道专用定时器3赋值0
ID=44 EVERY $VA_EG_SYNCDIFF[B]>= 自动运行方式中模态有效同步动作44,
$R294/2.0 DO $AC_TIMER[3]=0; 若输入端“B轴同步偏差≥$R294/2”,
则输出端的通道专用定时器3清零
ID=45 WHENEVER ($VA_EG_SYNCDIFF[B] 自动运行方式中模态有效同步动作45,
>=$R294/2.0) OR ($AC_TIMER[3]< 若输入端“B轴同步偏差≥$R294/2”,
0.5000) DO RDISABLE; 或“通道专用定时器3<0.5s”,
则经RDISABLE指令设定读入禁止,即
停止程序的继续执行.