一种字符追溯标记的实现方法

PCB生产中经常遇到转厂,外发等加工,多工厂加工等流程,为了更好的追溯,通常在周期上做特殊处理,以实现追溯的目的

CAM作业中传统的做法是建立不同的Symbol,遇到转厂,外发的时候手动修改指定位置以便追溯,本文以修改字体实现以上需求为例,探讨追溯的方法。

01 实现原理

以ODB++格式存储的CAM软件中,可以自行修改标准字体文件,不同的工厂配置不同的字体库,CAM作业中无需关注追溯标记位置,选择对应工厂的字体即可实现追溯的效果。根据ODB++中对标准字体的描述,字体由不同的线组合构成,相关字段描述如下。

02 修改字体

打开字体库文件wzdatan字体文件,默认改文件在/genesis/fw/lib/fonts/目录中,没有的话可以找本文作者寻求。这里以修改字体中的[.]为例说明

CHAR .
LINE 0.025000 -0.075000 0.025000 -0.075000 P R 0.012000
ECHAR

格式说明:

CHAR .   表示字符定义开始,空格后面跟着是具体的字符,这里需要以ASCLL编码。

LINE 具体的字符描述,也就是最终呈现出来的字符的形式,由不同的线组成,这里[.]仅由一根线组成。注意坐标单位为inch。

ECHAR 表示字符定义结束。

从上面定义坐标可以看到默认[.]是在下方的,需要调整到中间的时候,我们需要将ys,ye坐标改到中间。修改如下:

CHAR .
LINE 0.025000 0.050000 0.025000 0.050000 P R 0.030000
ECHAR

保存后,重启CAM软件生效。

03 效果验证

启动CAM软件后,添加一个字符,字体选择刚修改的wzdaten,大小默认

可以看到输入的[.]已经移动到中间,达到想要的效果。
其他字符的修改类似,可以随意修改字符中线的长度,大小,实现差异化。不同工厂保存为不同的字体名称即可。


CAM资料钻孔系数设置

CAM在制作工具中,因生产工艺需要考虑物理特性,需要提前预设涨缩系数。其中钻孔为了减少钻孔数量,需要以万分之几的描述

CAM在作业中,经常遇到忘记修改板边系数,换算错误等烦恼,本文以解决此烦恼探讨如何解决这些需求。

01 实现原理

        以ODB++格式存储的Genesis软件中,使用.comment属性(可以自行添加自定义的属性),配合line hooks 在output时计算钻孔格式系数并更新.comment属性值,实现动态的效果。

02 修改流程

03 设置hooks

        这里以设置output_layer_set.pre输出钻孔为例说明,其他的实现方式可以扩展。

#!/bin/csh
#File Name: output_layer_set.pre
#Written  : Alex(wangge@nengxingtech.com)
#Date     : Jun26.2021
#Ver      : 1.0
#程序用于修改输出时相关到变量
​
#获取系统传递的参数
source $1
​
#根据层名判断是否为钻孔层
if($lnVAL[1] == 'drl') then
  
  #计算x涨缩值
  set inputscalex = `echo "scale=0; $lnVAL[4] * 100000" | bc | awk -F '.' '{print $1}'`
  if ($inputscalex > 100000 ) then
    set scalex = `echo "scale=3; ($inputscalex - 100000) * 0.1" | bc`
  else if ($inputscalex < 100000 ) then
    set scalex = `echo "scale=3; (100000 - $inputscalex) * 0.1" | bc`
    set scalex = -${scalex}
  else
    set scalex = 0
  endif
  
  #计算y涨缩值
  set inputscaley = `echo "scale=0; $lnVAL[5] * 100000" | bc | awk -F '.' '{print $1}'`
  if ($inputscaley > 100000 ) then
    set scaley = `echo "scale=3; ($inputscaley - 100000) * 0.1" | bc`
  else if ($inputscaley < 100000 ) then
    set scaley = `echo "scale=3; (100000 - $inputscaley) * 0.1" | bc`
    set scaley = -${scaley}
  else
    set scaley = 0
  endif
  
  #组合涨缩值描述
  set drlscale = "X${scalex}Y${scaley}"
  
  #设置钻孔涨缩值到层的变量
  COM set_attribute, type=layer,job=$JOB,name1=$STEP,name2=$lnVAL[1],\
             name3=,attribute=.comment,value=$drlscale
