1.引 言
WSH_A型精密溫度控制儀(以下簡稱:溫控儀)是我們自主研發(fā)的一種以微型計算機(jī)為核心的智能三點溫度控制儀器。溫控儀可以與各種型號的熱電偶配接,實現(xiàn)高精度的溫度檢測與控制。其檢測精度為0.05%,控制精度可達(dá)0.1%,現(xiàn)已成功應(yīng)用于半導(dǎo)體生產(chǎn)行業(yè)的溫度控制中。在實際應(yīng)用過程中,用戶往往需要同時觀察多臺溫控儀的運行狀態(tài)并且記錄運行數(shù)據(jù)供分析使用。
本文介紹的精密溫度控制儀數(shù)據(jù)采集系統(tǒng)在Delphi7.0環(huán)境下實現(xiàn)了多臺溫控儀的監(jiān)測、數(shù)據(jù)存儲、溫度曲線繪制、歷史曲線、數(shù)據(jù)查詢、報表等功能,大大方便了用戶的管理要求,系統(tǒng)采用RS485通信,最多可同時監(jiān)測16臺溫控儀。
2.硬件結(jié)構(gòu)及系統(tǒng)組成
2.1溫控儀的硬件結(jié)構(gòu)
溫控儀的硬件結(jié)構(gòu)及通信模塊原理圖如圖1所示:
圖1 溫控儀功能原理圖
在MAX485后加保護(hù)繼電器輸出,繼電器采用系統(tǒng)電源5V供電,系統(tǒng)未上電或異常斷電時斷開通信模塊與網(wǎng)絡(luò)的連接,從而使整個網(wǎng)絡(luò)更加穩(wěn)定可靠[1]。
2.2系統(tǒng)組成
溫控儀具有光電隔離的RS485通信接口模塊,RS485具有傳輸距離遠(yuǎn)、抗干擾性好等特點,是工業(yè)現(xiàn)場中應(yīng)用較多的一種通信方式[4]。輸入給溫控儀的三點溫度模擬量經(jīng)過溫控儀內(nèi)部功能模塊轉(zhuǎn)換后送給上位機(jī)的串口。系統(tǒng)的連接圖如圖2所示:
圖2 通信系統(tǒng)結(jié)構(gòu)圖
上位機(jī)和溫控儀的通信方式采用廣播方式[4]。在運行過程中,上位機(jī)處于主動地位,溫控儀被動接收到上位機(jī)發(fā)送的命令后,判斷地址是否和本機(jī)地址相同,進(jìn)而決定是否與上位機(jī)進(jìn)行數(shù)據(jù)傳輸。上位機(jī)按照地址號順序讀完所有連接在總線上的溫控儀稱為一個讀周期[1]。
3.通信協(xié)議的制定及通信實現(xiàn)
為了提高上位機(jī)的實時性,應(yīng)盡量減小每個讀周期的通信信息量,制定通信協(xié)議的重點是合理安排讀命令字,使修改頻率高的信息在每個讀周期都進(jìn)行傳輸,而修改頻率低的信息只有在修改后才進(jìn)行傳輸。
3.1設(shè)置命令字
溫控儀數(shù)據(jù)采集系統(tǒng)需要檢測的信息按更新頻率分為:
〔1〕檢測參數(shù):一套設(shè)備中三個測點的當(dāng)前溫度值,溫控儀當(dāng)前運行段號、段運行時間、運行總時間,環(huán)境溫度和設(shè)定溫度、溫控儀當(dāng)前輸出控制量以及部分開關(guān)量狀態(tài)。這些參數(shù)修改頻率高,應(yīng)在每個讀周期內(nèi)進(jìn)行傳輸。
〔2〕控制參數(shù):PID控制參數(shù)、溫度修正參數(shù),采樣時間,溫度報警值,熱電偶類型,以及根據(jù)工藝要求所設(shè)定的20段溫度工藝曲線參數(shù)。這些參數(shù)修改頻率低,在修改后才需要進(jìn)行傳輸。
上位機(jī)和溫控儀發(fā)送數(shù)據(jù)采用廣播方式,上位機(jī)下傳命令均為6個字節(jié),其格式為:
[#]+[XX](地址)+[XX]+$0D。
其中:第1字節(jié)為頭字節(jié),第2、3字節(jié)為溫控儀地址,第4、5字節(jié)表示具體讀取內(nèi)容,如[RE]為讀取當(dāng)前溫度值及控制量參數(shù);[CT]為讀取控制參數(shù);[PI]為讀取PID及修正參數(shù);[LT]為讀取20段溫度工藝曲線參數(shù)。
3.2設(shè)置命令字優(yōu)先級
設(shè)置[RE]為關(guān)鍵命令字,具有高優(yōu)先級,在每個讀周期中讀取各溫控儀的檢測參數(shù)。在溫控儀上傳數(shù)據(jù)中設(shè)置一個狀態(tài)標(biāo)志位[X],監(jiān)視對應(yīng)的溫控儀有無控制參數(shù)修改,同時用來表示其它命令字的優(yōu)先級。如果用戶修改了溫控儀的控制參數(shù),則置狀態(tài)標(biāo)志位為1,相應(yīng)讀控制參數(shù)命令字的優(yōu)先級變高,上位機(jī)發(fā)送讀控制參數(shù)命令字,溫控儀接收到上位機(jī)發(fā)送的讀控制參數(shù)命令字并確定上傳數(shù)據(jù)后復(fù)位狀態(tài)標(biāo)志位。
3.3通信過程
本系統(tǒng)在通信協(xié)議中設(shè)置關(guān)鍵命令字,把通信過程中常用的查詢工作方式變?yōu)橹袛喙ぷ鞣绞剑蟠筇岣吡讼到y(tǒng)工作效率,通信過程的流程圖如圖3所示:
圖3 通信流程圖
3.4使用MSComm控件實現(xiàn)串口通信
MSComm控件是Visual Basic中提供的一個串口控件,使用簡單、性能良好,編程時不需要考慮復(fù)雜的API函數(shù),是串口通信中經(jīng)常使用的控件。
MSComm提供了事件驅(qū)動方式和查詢方式兩種處理通信的方法。通信軟件編寫中,讀命令字的發(fā)送比較簡單,下位機(jī)返回數(shù)據(jù)的接收部分要謹(jǐn)慎處理,要根據(jù)實際情況選擇是用事件驅(qū)動方式還是查詢方式,事件驅(qū)動方式必需保證每次下位機(jī)返回的存放在接收緩沖區(qū)的數(shù)據(jù)長度等于RThreshold屬性的設(shè)定值,以便激發(fā)OnComm( ) 事件,如果下位機(jī)對上位機(jī)發(fā)送的不同命令返回的數(shù)據(jù)長度不同就必須選擇查詢方式接收數(shù)據(jù)[4]。
注意,用查詢方式接收數(shù)據(jù)時,在向輸出緩沖區(qū)發(fā)送完讀命令后,設(shè)置適當(dāng)時間的延時非常重要,一般可以用延時函數(shù)Sleep( )延時,并根據(jù)返回數(shù)據(jù)的長度設(shè)置合理的延時時間。
發(fā)送讀命令并延時合適時間后,輸入緩沖區(qū)就會返回對應(yīng)此命令的數(shù)據(jù),判斷數(shù)據(jù)是否正確的條件有三個:數(shù)據(jù)頭為[#];數(shù)據(jù)尾為$0D;數(shù)據(jù)長度等于通信協(xié)議規(guī)定的長度。
4.系統(tǒng)功能及軟件結(jié)構(gòu)設(shè)計
4.1系統(tǒng)功能
本系統(tǒng)根據(jù)生產(chǎn)中用戶的需求設(shè)計所要實現(xiàn)的功能。
〔1〕 實現(xiàn)對連接在總線上溫控儀的工作狀態(tài)的監(jiān)測,溫控儀的工作狀態(tài)有檢測狀態(tài)、控制狀態(tài)和故障狀態(tài)。
〔2〕 參數(shù)讀?。鹤x取每個溫控儀的檢測參數(shù)和控制參數(shù)并實現(xiàn)數(shù)據(jù)庫存儲及實時三點溫度曲線繪制。
〔3〕 實現(xiàn)歷史數(shù)據(jù)查詢并顯示歷史溫度曲線功能。
〔4〕 實現(xiàn)報表及數(shù)據(jù)導(dǎo)出功能。
4.2軟件結(jié)構(gòu)設(shè)計
本系統(tǒng)的軟件實現(xiàn)分為三部分:第一部分實現(xiàn)溫控儀數(shù)據(jù)的讀入、處理、傳輸;第二部分實現(xiàn)數(shù)據(jù)分類顯示、存儲、曲線繪制;第三部分實現(xiàn)歷史數(shù)據(jù)及溫度曲線查詢、報表打印等功能。各部分的重點工作如下:
〔1〕 數(shù)據(jù)讀入:根據(jù)對溫控儀不同數(shù)據(jù)的讀取頻率的不同寫成兩個子過程ReadTemperature()和ReadPIDQX(),ReadTemperature()過程發(fā)送關(guān)鍵命令字,讀檢測參數(shù),ReadPIDQX()過程用來讀取控制參數(shù),子過程的形式參數(shù)是溫控儀的地址。ReadTemperature()子過程核心代碼:
procedure ReadTemperature (adress1,adress2:byte);
var
send_ReadTOrder:variant;//關(guān)鍵命令字用variant變量存儲
wendu_inputstring:string;//上傳的原始數(shù)據(jù)放在wendu_inputstring字符串里
InputLen,string_dingwei:integer;//數(shù)據(jù)長度和wendu_inputstring定位
Begin
send_ReadTOrder:= VarArrayCreate([0,5], varByte);
send_ ReadTOrder [0]:=$23; send_ ReadTOrder [3]:=$52;
send_ ReadTOrder [1]:=adress1; send_ ReadTOrder [4]:=$45;
send_ ReadTOrder [2]:=adress2; send_ ReadTOrder [5]:=$0D;
if MainForm.MSComm.PortOpen then //如果串口已經(jīng)打開,則發(fā)送讀溫度命令
begin
MainForm.mscomm.InBufferCount:=0; //清空輸入緩沖區(qū)
MainForm.mscomm.OutBufferCount:=0;//清空輸出緩沖區(qū)
MainForm.MSComm.Output:= send_ReadTOrder; //向輸出緩沖區(qū)發(fā)送讀溫度命令
sleep(600);//適當(dāng)延時
InputLen:=MainForm.MSComm.InBufferCount;//讀入輸入緩沖區(qū)里的返回數(shù)據(jù)長度
wendu_inputstring:=MainForm.MSComm.Input;//直接以ASCII碼形式接收數(shù)據(jù)
string_dingwei:=pos(’*’,wendu_inputstring);//定位讀入的字符串
state:=copy(string_dingwei,wendu_inputstring)
if(InputLen>=50)&&(copy(string_dingwei,wendu_inputstring)=’*’)
&&( copy(string_dingwei+50,wendu_inputstring)=’ ’) then//注意入口條件,尤其是(InputLen>50)條件,50是通信協(xié)議中規(guī)定的返回數(shù)據(jù)的長度
Begin
If (state==’1’)then
Begin
//發(fā)送ReadPIDQX()并做相應(yīng)數(shù)據(jù)處理
End else
……//處理數(shù)據(jù)并傳輸
End;
end;
〔2〕 數(shù)據(jù)顯示及溫度曲線繪制:數(shù)據(jù)顯示部分使用專業(yè)工業(yè)控件Iocomp,曲線繪制采用Teechartpro6版本,數(shù)據(jù)庫為Access2003。繪制溫度曲線時,首先將溫控儀儲存的20段溫度工藝曲線以紅色畫出來,三點檢測溫度曲線則以藍(lán)、黃、綠三色畫出。注意圖像的縮放、托動等輔助功能不使用Teechart的自帶功能,加兩個Scrollbar控件,用Srollbar的postion屬性控制時間軸(溫度軸)的min屬性實現(xiàn)時間軸(溫度軸)的拖動,溫度和時間軸的步長可以自由設(shè)置,實現(xiàn)曲線在時間軸(溫度軸)上的縮放。系統(tǒng)的主界面如圖4所示:
圖4 系統(tǒng)主界面
〔3〕數(shù)據(jù)存取及歷史數(shù)據(jù)查詢:每個溫控儀的歷史數(shù)據(jù)記錄按其運行時間查詢,同時畫出運行時的20段溫度工藝曲線和三點的歷史溫度曲線。每次系統(tǒng)運行時,用getlocaltime()函數(shù)取系統(tǒng)當(dāng)前時間,格式為xxYxxMxxDxxHxxM作為數(shù)據(jù)庫的表名,此次運行記錄的數(shù)據(jù)都存在這個表里,這樣非常方便用戶的查詢,選擇儀表地址,就會在Listbox里顯示此儀表的所有歷史數(shù)據(jù)記錄,選擇要查詢的表名顯示記錄的數(shù)據(jù),同時將歷史曲線畫出,報表用Rave5制作[3],歷史數(shù)據(jù)也可以導(dǎo)出到Excel中編輯打印[2]。
5.結(jié)束語
本文所研制的實時數(shù)據(jù)采集系統(tǒng)配合WSH_A型精密溫度控制儀已經(jīng)應(yīng)用在半導(dǎo)體芯片生產(chǎn)的溫度控制中。在通信協(xié)議中設(shè)置關(guān)鍵命令字,把通信過程中通常使用的查詢工作方式變?yōu)橹袛喙ぷ鞣绞?,結(jié)構(gòu)的優(yōu)化使系統(tǒng)運行穩(wěn)定,實時性強(qiáng)。Teechart,Iocomp等第三方控件的靈活運用使界面顯示曲線繪制更加專業(yè),滿足了用戶需求,并取得了良好的經(jīng)濟(jì)效益。
6.參考文獻(xiàn)
[1] 王媛婷,楊耿杰,郭謀發(fā). Delphi+MSComm控件開發(fā)串行通信程序 [J].工業(yè)控制,2004,7(2):8-11.
[2] 賽奎春,陳紫鴻,宋坤.Delphi數(shù)據(jù)庫開發(fā)關(guān)鍵技術(shù)與實例應(yīng)用[M].北京:人民郵電出版社,2004.5 197-227.
[3] 肖慶航,陸定淑.Delphi7數(shù)據(jù)庫開發(fā)教程[M].北京:清華大學(xué)出版社,2004.3 216-231.
[4] 趙蘭濤,蘇彥華.Delphi串口通信技術(shù)與工程實踐[M].北京:人民郵電出版社,2004.6 56-77.