μC/OS-II与ARM在中央空调机组控制器中的应用
3.2 移植μC/OS-II
LPC2210的ARM7TDMI-S内核用ARM ADS1.2作为编译器移植μC/OS-II。μC/OS-II的移植涉及到与处理器及编译器相关的OS_CPU.H、OS_CPU_C.C和OS_CPU_A.S 3个文件。其包括以下内容:(1)设置OS_CPU.H头文件中与处理器和编译器相关的代码,如整数、浮点数、堆栈等数据类型定义,打开或者关闭中断函数设置,定义堆栈增长方向,任务切换的执行代码。(2)用C语言在OS_CPU_C.C文件中编写若干与操作系统相关函数,如任务堆栈初始化函数OSTaskStkInit();μC/OS-II在执行某些操作时调用的用户函数,如OSTaskCreateHook()、OS-TaskDelHook()、OSTaskSwHook()、OSTaskStatHook()和OS-TimeTickHook()等。(3)在OS_CPU.ASM文件中用汇编语言编写4个与处理器相关的函数:运行优先级最高的就绪任务OSStartHighRdy()、任务级的任务切换函数OSCtxSw()和中断级的任务切换函数OSIntCtxSw()和中断服务函数OS-
TickISR()[5-6]。
3.3 应用程序
在μC/OS-II中,应用程序以任务形式存在,每个任务都是无限循环的,并处于以下五种状态之一:休眠态、就绪态、运行态、挂起态和被中断态[7]。根据中央空调的控制要求,本系统由以下几个任务来实现。
(1)定义5个基本的信号量用于任务之间的同步:故障信号量、通信信号量、定时采集信号、机组控制信号量和显示信号量。
(2)初始化任务Task_init()具有最高运行优先级,优先级Prio=10,该任务完成处理器I/O接口的初始化,向量中断分配与设置,定时器初始化以及I2C、串口等基本功能部件的初始化工作,为后继任务的运行做准备,只运行一次。
(3)故障处理任务Task_error()为次优先级任务,优先级Prio=11。当获得Data_err_sem信号后判断机组故障的类型,按照预先的设定进行实时故障处理,并给出报警、提示故障原因。
(4)数据通信任务Task_comminication()的优先级Prio=12,当有数据传送请求时便通过以太网与上位机进行通信,完成命令及数据的传送。
(5)数据采集任务Task_collect()优先级Prio= 13,主要完成周期性地采集各路温度模拟量、湿度频率量和开关量信号的输入,为机组控制任务提供运算数据。
(6)机组控制任务Task_control()是整个系统任务中的核心,优先级Prio=14。当获得采集任务释放的Data_Control_sem信号后,便对采集过来的各路温湿度信号及开关量信号进行处理,输出控制信号,完成对各个调节阀的控制;且当有故障发生时释放故障信号量Data_err_sem。
(7)显示任务Task_display()优先级最低,Prio= 15。当获得显示信号量Data_Display_sem时任务就绪,刷新机组当前的设置参数及运行状态。
系统整体软件流程图如图3所示。系统初始化后便建立各个运行任务,启动多任务调度机制,在各个同步信号的协调下有序运行[8]。本文引用地址:https://www.eepw.com.cn/article/151712.htm
3.4 数据处理算法
在机组控制任务Task_control()中需要对采集过来的各路模拟量及数字量信号进行处理,以得到合适的输出控制信号,选取何种处理方法直接关系到控制器的控制品质。针对中央空调对象大惯性、大滞后、非线性等特性,常规PID控制无论在参数整定还是在控制精度或控制过程都存在不足[4,9]。本系统采用基于T-S模型的模糊神经网络[10]参数自整定PID控制方法,利用神经网络经训练后可以逼近任意非线性关系特性,并综合了PID控制与模糊控制各自的优势。图4为控制系统结构图[9],模糊神经网络模块根据误差及其变换率实时地修改PID控制器的3个参数,使其处于最优状态。图5为基于T-S模型神经网络结构图[11]。
评论