endif
​
#退出程序
exit

04 设置钻孔层系数变量

        在Panel封边的时候添加钻孔字麦到留边,或者手动添加也可以。这里以.comment举例说明,可以添加自定义变量。初次添加的时候没有设置变量会没有显示,只需要添加位置准确就可以。

05 输出测试

   在output界面输出的时候输入输出系数,执行输出。

反读回genesis进行确认。

如上图所示,系数已经变为万分之几的钻孔格式。


CAM动态周期

 为了更好的追溯产品,以及批次管控,线路板上通常会加上生产周期,而往往因为资料中周期没有及时更新导致客户投诉。

    Genesis,InCAM软件均带有周期变量,如$$YYWW,$$WWYY,实际应用的时候灵活性不够。不同版本支持的变量设置不同,如不能单双周,提前两周,推迟两周等等。本文以Genesis软件10.0版本为基础,探讨动态周期的实现。

01 实现原理

    以ODB++格式存储的Genesis软件中,增加一个userattr属性设置,配合line hooks 在打开料号时更新userattr属性值,实现动态周期的效果。编辑/genesis/fw/lib/misc/userattr,增加自定义周期变量,建议变量前面加上工厂标识,如CD。如下所示:

TEXT {
  NAME=CD_YYWW
  PROMPT=CanDo Date YYWW 
  MIN_LEN=0
  MAX_LEN=4
  ENTITY=JOB
  DEF=8888
}
​
TEXT {
  NAME=CD_WWYY
  PROMPT=CanDo Date WWYY 
  MIN_LEN=0
  MAX_LEN=4
  ENTITY=JOB
  DEF=8888
}

注:

1,TEXT 表示变量类型是文本

2,NAME是变量的名称

3,PROMPT是变量的描述

4,MIN_LEN表示变量最短位数

5,MIN_MAX表示变量最长位数

6,ENTITY表示变量宿主

7,DEF表示默认变量

02 修改流程

03 设置Hooks

进入/genesis/sys/hooks/line_hooks/目录,查看是否有open_job.post文件,没有创建一个,有的话加上如下代码。

#!/bin/csh
echo "AutoCAM Change Date"
​
#获取系统传递的参数,并按传递的参数名赋值变量
source $1
@ i=1
while($i <= $#lnVAL)
  set $lnPARAM[$i] = $lnVAL[$i]
  @ i++
end
​
#获取当前系统周期
set cdYY = `date +%y`
set cdWW = `date +%U`
set cdMM = `date +%m`
​
#周增加1
@ cdWW++
​
#检测周期大于53周到时候,进入下一年第一周
if($cdWW > 53) then
  @ cdYY++
  set cdWW = 1
endif
​
#赋值周期变量
set cdyyww = "${cdYY}${cdWW}"
set cdwwyy = "${cdWW}${cdYY}"
​
#设置cdyyww周期变量到Job
COM set_attribute,type=job,job=$job,name1=,name2=,name3=,attribute=cd_yyww,value=$cdyyww,units=inch
​
#设置cdwwyy周期变量到Job
COM set_attribute,type=job,job=$job,name1=,name2=,name3=,attribute=cd_wwyy,value=$cdwwyy,units=inch

04 效果演示

进入任意料号,打开一层资料,添加一个字符,字符大小,字体任意设置,Text栏输入$$cd_yyww是自定义的年周变量。如下图所示

欢迎关于微信公众号进一步交流。


AutoCAM–CAM自动化脚本

AutoCAM基于业界成熟的CAM软件定制化二次开发,将丰富的设计经验和先进的软件技术碰撞结合。以品质从设计开始,技术推动创新的理念,实现标准化作业,系统化防错,智能化运行。

  • 设计标准化

系统化定义资料制作流程,以SOP作业指导书为基准,优化设计流程,系统化部署,杜绝遗漏步骤造成不良设计

  • 设计效率提升

系统预先设置设计数据,使其形成连贯的工作流,在图形工作站的极速运行中实现设计效率的提升。

  • 设计品质追溯性

系统化定义记录操作日志,可以设定不同等级的操作记录,以供后期优化设计流程,品质追溯程分析。

  • 数据互通性

系统可与ERP,XPDM等有接口或数据库访问的系统进行对接,在授权的范围内查阅,更新数据。