基于ARM9平台和Linux进行中央空调末端控制器的设计与研究

描述

中央空调末端控制器是中央空调系统中最重要的装置之一,对于中央空调的节能有着重要意义。现有的中央空调末端风阀启/停控制有手动开闭控制和固定时间调度的风量控制两种。启动后的控制策略常采用PID或模糊控制方法对室内温度进行控制,现有按照需求实现远程末端控制的方式有蓝牙技术和以太网。以太网(Ethernet)指的是由Xerox公司创建并由Xerox、Intel和DEC公司联合开发的基带局域网规范,是当今现有局域网采用的最通用的通信协议标准。以太网络使用CSMA/CD(载波监听多路访问及冲突检测)技术,并以10M/S的速率运行在多种类型的电缆上。以太网与IEEE802·3系列标准相类似。以太网最早由Xerox(施乐)公司创建,在1980年,DEC、lntel和Xerox三家公司联合开发成为一个标准。以太网是应用最为广泛的局域网,包括标准的以太网(10Mbit/s)、快速以太网(100Mbit/s)和10G(10Gbit/s)以太网,采用的是CSMA/CD访问控制法,它们都符合IEEE802.3.

蓝牙技术是一种无线数据与语音通信的开放性全球规范,它以低成本的近距离无线连接为基础,为固定与移动设备通信环境建立一个特别连接。其程序写在一个9 x 9 mm的微芯片中。 如果把蓝牙技术引入到移动电话和膝上型电脑中,就可以去掉移动电话与膝上型电脑之间的令人讨厌的连接电缆而而通过无线使其建立通信。打印机、PDA、桌上型电脑、传真机、键盘、游戏操纵杆以及所有其它的数字设备都可以成为蓝牙系统的一部分。除此之外,蓝牙无线技术还为已存在的数字网络和外设提供通用接口以组建一个远离固定网络的个人特别连接设备群。蓝牙工作在全球通用的2.4GHz ISM(即工业、科学、医学)频段。蓝牙的数据速率为1Mb/s。时分双工传输方案被用来实现全双工传输。 使用IEEE802.15协议。

本文以Samsung公司的S3C2410芯片作为处理器,以Linux2.6为嵌入式操作系统,基于PID控制策略,通过手机短信的方式对中央空调末端装置进行远程控制,实现了对室内温度的设置和监控,取得了很好的实际效果。

1 末端控制器系统设计

1.1 控制器系统硬件设计

本文基于ARM9平台,采用Linux嵌入式操作系统,以S3C2410处理器为核心。ARM9系列处理器是英国ARM公司设计的主流嵌入式处理器,主要包括ARM9TDMI和ARM9E-S等系列。当指令需要的数据因为以前的指令没有执行完而没有准备好就会产生管道互锁。当管道互锁发生时,硬件会停止这个指令的执行,直到数据准备好为止。虽然这种技术会增加代码执行时间,但是为初期的设计者提供了巨大的方便。编译器以及汇编程序员可以通过重新设计代码的顺序或者其他方法来减少管道互锁的数量。 系统硬件主要由以下模块组成:

(1)GSM/GPRS射频模块。用来与GPRS网络进行通信的射频模块,本文选用Simcom公司推出的工业级GSM/GPRS双频Modem模块SIM300,具有完整的Modem信号,在网络通信时可以作为一个Modem而存在。模块采用串行接口通信,主要为语音传输、短信息和数据业务提供无线接口,带GPRS功能。

(2)16C550串行接口。16C550是一种用于将并口数据转换成串口数据的高速UART芯片,并自带16位FIFO缓存通道,而且波特率可选。一方面可获得完整的Modem控制,另一方面也是为了获得精准的UART波特率,本文在SIM300射频模块与处理器组成的控制单元进行串行通信时使用16C550芯片。

(3)CPU中央处理单元。采用Samsung公司生产的32/16位高性能基于ARM920T内核的RISC微处理器S3C2410,具有低功耗、自带8通道10位ADC和DAC、并支持NAND Flash和SDRAM存储器等特点。

