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