4.1 任务
4.1.1 任务介绍
- 每一个任务是由名称、优先级、时间间隔、看门狗组成,您可以自行定义当前任务的这些参数,在一个程序中不同部分的执行通过“任务”来控制。您可以定义多个不同的任务,以控制不同的程序。其提供周期性或触发性的执行一组程序。
- 任务具有将I/O映射的Output全局变量写入%Q输出映像寄存器,将%I输入映像寄存器写入I/O映射的input全局变量,调用执行程序的能力。
- 输入映像寄存器:是PLC接收外部输入的开关量信号的窗口,为输入端信号状态开辟的一个存储区
- 输出映像寄存器:是为输出端信号状态开辟的一个存储区
4.1.2任务分类
连续循环任务
- 有且只有一个
- 连续循环任务是每次该任务执行完毕后,如果CPU处理能力可用,系统就再次触发任务调用。
事件触发任务
- 事件触发任务:由时间触发的非循环执行任务都可以归类到事件触发任务。事件触发可以根据PLC事件启动事件触发,确定的时间事件触发,硬件扫描事件触发,系统事件触发等。
启动任务(触发任务表格序号1):由停止模式变为运行模式时,完成STARTUP自检,全局变量完成初始化后,初始化用户程序错误任务和执行超时任务后,立即触发:STARTUP 任务,再所有其他TASK初始化,然后启动连续循环任务,再启动其他任务。
- 具体的事件触发任务汇总如下表:
序号 | 事件触发任务 | 优先级(默认值) | 分类 |
---|---|---|---|
1 | PLC模式从STOP到RUN | 29 | 启动TASK |
2 | 在指定的日期执行一次 (使用日期时间以独立的形式指定) 特定的间隔来执行 (例如每8小时、每天、每月) | 5~29 | 时间事件TASK |
3 | 执行超时 | 5~29 | 任务执行超时TASK |
4 | 编程错误 | 5~29 | 程序错误TASK |
注意
- 每个事件触发任务添加时会自动添加一个该任务接口格式的系统程序并放置在该任务第一个调用程序,任务和程序之间的关系为弱耦合(会自动添加并关联但是用户可以各自删除、修改且不关联删除、修改)
- 任务校验从第一个使能开始
- 用户可以修改程序的名称和先后顺序,但一定要保证第一个被调用的程序符合接口格式
定周期循环任务
定周期循环任务是系统每隔一段任务设定的循环时间就触发一次任务调用。启动时间是PLC模式转换从停止状态切换到运行状态的时刻,如果有多个定周期循环TASK,系统根据优先级高低依次调用。
- 定周期任务默认行为:
-
可设定的循环时间范围:1ms~60000ms(最大周期1分钟)
-
第一个建立的定周期循环任务的默认循环时间是20ms,优先级10(可修改)
-
默认新增循环时间越短的任务,系统建议设定的优先级越高(可修改)
-
注意
- 天行PLC规定最大总任务数25,各类任务分别规定如下:
- 定周期循环任务的最 大数为9;
- 连续循环任务的最大数为1;
- 时间触发任务的最大数为15;
- 不建议对定周期循环任务进行后处理。因为可能会导致优先级相同或较低的任务发生过载
4.1.3 任务优先级
- 优先级:CPU资源分配的先后顺序,就是指任务的优先权,优先权高的进程有优先执行权力。
- 任务于优先级存在固定的依赖关系
- 任务的优先级设置确立了相关TASK的调度优先级,天行PLC调度和任务优先级共可以设32个级别(0~31之间的一个数字,0为最高优先级,具有的数值越高优先级越低,31为最低优先级)
- 不同任务类型可选优先级数如下表所示:
任务类型 | 可选优先级 | 备注 |
---|---|---|
定周期循环任务 | 5-25 | 暂定 |
事件触发任务 | 5-29 | 暂定 |
连续循环任务 | 30 | 暂定 |
注意
- 如果在不同的任务中使用相同的输入,那么输入可能会在任务除了过程中发生变化。当任务被也具有更高优先级的任务中断并导致再次读取过 程映像时,会发生这种情况。
- 在多个任务使用相同的输入输出没有任何意义,并且在某些情况下会导致意外反应。
4.1.4 任务执行规则
- 一个任务可调用多个程序,每一个TASK最大调用程序数为99
- TASK由系统调用,主程序由TASK调用
- 同一PLC下,所有TASK名称不可以重名,否则编译报错
- 连续循环任务优先级必须低于定周期循环任务
4.1.5 任务执行
任务执行过程
- 如下图所示:
- 执行阶段描述,如下表所示:
执行阶段 | 阶段描述 |
---|---|
输入采样阶段 | 每次扫描周期开始时,PLC检测输入设备的状态,将状态写入输入映像寄存区内。PLC以扫描方式读所有输入端子的输入信号,并将个输入状态存入对应的输入映像寄存器中。此时,输入映像寄存器被刷新。 |
程序执行阶段 | 在扫描周期的执行程序阶段,PLC从输入映像区或输出映像区内读取状态和数据,并依照相应的运算后,将结果保存在输出映像区。 |