Ada 编程中的复杂任务实现与灵活调度技术
1. 实时控制应用中的复杂任务实现
在实时控制应用领域,通常会将系统构建为一系列周期性和偶发性任务的集合。这些任务通过读取传感器值与环境进行交互,并向外部设备发送控制动作。控制设计的核心在于获取调节器,随后将其转化为算法;而软件设计则侧重于生成在调度器监管下并发执行的软件模块。当下,越来越多的应用需要复杂的计算和算法,这可能会对系统的响应时间造成影响。
一个控制循环任务可细分为以下几个部分:
- 数据采集 :从外部传感器获取数据。
- 控制动作计算 :这是必须执行的步骤,应尽快完成。完成此步骤后,基本的控制动作就可以发送给执行器。
- 解决方案改进 :在此阶段,可运用算法或方法对第一部分得到的结果进行优化。该计算可以基于迭代技术或其他方法,如基于知识的方法、渐进推理等。在这一阶段结束或中间时刻,会有一个改进后的解决方案可供发送给执行器,此部分为可选。
- 输出控制动作 :需尽快完成,或在固定时间间隔内完成。
控制计算可分为主要部分(强制)和一个或多个可选部分。主要部分为控制问题提供初步解决方案,可选部分则尝试对该方案进行优化。
1.1 周期性任务方案
周期性任务是实时控制应用设计的主要组成部分,它们会在固定的时间间隔执行操作。周期性活动由周期、截止时间、偏移量和最坏情况计算时间(wcet)等一系列特征定义。基于优先级的调度在实时领域得到了广泛研究和应用,Ada 任务调度提供了一个基于优先级的抢占式调度器来