技术中心
 
 

基于RTOS的太阳能热水控制系统设计(下)

   日期:2006-07-27     来源:中国测控网     作者:管理员    

2 系统结构

太阳能热水控制系统由以下几个模块构成:主控制端处理模块(即主端)、数据采集端模块(即从端)、监控计算机及其后台服务程序。其中,从端还包括超声测水位器件模块,该器件利用超声声波接触到水面后反射的简单原理,使用放大器电路实现,成本大大低于市场上流行的投入式液位计。系统的结构框图如图2所示。

2.1 主控制端软件实现及任务分析

系统的软件主要由三部分构成:主端程序、从端程序和利用超声技术测水位的程序。主端程序包含在主端控制模块当中,它的作用是判断系统当前工作状态,通过对所采集的数据进行处理和分析得到该如何继续控制系统的指令。从端程序负责处理采集的数据,并发送提交给主处理程序,超声部分的程序保证超声模块测水位的稳定性和精确性。其中,主控制端后台处理模块是系统的主要部分,占据了绝大部分的代码量,控制系统的指令大都由这里给出,下面着重介绍这一部分。

主端功能模块示意图如图3所示。

主处理逻辑由7个任务构成其主体,一些函数的定义作为其补充。7个任务分别为:①初始化任务;②与串口通信任务(串口1接收从数据采集端发回的数据);③与串口2通信任务(串口2负责与监控计算机交换数据);④⑤分别为对不同显示区域的控制任务;⑥对硬件中断的处理任务;⑦对传回数据的处理任务。

  各个任务具体实现的功能如下:

①初始化任务:初始化串行接口,并开始其余6个任务,最后删除自身。

②串口1通信任务:主处理逻辑每隔一定的时间就通过串口1向数据采集端发送查询帧查询数据,发送一定次数后仍未收到从端数据者,通过信号机制触发显示任务,显示与从端通信挫败的提示信息;若从端返回无误数据,则转入显示任务进行数据处理后显示。若经由CRC校验发现连续若干次从端传回数据有误,转入显示任务显示数据出错的提示信息。

③串口2通信任务:由于监视该系统运行的工作人员需要通过一些参数的变化来实时了解当前系统工作的情况,这些参数包括各个阀门的状态、水箱的水位、各个传感器当前的温度等,所以该系统中使用一个串口来向监控计算机提交数据。每隔一定时间监控计算机便发送查询帧,该查询帧分两,一类是查询阀门状态,另一类查询水位和温度,主控端按其要求的数据种类填充该帧后回送。

④控制显示区任务1:LED显示屏分为上下两行,上面一行为区域1,下面一行为区域2。区域1负责显示当前系统中水箱水位,大小水箱温度等参数,每屏显示参数中的一个,停留一段时间后显示下一个,如此循环反复,操作人员可在此查看系统中参数的具体值从而做出控制判断。

⑤控制显示区任务2:区域2显示的是系统运行中,当前各个阀门的工作状态。系统设置了以手动和自动两种方式操纵四个阀门,用有否提示音来进行区分。这个区域还负责显示各种提示信息或者出错信息,如果温度传感器或超声探头传回的数据有误,都在这里给出报错字样,并表明是哪部分出了问题,便于工作人员及时检修排队故障。

⑥硬件中断处理任务:在控制台的表面分布着14个按键用以操纵和控制系统,每按下一个键,系统该做出何种反应就由此任务掌管。由16位输入4位输出的编码器得到按键编码,在这里分十四种情况转入不同的程序段进行处理。

⑦对传回数据的处理任务:在与串口1的通信任务中,系统从串口1收到的数据如果是无误的,则进入此任务。该任务对系统中主要存在四种动作,即加水、加热、循环和回水,分别分为手动和自动两种工作状态,计算系统中实时改变的数据该如何影响和决定当前系统的动作。

2.2 数据采集端功能模块图

在数据采集端,温度的采集包括对屋顶集热器温度的采集,对恒温小水箱温度的采集,对大小箱温度的采集和对输水管网中某点温度的采集。数据采集逻辑间接控制循环阀门、回水阀门、加热阀门、加水阀门。数据采集端的功能模块图如图4所示(虚线部分表示对阀门的间接控制)。

  3 通信帧格式


