样例程序1:MM_S1_Vis_Basic

程序简介

功能说明

PLC触发Mech-Vision工程运行,然后获取视觉结果。

文件路径

Mech-Vision和Mech-Viz软件安装目录下Communication Component/Robot_Interface/EthernetIP/Programming Samples/AB PLC EthernetIP/sample applications/ExportedRoutineOfSampleProjects/MM_S1_Vis_Basic.L5X

所需工程

Mech-Vision工程

使用前提

  1. 已完成标准接口通信配置

  2. 已完成自动标定

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

程序解读

以下为MM_S1_Vis_Basic样例程序的梯形图及相关解释说明。

sample1 1
sample1 2
sample1 3
sample1 4
sample1 5
sample1 6
sample1 7

上述样例程序梯形图对应的流程如下图所示。

sample1 8

下表为上述程序的逻辑解读。

  • 关于AB PLC的标准接口指令,可单击如下解释中指令名称的超链接,便可查看该指令的详细说明。

  • 关于AB PLC自带的常用基本指令,可参考常用指令说明

流程 梯形图及说明

PLC与视觉系统建立通信

sample1 1
  • ToCamera.COMM_ENABLE:是否使能触发信号。True表示触发信号将起作用,视觉系统将接收PLC发送的指令。False表示视觉系统将忽略PLC发送的指令。

  • S:FS:仅在第一个扫描周期导通。

  • MOV:将Camera_Pose_Ready赋值为2。

  • Camera_Pose_Ready:PLC是否已获取视觉结果,可取如下值。

    • 0:相机将要或已拍照,或Mech-Vision正在计算视觉结果,此时PLC未获取到视觉结果。

    • 1:相机已拍照,且PLC已获取到视觉结果。

    • 2:相机准备开始第一次拍照,此时PLC未获取到视觉结果。

因此,Rung 0表示置位ToCamera.COMM_ENABLE,仅在第一个扫描周期时将Camera_Pose_Ready赋值为2。

复位视觉系统状态码异常标志

sample1 2
  • Camera_User.Status_Code_Error[0]:视觉系统状态码异常标志。True表示Mech-Vision工程未成功运行,即视觉系统发生异常。

  • Camera_User.Status_Code_Error[1]:视觉系统状态码异常标志。True表示Mech-Vision工程未成功输出视觉结果,即视觉系统发生异常。

  • External_Reset_Camera_Error:外部复位信号。在视觉系统发生异常时,当信号从False变为True,将其后的Camera_User.Status_Code_Error[0]和Camera_User.Status_Code_Error[1]复位。

因此,Rung 1表示External_Reset_Camera_Error导通时,复位Camera_User.Status_Code_Error[0]和Camera_User.Status_Code_Error[1]。

设置Mech-Vision工程相关的接口参数

sample1 3
  • User_Vision_Project_Num:Mech-Vision工程编号。

  • User_Robot_Pose_Type:指定真实机器人的位姿将以何种形式传Mech-Vision工程。该参数需要与MM_Start_Vis指令中Robot_Pose_Type参数保持一致。本样例此处设置为0,用户可根据实际需求修改此处值。

因此,Rung 2表示将Mech-Vision工程编号设置为1,将User_Robot_Pose_Type设置为0。

sample1 4
  • Camera_User.Robot_Pose_JPS[0]~[5]:机器人6个关节角数据。该参数需要与MM_Start_Vis指令中Robot_Pose_JPS参数保持一致。本样例此处设置为0,用户可根据实际需求修改此处值,同时也可以添加机器人法兰位姿数据(即MM_Start_Vis指令中Robot_Pose_TCP参数)。

因此,Rung 3表示,若Mech-Vision工程编号等于1,且User_Robot_Pose_Type等于0,则将Camera_User.Robot_Pose_JPS[0]~[5]依次设置为0。

触发外部拍照信号

