ABB在线测量样例程序

程序简介

功能说明

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

文件路径

Mech-MSR和Mech-Metrics软件安装目录下Mech-MSR/center/MSR_Interface/ABB/sample/MSR_Metrics_Sample

所需资源

Mech-MSR方案和Mech-Metrics工程

使用前提

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

程序解读

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

MODULE MSR_Metrics_Sample
    LOCAL CONST jointtarget path1:=[[0,0,0,0,90,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
    LOCAL CONST jointtarget path2:=[[0,0,0,0,100,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
    LOCAL CONST jointtarget path3:=[[0,0,0,0,110,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
    LOCAL VAR num MSR_Status:=0;
    LOCAL VAR num outvalue:=0;
    LOCAL VAR num measure_result:=0;
    LOCAL VAR num FailedCount{3}:=[0,0,0];
    PROC MSR_Metric_Test()
        AccSet 50,50;
        !set the velocity parameters
        VelSet 50,1000;
        !Init socket! Modify IP address;
        MSR_Init_Socket "127.0.0.1",4000,300;
        MSR_Open_Socket MSR_Status;
        IF MSR_Status=-99 THEN
            TPWrite "MSR: Communication Error";
            STOP;
        ENDIF
        WaitTime 1;
        MSR_Start_Measure 1,"Piece01","ABC",2,1,2,3,4,5,6,7,8,outvalue,MSR_Status;
        IF MSR_Status<> 8100 THEN
            TPWrite "MSR: RUN Error";
            STOP;
        ENDIF

        MSR_Set_Piece_Info 1,"ABC",MSR_Status;
        IF MSR_Status<> 8103 THEN
            TPWrite "MSR: RUN Error";
            STOP;
        ENDIF

        MoveAbsJ path1\NoEOffs,v3000,fine,tool0;
        MSR_Measure_Feature 1,1,MSR_Status;
        IF MSR_Status<> 8101 THEN
            TPWrite "MSR: RUN Error";
            STOP;
        ENDIF

        MoveAbsJ path2\NoEOffs,v3000,fine,tool0;
        MSR_Measure_Feature 1,1,MSR_Status;
        IF MSR_Status<> 8101 THEN
            TPWrite "MSR: RUN Error";
            STOP;
        ENDIF

        MoveAbsJ path3\NoEOffs,v3000,fine,tool0;
        MSR_Measure_Feature 1,1,MSR_Status;
        IF MSR_Status<> 8101 THEN
            TPWrite "MSR: RUN Error";
            STOP;
        ENDIF

        MSR_End_Measure 1,measure_result,FailedCount,MSR_Status;
        IF MSR_Status<> 8102 THEN
            TPWrite "MSR: RUN Error";
            STOP;
        ENDIF

        MSR_View_Piece_Data 1,"ABC",MSR_Status;
        IF MSR_Status<> 8104 THEN
            TPWrite "MSR: RUN Error";
            STOP;
        ENDIF

        MSR_Close_Socket;
        stop;
    ENDPROC
ENDMODULE

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

流程 代码及说明

定义变量

LOCAL CONST jointtarget path1 := [[0,0,0,0,90,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
LOCAL CONST jointtarget path2 := [[0,0,0,0,100,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
LOCAL CONST jointtarget path3 := [[0,0,0,0,110,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
LOCAL VAR num MSR_Status:=0;
LOCAL VAR num outvalue:=0;
LOCAL VAR num measure_result:=0;
LOCAL VAR num FailedCount{pass:[3]}:=[0,0,0];
  • 定义局部变量。上述局部变量仅在本程序中生效。其中,MSR_Status用于接收并判断各通信命令的返回状态码。用户需提前示教若干测量位置(path1、path2、path3变量)。

具体示教方法可参考自动标定中ABB自动标定篇中示教标定起始点部分的操作。

设置加速度与速度

AccSet 50, 50;
VelSet 50, 1000;
  • AccSet 50, 50:将加速度限制在正常值的50%,加速度增减率限制在正常值的50%。

  • VelSet 50, 1000:将速率设置为编程速率的50%,将最大TCP速率设置为1000mm/s。

初始化通信

MSR_Init_Socket "127.0.0.1",4000,300;
  • MSR_Init_Socket "127.0.0.1",4000,300:初始化通信连接,指定通信对象(工控机)的IP地址(127.0.0.1)、端口号(4000)以及超时等待时间(300秒)。

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

建立通信连接

MSR_Open_Socket MSR_Status;
IF MSR_Status=-99 THEN
    TPWrite "MSR: Communication Error";
    STOP;
ENDIF
WaitTime 1;
  • MSR_Open_Socket MSR_Status:建立通信连接,并将状态码保存到MSR_Status。

  • IF MSR_Status=-99 THEN …​ ENDIF:若状态码为-99,表示通信异常,机器人示教器输出“MSR: Communication Error”并停止程序。

  • WaitTime 1:设置等待时间为1秒。

开始测量

MSR_Start_Measure 1,"Piece01","ABC",2,1,2,3,4,5,6,7,8,outvalue,MSR_Status;
IF MSR_Status<> 8100 THEN
    TPWrite "MSR: RUN Error";
    STOP;
ENDIF
  • MSR_Start_Measure 1,"Piece01","ABC",2,1,2,3,4,5,6,7,8,outvalue,MSR_Status:指定开始对工件编号为1、名称为Piece01、SN码为ABC的工件进行测量,指定检测模式为半检(2),指定8个自定义参数(1,2,3,4,5,6,7,8),并指定返回值存储在outvalue的位置,同时获取指令状态码。

  • IF MSR_Status<> 8100 THEN …​ ENDIF:若状态码不为8100,表示开始测量指令执行异常,示教器输出“MSR: RUN Error”并停止程序。

    此处设置的检测模式、自定义参数需与Mech-Metrics中设置的一致。

向Mech-Metrics传入工件

MSR_Set_Piece_Info 1,"ABC",MSR_Status;
IF MSR_Status<> 8103 THEN
    TPWrite "MSR: RUN Error";
    STOP;
ENDIF
  • MSR_Set_Piece_Info 1,"ABC",MSR_Status:指定向Mech-Metrics中传入SN码为ABC的工件,并获取指令状态码。

  • IF MSR_Status<> 8103 THEN …​ ENDIF:若状态码不为8103,表示传入工件信息异常,示教器输出“MSR: RUN Error”并停止程序。

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

MoveAbsJ path1\NoEOffs,v3000,fine,tool0;
MSR_Measure_Feature 1,1,MSR_Status;
IF MSR_Status<> 8101 THEN
    TPWrite "MSR: RUN Error";
    STOP;
ENDIF
MoveAbsJ path2\NoEOffs,v3000,fine,tool0;
MSR_Measure_Feature 1,1,MSR_Status;
IF MSR_Status<> 8101 THEN
    TPWrite "MSR: RUN Error";
    STOP;
ENDIF
MoveAbsJ path3\NoEOffs,v3000,fine,tool0;
MSR_Measure_Feature 1,1,MSR_Status;
IF MSR_Status<> 8101 THEN
    TPWrite "MSR: RUN Error";
    STOP;
ENDIF
  • MoveAbsJ:ABB机器人的绝对位置移动指令,表示机器人的各关节轴独立运动至指定位置。

    • \NoEOffs:运动不受外部轴影响。

    • v3000:机器人的速度为3000mm/s。

    • fine:准确移动到指定位置。

    • tool0:机器人在移动时所使用的末端工具。

  • MSR_Measure_Feature 1,1,MSR_Status:机器人侧将触发工件编号1、测量特征的测量编号为1的Mech-MSR工程运行,并获取指令状态码。

  • IF MSR_Status<> 8101 THEN …​ ENDIF:每次触发特征测量后均检查状态码。若状态码不为8101,示教器输出“MSR: RUN Error”并停止程序。

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

结束测量

MSR_End_Measure 1,measure_result,FailedCount,MSR_Status;
IF MSR_Status<> 8102 THEN
    TPWrite "MSR: RUN Error";
    STOP;
ENDIF
  • MSR_End_Measure 1,measure_result,FailedCount,MSR_Status:停止测量,同时保存工件的判定结果于measure_result,保存不合格测量项数量于FailedCount,并获取指令状态码。

  • IF MSR_Status<> 8102 THEN …​ ENDIF:若状态码不为8102,表示结束测量指令执行异常,示教器输出“MSR: RUN Error”并停止程序。

查询历史数据

MSR_View_Piece_Data 1,"ABC",MSR_Status;
IF MSR_Status<> 8104 THEN
    TPWrite "MSR: RUN Error";
    STOP;
ENDIF
  • MSR_View_Piece_Data 1,"ABC",MSR_Status:通过外部传入工件SN,将Mech-Metrics软件主界面切换为传入编号(ABC)的工件,并获取指令状态码。

  • IF MSR_Status<> 8104 THEN …​ ENDIF:若状态码不为8104,表示历史数据查询异常,示教器输出“MSR: RUN Error”并停止程序。

关闭通信连接

MSR_Close_Socket;
stop;
ENDPROC
ENDMODULE

该页面是否有帮助?

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

我们重视您的隐私

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