采用μC/OS-II与LPC2210处理器的中央空调控制系统的设计

发布者:SparklingBeauty最新更新时间:2023-04-07 来源: elecfans关键字:μC  OS-II  LPC2210  处理器 手机看文章 扫描二维码
随时随地手机看文章

社会的发展和人类生活水平的不断提高,使人类对居住环境的要求也越来越高,因此中央空调系统的应用也越来越广泛。中央空调系统改善了人们的居住环境,但同时也消耗了大量的能源。对于中央空调控制系统,目前的中央空调控制技术还以分散控制为主,每个控制器只能监控其所控制的中央空调机组的状态,这不仅不利于整个系统的智能管理,而且浪费能源。有少数中央空调控制器生产厂商进行了少量中央空调集中化,网络化控制的尝试,但采用的技术比较落后,大多数通信距离较短,所能集中监控的中央空调的数目也少。 近几年网络技术越来越成熟,网络安全、实时性、可靠性进一步提高,这使我们已经逐渐能够将网络技术应用到控制领域;同时,单片机技术发展讯速,很多单片机已经具有多功能、高速度、低功耗、低价格、大存储容量和强I/O功能等特点,因此,本控制系统选择了Philips公司ARM7处理器LPC2210,移植了实时操作系统μC/OS-II,系统运行稳定可靠。


1 空调系统简介及控制要求

中央空调由集中制冷/加热站和空调机组两大部分组成。前者提供系统所需要的冷热源,后者通过调节冷冻水/热蒸汽的流量及空气风量来调节温度,调节加湿阀来调节房间的湿度。机组的控制任务是自动调节空气温湿度、风速、送风量及空气的洁净度。系统中所需检测与控制的参量为:自动检测新风、送风、回风及被控房间温、湿度及正压值,表冷器/加热器的供、回水温度;自动检测送、回风机及故障报警;中低效过滤器压差状态及超差报警;根据室外空气状态和室内正压值自动调节新风、回风、排风阀开度 ;根据被控参数及设定参数自动调节表冷器、加湿器的电动调节阀的开度[2-3].


2 现场控制器硬件结构

如图1所示,整个系统可分为ARM处理器模块、电源模块、各总线接口模块、存储模块、人机交互模块、模拟量输入输出模块及数字量输入输出模块等。

采用μC/OS-II与LPC2210控制器的中央空调控制系统的设计

主处理器选用Philips公司生产的ARM7芯片LPC2210,该芯片是基于支持实时仿真和跟踪的ARM7TDMI-S CPU的微控制器,最高工作频率可达60 MHz,内部带有16 KB RAM,多达122个通用I/O口(可承受5 V电压),具有两个带16 B收发FIFO的UART,两个完全独立的同步串行接口SPI等丰富的外设。本系统中,存储模块由扩展的2 MB NOR Flash(SST39VF160)与8 MB PSRAM(MT45W4MW16)构成,分别使用LPC2210外部存储器接口的Bank0和Bank1地址空间;人机交互模块包含键盘和LCD两部分,显示和设置空调机组的运行参数及状态。控制器设有8个按键输入,使用I2C接口的接盘与LED驱动芯片ZLG7290进行键盘扫描;从USB接口用于控制器与调试计算机的通信;控制平台设计了以RTL8019AS芯片为核心的以太网接口电路,实现控制器与上位监控级计算机之间的通信;CAN总线接口可用于现场设备的通信;ISP接口、JTAG口为程序下载调试接口;A/D模块采用LPC2210自带的8路10位ADC转换器,检测各路温度及湿度模拟量的输入,构成反馈控制。D/A模块的输出信号作为比例放大器的输入,控制各个调节阀门的开度大小,实现风量和流量控制。数字量输入通道检测风机的运行状态及过滤网压差报警信号;数字量输出通道输出风机、加湿器的开关控制信号。控制器通过对整个空调系统新风、回风的温湿度、送风风机运行状态、初中效过滤段的压差等信号的采集,控制送风风机的变频调速、加湿器的加湿、新风及回风阀门的开度、冷热水阀的开度大小,以达到设定的空气状态[4].


3 现场控制单元的软件设计

3.1 软件层次与功能

μC /OS-II是一个完整的、可移植、可固化、可裁剪的占先式实时多任务内核。μC/OS-II绝大部分的代码是用ANSI的C语言编写的,包含一小部分汇编代码,使之可供不同架构的微处理器使用。至今,从8位到64位,μC/OS-II已在超过40种不同架构上的微处理器上运行。μC/OS-II已经在世界范围内得到广泛应用,包括很多领域, 如手机、路由器、集线器、不间断电源、飞行器、医疗设备及工业控制上。实际上,μC/OS-II已经通过了非常严格的测试,并且得到了美国航空管 理局(Federal Aviation Administration)的认证,可以用在飞行器上。这说明μC/OS-II是稳定可靠的,可用于与人性命攸关的安全紧要(safety critical)系统。除此以外,μC/OS-II 的鲜明特点就是源码公开,便于移植和维护

