辅助功能是一些激活NC功能或PLC用户功能的指令,它们可以在NC程序中、同步动作中或者用户循环中被调用执行。辅助功能分两类:系统定义的辅助功能和用户定义的辅助功能,而用户定义的辅助功能又可分为扩展系统定义辅助功能和用户自由定义辅助功能。
系统定义的辅助功能有:

使用辅助功能时需要注意:类型、扩展地址和数值 这三个参数会输出到NC与PLC的接口
输出时机
何时发出辅助功能指令
分组
辅助功能分组后,可按组设置行为,关键是它影响程序段搜索后的辅助功能输出。
接下来,先学习用的最多的M代码
下列M代码是系统定义的M代码:
M0, M1, M2, M17, M30, M3, M4, M5, M6, M19, M70, M40, M41, M42, M43, M44, M45
在NC/PLC接口数据块DB21(第一个通道)有M0-M99的动态译码信号,即当NC执行加工程序中的M代码时,系统会将该代码信号(脉冲信号)反映到这个区域的某一信号位。

例如:系统执行M8后,在DB21.DBX195.0就会跳变为1(信号持续一个PLC扫描周期)
注意:上表中带“#”的M代码不会在此处译码,例如,系统执行M3时,DB21.DBX194.3不会变化。如果想捕捉到该信号,需要通过下面的M代码PLC译码的方式进行处理。
果真如此吗?运行下面程序:
$AN_SLTRACE=1G4F1G1 G91 x10 F1000 M8G4F0.5M32然后,设置并跟踪下面信号:

得到如下图形:

从上图中可以看到,DB21.DBX195.0 (M8的动态译码位)在X轴移动前有个脉冲,有人可能会问为什么在程序中M8是和X移动指令写在一行的,为什么M8会在X轴运动前发出?这个问题就是辅助功能的输出时机的问题,M代码可以设置为运动前、运动中或运动后执行,具体细节及参数设定要留在后面一点解释。
细心的人会发现,我跟踪了很多其它信号:
DB21.DBX58.0 -- DB21.DBX58.4
DB21.DBD70 , DB21.DBD76 , DB21.DBD82 , DB21.DBD88 , DB21.DBD94
这是另外一种PLC对M代码译码的方法,当系统执行了M代码,就会触发置位DB21.DBX58.0 -- DB21.DBX58.4。为什么是5个信号位?因为一段NC程序最多可以写5个M代码,如果像本例NC程序段中只有一个M代码,那么DB21.DBX58.0=1,而DB21.DBX58.1 - DB21.DBX58.4都为0. 与此同时M8的数值“8”将传送到DB21.DBD70。
如果NC程序改为:
N10 $AN_SLTRACE=1N20 G4F1N30 G1 G91 x10 F1000 M8 M40N40 G4F0.5N50 M32
系统执行到N30程序段时,DB21.DBX58.0和DB21.DBX58.1同时跳变为“1”,而且DB21.DBD70=8,DB21.DBD76=40

未完,待续。