sample1 5
  • External_Photo_Signal:外部拍照信号,上升沿有效。

  • Camera_User.Set_Edge[0]:通过ONS指令获取External_Photo_Signal上升沿。

  • FromCamera.STATUS_CODE:视觉系统状态码。1102表示PLC成功触发Mech-Vision工程运行。1100表示PLC成功获取到视觉结果。

  • FromCamera.COMMAND_COMPLETE:视觉系统是否已将PLC发送的指令执行完成。True表示已执行完成,False表示未执行完成。

  • Camera_User.Start_Vis:触发Mech-Vision工程运行的标志,上升沿有效。

  • Camera_User.Get_VisData:触发获取Mech-Vision视觉结果的标志,上升沿有效。

因此,Rung 4表示获取外部拍照信号External_Photo_Signal上升沿,串联如下三种拍照场景。

  1. 首次拍照。FromCamera.STATUS_CODE等于0,且Camera_Pose_Ready等于2。

  2. 正常下次拍照。FromCamera.STATUS_CODE等于1100,且FromCamera.COMMAND_COMPLETE等于True。

  3. 异常下次拍照。FromCamera.STATUS_CODE不等于1100,且Camera_User.Status_Code_Error[0]和Camera_User.Status_Code_Error[1]均等于False。

最后,将Camera_User.Step_Num赋值为5,将Camera_Pose_Ready赋值为0,并复位Camera_User.Start_Vis和Camera_User.Get_VisData。

触发Mech-Vision工程运行,并判断是否成功触发工程从而做出不同处理

sample1 6
在MM_Start_Vis指令中,关于各输入与输出参数的详细解释,可参考MM_Start_Vis指令说明。

Rung 5表示,若Camera_User.Step_Num等于5,则执行以下逻辑。

  1. 使能功能块MM_Start_Vis,此时需要获取的位姿数量Req_Pose_Num默认为0(即获取所有视觉点,最大值为20)。

  2. 当MM_Start_Vis.EnableOut等于True,且FromCamera.TRIGGER_ACKNOWLEDGE等于False时,置位Camera_User.Start_Vis,PLC将触发Mech-Vision工程运行。

  3. 若FromCamera.STATUS_CODE大于等于1001,且小于等于1099,即视觉系统发生异常,此时通过ONS指令获取该逻辑输出上升沿,置位Camera_User.Status_Code_Error[0],并复位Camera_User.Start_Vis。用户可根据标准接口状态码及错误排查手册查找具体状态码对应的错误原因。

  4. 若FromCamera.STATUS_CODE等于1102,且FromCamera.COMMAND_COMPLETE等于True,即视觉系统已成功执行PLC发送的指令,此时通过ONS指令取该逻辑输出上升沿,将Camera_User.Step_Num赋值为10,然后复位Camera_User.Status_Code_Error[0]和Camera_User.Start_Vis。

获取Mech-Vision视觉结果,并判断是否成功获取视觉结果从而做出不同处理

sample1 7
在MM_Get_VisData指令中,关于各输入与输出参数的详细解释,可参考MM_Get_VisData指令说明。

Rung 6表示,若Camera_User.Step_Num等于10,则执行以下逻辑。

  1. 使能功能块MM_Get_VisData

  2. 当MM_Get_VisData.EnableOut等于True,且FromCamera.TRIGGER_ACKNOWLEDGE等于False时,置位Camera_User.Get_VisData,PLC开始获取Mech-Vision工程输出的视觉结果。

  3. 若FromCamera.STATUS_CODE大于等于1001,且小于等于1099,即视觉系统发生异常,此时通过ONS指令取该逻辑输出上升沿,置位Camera_User.Status_Code_Error[1],并复位Camera_User.Get_VisData。用户可根据标准接口状态码及错误排查手册查找具体状态码对应的错误原因。

  4. 若FromCamera.STATUS_CODE等于1100,且FromCamera.COMMAND_COMPLETE等于True,即视觉系统已成功执行PLC发送的指令,此时复位Camera_User.Status_Code_Error[1]和Camera_User.Get_VisData;通过ONS指令取FromCamera.STATUS_CODE等于1100、FromCamera.COMMAND_COMPLETE等于True的逻辑输出上升沿,将Camera_Pose_Ready赋值为1,将Camera_User.Step_Num赋值为0,即PLC已获取到视觉结果,可将获取的视觉结果转发给机器人使用。

我们重视您的隐私

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