工业机器人编程指令详解
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.7 多任务处理

2.7.1 多任务定义

多任务是指系统可以同时执行多个程序。理论上可以同时执行的程序达到32个,出厂设置为8个。在系统中有一个程序存放区,该存放区分为32个任务区(也翻译为“插槽”,相当于一个档案柜有很多抽屉),每一个任务区存放一个程序。在软件中可以对每一程序设置“程序名”“循环运行条件”“启动条件”“优先运行行数”。如图2-16所示。

图2-16 程序的存放区域

以参数TASKMAX设置多任务运行的“最大程序数”。

2.7.2 设置多程序任务的方法

(1)任务区内程序的设置和启动

①如果同时运行的都是运动程序,则多个程序运行会造成混乱。所以将“运动程序”置于“第1任务区(插槽1)”。其他“数据运算型程序”置于第2~7区。

②程序的启动。可以在“第1任务区(插槽1)”内的程序通过指令启动其他任务区内的“程序”。相关指令如下:

XLoad——XLoad 2,“10”:指定任务区号和装入该任务区的“程序号”。

XRun——XRun 2:启动运行2号任务区(插槽)内程序。

XStp——XStp 2:停止执行2号任务区(插槽)内程序。

③样例程序。在图2-16中,各任务区程序之间可以通过“用户基本程序”、“全局变量”、“用户定义的全局变量”进行信息交换,这样也是实现各程序启动停止的方法和渠道。

a.任务区1程序

    1 M_00= 0'     M_00为"全局变量"
    2 * L2 If M_00= 0 Then * L2'    对M_00进行判断
    3 M_00= 0'    设置M_00= 0
    4 Mov P1
    5 Mov P2
    100 GoTo * L2

b.任务区2程序(信号及变量程序)

    1 If M_In(8)<>1 Then * L4'    对输入信号8进行判断,如果不等于1则跳到* L4
    2 M_00= 1'    设置M_00= 1这个变量被任务区1的程序作为判断条件
    3 M_01= 2'    设置M_01= 2
    4 * L4

④程序的启动条件

a.可以设置程序的启动条件为“上电启动”或“遇报警启动”。“START”信号为同时启动各任务区内程序。

b.可以对每个任务区(插槽)设置“外部信号”进行启动。

在使用外部信号控制各任务区时,如果在2~7插槽中设置的程序为运动程序,则在发出相关的启动信号后,系统立即报警——“未取得操作权”。如果设置的程序为数据运算程序,则不报警。

(2)各任务区内的工作状态

各任务区内的工作状态如图2-17所示。每一任务区的工作状态可以分为:

图2-17 任务区内的工作状态及其转换

①“可选择程序状态”——本状态表示原程序已经运行完成或复位。在此状态下可以通过“指令XLOAD”或“参数”选择“装入”新的程序。

②“待机状态”——等待“启动”指令启动程序或“复位指令”回到“可选择程序状态”。

③“运行状态”——通过XSTP指令可进入“待机状态”。通过程序循环结束可进入“可选择程序状态”。

(3)对多任务区的设置

①设置程序名 在RT ToolBox软件中可通过参数设置各任务区内的程序名,如图2-18所示。

图2-18 在RT ToolBox软件中通过参数进行的设置

②同时启动信号 通过外部信号可以对各任务区进行“启动”“停止”。“START”信号为同时启动各任务区内程序。

③分别启动信号 通过外部信号可以对各任务区分别进行“启动”“停止”。S1 START~SnSTART分别为启动各任务区的信号。如图2-19所示。

图2-19 各任务区的“启动信号”

④分别停止信号 通过外部信号可以对各任务区分别进行“停止”。S1 STOP~SnSTOP分别为各任务区的停止信号。如图2-20所示。

图2-20 各任务区的“停止信号”

2.7.3 多任务应用案例

(1)程序流程图

图2-21为任务区1和任务区2内的程序流程图,两个程序之间有信息交流。

图2-21 在任务区1和任务区2内的程序

(2)各位置点的定义

图2-22是工作位置点示意图。

图2-22 工作位置点示意图

①P1抓取工件位置并暂停Dly 0.05s;

②P2放置工件位置并暂停Dly 0.05s;

③P3视觉系统前位置Cnt连续轨迹运行;

④P4视觉系统快门位置Cnt连续轨迹运行;

⑤P_01视觉系统测量得到的(补偿)数据;

⑥P20在P2点的基础上加上了“视觉系统(补偿)数据”的新工件位置点。

(3)任务区1内的程序

    1 Cnt 1'——指令连续运行
    2 Mov P2,10'——移动到P2点+ 10mm位置
    3 Mov P1,10'——移动到P1点+ 10mm位置
    4 Mov P1'——移动到P1点位置
    5 M_Out(10)= 0'——指令输出信号(10)= OFF
    6 Dly 0.05'——暂停0.05s
    7 Mov P1,10'——移动到P1点+ 10mm位置
    8 Mov P3'——移动到P3点位置——准备照相
    9 Spd 500'——设置速度= 500mm/s
    10 Mvs P4'——移动到P4点位置——进行照相
    11 M_02# = 0'——设置(M_01= 1/M_02= 0,用作为程序2的启动条件)
    12 M_01# = 1'——对程序2发出读数据请求
    13 Mvs P2,10'——移动到P2点+ 10mm位置
    14 * L2:If M_02# = 0 Then GoTo * L2'——判断程序2的数据处理是否完成,M_02= 1表示程序2的数据处理完成
    15 P20= P2* P_01'——定义P20的位置= P2与P_01乘法运算
    16 Mov P20,10'——移动到P20点+ 10mm位置
    17 Mov P20'——移动到P20点位置
    18 M_Out(10)= 1'——指令输出信号(10)= ON
    19 Dly 0.05'——暂停0.05s
    20 Mov P20,10'——移动到P20点+ 10mm位置
    21 Cnt 0'——解除连续轨迹运行功能
    22 End'——程序1结束

(4)获取位置数据

程序名2(任务区2内的程序)

    1 * L1:If M_01# = 0 Then GoTo * L1'——检测程序1是否发出读位置数据请求,如果M_01= 1就执行以下读位置数据程序
    2 Open"COM1:"As# 1'——打开通信口1,执行1
    3 Dly M_03# '——暂停
    4 Print# 1,"SENS"'——发出"SENS"指令,通知"视觉系统"
    5 Input# 1,M1,M2,M3'——接收视觉系统传送的数据
    6 P_01.X= M1'——M1为
    7 P_01.Y= M2'——M2为
    8 P_01.Z= 0.0'
    9 P_01.A= 0.0'
    10 P_01.B= 0.0'
    11 P_01.C= Rad(M3)'——M3为
    12 Close'——关闭通信口
    13 M_01# = 0'——设置M_01= 0,表示数据读取及处理完成
    14 M_02# = 1'——设置M_02= 1,表示数据读取及处理完成
    15 End'

在上例程序中,用全局变量M_ 01,M_ 02进行程序1和程序2的信息交换,是编程技巧之一。