(4)输入输出单元:模拟房间内的温度传感器信号输入到处理器的A/D转换器;处理器通过PID算法得到的输出量由D/A转换器输出以控制送风执行阀的开度,调整房间内的送风量从而达到调节室内温度的目的。

图1为系统硬件框图。

处理器

1.2 控制器系统软件设计

操作系统采用实时性强的Linux2.6内核,编译器使用gcc 4.0.2版本,完成了各个功能模块的接口函数。由于在进行嵌入式系统内核开发时,若交叉编译工具(特别是gcc)版本较低则无法编译高版本内核,版本过高也不行。因此本文为配合要采用的Linux2.6.18内核开发末端控制器,进行定制开发交叉编译环境。具体如下:crosstool-0.43,binutils-2.16.1.tar.bz2,gcc-4.0.2,glibc-2.3.5,glibc-linuxthreads-2.3.5,linux-libc-headers-2.6.12.0,gdb-6.5,生成交叉编译工具为arm-9tdmi-linux-gcc。其中短消息通信线程的初始化和主循环共分为以下4个步骤:

(1)完成串口初始化。系统启动并完成初始化后,开始反复读取16C550芯片发来的串口数据。当GSM模块收到新短信后,通过串口向处理器发送1个字符串。

(2)向SIM300模块发送读取短消息的AT指令,判断短消息内容。首先通过手机号来判断短消息是否由用户发来。如果短消息由用户发来,则判断用户发送的指令,否则直接删除。

(3)如果用户发送的内容是“设定温度XX”(XX代表二位温度值),则将“XX”通过解码函数解码成ASCII字符,再通过换算得到用户期望设置的温度发送给温度控制模块,最后删除该信息。

(4)处理器继续读取串口数据。

短消息通信程序流程如图2所示。

处理器

处理器通过串口与GSM模块通信,串行通信的基本参数有:波特率、数据位、停止位及校验方式等。串口驱动程序实现了对串口的读写操作,给应用程序提供发送接收数据的接口。串口正常工作之前,需要进行初始化设置,选择串口工作方式,设置波特率、数据格式及中断,建立数据队列和信号量。

以串口发送一个字符串为例介绍发送程序,其中buf表示要发送的字符串,nbytes表示字符的个数:

int tty_write(char*buf,int nbytes)

{

int i;

for(i=0;i

write(tty_fd,&buf[i],1);

usleep(100);

}

return tcdrain(tty_fd);

}

短消息的接收与发送由处理器和SIM300模块通过16C550芯片串行通信完成,处理器向SIM300模块发送AT指令读取或发送短消息。发送中文短信息时,发送的是汉字的UCS2编码,所以在初始化SIM300模块时须发送指令“AT+CMGF=0”,把模块的短消息工作模式设置为PDU模式,以UCS2编码方式发送短消息。同样,SIM300模块收到的短消息也是PDU编码方式,要读取出用户发送的中文指令就必须将消息内容解码成ASCII字符。

发送短消息首先要向SIM300模块发送整个短消息代码位数的16进制数,之后是短信头代码“001100D”、中国区号“+86”的编码“9168”和发送的目的手机号码。此处的目的手机号码必须是每两位互换得来,由于手机号码是11位,最后一位用“N”补齐,而短消息内容是用UCS2码编写。

当有新消息到达时,收到的数据包内封装了消息发送时间、来自的手机号码和消息正文。如果来自的手机号码与预先设置的用户号码不一致则直接将短消息删除;一致则继续判断短消息正文。

本文全部程序代码由C语言编写,短消息发送部分代码如下:

void gprs_msg(char*number,char*msgr)//短信发送函数

