任务组态
AnyControl支持多任务组态,用户可以在同一时间内运行多个应用程序,每个正在执行的应用程序被称为一个任务。
用户可使用名字、任务类型来创建一个任务,紧接着可以在创建的任务配置页面进一步配置任务的类型、优先级、看门狗等参数。
任务类型决定了任务的触发条件,例如周期任务按照指定的周期运行,自由任务连续运行(间隔配置的休眠时间),事件任务在一个变量的上升沿或下降沿时执行一次,状态任务在一个变量为高电平时持续运行(间隔配置的休眠时间)。
每个任务下可挂载多个程序组织单元(POU)。
任务执行顺序:
1、如果满足任务执行条件,任务被执行。
2、如果几个任务同时满足任务执行条件,那么先执行高优先级的任务(编号越小优先级越高)。
3、如果多个具有相同优先级的任务同时满足执行条件,那么这些任务被轮流执行。
任务类型
支持的任务类型有以下几种:
周期任务:按照设定周期循环运行。
参数说明
参数 | 说明 | |
---|---|---|
任务周期 | 按指定周期参与系统内的调度运行。注:如果设置任务周期小于调度器精度设定值,则最终任务运行周期以调度器周期为准。调度器精度设定请参考“任务配置-配置/参数说明” | |
优先级 | 数字越低,任务调度优先级越高。优先级高的任务可以优先得到调度,也可以中断正在执行的低优先级任。 | |
看门狗 | 使能 | 看门狗使能后,如果任务的执行时间超过看门狗设置的时间,则会自动停止该任务的执行。 |
时间 | 看门狗起效的最大任务执行时间。 | |
栈大小 | 创建任务时,开辟给任务的栈空间。工程编译提示某任务“栈存在溢出风险”时,可以按需调整栈空间大小。注意:在调整栈大小的时候,必须考虑目标机的要求。 |
自由任务:由系统调度持续自由运行,但每次运行会休眠设定的时间再次持续自由运行。
参数说明
参数 | 说明 | |
---|---|---|
休眠间隔 | 例如设定此值为50ms,则任务休眠50ms后,继续参与系统的调度运行。 | |
优先级 | 数字越低,务调度优先级越高。优先级高的任务可以优先得到调度,也可以中断正在执行的低优先级任。 | |
看门狗 | 使能 | 看门狗使能后,如果任务的执行时间超过看门狗设置的时间,则会自动停止该任务的执行。 |
时间 | 看门狗起效的最大任务执行时间。 | |
栈大小 | 创建任务时,开辟给任务的栈空间。工程编译提示某任务“栈存在溢出风险”时,可以按需调整栈空间大小。注意:在调整栈大小的时候,必须考虑目标机的要求。 |
事件任务:由关联变量控制任务的运行,当关联变量产生一个上升沿/下降沿时,任务运行一次后停止运行。
参数说明
参数 | 说明 | |
---|---|---|
触发类型 | 上升沿:关联变量上升沿时,任务运行一次后停止。下降沿:关联变量下降沿时,任务运行一次后停止。 | |
关联变量 | 可关联程序逻辑中的任何BOOL类型变量(如果关联非BOOL类型变量,编译报错“无效的任务事件”)。 | |
优先级 | 数字越低,务调度优先级越高。优先级高的任务可以优先得到调度,也可以中断正在执行的低优先级任。 | |
看门狗 | 使能 | 看门狗使能后,如果任务的执行时间超过看门狗设置的时间,则会自动停止该任务的执行。 |
时间 | 看门狗起效的最大任务执行时间。 | |
栈大小 | 创建任务时,开辟给任务的栈空间。工程编译提示某任务“栈存在溢出风险”时,可以按需调整栈空间大小。注意:在调整栈大小的时候,必须考虑目标机的要求。 |
状态任务:由关联变量的电平高低控制任务的运行,每次运行结束后会休眠设定时间。
参数说明
参数 | 说明 | |
---|---|---|
状态类型 | 高电平:关联变量高电平时,任务持续运行。低电平时停止运行。低电平:关联变量低电平时,任务持续运行。高电平时停止运行。 | |
关联变量 | 可关联程序逻辑中的任何BOOL类型变量(如果关联非BOOL类型变量,编译报错“无效的任务事件”)。 | |
休眠间隔 | 例如设定此值为50ms,则任务休眠50ms后,继续参与系统的调度运行。 | |
优先级 | 数字越低,务调度优先级越高。优先级高的任务可以优先得到调度,也可以中断正在执行的低优先级任。 | |
看门狗 | 使能 | 看门狗使能后,如果任务的执行时间超过看门狗设置的时间,则会自动停止该任务的执行。 |
时间 | 看门狗起效的最大任务执行时间。 | |
栈大小 | 创建任务时,开辟给任务的栈空间。工程编译提示某任务“栈存在溢出风险”时,可以按需调整栈空间大小。注意:在调整栈大小的时候,必须考虑目标机的要求。 |
任务创建
创建过程
通过工程管理树的“任务配置”节点的右键菜单“新建任务”,创建新的任务。
在对话框中输入任务名称,选择需要的任务类型后点击确定按钮,对应的任务节点会显示在“任务配置”下。
参数配置
双击testNewTask节点,会打开任务参数配置的页面,您可以根据需要在此页面完成参数配置或修改。
参数说明参考任务类型
任务配置
双击工程管理树“任务配置”节点,会打开任务配置界面。
配置
参数说明
参数 | 说明 | |
---|---|---|
调度信息 | 调度器精度 | 操作系统轮询所有任务的时间间隔,默认1000uS。注:如果需要更快的控制逻辑,可以根据要求设置更小的精度值。 当然该值是否最终有效,还受限于控制器系统。 |
任务名称 | IEC-Tasks | 用户组态的任务。 |
调度任务 | 系统建立的调度任务,负责调度所有用户组态任务。 | |
通讯任务 | 系统建立的通讯任务,负责AnyControl与控制器的所有通讯事件(例如:在线监视、下装工程、上传文件等)。 | |
处理器核 | 固定到单核 | 操作系统自动分配该类型的任务到同一CPU核(具体CPU核号由系统自动设定)。 |
自由浮动 | 操作系统自由分配该类型的任务到任一CPU核(调度期间该类型任务也可能随时变更CPU核)。 | |
0~31 | 用户指定该任务到固定的CPU核(如果指定的CPU核号超出CPU实际核号,将由操作系统自动分配核号,并在设备日志记录该信息。) | |
优先级 | 显示用户任务优先级,不可修改。(如需修改,可双击要修改的任务节点,在任务配置页面进行修改。) |
如果处理器核比较多,建议IEC-Tasks任务(所有用户任务)、调度器任务、通讯任务均分开核绑定,这样可以有效利用CPU资源,并减少任务间影响。 | |
---|---|
监视
切换到监视页面,您可以看到任务的执行状态。在工程登入后,就会从目标机中读到相应的数据。
上图是登入后的各个任务实时状态的情况。
- 重置状态计数:重新统计所有监视数据。
- 状态:有运行、停止、调试等状态。运行的任务可以被正常调度,停止的任务不会参与调度,调试的任务表示任务执行中断等待用户下一个调式动作。
- IEC运算执行计数:任务实际执行的次数。
- 任务调度计数:任务调度的次数。
- 上周期执行时间:最近一次任务执行的时间。执行时间不足1us的,按1us计。
- 平均执行时间:任务的平均执行时间。
- 最大执行时间:任务的最大执行时间。
- 最小执行时间:任务的最小执行时间。
- 抖动:抖动只对周期任务有意义,代表临近两次任务调度的间隔与周期的偏差。如果任务不足两次执行,该值没有参考价值
- 最大抖动:任务执行以来最大的抖动值。
- 最小抖动:任务执行以来最小的抖动值。
- 处理器核:指示任务运行于哪个核。
在工程下装、复位、冷复位或者任务状态由停止变为运行时,控制器会重新记录任务的状态。任务如果处于调试状态,会引起任务执行时间和抖动时间变长,也会引起执行计数和调度计数产生偏差。 | |
---|---|