1、序言
我们看到的NC加工程序后的结尾通常都必须要有一个结束指令,比如:M02、M17、M30、RET,然后我们在NC程序中也有时候会看到M00、M01指令。这些指令都是有关于程序停止的指令,我们可以来看一下这些程序停止指令使用的差别。
2、M00/M01程序暂停
M00/M01用于程序中间在坐标轴运行中设置程序的暂停功能,适合于加工过程中对于加工的干预,比如测量尺寸、清理切削等。NC程序暂停后,程序不会被复位,重新按下循环启动键之后,程序继续执行,在HMI界面上显示“停止:M0/M1生效”,并且程序STOP状态,如图所示。注意:M00/M01没有停止主轴的功能。
M00:无条件停止,需要重新按循环启动键,继续执行程序,
M01:选择停,需要在自动模式下,通过HMI操作软键选择激活,如图所示,M01为有条件停止指令,可以在“自动”运行方式中按软键“程序控制”后,再按软键“有条件停止”激活/取消激活该指令。
3、程序停止M02/M30/M17
通常习惯使用M02和M30结束主程序MPF,用M17结束子程序SPF,但是在西门子的NC编程中,M02/M30/M17都可以用来结束主程序和子程序。在主程序中使用M02/M30/M17都可以终止程序运行并使返回到程序开始位置,光标定位到开始程序段,如图所示:
在子程序中,使用M02、M17或M30指令结束子程序,并从调用的子程序返回到主程序。
4、子程序停止指令
指令M02、M17、M30和RET都可以用于结束子程序,并且返回到主程序,返回到主程序中调用子程序的下一条程序段。
手册上有如下描述:
If M17 (or M30) appears on its own in the part program block, active continuous-path mode in the channel will be interrupted.
也就是说,当M17单行书写时,当子程序结束返回主程序将会中断连续路径运行的状态。 然后手册上又有如下描述:
To avoid continuous-path mode being interrupted, M17 (or M30) has to be included in the last traversing block. Furthermore, the following machine data must be set to "0":
MD20800 $MC_SPF_END_TO_VDI = 0 (no M30/M17 output to the NC/PLC interface)。
为了避免连续路径被中断,可以把M17结束指令和后一个程序段写在同一行:N20 X10 Z10 M17
RET指令也可以用于结束子程序并返回主程序,但是RET指令必须单独一个程序段编写。
手册中对于RET的描述如下:
The RET command can only be used in subprograms, which were not defined with the SAVE attribute.
The RET operation should then be used if a G64 continuous-path mode (G641 to G645) is not to be interrupted by the return jump.
就是说,RET只能使用在子程序当中,而且在该子程序定义没有使用“SAVE”指令情况下。RET指令用于返回主程序时不打断G64(G641到G645)连续路径状态的应用。
5、结束语
西门子的指令相对来说比较灵活,NC编程也一样的,子程序/主程序的定义界限不是那么的死板,主程序也可以作为一个子程序来调用。编程指令也是通过看手册以及编程使用过程中的测试,熟悉它们使用的特点。以上讲的是标准的功能,如果在机床上还可以通过程序和参数实现二次定义。