FANUC在线测量程序

程序简介

功能说明

用户从机器人侧触发Mech-Metrics使用Mech-MSR进行测量,并向Mech-Metrics返回测量结果。

文件路径

Mech-MSR和Mech-Metrics软件安装目录下center/MSR_Interface/FANUC/MSR_Metrics_Sample1.LS。

所需资源

Mech-MSR方案和Mech-Metrics工程

使用前提

  • 在线测量系统侧准备:

    • 当前工件在Mech-Metrics中已关联至Mech-MSR方案。

    • 当前特征在Mech-Metrics中绑定至Mech-MSR工程。

    • Mech-MSR方案和工程已在Mech-MSR中打开。

  • 机器人侧准备:

    • 已完成FANUC标准接口通信配置。

    • 已完成FANUC自动标定。

    • 已示教测量位置。

    • 已在机器人侧移动机器人到第一个待测量位置。

    • 开始测量前已提前预热机器人与相机30分钟。

    • 开始测量前已保证外部光照和温度稳定。

此样例程序仅是示例程序。用户需根据实际情况在此基础上进行修改,请勿直接使用该程序。

程序解读

以下为MSR_Metrics_Sample1样例程序的代码及相关解释说明。

   1:  !-------------------------------- ;
   2:  !FUNCTION: MSR_Metrics_Sample1 ;
   3:  !Mech-Mind, 2024-05-27 ;
   4:  !-------------------------------- ;
   5:   ;
   6:  !set current uframe NO. to 0 ;
   7:  UFRAME_NUM=0 ;
   8:  !set current tool NO. to 1 ;
   9:  UTOOL_NUM=1 ;
  10:  !move to robot home position ;
  11:  J P[4] 100% FINE    ;
  12:  !Init Socket!Modify IP Address ;
  13:  CALL MSR_INIT_SKT('8','192.168.1.20',30000,5) ;
  14:  !Set Custom Values ;
  15:  CALL MSR_MEAS_PAR(0,0,0,0,0,0,0,0) ;
  16:  !Start Measurement Task ;
  17:  CALL MSR_ST_MEAS(1,1,2,10,10,53) ;
  18:  !check whether metrics project ;
  19:  !has been triggered successfully ;
  20:  IF (R[53]<>8100),JMP LBL[99] ;
  21:  !Import Part ID During ;
  22:  !Measurement ;
  23:  CALL MSR_SET_WP(1,2,53) ;
  24:  !check whether Part ID has ;
  25:  !been imported successfully ;
  26:  IF (R[53]<>8103),JMP LBL[99] ;
  27:  !move to 1st image-capturing ;
  28:  !position ;
  29:  J P[1] 100% FINE    ;
  30:  !Set Robot_Id,Index ;
  31:  !R No.2:MM Status ;
  32:  CALL MSR_MEAS_FEAT(1,3,53) ;
  33:  !check whether feature measureme- ;
  34:  !nt has been run successfully ;
  35:  IF (R[53]<>8101),JMP LBL[99] ;
  36:  !move to 2ed image-capturing ;
  37:  !position ;
  38:  J P[2] 100% FINE    ;
  39:  !Set Robot_Id,Index ;
  40:  !R No.2:MM Status ;
  41:  CALL MSR_MEAS_FEAT(1,3,53) ;
  42:  !check whether feature measureme- ;
  43:  !nt has been run successfully ;
  44:  IF (R[53]<>8101),JMP LBL[99] ;
  45:  !move to 3rd image-capturing ;
  46:  !position ;
  47:  J P[3] 100% FINE    ;
  48:  !Set Robot_Id,Index ;
  49:  !R No.2:MM Status ;
  50:  CALL MSR_MEAS_FEAT(1,3,53) ;
  51:  !check whether feature measureme- ;
  52:  !nt has been run successfully ;
  53:  IF (R[53]<>8101),JMP LBL[99] ;
  54:  CALL MSR_END_MEAS(1,11,12,13,14,53) ;
  55:  !check whether metrics project ;
  56:  !has been ended successfully ;
  57:  IF (R[53]<>8102),JMP LBL[99] ;
  58:  !Query Part Historical Data ;
  59:  CALL MSR_VIEW_WP(1,2,53) ;
  60:  !check whether part historical ;
  61:  !data has been viewed ;
  62:  !successfully ;
  63:  IF (R[53]<>8104),JMP LBL[99] ;
  64:  WAIT   1.00(sec) ;
  65:  END ;
  66:   ;
  67:  LBL[99:handling error] ;
  68:  !add error handling logic here ;
  69:  !according to different ;
  70:  !error codes ;
  71:  !e.g.: R[53]=-99 means ;
  72:  !failed to open socket ;
  73:  PAUSE ;

