Fanuc机床 CNC_STATINFO 方法返回值说明
以下只选取了该返回值的部分进行说明,主要是针对0i F-Plus型号的机床进行适配举例
根据你提供的 Fanuc 官方文档(cnc_statinfo - ODBST 结构体说明),在 0i F-PLUS(属于 0i/30i/31i/32i/16i/18i/21i/Power Mate i/PMi-A 系列)机床中,odbst 结构体用于描述 CNC(数控系统)的当前状态。每个字段的含义和取值如下:
ODBST 结构体定义(0i/30i/31i/32i/16i/18i/21i/Power Mate i/PMi-A)
c
typedef struct odbst {
short hdck ; *// 手轮再追踪状态*
short tmmode ; *// T/M 模式选择(复合加工功能专用)*
short aut ; *// 自动/手动模式选择*
short run ; *// 自动运行状态*
short motion ; *// 轴移动/暂停状态*
short mstb ; *// M/S/T/B 功能状态*
short emergency ; *// 急停状态*
short alarm ; *// 报警状态*
short edit ; *// 程序编辑状态*
} ODBST ;
字段详细说明与取值意义
1. hdck(手轮再追踪状态,仅部分型号支持)
-
0:无效
-
1:M.H.RTR.(手轮再追踪中)
-
2:NO RVRS.(禁止反向移动)
-
3:NO CHAG.(禁止方向变更)
注意:仅 30i/31i/32i、0i-D/F 支持。大多数情况下用不到。
2. tmmode(T/M 模式选择,仅复合加工功能)
-
0:T 模式
-
1:M 模式
注意:仅复合加工机床有用,普通车/铣床一般恒为 0。
3. aut(自动/手动模式选择)
-
0:MDI(手动数据输入)
-
1:MEMory(内存自动运行)
-
2:(未定义/保留)
-
3:EDIT(编辑模式)
-
4:HaNDle(手轮模式)
-
5:JOG(点动模式)
-
6:Teach in JOG(点动示教)
-
7:Teach in HaNDle(手轮示教)
-
8:INC·feed(增量进给)
-
9:REFerence(回零)
-
10:ReMoTe(远程)
常用判断:
-
0/1/3:自动相关
-
4/5/6/7/8/9/10:手动相关
4. run(自动运行状态)
-
0:(复位/未运行)
-
1:STOP(停止)
-
2:HOLD(暂停)
-
3:STaRT(运行中)
-
4:MSTR(刀具回退/恢复、JOG MDI 运行中)
常用判断:
-
3(STaRT):机床正在自动运行
-
1/2:机床未运行或暂停
5. motion(轴移动/暂停状态)
-
0:(无动作)
-
1:MoTioN(轴正在移动)
-
2:DWeLl(暂停/等待)
6. mstb(M/S/T/B 功能状态)
-
0:(无特殊状态/其他)
-
1:FIN(M/S/T/B 功能完成)
7. emergency(急停状态)
-
0:未急停
-
1:急停
-
2:复位
-
3:WAIT(仅 FS35i)
常用判断:
- 1:急停,需人工干预
8. alarm(报警状态)
-
0:无报警
-
1:ALarM(有报警)
-
2:BATtery low(电池低电)
-
3:FAN(风扇报警,NC 或伺服放大器)
-
4:PS Warning(电源警告)
-
5:FSsB warning(伺服系统警告)
-
6:INSulate warning(绝缘警告)
-
7:ENCoder warning(编码器警告)
-
8:PMC alarm(PMC 报警)
常用判断:
-
1:有报警,需排查
-
2~8:具体报警类型
9. edit(程序编辑状态/其他状态,部分型号有扩展)
-
0:(未编辑)
-
1:EDIT(编辑中)
-
2:SeaRCH(搜索中)
-
3:OUTPUT(输出中)
-
4:INPUT(输入中)
-
5:COMPARE(比较中)
-
6:Label SKip(跳过标签状态)
-
7:ReSTaRt(程序重启中)
-
8~...:其他特殊状态(如 AI 轮廓控制、刀具回退等,详见文档)
实际应用与注意事项
-
判断机床是否在自动运行:通常需同时判断 aut(自动/手动模式)和 run(运行状态),如 aut=1(MEMory)且 run=3(STaRT)表示自动运行中。
-
报警与急停:alarm 和 emergency 任一非 0,说明机床有异常,需暂停自动流程。
-
edit 字段:在自动换刀、程序切换等流程中,edit=1(EDIT)时不能下发自动运行指令。
-
motion/mstb:可用于判断轴是否在移动、M代码是否完成,适合流程同步等待。
参考文档
如需结合实际代码判断机床状态,可根据上述字段和取值进行逻辑判断。例如:
js
if (odbst.aut === 1 && odbst.run === 3) {
*// 机床处于自动运行状态*
}
js
if (odbst.alarm !== 0 || odbst.emergency !== 0) {
*// 机床有报警或急停*
}
如需更详细的报警类型、edit 状态扩展等,可查阅 Fanuc Focas 官方文档或机床参数手册。