基于AT89C52網(wǎng)絡監(jiān)控系統(tǒng)的設計與實現(xiàn)
0 引 言
以電子設備故障檢修技能考核與訓練智能化系統(tǒng)為例,介紹由一臺PC機與多臺單片機組成的主從式網(wǎng)絡通信系統(tǒng),單片機控制作為下位機,負責對電子設備故障點進行數(shù)據(jù)采集和控制,通過接口將結果傳給PC機;PC機作為上位機,對數(shù)據(jù)進行分析和處理,根據(jù)分析和處理的結果來控制單片機的操作。目前,應用Visual C++開發(fā)串行通信實現(xiàn)智能化考核和訓練系統(tǒng)的通信方法通常有4種:
(1)調用API(Application Program Interface)函數(shù)實現(xiàn);
(2)利用Visual C++的標準通信函數(shù)一inp、一inpw等直接對串口進行操作;
(3)使用Visual C++的通信控件(MSComm);
(4)利用第三方編寫的通信類(Cserial)。
以上幾種方法中第一種方法使用面較廣,但由于需要許多低層設置,比較復雜,專業(yè)化程度要求較高,使用困難;第二種需要了解硬件電路結構原理,較難掌握;第三種方法看來較簡單,只需要對串口進行簡單配置,但使用了令人費解WARIANT類,且不能滿足使用多個串口進行復雜處理的需要;第四種方法是利用一個專門針對串行通信的CSerial類,該方法功能較強,只要理解這種類的幾個成員函數(shù),就能方便使用。RS 485總線以其靈活性好、成本低、抗干擾能力強、支持節(jié)點多、傳輸距離遠、連接簡單的優(yōu)勢,被廣泛應用于網(wǎng)絡單片機系統(tǒng)。在該系統(tǒng)中,上位機采用Visual C++的Cserial類通信方式;下位機采用ATMEL公司的AT89C52單片機,總線采用RS 485標準組網(wǎng)。
l 系統(tǒng)結構
整個系統(tǒng)是一個基于RS 485現(xiàn)場總線,自定義通信協(xié)議,在總線上連接各下位機和上位機,由上位機統(tǒng)一管理的主從式總線型的監(jiān)控系統(tǒng)。該系統(tǒng)包括監(jiān)控層、通信層、以及現(xiàn)場設備層。其中,監(jiān)控層由上位機(PC機)承擔,負責接收底層現(xiàn)場設備上傳的數(shù)據(jù),進行數(shù)據(jù)的分析和存儲,下位機參數(shù)的設定和修改,以及實時和歷史數(shù)據(jù)的查詢,實現(xiàn)對現(xiàn)場設備的監(jiān)控管理;通信層通過自制定的通信協(xié)議與現(xiàn)場下位機設備進行實時通信,完成數(shù)據(jù)通信包的打包、拆包、檢驗等處理;現(xiàn)場設備層由多臺電子設備、單片機、繼電器、鍵盤、LCD顯示器等組成的監(jiān)控系統(tǒng)。
系統(tǒng)結構方框圖如圖1所示。
上位機為教師操作的教學控制管理系統(tǒng),在微機上用Visual C++編程實現(xiàn)功能。教學控制管理系統(tǒng)的主要功能為:
(1)考試的技術準備工作;
(2)考試的監(jiān)考工作;
(3)輔助完成其他考務信息管理工作。
根據(jù)功能要求,教學控制管理系統(tǒng)由通訊模塊、代碼編譯模塊、代碼執(zhí)行模塊、系統(tǒng)管理模塊、歷史資料查詢模塊組成,這幾個模塊和用戶界面用戶接口一起構成整個系統(tǒng)軟件。
下位機作為這個分布式控制系統(tǒng)的學生客戶端,是一個基于AT89C52單片機的應用系統(tǒng)。本系統(tǒng)使用計算機、AT89C52單片機、光電耦合器、驅動電路、繼電器、彩色電視機等組成的監(jiān)控系統(tǒng),通過局域網(wǎng),構成一個智能化訓練及鑒定系統(tǒng)。AT89C52單片機控制系統(tǒng)如圖2所示。
AT89C52單片機控制系統(tǒng)采用計算機與AT89C52單片機所構成的多種微處理芯片混合的主從系統(tǒng),教師機是系統(tǒng)的上位機,實現(xiàn)人機交互和數(shù)據(jù)交換、檢索、存儲、處理、更新圖形的顯示,對下位機(即學生機)的控制和通信等控制。學生機完成數(shù)據(jù)的采集和信號的處理。教師機作為主機,學生機作為從機。主從機間的通信方式采用串行口方式。每一個訓練或鑒定工位均有獨立的學生機和彩色電視機,每臺學生機之間通過網(wǎng)線互聯(lián)。學生機通過繼電器控制彩色電視機故障點的狀態(tài)。
AT89C52單片機控制系統(tǒng)需要進行軟、硬件開發(fā)。與單個獨立單片機系統(tǒng)不同,網(wǎng)絡中單片機不僅要按預先設計的程序工作,更多時候需要根據(jù)來自上位機的控制指令適時調整工作程序。實操訓練或考試時下位機主要功能如下:
(1)作為上位機的終端;
(2)作為電子設備控制器;
(3)提供考生交互界面;
(4)其他監(jiān)考服務。
2 通信接口設計
通信接口是單片機控制系統(tǒng)的重要組成部分。單片機與計算機之間不斷地進行信息交換和傳輸,而這種信息的交換和傳輸都必須通過通信接口和數(shù)據(jù)總線來實現(xiàn),通信接口器件和總線的合理選擇是單片機控制系統(tǒng)中數(shù)據(jù)交換和傳輸順利進行的前提和保障。
該系統(tǒng)采用RS 485總線組網(wǎng),上位機通過串行接口經(jīng)標準RS 232總線和RS 232/RS 485轉換器將RS 232標準電平轉換為RS 485標準電平與考生的下位機端通信;在下位機端SN75176將RS 485標準電平轉換為TTL電平接入處理器的異步串行通信口(UART),實現(xiàn)RS 485網(wǎng)絡的半雙工通信。
RS 232/RS 485轉換器采用市場上即插即用型的產(chǎn)品,本身已經(jīng)實現(xiàn)智能控制收發(fā)使能,無須更改任何上位機硬件。上位機最多可連接32臺下位機,如果在下位機端采用SN75184則上位機最多可連接64臺下位機。
RS 485接口電路的設計要充分考慮線路上的各種干擾及線路特征阻抗的匹配。信號在傳輸過程中會產(chǎn)生電磁干擾和終端反射,使有用信號與干擾信號在傳輸線上相疊加,當干擾太大時,可導致通信無法進行。該系統(tǒng)選用SN75176 RS 485接口芯片,RS 485總線網(wǎng)絡的通信介質采用帶有屏蔽層的雙絞線,并在傳輸線末端各安裝120Ω匹配電阻,以消除傳輸線上信號的反射,通信距離可達到1 200 m。
3 通信協(xié)議
RS 485接口的軟件設計對系統(tǒng)聯(lián)網(wǎng)的可靠性有很大的影響。由于RS 485總線是異步半雙工的通信總線,在某一時刻總線只可能呈現(xiàn)一種狀態(tài),所以這種方式使用于上位機與下位機的查詢方式通信,為了協(xié)調總線的分時復用,必須制定一套合理的通信協(xié)議,以保證數(shù)據(jù)通信的正常進行。本系統(tǒng)通信協(xié)議是:波特率約定為9 600 b/s,Tl工作于方式2,初值為FDH,SMOD=O。串行口初始化為方式3。通信格式要求如下:
通信數(shù)據(jù)格式總共24 b(二進制),8 b識別碼,8 b控制指令代碼,8 b故障點代碼,格式如下:
規(guī)定如下:
識別碼為下位機地址碼,地址范圍為70H~88H。控制指令代碼為:字符“1”表示故障點短接,ASCII碼為“31H”;字符“O”表示故障點斷開,ASCII碼為“30H”。
(1)上位機狀態(tài)字:
bo:發(fā)卷指令標志1,無發(fā)卷指令標志0;
b1:開考指令標志1,無開考指令標志O;
b2:答題查詢指令標志1,無答題查詢指令標志0;
b3:強行中止答題指令標志1,無強行中止答題指令標志O;
b4:恢復答題指令標志1,無恢復答題指令標志0。
(2)下位機狀態(tài)字:
b0:登陸請求1,無登陸請求0;
b1:已登陸狀態(tài)標志1,未登陸狀態(tài)標志0;
b2:已收卷狀態(tài)標志1,未收卷狀態(tài)標志0;
b3:開始答題狀態(tài)標志1,未開始答題狀態(tài)標志O;
b4:交卷請求標志1,無交卷請求標志0;
b5:已交卷標志1,未交卷標志O;
b6:答題中止標志l,答題恢復標志O。
4 通信過程
上位機開機啟動程序,上位機進入輪詢過程。此時,下位機開機登陸,在輪詢到自己時,發(fā)出登陸信息,上位機收到后,進行必要的登陸處理。在所有下位機登陸完畢后或監(jiān)考老師認為收到所有考生的登陸信息后,按下發(fā)卷按鈕,對每一個登陸下位機依次發(fā)卷。發(fā)卷完畢后,由監(jiān)考老師按下開考按鈕,以廣播方式發(fā)出考試開始指令,下位機顯示考試題目,系統(tǒng)開始計時。在考試進行過程中,監(jiān)考老師可查詢任一個下位機的狀態(tài)(包括考生考試情況);甚至可以啟動自動巡考指令,自動巡視每個考生的答題情況。考試過程中考生答題完畢可交卷,在考生按下交卷按鈕后交卷,發(fā)出交卷信息,上位機接收,并發(fā)出正確接收的回復信息??荚囘^程中,監(jiān)考老師發(fā)現(xiàn)有學生作弊,可隨時按下中止考試按鈕,中止此下位機的運行,考試記零分??荚嚂r間到,系統(tǒng)自動判斷是否仍有考生沒有交卷,中止考生答卷,并取回相應下位機的答題信息。上下位機基本輪詢及通信動作示意圖如圖3所示。
上下位機通信動作過程如下:
①上位機作為網(wǎng)絡主控端,以一定時間間隔dtl進行輪詢。輪詢過程是這樣的:首先上位機查詢上位機狀態(tài)字,判斷是否存在通訊請求,如果沒有,就對輪詢到的下位機發(fā)出通訊授權標志,若在延遲短暫時間后下位機無應答,置此地址下位機不在線標志,并中止此次輪詢;若有應答則置與此下位機通訊的通道標志。
②下位機發(fā)出指令:表明下位機回復查詢指令,根據(jù)狀態(tài)字判斷下位機狀態(tài)。
③上位機發(fā)出指令:表明上位機根據(jù)下位機的狀態(tài)字及上位機狀態(tài)字,按上位機有優(yōu)先原則,發(fā)出上位機準備接收信息。
④下位機發(fā)出指令:上位機根據(jù)功能指令解析數(shù)據(jù),完成相應的顯示及確認回復。
⑤上位機發(fā)出指令:在從下位機向上位機傳輸信息過程中出現(xiàn)錯誤時,上位機將向下位機發(fā)出重發(fā)功能指令,重發(fā)次數(shù)確定根據(jù)調試過程確定。
在設計RS 485通信軟件時,要注意對RS 485控制端的軟件編程。為了保證數(shù)據(jù)收發(fā)可靠,在RS 485總線狀態(tài)切換時需要加適當?shù)难訒r,延時一般控制在1 ms左右,再進行數(shù)據(jù)的收發(fā)。經(jīng)過這樣處理后,使總線在狀態(tài)切換時有一個穩(wěn)定的工作過程。
5 上位機通信軟件的設計
上位機通信是采用一個專門針對串行通信的CSerial類進行程序設計的,該方法功能較強,只要理解這種類的幾個成員函數(shù),就能方便使用。以下是幾個常用的成員函數(shù):
6 結 語
提出了一種基于AT89C52單片機網(wǎng)絡通信系統(tǒng)的軟硬件設計,該方案已成功應用在電子產(chǎn)品故障檢修技能智能化考核系統(tǒng)中,并將其產(chǎn)品化,經(jīng)一年多來的使用,運行可靠。此外,由于系統(tǒng)采用模塊化設計,靈活性強,可根據(jù)用戶的實際需要,實現(xiàn)對不同型號、不同品牌、不同功能的終端設備進行控制。因此具有較高的應用價值和推廣價值。