控制器软件由3部分组成:实时操作系统、硬件驱动程序和运行在操作系统之上的应用程序[5].实时操作系统采用源码公开的μC/OS-II,基于其内核扩展的实时操作系统的整体结构如图2所示。

采用μC/OS-II与LPC2210控制器的中央空调控制系统的设计

Bootloader的主要功能是初始化必要的硬件并启动操作系统。应用软件层实现中央空调的相关控制任务,包括初始化任务、故障处理任务、数据通信任务、数据采集任务、机组控制任务及显示任务。底层硬件设备控制驱动层初始化微控制器与外围部件管脚连接的配置,建立处理器与外围功能电路之间的关联,与具体硬件电路相关。功能部件命令接口驱动实现处理器各个功能模块的运作机制,如串口、SPI、CAN等模块,该层函数由上两层调用。功能部件协议实现层提供各功能模块初始化函数、读写函数以及中断处理函数等。上两层软件设计与操作系统密切相关,利用操作系统管理控制任务、实现任务间的数据交互通信和延时等。


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].

采用μC/OS-II与LPC2210控制器的中央空调控制系统的设计

3.4 数据处理算法

在机组控制任务Task_control()中需要对采集过来的各路模拟量及数字量信号进行处理,以得到合适的输出控制信号,选取何种处理方法直接关系到控制器的控制品质。针对中央空调对象大惯性、大滞后、非线性等特性,常规PID控制无论在参数整定还是在控制精度或控制过程都存在不足[4,9].本系统采用基于T-S模型的模糊神经网络[10]参数自整定PID控制方法,利用神经网络经训练后可以逼近任意非线性关系特性,并综合了PID控制与模糊控制各自的优势。图4为控制系统结构图[9],模糊神经网络模块根据误差及其变换率实时地修改PID控制器的3个参数,使其处于最优状态。图5为基于T-S模型神经网络结构图[11].

采用μC/OS-II与LPC2210控制器的中央空调控制系统的设计

采用μC/OS-II与LPC2210控制器的中央空调控制系统的设计

以温控为例,网络的输入信号x1、x2分别是温差及温差变化率et、Δet,模糊论域分别定为[-20,20]、[-10,10],模糊子集均为:NB(负大)、NM(负中)、NS(负小)、ZE(零)、PS(正小)、PM(正中)、PB(正大),模糊规则49条,隶属度函数为高斯函数。前件网络输入层直接将et、Δet送入到模糊化层计算其属于各语言变量值模糊集合的隶属度函数,规则层采用求积法计算出每条规则的适用度[10].后件网络由3个结构相同的并列子网络组成,输出PID控制器的3个控制参数kp、ki、kd.系统采集常规PID控制器工作时et、Δet输入数据及控制参数为训练样本,利用误差反传算法训练网络参数:连接权pkji、隶属度函数中心值cij及宽度δij.试验记录表明训练后的控制器的动态特性与静态特性均优于传统PID及单纯模糊控制方法。


本中央空调现场控制器采用32位高性能ARM处理器,满足了控制系统对实时监控能力和组网通信能力的要求,简化了系统设计。嵌人式操作系统μC/OS-II的移植保证了系统的实时性,多任务运行特性使所开发的控制软件运行稳定、可靠。


关键字:μC  OS-II  LPC2210  处理器 引用地址:采用μC/OS-II与LPC2210处理器的中央空调控制系统的设计

上一篇:采用RTL8019与LPC2210芯片的嵌入式串口服务器设计方案
下一篇:基于LPC2210微控制器和卫星定位实现地面目标跟踪和报警系统的设计

推荐阅读最新更新时间:2024-11-12 10:46

