孙建朋 发表于 2009-11-18 13:29:35

雕刻机软件的开发参考资料(珍贵!)

本帖最后由 孙建朋 于 2009-11-18 13:32 编辑

**** Hidden Message *****
  以下控制以DMC1000控制卡为例)

  一、功能和工艺要求
  1.能处理标准CNC代码
  2.加工精度为0.01至0.001毫米
  3.加工控制能中断,并可从中断继续加工,或指定加工。可以模拟加工。
  4.设定工作原点,控制高速主轴马达,可手动调试设备
  5.具有手动或自动对刀工艺
  6.有不同刀具,则需要提示换刀处理
  二、系统流程
http://www.dlyqw.com/UploadFile/200802/20080225073547520.gif
  三、使用函数
  手动调试需要完成的功能:输入输出测试,手动驱动脉冲,检测运行状态,停止动作,找机械原点:
  对应的函数调为:
  d1000_out_bit 数字输出函数,可以控制高速马达的开启或关闭
  d1000_get_in_bit 读输入口状态
  d1000_start_tr_move 手动发脉冲,可使用单轴点位运行
  d1000_check_done 检测运动状态函数
  d1000_decel_stop 停止脉冲输出(减速停较好)
  d1000_home_move 单轴找原点函数
  d1000_home_move_all 多轴找原点函数
  d1000_board_init 控制卡初始化
  d1000_board_close 控制卡释放
  位置显示及清除需要的函数:
  d1000_get_abs_position 取得绝对位置
  d1000_set_position 设定位置函数,当值为0时位置清除
  加工控制需要的函数:
  d1000_start_ta_line2 两轴插补函数
  d1000_set_vector_profile 设定矢量插补速度
  d1000_change_speed 速度改变速度
  d1000_start_ta_line_all 多轴插补函数
  四、核心部分的编程
  控制部分编程相对其它加工工艺较为简单,大致只要真实地按CNC代码行加工即可。通用需要一数据结构记录其信息。
  数据结构大致可用两种方式处理,各有优缺点:
  一种以指令为中心处理方式,此种方式分析代码速度较快,加工起来需要较多分支:
  class Ccommand
  {
  public:
  Ccomand();
  ~Ccomand();
  char chCommand; //指令码‘G’,‘M’,‘X’
  double fValue; //指令值
  unsigned char nAttrib; //属性,是否行首、行中或行尾
  };
  从以上结构可以看出,在加工过程中,需要有较多分支:
  for( int I(0); I
  {
  const Ccommand &cmd = dataArray;
  if( cmd.nAttrib != LINE_HEAD ){//若不为
  I++;
  Continue;
  }
  switch( cmd.chCommand ){
  case ‘G’:
  switch( int(cmd.fValue) ){
  case 0:
  break;
  …
  case ‘M’:
  break;
  …
  }
  }
  在实际编程当中,需要考虑较多因素,以上编程的应用将会较为麻烦;故可以考虑用以下方法:
  class CdataPoint
  {
  CdataPoint();
  ~CdataPoint();
  double x,y,z; //记录一个位置点
  … //其它
  }
  此结构适用于简单的图形加工处理,对于其它M,F,S,T指令需要另外处理,视用户雕刻机的适用范围而言,且文件不宜太大,若要全方向考虑各种指令,及文件尺寸的兼容性。采用文件的实时分析加工是较好的策略。但要注意文件读取带来的额外开。若为DOS系统可加载Himem.sys的管理程序smartdrv.exe。文件读取可采用一行读至内存缓冲,然后从内存中分析,此方法便于文件位置的处理,大致可以写成伪代码如下:
  FILE fp = fopen(“*.cnc”,”rt”);
  Char lineBuffer;
  Char *pStr=NULL;
  Char command=NULL;
  Double value(0.0);
  Long nFilePosition;
  //从断点开始加工(若需从头开始,则只需要置m_nBreakFileOff为0即可
  fseek( fp, m_nBreakFileOff, SEEK_SET );
  While( !feof(fp) && m_nWorkStatus != NORUN ){
  NFilePosition = ftell( fp );a
  If( fgets( lineBuffer,0x80, fp) == 0 ) break;
  PStr = lineBuffer;
  //开始分析一行并加工处理
  While( *pStr && m_nWorkStatus != NORUN ){
  Command = *pStr ++;
  If( ReadValue(pStr, value) == -1 ) continue;//ReadValue函数为自编的读取有效数据的函数
  Switch( command ){
  Case ‘G’:
  G_Command = int(value);
  Switch( g_Command ){
  Case 71: fUnit = 1.0; break;//公制
  Case 70: fUnit = 25.4; break;//英寸
  Case 90: abs = true; break;//绝对
  Case 91: abs=false; break;//相对
  Break;
  Case ‘M’:
  M_Command=int(vlaue);
  Break;
  Case ‘X’: fX = value; break;
  Case ‘Y’: fY = value; break;
  Case ‘Z’: fZ = value; break;
  Case ‘I’: fI = value; break;
  Case ‘J’: fY = value; break;
  …
  Case ‘\n’: //一行结束(此处可单写一些可调用的函数,以便程序阅读)
  {
  switch( g_Command ){
  case 0://快速达到
  case 1://插补处理
  case 2://顺弧处理
  case 3://逆弧处理
  break;
  }
  } break;
  }// end switch command
  }// end while
  }// end feof(fp)
  if( m_nWorkStatus != NORUN )//加工正常结束
  m_nBreakFileOff = 0;
  else m_nBreakFileOff = nFilePosition;
  m_nWorkStatus = NORUN;
  fclose(fp);
  以上的文件处理方式,其大小与内存无关,只要求程序员写出流程较好的程序,写出分析及读取速度较快的函数,即ReadValue函数(请不要小瞧此函数的效率,若有参考需要,可致电索取)。
  五、注意事项
  1.注意换刀操作和自动/手动对刀的必要性
  2.加工控制时,需要考虑断刀加工,暂停/继续的处理
  3.加工控制时,需要考虑速度的调节
  4.加工控制,需要考虑图形显示带来的额外计算负担

w7588700 发表于 2014-8-16 15:00:45

【雕刻技术讨论群】:35964688

1537863064 发表于 2014-7-26 01:15:29

有技术含量,顶起来看内容

1537863064 发表于 2014-7-26 01:13:44

有技术含量,顶起来看内容

ecut 发表于 2009-11-18 13:35:07

顶一个啦!!!

550470586 发表于 2009-11-18 14:47:23

顶下!!!

行长988 发表于 2009-11-18 15:12:10

这个可以看看啊

行长988 发表于 2009-11-18 15:15:52

好像是C代码,单片机

gastonfeng 发表于 2009-11-18 18:00:18

版主太好了,学习一下

euroto 发表于 2009-11-18 21:04:35

好,顶一个

孙建朋 发表于 2009-11-19 07:49:11

好资料就要与大家共享

550470586 发表于 2009-11-19 08:59:17

专业!还想自己DIY台机子,看看又不敢了呀!装了怕很难用或者用不了,控制这方面不太懂。

zhao990224 发表于 2009-11-20 20:24:11

哈資料呢,還CANG起叫

lvshatan 发表于 2009-11-20 20:37:38

看不懂    顶。。。。

zhao300 发表于 2009-11-21 15:59:22

什么珍贵资料啊

qanjk 发表于 2009-11-21 21:25:52

;;13;;13;;6

孙建朋 发表于 2009-11-22 11:29:41

编程资料啊

13851274149 发表于 2009-11-22 12:45:53

鼎立支持!!!
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 雕刻机软件的开发参考资料(珍贵!)

jdpaint培训