基于RTOS的太陽(yáng)能熱水控制系統(tǒng)設(shè)計(jì)
在數(shù)據(jù)采集端,溫度的采集包括對(duì)屋頂集熱器溫度的采集,對(duì)恒溫小水箱溫度的采集,對(duì)大小箱溫度的采集和對(duì)輸水管網(wǎng)中某點(diǎn)溫度的采集。數(shù)據(jù)采集邏輯間接控制循環(huán)閥門(mén)、回水閥門(mén)、加熱閥門(mén)、加水閥門(mén)。數(shù)據(jù)采集端的功能模塊圖如圖4所示(虛線部分表示對(duì)閥門(mén)的間接控制)。
3 通信幀格式
主控制端所實(shí)時(shí)顯示和進(jìn)行處理的數(shù)據(jù)要靠數(shù)據(jù)采集端進(jìn)行采集后發(fā)回,兩者之間的通信通過(guò)RS485接口,采用定義幀結(jié)構(gòu)的方式來(lái)實(shí)現(xiàn)。
在程序中,我們靠對(duì)幀類(lèi)型的區(qū)分和判斷,共定義了七種代表不同含義的幀,分別是:①主控制端向數(shù)據(jù)采集端發(fā)送的數(shù)據(jù)查詢(xún)幀;②數(shù)據(jù)采集端向主控制端回送的溫度水位等數(shù)據(jù)幀;③監(jiān)控計(jì)算機(jī)端向主控制端發(fā)送的查詢(xún)閥門(mén)狀態(tài)幀;④監(jiān)控計(jì)算機(jī)向主控制端發(fā)送的查詢(xún)溫度水位等數(shù)據(jù)幀;⑤主控制端向監(jiān)控計(jì)算機(jī)回送的閥門(mén)狀態(tài)幀;⑥主控制端向監(jiān)控計(jì)算機(jī)回送的數(shù)據(jù)幀;⑦監(jiān)控計(jì)算機(jī)端設(shè)置參數(shù)告知主控制端幀。若某一幀是傳送數(shù)據(jù)的幀,則data1~dada7的7個(gè)字節(jié)中依次填充大水箱水位、小水箱水溫、大小箱水溫、屋頂集熱器中水溫(3個(gè)采集點(diǎn))和采集點(diǎn)處的水溫。若某一幀作為傳送當(dāng)前閥門(mén)狀態(tài)的幀,則用7個(gè)字節(jié)中的前4個(gè)來(lái)分別表示進(jìn)水閥、回水閥、加熱閥和循環(huán)閥是打開(kāi)狀態(tài)還是閉合狀態(tài)。幀結(jié)構(gòu)的格式如圖5所示。
除此之外,還可以按照設(shè)計(jì)的需要自行增加幀的類(lèi)型,以實(shí)現(xiàn)更為復(fù)雜的通信。
4 系統(tǒng)外存儲(chǔ)器EEPROM
由于控制中經(jīng)常會(huì)涉及到參數(shù)的更改,為了使掉電后不影響系統(tǒng)的運(yùn)行,即需要參數(shù)能夠重現(xiàn),系統(tǒng)采用帶有I2C總線接口的EEPROM 2402芯片實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)和讀取。讀和寫(xiě)分別調(diào)用的兩個(gè)函數(shù)如下:
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;
}
可以看出,函數(shù)RW24XX是對(duì)EEPROM外存儲(chǔ)芯片操作的主體函數(shù),這里給出該函數(shù)中包含參數(shù)的定義:
bit RW24XX(unsigned char *DataBuff,unsigned char ByteQuantity,unsigned int Address,unsigned char ControlByte,enum eepromtype EepromType)
其中,DataBuff為讀寫(xiě)數(shù)據(jù)輸入輸出緩沖區(qū)的首地址,ByteQuantity為要讀寫(xiě)數(shù)據(jù)的字節(jié)數(shù),Address為EEPROM芯片的片內(nèi)地址,ControlByte是EEPROM的控制字節(jié),具體形式為(1)(0)(1)(0)(A2)(A1)(A0)(R/W),其中R/W=1,表示讀操作,R/W=0為寫(xiě)操作,A2、A1、A0為EEPROM的頁(yè)選或片選地址;EepromType為枚舉變量,需為M2401~M24256中的一種,分別對(duì)應(yīng)24C01~24C256,本系統(tǒng)中為M2402;函數(shù)返回值為一個(gè)位變量,若返回1表示此次操作失效,0表示操作成功;ERRORCOUNT為允許最大次數(shù),若出現(xiàn)ERRORCOUNT次操作失效后,則函數(shù)中止操作,并返回1。
在該函數(shù)中,調(diào)用的若干I2C總線函數(shù)如下:
void IICStart(void);
void IICStop(void);
bit IICRecAck(void);
void IICNoAck(void);
void IICAck(void);
unsigned char IICReceiveByte(void);
void IICSendByte(unsigned char sendbyte);
結(jié)語(yǔ)
本系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,操作方便,擁有手動(dòng)和自動(dòng)兩種控制模式,具有一定的智能性;既可現(xiàn)場(chǎng)控制,又可遠(yuǎn)程控制;能根據(jù)現(xiàn)場(chǎng)狀況,合理地調(diào)節(jié)控制狀態(tài)。便于模塊化處理,使程序的可讀性、可維護(hù)性和可移植性都得到進(jìn)一步提高。
液位計(jì)相關(guān)文章:磁翻板液位計(jì)原理
評(píng)論