8.6 任务列表
xCore 控制系统支持多任务。
通过多任务,可实现多个机器人程序的“并行”,典型应用场景:
-
持续监控某个信号,即使 Main 主程序已经停止运行(类似于后台 PLC 功能,但是响应速度比不上真正的 PLC)
-
在机器人执行运动主程序的同时,跟外设进行数据接收、发送等处理,而不受到主程序执行逻辑的限制
-
机器人工作的时候,通过示教器获取一些输入
xCore 系统的“任务列表”,提供了对并行处理任务的管理界面,用户可以在该界面查看已有任务属性,新建、编辑、删除任务。
8.6.1 任务属性
新建或编辑任务时,需要设置任务属性。
| 任务属性 | 描述 |
|---|---|
任务名称 |
任务的名称在所有任务中必须是唯一的,任务名称仅支持字母数字下划线,首字母不能为数字,最长为 20 个字符。 |
描述 |
描述任务的作用,辅助使用者理解。 |
任务类型 |
包括常规任务、运动任务、半静态任务、视觉任务(配合 xVision 使用)。其中,运动任务指可以使用 RL 指令来控制机器人的运动,一个工程只能运行一个运动任务。 |
自动开始 |
配合生产模式使用,选中自动开始表示系统重启时程序开始重新执行。通常情况下不会被示教器或者急停停止。 |
优先级 |
设置任务运行的优先级。 |
创建文件 |
勾中生成 main 函数时,创建任务之后会自动生成 main 函数;其他函数同理。 |
8.6.2 常规任务、运动任务
8.6.2.1 新建任务
新建第一个任务前,请先新建工程。如果已有工程,想新增一个任务,则无需重复新建工程。
新建一个任务后,可以编辑该任务的属性。
|
8.6.2.2 新建程序模块
每个任务可以包括若干程序模块(.mod 文件),如下图所示,点击编辑按钮。
在新的页面点击“+”,新建程序模块。设置模块的名称、描述等基本信息后,点击“确定”,完成程序模块的创建。
此时,任务列表可以查看新建的程序模块。
RL 编辑器上方,也可以选择新的程序模块,并进行编程。
8.6.2.3 启动和运行
在 RL 编辑器上方 可以选择任务。在手动使能或者自动上电情况下,可使用启动/停止按钮或者外部信号控制选中任务的启停。
使用限制:
|
8.6.2.4 任务间通信
任务间通信支持两种方式,PERS 变量。
任务间使用 PERS 变量通信:
-
在所有需要进行通信的任务工程中都定义相同名称的 GLOBAL 级别的 PERS 变量,且变量的数据类型、维数均应相同。
-
在需要的地方使用 PERS 变量来控制任务执行、传递数据等。
-
变量列表、点位列表的所有变量所有任务都可以随意使用。
使用限制: * 只需在其中一个任务中为 PERS 变量指定初始值即可。如果在多个任务中为同一个 PERS 变量指定了初始值,那么将使用第一个运行的任务中定义的初始值。 * 通过 PERS 变量以及 WaitUntil 或 WHILE 指令的方式让一个任务等待另一个任务时,需要注意配合等待指令(大于 0.1s),避免程序快速执行空判断语句导致占用过多系统资源。
8.6.3 半静态任务
从 v2.0.1 版本开始,xCore 控制系统提供半静态任务功能。半静态任务从属于多任务功能,运行的也是 RL 语言编写的程序。相比常规任务和运动任务,半静态任务有两个特点:一是它在正确配置之后,无需上电、启动等指令,就能开机后自启动;二是暂停按钮不会停止半静态任务。这两个特点使得半静态任务的运行周期覆盖几乎整个控制系统从开机到关机的时间。
半静态的典型应用:
-
周期性判断机器人的位置,并通过寄存器、IO 等通知上位机
-
输出自定义心跳信号
-
转发多个设备之间的数据
8.6.3.2 启动、停止半静态任务
跟常规任务的启动一样,创建并配置好半静态程序后,手动上电或者自动模式上电后,点击运行,即可启动半静态任务。如果工程中有半静态任务正在运行,则在底部状态栏中间会显示半静态状态图标。此时点击暂停或者下电,半静态任务都不会停止,点击底部状态栏的“状态”按钮,将弹窗确认对话框,
点击“确认”将执行停止半静态任务操作。半静态任务在不触发程序异常时,只有这个按钮可以停止半静态任务(需要先暂停常规任务,才能暂停半静态任务)。
8.6.3.3 配置半静态开机自启动
在工程配置界面,将半静态任务所属的工程设置为默认工程。
并在任务列表中,勾选半静态任务的“开机运行”和“是否运行”两个选项。
最后再点击 PPToMain,将工程配置从 HMI 同步到控制器,可使半静态任务自启动。
8.6.3.4 半静态任务安全级别
除了常规任务的优先级和是否运行等配置,半静态任务有一个额外属性:安全级别。
它用于定义半静态任务工作出现异常(比如数据接收失败)时,控制器对于半静态任务的异常处理策略。
-
安全无关: 适用于上位机或者操作人员对半静态任务的工作情况不在意的情况,配置该安全级别的半静态任务如果运行出错,则只会将自己停止,其他的任务运行不受影响。
-
系统停止: 适用于半静态任务的数据影响程序安全逻辑的情况(比如通过半静态决定运动点位、通过半静态通知上位机如何控制机器人),系统停止级别的半静态任务如果运行出错,会将所有任务暂停。
8.6.3.5 半静态任务调试建议
|