找回密码
 立即注册

QQ登录

只需一步,快速开始

微信扫码登录

搜索
查看: 40|回复: 2

[分享] NX-PC后处理实现子程序模式

[复制链接]

10

主题

15

回帖

578

积分

三级士官

积分
578
发表于 半小时前 | 显示全部楼层 |阅读模式
部分系统支持子程序模式,方便查找和调试。自己也是基于这个才想搞一个的。主程序和子程序都放在一个文件里面,自带的子程序模式是分开的。子程序单独一个文件。子程序模式基于工序实现,也可以合并,基于刀具判断和工序判断。看个人喜欢,我这边就简单一点的,基于工序判断。上图。下图是生成的主程序。

1.png

1.打开构造器。

2.png
2.在NC输出里面,找到程序头。转跳到缓冲区事件里面.

3.png
3.在缓冲区时间里面找到输出的程序段。

4.png
4.按照图片要求,把要插入的内容复制到TCL文件,

6.png
5.复制代码。

5.png
6.按照相同的步骤 输出其他位置。工序程序头,和工序程序尾 输出O1001和M99
7.png
8.png
7.程序段。请根据自己的实际情况来添加程序段位置,这里只是个人参考。不一定会想同。

#添加子程序O5000
LIB_GE_command_buffer_edit_insert LIB_SPF_operation_header_comment HEADER_COMMENT {ZCX} <子程序头添加> after @NEWLINE1
proc ZCX {} {
#子程序O5001-----------------------------
global mom_operation_name
global mom_sys_sub_prog_counter2
global mom_spindle_speed
global mom_spindle_mode
#获取当前计数器值
set current_sub_num $mom_sys_sub_prog_counter2
#输出子程序头
MOM_output_literal [format "O%d" $current_sub_num]
#输出操作名称注释 (可选,用于对照,或者添加其他内容备注)
#MOM_output_literal "(OP: $mom_operation_name)"

#计数器自增,确保下一个操作使用下一个号码
incr mom_sys_sub_prog_counter2



#程序头输出添加 主程序
LIB_GE_command_buffer_edit_insert MOM_start_of_program_LIB PROGRAMSTART {CXT} <Head_1> after @START_OF_PROGRAM
proc CXT {} {
MOM_output_literal "G40 G49 G80 G00"
MOM_output_literal "G91 G28 Z0."

#添加M98
global mom_operation_name_list
global mom_sys_sub_prog_counter2
set mom_sys_sub_prog_counter2 5001

#设置一个变量计数
global mom_sys_sub_prog_counter
set mom_sys_sub_prog_counter 5001
MOM_output_literal ""
# 遍历列表中的每个名称
foreach op_name $mom_operation_name_list {
    # 输出每个操作名称-M98P5001开始 主程序
    MOM_output_literal "(OP: $op_name)"
    MOM_output_literal [format "M98 P%d" $mom_sys_sub_prog_counter]
    MOM_output_literal "M1"   
    MOM_output_literal " "
    incr mom_sys_sub_prog_counter
}
MOM_output_literal "M5"
MOM_output_literal "M9"
MOM_output_literal "M30"
MOM_output_literal " "

global prev_tool_number
# 将上一把刀具号初始化为 -1,确保第一个工序被判定为“不一致”
set prev_tool_number -1
}



#程序结尾添加M99
LIB_GE_command_buffer_edit_insert MOM_end_of_path_LIB MOM_end_of_path_LIB_ENTRY_end {ENDM1} <ENDM99> after @DEFAULT_ENTRY
proc ENDM1 {} {
MOM_output_literal "M99"
}



17

主题

153

回帖

1577

积分

六级士官

积分
1577
发表于 半小时前 | 显示全部楼层
本帖最后由 0小刚/tp 于 2026-8-27 10:31 编辑

你试试五轴的     相同刀具       同样角度丢不丢G68.2        相同刀具  连续两个联动  中间缺不缺G43.4      这个子程序   程序头每一个M98都是可以单独启动的   就需要每个子程序头把需要带的模态都带全了

1

主题

1301

回帖

1万

积分

中校

积分
10938
发表于 半小时前 | 显示全部楼层
很想要一个这样的后处理,楼主能分享下吗。我不会写PC后处理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

咨询QQ:1359218528|发帖须知!|Archiver|手机版|UG爱好者论坛 ( 京ICP备10217105号-2 )

GMT+8, 2026-8-27 11:21

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表