主控制端所实时显示和进行处理的数据要靠数据采集端进行采集后发回,两者之间的通信通过RS485接口,采用定义帧结构的方式来实现。

在程序中,我们靠对帧类型的区分和判断,共定义了七种代表不同含义的帧,分别是:①主控制端向数据采集端发送的数据查询帧;②数据采集端向主控制端回送的温度水位等数据帧;③监控计算机端向主控制端发送的查询阀门状态帧;④监控计算机向主控制端发送的查询温度水位等数据帧;⑤主控制端向监控计算机回送的阀门状态帧;⑥主控制端向监控计算机回送的数据帧;⑦监控计算机端设置参数告知主控制端帧。若某一帧是传送数据的帧,则data1~dada7的7个字节中依次填充大水箱水位、小水箱水温、大小箱水温、屋顶集热器中水温(3个采集点)和采集点处的水温。若某一帧作为传送当前阀门状态的帧,则用7个字节中的前4个来分别表示进水阀、回水阀、加热阀和循环阀是打开状态还是闭合状态。帧结构的格式如图5所示。

除此之外,还可以按照设计的需要自行增加帧的类型,以实现更为复杂的通信。

  4 系统外存储器EEPROM

由于控制中经常会涉及到参数的更改,为了使掉电后不影响系统的运行,即需要参数能够重现,系统采用带有I2C总线接口的EEPROM 2402芯片实现数据的存储和读取。读和写分别调用的两个函数如下:

unsigned char eepromread(unsigned char beginbyte){

unsigned char data result;

unsigned char i;

EA=0;

i=RW24XX(&result,1,beginbyte,READ_OP,M2402);

EA=1;

return(result);

}

/******************************************************

unsigned char i;

EA=0;

i=RW24XX(&datum,beginbyte,WRITE_OP,M2402);

EA=1;

}

可以看出,函数RW24XX是对EEPROM外存储芯片操作的主体函数,这里给出该函数中包含参数的定义:

bit RW24XX(unsigned char *DataBuff,unsigned char ByteQuantity,unsigned int Address,unsigned char ControlByte,enum eepromtype EepromType)

其中,DataBuff为读写数据输入输出缓冲区的首地址,ByteQuantity为要读写数据的字节数,Address为EEPROM芯片的片内地址,ControlByte是EEPROM的控制字节,具体形式为(1)(0)(1)(0)(A2)(A1)(A0)(R/W),其中R/W=1,表示读操作,R/W=0为写操作,A2、A1、A0为EEPROM的页选或片选地址;EepromType为枚举变量,需为M2401~M24256中的一种,分别对应24C01~24C256,本系统中为M2402;函数返回值为一个位变量,若返回1表示此次操作失效,0表示操作成功;ERRORCOUNT为允许最大次数,若出现ERRORCOUNT次操作失效后,则函数中止操作,并返回1。

  在该函数中,调用的若干I2C总线函数如下:

void IICStart(void);

void IICStop(void);

bit IICRecAck(void);

void IICNoAck(void);

void IICAck(void);

unsigned char IICReceiveByte(void);

void IICSendByte(unsigned char sendbyte);

  结语

本系统结构简单,操作方便,拥有手动和自动两种控制模式,具有一定的智能性;既可现场控制,又可远程控制;能根据现场状况,合理地调节控制状态。另外,利用RTX51TNY实时操作系统提供的系统特征,可以简化多任务程序设计,满足多个任务的时间特性要求。基于实时多任务操作系统,可以将各任务进行细分馐,使各任务保持相对独立;能有效改善程序结构,便于模块化处理,使程序的可读性、可维护性和可移植性都得到进一步提高。

[img]2006727935524288.gif[/img]
[img]200672794494937.gif[/img]
[img]2006727941279117.gif[/img]

 
  
  
  
  
 
更多>同类技术
 
全年征稿 / 资讯合作
 
推荐图文
推荐技术
可能喜欢