{

char ctl[]={26,0};

char head[]=″0011000D9168″;//短信头代码及中国区号

char headmsg[]=″0008A7″;//短信编码方式代码

unsigned int count;

char sum[2];

tty_writecmd(″at″,strlen(″at″));

tty_writecmd(″at″,strlen(″at″));

tty_write(″at+cmgs=″,strlen(″at+cmgs=″));

count=strlen(msgr)/2+14;//计算短信长度

sum[0]=(char)(count/10+48);

sum[1]=(char)(count%10+48);//将短信长度

//解码为16进制

tty_writecmd(sum,2);

tty_write(head,strlen(head));

tty_write(number,strlen(number));

tty_write(headmsg,strlen(headmsg));//发送短信头

tty_write(msgr,strlen(msgr));//发送短信正文

tty_write(ctl,1);

tty_write(″\r″,strlen(″\r″));//发送短信结束代码

usleep(300000);//进程休眠

printf(″Message sent.\n″);

}

上述函数封装了PDU模式发送短消息的头信息和正文字符长度等,参数仅为目的手机号码的PDU编码和短消息正文的UCS2编码。这样做避免了大量的重复代码,也提高了程序的运行效率。

1.3 增量式PID控制策略

PID是一种线性控制器,它根据给定值r(t)与实际输出y(t)构成控制偏差:

处理器

式中:KP为比例系数;TI为积分时间常数;TD为微分时间常数。

由于计算机处理的是数字量,控制器的驱动对象是风阀执行器,所以控制系统中使用的控制策略是数字增量式PID。

u(k)=Ae(k)-Be(k-1)+Ce(k-2)

以下是增量式PID控制策略的实现函数:

double PID(double feedback)

{

double Err,pErr,dErr,dU;

Err=Command-feedback;//当前误差

pErr=Err-ppreErr;//比例项增量式误差

dErr=Err-2*preErr+pre2Err;//微分项增量式误差

dU=Proportion*pErr+pDerivative*dErr+ Integral*Err;

//控制量增量

pre2Err=preErr;

preErr=Err;

return dU;

}

2 实验

本实验对象以1.3吨的中央空调系统的实物模型为例,该系统可以模拟中央空调多种运行模式,并可以通过对执行风阀输入模拟信号来调节风阀的具体开度,以此来调整送入房间的送风量,达到控制模拟房间制冷量的目的。本实验对象有2个模拟房间,其中末端装置的驱动阀为TANG TECH TM04~24,温湿度传感器为VECTOR ADS-H1T1。嵌入式控制器的D/A输出的0~4.096 V信号经放大至0~10 V后,直接驱动风阀驱动器。

系统提供了两种用户短消息内容的识别,分别是“设定温度XX”和“查询状态”。如用户发送“查询状态”,而当前室内状态为23℃,则系统自动向用户返回短消息“温度:23;状态:正常”。如果室内是异常温度,则系统发送短消息自动报警“温度60;状态警告”。如果用户发送“设定温度23”,则系统将当前室内设定温度改为23℃,并回复“已设定温度23”。

为了使用户可以方便关闭室内控制器,而又不需要增加其他的短消息内容,本文设置了最高温度限制50℃。当用户发送“设定温度”大于49℃时,系统认为用户要求关闭控制器,继而把温度设定点改为OFF,风阀完全关闭,同时返回短消息“已关闭”。采用这种方法,既保证了系统有关闭风阀的功能,又不需要添加新的短消息命令。

短消息命令详情见表1。

处理器

为了测试系统节能实际效果,在室外温度9℃的条件下开启2个模拟房间的末端控制器,并设置预期室内温度23℃。假定2个房间中,模拟房间一8:00有人,模拟房间二9:00开始有人;通过计算表明,9:00开启模拟房间二的室内控制器要比8:00同时开启2个模拟房间的室内控制器节约全天所耗能量的7%左右。

本文实现了GSM远程控制方法,通过手机短信方式,对中央空调系统末端装置进行控制及对室内温度进行实时监控和管理。实验结果表明,系统可以方便、灵活、快捷、按需调节房间的温度,实现节能。


打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分