单片机编程中在C语言中嵌入汇编语言
在C语言中可以嵌入汇编语言,以发挥汇编语言在编程中的优点 方法是,在项目建好以后,加入建立的C文件,其他设置不变,先把 汇编语言写在 #pragma asm ...... ;汇编语言编写区 #pragma endasm 之间,同时还要对进行编译器相应汇编语言混编设置。 第一步: 第二步 第三步编译运行 如果取消了C语言中的汇编程序,则前面的设置也应相应的去掉,否则会出错。 #include reg51.h int i,k; void main(void) { P2=0x00; while(1) { for(i=0;i 8;
[单片机]
单片机编程中在<font color='red'>C</font>语言中嵌入汇编语言
雅特生科技的全新服务器刀片系统配备最新的处理器以优化军用设备、航天仪器和政府机关联网系统的性能
二零一七年七月二十七日 -- 中国讯 -- 雅特生科技 (Artesyn Embedded Technologies) 宣布推出一款可支持封包处理功能的全新高性能服务器刀片系统。这款型号为ATCA-7540的刀片系统采用两颗刚推出、代号为Skylake的Intelò Xeonò Scalable 处理器。下面就随单片机小编一起来了解一下相关内容吧。  让提供批量供货的厂商可以生产寿命周期较长的产品以满足市场需求 二零一七年七月二十七日 -- 中国讯 -- 雅特生科技 (Artesyn Embedded Technologies) 宣布推出一款可支持封包处理功能的全新高性能服务器刀片系统。这款型号为ATCA-7540的刀片系统采用
[单片机]
S3C内部中断和外部中断
1.中断分两大类:内部中断和外部中断。 2.外部中断。24个外部中断占用GPF0-GPF7(EINT0-EINT7),GPG0-GPG15(EINT8-EINT23)。用这些脚做中断输入,则必须配置引脚为中断,并且不要上拉。具体参考datesheet数据手册。 寄存器:EXTINT0-EXTINT2:三个寄存器设定EINT0-EINT23的触发方式。 EINTFLT0-EINTFLT3:控制滤波时钟和滤波宽度。 EINTPEND:这个是中断挂起寄存器,清除时要写1,后面还有几个是写1清除。当一个外部中断(EINT4-EINT23)发生后,那么相应的位会被置1。为什么没有EINT0-EINT3,呵呵,看
[单片机]
S3C2440 Linux驱动移植——AT24C02(EEPROM)驱动
开发板:TQ2440 内核:Linux 2.6.32 PC OS:Ubuntu 11.04 1.配置内核 打开I2C功能: 打开杂项设备,该选项打开后,EEPROM也就打开了。 2. 修改代码 修改文件: linux/arch/arm/mach-s3c2440/mach-smdk2440.c 增加如下代码片段: #include linux/i2c/at24.h static struct at24_platform_data at24c02 = { .byte_len = SZ_2K / 8, .page_size = 8, .flags = 0, };
[单片机]
S3<font color='red'>C</font>2440 Linux驱动移植——AT24<font color='red'>C</font>02(EEPROM)驱动
Intel发布新处理器 用金/银作为型号区分
不知道英特尔命名部门是不是迷恋上了玄幻小说,最近的产品更名都是以金/银/铜进行型号区分,前有Xeon至强服务器平台将传统E5/E7型号命名改为了以铂金/金/银/铜进行命名,现在又将新发布的奔腾处理器产品线也区分为了金/银两条线。 英特尔刚刚发布了全新的PentiumSilver和Celeron产品线,基于超低功耗GeminiLake架构打造,主要为满足入门级的办公需求,保证低功耗和性能均衡,同时Intel还将奔腾产品线拆分为了PentiumGold和PentiumSilver,PentiumGold则是基于KabyLake架构设计,且早已上市的KabyLake七代酷睿架构奔腾。 GeminiLake和此前的ApolloLake一
[嵌入式]
基于S3C6410的ARM11学习(十三) C语言环境初始化
如今,汇编的部分,就剩下最后一步了。C语言环境初始化。因为后面的代码要用C语言来写了。毕竟C语言编写比汇编要容易对了,而且c程序具有易读性。 C程序要运行,一个最重要的东西就是栈了。因为有栈,c程序才能在程序跳转的时候,保存上文。然后在程序返回的时候,将保存的上文恢复。这样,才保证了调用函数之前和之后的上下文是不变的。 使用汇编代码写的话,是不用设置栈的,因为保护上下文是要用汇编在代码中自行写出的,而C代码是靠编译器编译自动加上的。 栈,有4种。 从图中可以看出四种栈的区别。栈都是放在内存空间的,因为要随时读写。栈的起始地址放在内存的高地址出,那么增长方向就是向下增长,这种就是递减栈。如果栈的起始地址放
[单片机]
基于S3<font color='red'>C</font>6410的ARM11学习(十三) <font color='red'>C</font>语言环境初始化
S3C6410裸机定时器
定时器我主要用来延时和获取程序运行时间. #include system.h #include timer.h //定时器0中断处理程序 void (*Timer0_Isr)(void) = NULL; //定时器0中断处理程序 void (*Timer1_Isr)(void) = NULL; //定时器2中断处理程序 void (*Timer2_Isr)(void) = NULL; static void __irq Isr_Timer0(void) { rTINT_CSTAT |= BIT5; //清除中断标志 if(Timer0_Isr != NULL) //注册过中断
[单片机]
AVR c语言的位操作
位操作 一个共同的任务是编程微控制器 MCU打开或关闭IO 寄存器的一些位bit 很幸运标准C 有较好的和适用的位操作功能而没有借助于汇编指令或其它非标准C 结构C 定义了一些按位进行的运算是很有用的 a | b – 按位或 这个表达式指示中a 被表达式中的b 按位进行或运算这惯用于打开某些位尤其常用|=的形式 例如PORTA |= 0x80; // 打开位7 (最高位) a & b – 按位与 这个运算在检查某些位是否置1 时有用例如 If ((PORTA & 0x81) == 0) // 检查位7 和位0 注意圆括号需要括在&运算符的周围因为它和= = 相比运算优先级较低这是C 程序中很多错误的原因之一 a ^ b – 按位异
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved