Program Examples:Defining a Cartesian Group/zh-hans

From SoftMC-Wiki
Jump to: navigation, search
语言: English  • 中文(简体)‎

简介

以下示例演示如何设置笛卡尔组。 它将配置XYZ正交系统的基本设置。 该设置将在SETUP.PRG任务中完成。

配置

首先,必须在CONFIG.PRG文件中定义笛卡尔组:

common shared gXYZ   as group Axnm = a1 Axnm = a2 Axnm = a3 model=1  of xyz

轴定义

接下来,在SETUP.PRG任务中,定义用于设置线性轴的子程序:

NOTE-Info.svgNOTE
假设系统中定义了一个全局整数数组pos_units []。它保存每个轴的位置分辨率; 即,电机的旋转一整圈的计数。
NOTE-Info.svgNOTE
在这个例子中,假设线性螺丝和电机之间没有齿轮,螺杆的螺距为每转5毫米。
sub SetAxis(ax as generic axis, byval vvv as double)
  with ax
    attach
      en = 0
      sleep 10
'      simulated = 0
      
      pfac = pos_units[elementid]/5 'For 5mm pitch 
      
      vfac = pfac/1000 ' mm /sec
      afac = vfac/1000 ' mm /sec^2
      jfac = afac/1000 ' mm / sec^3
      vmax = vvv
      amax = 1500
      dmax = 1500
      jmax = omega*amax ' Fast reacting
      vcruise = vmax
      acc = amax
      dec = dmax
      jerk = jmax
      prftype = profile
      smooth = -1
      vospd               = 2*vmax 
      velocitysafetylimit = 100*vmax
      positionerrorsettle = 5
      pemax  = 1
      pmaxen = 1
      pminen = 1
      disp = 0
      abs = 1
      positionrolloverenable = 0
'      simulated = 1
      Print "axis ";elementname;" set."
    detach
  end with
end sub

组设置

现在定义组设置程序来设置公共组参数。

NOTE-Info.svgNOTE
假设机器人的每个轴的工作范围在0到+300mm之间
sub SetGroup(gr as generic group)
  dim i as long
  with gr
    attach
      en = 0
      sleep 10
      vfac = 1/1000
      afac = vfac/1000
      jfac = afac/1000
      positionerrorsettle = 2
      pemax  = 1
      abs = 1

      a1.axistype = 0
      a2.axistype = 0
      a3.axistype = 0

      configgroup

      vmax = 1000 '  mm/sec
      amax = 1500 '  1500 mm/sec^2
      dmax = 1500 '  1500 mm/sec^2
      jmax = omega*amax  
      vcruise = vmax
      acc = amax
      dec = dmax
      jerk = jmax

      vmtran = vmax
      amtran = amax
      jmtran = jmax
      vtran = vmtran
      atran = amtran
      dtran = amtran
      jtran = jmtran

      vmrot = vmax
      amrot = amax
      jmrot = jmax
      vrot = vmrot
      arot = amrot
      drot = amrot
      jrot = jmrot

      xmax = 300
      xmin = 0

      ymax = 300
      ymin = 0

      zmax =  300
      zmin =  0

      rmin = 0
      rmax = 4000

      smooth = -1
      prftype = profile

      j1.pmin = 0
      a1.pmin = 0
      
      j2.pmin = 0
      a2.pmin = 0
      
      j3.pmin = 0
      a3.pmin = 0
      
      j1.pmax = 300
      a1.pmax = 300
      
      j2.pmax = 300
      a2.pmax = 300
      
      j3.pmax = 300
      a3.pmax = 300
      
      Print "group ";elementname;" set."
      detach
  end with
end sub

完成任务

最后,SETUP.PRG的主程序块为:

dim shared profile as long = -1' 2 - Acceleration Trapeze Profile, -1-Sine Acceleration
dim shared omega as double = 15
program
    call Setaxis(a1,1000) ' X max speed 1000mm/sec
    call Setaxis(a2,1000) ' Y max speed 1000mm/sec
    call Setaxis(a3,1000)   ' Z max speed 1000mm/sec
    call SetGroup(GXYZ)   
end program