下表为上述程序的逻辑解读。在上述代码中,被注释掉的内容以!开头,下表不解释被注释掉的内容。

流程 代码及说明

设置坐标系

   6:  !set current uframe NO. to 0 ;
   7:  UFRAME_NUM=0 ;
   8:  !set current tool NO. to 1 ;
   9:  UTOOL_NUM=1 ;
  • UFRAME_NUM=0:将当前所选的用户坐标系号码设置为0号(世界坐标系)。

  • UTOOL_NUM=1:将当前所选的工具坐标系号码设置为1号(用户需提前设定1号工具坐标系)。

移动到指定位置

  10:  !move to robot home position ;
  11:  J P[4] 100% FINE    ;
  • J:机器人的关节角移动指令,表示机器人沿弧线移动至指定位置。

  • P[4]:指定机器人移动的目标位置。

  • 100%:相对最大移动速度的百分比。

  • FINE:精准到达指定位置。

初始化通信

12:  !Init Socket!Modify IP Address ;
13:  CALL MSR_INIT_SKT('8','192.168.1.20',30000,5) ;
  • CALL MSR_INIT_SKT('8','192.168.1.20',30000,5) :建立在线测量系统与机器人之间的TCP协议通信连接。

    • '8':机器人端口号。

    • '192.168.1.20':工控机的IP地址。

    • 30000:工控机的端口号。

    • 5:通信超时等待时间,单位:分钟。

      用户需根据实际情况修改此处的工控机IP地址和端口号,确保与Mech-MSR中设置的一致。

设置自定义参数

14:  !Set Custom Values ;
15:  CALL MSR_MEAS_PAR(0,0,0,0,0,0,0,0) ;
  • CALL MSR_MEAS_PAR(0,0,0,0,0,0,0,0) :设置自定义参数。

    • 0,0,0,0,0,0,0,0:一组自定义参数,值为0表示不使用该自定义参数。自定义参数仅在需要为Mech-Metrics提供更多工件信息时使用。

开始测量

  16:  !Start Measurement Task ;
  17:  CALL MSR_ST_MEAS(1,1,2,10,10,53) ;
  18:  !check whether metrics project ;
  19:  !has been triggered successfully ;
  20:  IF (R[53]<>8100),JMP LBL[99] ;
  • CALL MSR_ST_MEAS(1,1,2,10,10,53) :开始测量任务。

    • 1:工件编号。

    • 1:字符串寄存器编号,用于保存工件名称。

    • 2:字符串寄存器编号,用于保存工件SN。

    • 10:测量组编号。测量组编号取值范围为10~9999。各取值含义如下:

      • 10:固定组编号。

      • 11~9999:固定组 + 轮测组的组合编号。

      指定的测量组编号必须已经在测量组编辑器界面配置。

      此处的测量组编号需与Mech-Metrics中设置的一致。

    • 10:数值寄存器的编号,用于保存Mech-Metrics返回的此次运行是连续运行还是单次运行。

    • 53:数值寄存器编号,用于保存指令状态码。

  • IF (R[53]<>8100),JMP LBL[99]:若状态码不为8100,表示开始测量任务指令执行异常,程序跳转至LBL[99]进行错误处理。

测量中传入工件SN

  21:  !Import Part ID During ;
  22:  !Measurement ;
  23:  CALL MSR_SET_WP(1,2,53) ;
  24:  !check whether Part ID has ;
  25:  !been imported successfully ;
  26:  IF (R[53]<>8103),JMP LBL[99] ;
  • CALL MSR_SET_WP(1,2,53) :设置工件信息,用于在测量中传入工件SN。

    • 1:工件编号。

    • 2:字符串寄存器编号,用于保存需要传入的工件SN。

    • 53:数值寄存器编号,用于保存指令状态码。

  • IF (R[53]<>8103),JMP LBL[99]:若状态码不为8103,表示传入工件SN指令执行异常,程序跳转至LBL[99]进行错误处理。

移动机器人到指定位置并进行特征测量

  27:  !move to 1st image-capturing ;
  28:  !position ;
  29:J P[1] 100% FINE    ;
  30:  !Set Robot_Id,Index ;
  31:  !R No.2:MM Status ;
  32:  CALL MSR_MEAS_FEAT(1,3,53) ;
  33:  !check whether feature measureme- ;
  34:  !nt has been run successfully ;
  35:  IF (R[53]<>8101),JMP LBL[99] ;
  36:  !move to 2ed image-capturing ;
  37:  !position ;
  38:J P[2] 100% FINE    ;
  39:  !Set Robot_Id,Index ;
  40:  !R No.2:MM Status ;
  41:  CALL MSR_MEAS_FEAT(1,3,53) ;
  42:  !check whether feature measureme- ;
  43:  !nt has been run successfully ;
  44:  IF (R[53]<>8101),JMP LBL[99] ;
  45:  !move to 3rd image-capturing ;
  46:  !position ;
  47:J P[3] 100% FINE    ;
  48:  !Set Robot_Id,Index ;
  49:  !R No.2:MM Status ;
  50:  CALL MSR_MEAS_FEAT(1,3,53) ;
  51:  !check whether feature measureme- ;
  52:  !nt has been run successfully ;
  53:  IF (R[53]<>8101),JMP LBL[99] ;
  • J P[1] 100% FINE:精准移动到第一个测量位置,速度100%。

  • CALL MSR_MEAS_FEAT(1,3,53):机器人侧将触发工件编号1、测量特征的测量编号为3的Mech-MSR工程运行。

    • 1:工件编号。

    • 3:特征测量编号。

    • 53:数值寄存器编号,用于保存指令状态码。

      每次调用的特征编号需根据实际情况修改。

  • IF (R[53]<>8101),JMP LBL[99]:若状态码不为8101,表示运行特征测量指令执行异常,程序跳转至LBL[99]进行错误处理。

  • J P[2] 100% FINE:精准移动到第二个测量位置,速度100%。

  • J P[3] 100% FINE:精准移动到第三个测量位置,速度100%。

    用户需提前示教本三处测量位置。具体示教方法可参考自动标定中FANUC自动标定篇中示教标定起始点部分的操作。

结束测量

  54:  CALL MSR_END_MEAS(1,11,12,13,14,53) ;
  55:  !check whether metrics project ;
  56:  !has been ended successfully ;
  57:  IF (R[53]<>8102),JMP LBL[99] ;
  • CALL MSR_END_MEAS(1,11,12,13,14,53):结束测量任务,保存并返回测量结果。

    • 1:工件编号。

    • 11:数值寄存器编号,用于保存工件判定结果。1表示OK,0表示NG。

    • 12,13,14:数值寄存器编号,用于保存工件超出一级、二级、三级公差带的特征数量。

    • 53:数值寄存器编号,用于保存指令状态码。

  • IF (R[53]<>8102),JMP LBL[99]:若状态码不为8102,表示结束测量任务指令执行异常,程序跳转至LBL[99]进行错误处理。

查询历史数据

  58:  !Query Part Historical Data ;
  59:  CALL MSR_VIEW_WP(1,2,53) ;
  60:  !check whether part historical ;
  61:  !data has been viewed ;
  62:  !successfully ;
  63:  IF (R[53]<>8104),JMP LBL[99] ;
  • CALL MSR_VIEW_WP(1,2,53):使用特定机器人将工件SN传入Mech-Metrics,并将Mech-Metrics软件主界面切换至该工件的数据视图。

    • 1:工件编号。

    • 2:字符串寄存器编号,保存待传入的工件SN。

    • 53:数值寄存器编号,用于保存指令状态码。

  • IF (R[53]<>8104),JMP LBL[99]:若状态码不为8104,表示查询历史数据指令执行异常,程序跳转至LBL[99]进行错误处理。

结束程序与错误处理

  64:  WAIT   1.00(sec) ;
  65:  END ;
  66:   ;
  67:  LBL[99:handling error] ;
  68:  !add error handling logic here ;
  69:  !according to different ;
  70:  !error codes ;
  71:  !e.g.: R[53]=-99 means ;
  72:  !failed to open socket ;
  73:  PAUSE ;
  • WAIT 1.00(sec):等待1秒。

  • END:程序结束。

  • LBL[99:handling error]:错误处理标签。指令状态码异常时,程序跳转至此处。

  • PAUSE:暂停程序。用户可在LBL[99]处根据不同的错误码(如R[53]=-99表示通信连接建立失败)添加自定义的错误处理逻辑。

该页面是否有帮助?

可以通过以下方式反馈意见:

我们重视您的隐私

我们使用 cookie 为您在我们的网站上提供最佳体验。继续使用该网站即表示您同意使用 cookie。如果您拒绝,将使用一个单独的 cookie 来确保您在访问本网站时不会被跟踪或记住。